You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubl-settings-video/source/ubl-settings-video.c

438 lines
29 KiB

#include "ubl-settings-video.h"
#include "ubl-utils.h"
config videoconfig;
void yon_on_plug_added(GtkSocket* self, gpointer user_data){
}
void yon_on_plug_removed(GtkSocket* self, gpointer user_data){
}
void on_close_subwindow(GtkWidget *self){
gtk_widget_destroy(gtk_widget_get_toplevel(self));
}
void on_proprietary_driver_window_open(GtkWidget *self){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
GtkWidget *window=yon_gtk_builder_get_widget(builder,"ProprietaryDriverChooseWindow");
GtkWidget *closeButton=yon_gtk_builder_get_widget(builder,"ProprietaryCloseButton");
gtk_widget_show(window);
g_signal_connect(G_OBJECT(closeButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
}
void on_sensitive_change(GtkWidget *self, GtkWidget *toggle){
int state=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
gtk_widget_set_sensitive(toggle,state);
}
void on_auto_choose_drivers(GtkWidget *self, widgets_dict *widgets){
int state=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaLabel,!state);
gtk_widget_set_sensitive(widgets->mainDriverProprietaryDriverCombo,!state);
gtk_widget_set_sensitive(widgets->mainDriverProprietaryDriverButton,!state);
gtk_widget_set_sensitive(widgets->mainDriverProprietaryDriverLabel,!state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDCombo,!state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDLabel,!state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaCombo,!state);
}
void on_closed_configuration(GtkWidget *self, MonitorSettings *monitors){
gtk_widget_destroy(monitors->templateMonitorConfigurationWindow);
}
void on_save_configuration_local(GtkWidget *self){
}
void on_save_configuration_global(GtkWidget *self){
}
void on_load_configuration_local(GtkWidget *self){
}
void on_load_configuration_global(GtkWidget *self){
}
void on_accept_monitor_settings(GtkWidget *self){
}
void on_check_optisun(GtkWidget *self){
}
void on_check_primusrun(GtkWidget *self){
}
void on_check_discrete_only(GtkWidget *self){
}
void on_about(){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
GtkWidget *window=yon_gtk_builder_get_widget(builder,"aboutWindow");
GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window),_("UBlinux Video Configuration"));
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window),version_application);
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window),_("Progect Home Page"));
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window),_("Videocard and monitor configuration manager"));
gtk_widget_set_visible(hideButtonBox,0);
gtk_widget_show(window);
}
void yon_parse_monitor(dictionary *monitor,char *string_of_settings){
char *result=NULL;
if ((strstr(string_of_settings,","))){
result=yon_char_divide_search(string_of_settings,",",1);
((monitorconfig*)monitor->data)->resolution=result;
}
char *tmp=NULL;
if (tmp=strstr(string_of_settings,"rotate:")) ((monitorconfig*)monitor->data)->rotation=tmp;
}
void yon_default_configs(){
}
void yon_setup_config(){
FILE *videoports = popen(get_ports_command, "r");
char str[1000];
while (fgets(str,1000,videoports)){
printf("%s\n",str);
char *strng=yon_char_divide_search(str,"\n",0);
monitorconfig *monitor=NULL;
monitor=malloc(sizeof(monitorconfig));
monitor->port=yon_char_new(strng);
if (!videoconfig.monitors) {
videoconfig.monitors=yon_dictionary_create_with_data(strng,monitor);}
else {
videoconfig.monitors=yon_dictionary_create_with_data_connected(videoconfig.monitors,strng,monitor);
}
memset(str,0,1000);
}
char *command=load_drivers_local_command;
dictionary *dct;
for_dictionaries(dct,videoconfig.monitors){
command=yon_char_get_augumented(command,(yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(((monitorconfig*)dct->data)->port,"]"))));
}
FILE *local = popen(command, "r");
char result[1000];
memset(result,0,1000);
if (fgets(result,1000,local)&&strcmp(result,"(null)\n")!=0)
videoconfig.failsafenVidia=result;
else if (strcmp(result,"")==0) { yon_default_configs(); return; }
else videoconfig.failsafenVidia=NULL;
memset(result,0,1000);
if (fgets(result,1000,local)&&strcmp(result,"(null)\n")!=0)
videoconfig.failsafeATI=result;
else videoconfig.failsafeATI=NULL;
memset(result,0,1000);
if (fgets(result,1000,local)&&strcmp(result,"(null)\n")!=0)
videoconfig.optirun=result;
else videoconfig.optirun=NULL;
memset(result,0,1000);
if (fgets(result,1000,local)&&strcmp(result,"(null)\n")!=0)
videoconfig.primusrun=result;
else videoconfig.primusrun=NULL;
for_dictionaries(dct,videoconfig.monitors){
fgets(result,1000,local);
if (strcmp(result,"(null)\n")!=0||strcmp(result,"")!=0){
char *curmonitor=strstr(result,"=")+1;
yon_parse_monitor(dct,curmonitor);
}
}
}
void on_apps_chooser_open (GtkWidget *self,widgets_dict *widgets, int mode){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);\
// FILE *output=popen("");
printf("not implemented yet\n");
}
void yon_fill_ui(widgets_dict *widgets){
if (!videoconfig.proprietary||strstr(videoconfig.proprietary,"\n")==0)
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverProprietaryDriverCombo),0);
if (!videoconfig.failsafenVidia||strstr(videoconfig.failsafenVidia,"\n")==0)
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeNvidiaCombo),0);
if (!videoconfig.failsafeATI||strstr(videoconfig.failsafeATI,"\n")==0)
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo),0);
if (!videoconfig.optirun||strstr(videoconfig.optirun,"\n")==0)
gtk_entry_set_text(GTK_ENTRY(widgets->mainExtraLaunchOptirunEntry),videoconfig.optirun);
if (!videoconfig.primusrun||strstr(videoconfig.primusrun,"\n")==0)
gtk_entry_set_text(GTK_ENTRY(widgets->mainExtraLaunchPrismusunEntry),videoconfig.primusrun);
if (videoconfig.gapfix==0)
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainExtraFixGapCombo),0);
}
void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings){
int monitors_n=yon_check_for_monitors();
MonitorSettings *monitors = NULL;
monitors=malloc(sizeof(MonitorSettings));
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
monitors->templateMonitorConfigurationWindow=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationWindow"));
monitors->templateMonitorConfigurationBox=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationBox"));
monitors->templateMonitorConfigurationMonitorLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationMonitorLabel"));
monitors->templateMonitorConfigurationResolutionLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationResolutionLabel"));
monitors->templateMonitorConfigurationResolutionCombo=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationResolutionCombo"));
monitors->templateMonitorConfigurationFrequencyLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationFrequencyLabel"));
monitors->templateMonitorConfigurationFrequencyCombo=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationFrequencyCombo"));
monitors->templateMonitorConfigurationRotationCombo=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationRotationCombo"));
monitors->templateMonitorConfigurationRotationLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationRotationLabel"));
monitors->templateMonitorConfigurationMainRadio=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationMainRadio"));
monitors->templateMonitorConfigurationParameterLineCheck=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationParameterLineCheck"));
monitors->templateMonitorConfigurationParameterLineEntry=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationParameterLineEntry"));
monitors->templateMonitorConfigurationDoNotSwitchOffLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationDoNotSwitchOffLabel"));
monitors->templateMonitorConfigurationDoNotSwitchOffCheck=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationDoNotSwitchOffCheck"));
monitors->templateMonitorConfigurationCancelButton=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationCancelButton"));
monitors->templateMonitorConfigurationSaveButton=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorConfigurationSaveButton"));
g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationCancelButton), "clicked", G_CALLBACK(on_closed_configuration), monitors);
// g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationSaveButton), "clicked", G_CALLBACK(on_save_configuration), monitors);
// if (i!=0)
// gtk_radio_button_join_group(GTK_RADIO_BUTTON(monitors[i].templateMonitorConfigurationMainRadio),GTK_RADIO_BUTTON(monitors[i-1].templateMonitorConfigurationMainRadio));
gtk_label_set_text(GTK_LABEL(monitors->templateMonitorConfigurationMonitorLabel),_("Monitor: "));
gtk_label_set_text(GTK_LABEL(monitors->templateMonitorConfigurationResolutionLabel),_("Resolution (px): "));
gtk_label_set_text(GTK_LABEL(monitors->templateMonitorConfigurationFrequencyLabel),_("Frequency (Hz): "));
gtk_label_set_text(GTK_LABEL(monitors->templateMonitorConfigurationRotationLabel),_("Rotation: "));
// gtk_label_set_text(GTK_LABEL(monitors->templateMonitorConfigurationDoNotSwitchOffLabel),_("Do not switch display off"));
gtk_button_set_label(GTK_BUTTON(monitors->templateMonitorConfigurationMainRadio),_("Main monitor"));
gtk_button_set_label(GTK_BUTTON(monitors->templateMonitorConfigurationParameterLineCheck),_("through parameter line:"));
gtk_button_set_label(GTK_BUTTON(monitors->templateMonitorConfigurationDoNotSwitchOffCheck),_("DPMS off"));
gtk_widget_show(monitors->templateMonitorConfigurationWindow);
char *addln=NULL;
if (!settings->curconfig||!((monitorconfig*)settings->curconfig->data)->resolution) addln=_("Default settings");
else addln=((monitorconfig*)settings->curconfig->data)->resolution;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationResolutionCombo),addln);
gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationResolutionCombo),0);
if (!settings->curconfig||!((monitorconfig*)settings->curconfig->data)->frequency) addln=_("Default settings");
else addln=((monitorconfig*)settings->curconfig->data)->frequency;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationFrequencyCombo),_("Default settings"));
gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationFrequencyCombo),0);
if (!settings->curconfig||!((monitorconfig*)settings->curconfig->data)->rotation) addln=_("Default settings");
else addln=((monitorconfig*)settings->curconfig->data)->rotation;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationRotationCombo),_("Default settings"));
gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationRotationCombo),0);
}
MonitorSettings *yon_setup_monitor_settings(){
int monitors_n=yon_check_for_monitors();
MonitorSettings *monitors = NULL;
monitors=malloc(sizeof(MonitorSettings)*monitors_n);
// videoconfig.videoconfig=videoconfig.videoconfig->first;
for (int i=0;i<monitors_n;i++){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
monitors[i].templateMonitorscreenOverlay=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorscreenOverlay"));
monitors[i].templateMonitorInfoBox=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorInfoBox"));
monitors[i].templateMonitorInfoNameLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorInfoNameLabel"));
monitors[i].templateMonitorInfoResolutionLabel=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorInfoResolutionLabel"));
monitors[i].templateMonitorInfoConfigureButton=GTK_WIDGET(gtk_builder_get_object(builder,"templateMonitorInfoConfigureButton"));
monitors[i].curconfig=yon_dictionary_get_nth(videoconfig.monitors,i);
printf("%d\n",i);
gtk_label_set_text(GTK_LABEL(monitors[i].templateMonitorInfoNameLabel),yon_char_get_augumented("Monitor ",((monitorconfig*)monitors[i].curconfig->data)->port));
char *res=yon_char_get_augumented(((monitorconfig*)monitors[i].curconfig->data)->resolution,"");
if (!res) res=_("Default settings");
gtk_label_set_text(GTK_LABEL(monitors[i].templateMonitorInfoResolutionLabel),res);
gtk_overlay_add_overlay(GTK_OVERLAY(monitors[i].templateMonitorscreenOverlay),monitors[i].templateMonitorInfoBox);
g_signal_connect(G_OBJECT(monitors[i].templateMonitorInfoConfigureButton), "clicked", G_CALLBACK(on_confugure_monitor_settings), &monitors[i]);
if(videoconfig.monitors->next)
videoconfig.monitors=videoconfig.monitors->next;
}
return monitors;
}
int yon_check_for_monitors(){
GdkScreen *screen=gdk_screen_get_default();
int monitors=gdk_display_get_n_monitors(gdk_screen_get_display(screen));
return monitors;
}
dictionary *yon_dictionary_pack_monitors(MonitorSettings *monitors, int size){
dictionary *dict=yon_dictionary_create_with_data("0",monitors[0].templateMonitorConfigurationBox);
for (int i=1;i<size;i++){
dict=yon_dictionary_create_with_data_connected(dict,yon_char_from_int(i),monitors[i].templateMonitorConfigurationBox);
}
return dict;
}
dictionary *yon_dictionary_pack_overlays(MonitorSettings *monitors, int size){
dictionary *dict=yon_dictionary_create_with_data("0",monitors[0].templateMonitorscreenOverlay);
for (int i=1;i<size;i++){
dict=yon_dictionary_create_with_data_connected(dict,yon_char_from_int(i),monitors[i].templateMonitorscreenOverlay);
}
return dict;
}
void yon_setup_widgets(widgets_dict *widgets){
widgets->builder=gtk_builder_new_from_file(glade_path);
widgets->appsPackWindow=yon_gtk_builder_get_widget(widgets->builder,"appsPackWindow");
widgets->appsPackBox=yon_gtk_builder_get_widget(widgets->builder,"appsPackBox");
widgets->MainWindow=yon_gtk_builder_get_widget(widgets->builder,"MainWindow");
widgets->headBox=yon_gtk_builder_get_widget(widgets->builder,"headBox");
widgets->headInfoLabel=yon_gtk_builder_get_widget(widgets->builder,"headInfoLabel");
widgets->mainPlugBox=yon_gtk_builder_get_widget(widgets->builder,"mainPlugBox");
widgets->mainErrorBox=yon_gtk_builder_get_widget(widgets->builder,"mainErrorBox");
widgets->mainHeadOverlay=yon_gtk_builder_get_widget(widgets->builder,"mainHeadOverlay");
widgets->extraOptirunChooseAppsButton=yon_gtk_builder_get_widget(widgets->builder,"extraOptirunChooseAppsButton");
widgets->extraPrimusunChooseAppsButton=yon_gtk_builder_get_widget(widgets->builder,"extraPrimusunChooseAppsButton");
widgets->mainHeadBackgroundImage=yon_gtk_builder_get_widget(widgets->builder,"mainHeadBackgroundImage");
widgets->mainDriverAutomaticallyChooseCheck=yon_gtk_builder_get_widget(widgets->builder,"mainDriverAutomaticallyChooseCheck");
widgets->mainDriverProprietaryDriverLabel=yon_gtk_builder_get_widget(widgets->builder,"mainDriverProprietaryDriverLabel");
widgets->mainDriverFailsafeNvidiaLabel=yon_gtk_builder_get_widget(widgets->builder,"mainDriverFailsafeNvidiaLabel");
widgets->mainDriverFailsafeAMDLabel=yon_gtk_builder_get_widget(widgets->builder,"mainDriverFailsafeAMDLabel");
widgets->mainDriverProprietaryDriverCombo=yon_gtk_builder_get_widget(widgets->builder,"mainDriverProprietaryDriverCombo");
widgets->mainExtraFixGapCombo=yon_gtk_builder_get_widget(widgets->builder,"mainExtraFixGapCombo");
widgets->mainDriverProprietaryDriverButton=yon_gtk_builder_get_widget(widgets->builder,"mainDriverProprietaryDriverButton");
widgets->mainDriverFailsafeNvidiaCombo=yon_gtk_builder_get_widget(widgets->builder,"mainDriverFailsafeNvidiaCombo");
widgets->mainDriverFailsafeAMDCombo=yon_gtk_builder_get_widget(widgets->builder,"mainDriverFailsafeAMDCombo");
widgets->mainDriverFrameLabel=yon_gtk_builder_get_widget(widgets->builder,"mainDriverFrameLabel");
widgets->monitorConfigurationMethodLabel=yon_gtk_builder_get_widget(widgets->builder,"monitorConfigurationMethodLabel");
widgets->monitorConfigurationMethodCombo=yon_gtk_builder_get_widget(widgets->builder,"monitorConfigurationMethodCombo");
widgets->mainMonitorVisualConfigurationBox=yon_gtk_builder_get_widget(widgets->builder,"mainMonitorVisualConfigurationBox");
widgets->mainMonitorConfigurationBox=yon_gtk_builder_get_widget(widgets->builder,"mainMonitorConfigurationBox");
widgets->mainMonitorConfigurationFrameLabel=yon_gtk_builder_get_widget(widgets->builder,"mainMonitorConfigurationFrameLabel");
widgets->mainHybridGraphicsDiscreteLabel=yon_gtk_builder_get_widget(widgets->builder,"mainHybridGraphicsDiscreteLabel");
widgets->mainHybridGraphicsDiscreteCheck=yon_gtk_builder_get_widget(widgets->builder,"mainHybridGraphicsDiscreteCheck");
widgets->mainHybridGraphicsFrameLabel=yon_gtk_builder_get_widget(widgets->builder,"mainHybridGraphicsFrameLabel");
widgets->mainExtraLaunchOptirunCheck=yon_gtk_builder_get_widget(widgets->builder,"mainExtraLaunchOptirunCheck");
widgets->mainExtraLaunchPrismusunCheck=yon_gtk_builder_get_widget(widgets->builder,"mainExtraLaunchPrismusunCheck");
widgets->mainExtraFixGapLabel=yon_gtk_builder_get_widget(widgets->builder,"mainExtraFixGapLabel");
widgets->mainExtraLaunchOptirunEntry=yon_gtk_builder_get_widget(widgets->builder,"mainExtraLaunchOptirunEntry");
widgets->mainExtraLaunchPrismusunEntry=yon_gtk_builder_get_widget(widgets->builder,"mainExtraLaunchPrismusunEntry");
widgets->mainExtraFixGapLabelCombo=yon_gtk_builder_get_widget(widgets->builder,"mainExtraFixGapLabelCombo");
widgets->mainExtraLaunchThroughButton=yon_gtk_builder_get_widget(widgets->builder,"mainExtraLaunchThroughButton");
widgets->mainExtraFrameLabel=yon_gtk_builder_get_widget(widgets->builder,"mainExtraFrameLabel");
widgets->mainHeaderTitleLabel=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderTitleLabel");
widgets->mainHeaderLoadButton=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderLoadButton");
widgets->mainHeaderConfigLoadLabel=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderConfigLoadLabel");
widgets->mainHeaderSaveConfigurationLabel=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSaveConfigurationLabel");
widgets->mainHeaderSaveButton=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSaveButton");
widgets->mainHeaderSettingsButton=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSettingsButton");
widgets->mainHeaderLoadGlobalMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderLoadGlobalMenuItem");
widgets->mainHeaderLoadLocalMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderLoadLocalMenuItem");
widgets->mainHeaderSaveGlobalLocalMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSaveGlobalLocalMenuItem");
widgets->mainHeaderSaveGlobalMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSaveGlobalMenuItem");
widgets->mainHeaderSaveLocalMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSaveLocalMenuItem");
widgets->mainHeaderSettingsDocumentationMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSettingsDocumentationMenuItem");
widgets->mainHeaderSettingsAboutMenuItem=yon_gtk_builder_get_widget(widgets->builder,"mainHeaderSettingsAboutMenuItem");
widgets->mainStatusBox=yon_gtk_builder_get_widget(widgets->builder,"mainStatusBox");
widgets->mainStatusIcon=yon_gtk_builder_get_widget(widgets->builder,"mainStatusIcon");
widgets->mainStatusLabel=yon_gtk_builder_get_widget(widgets->builder,"mainStatusLabel");
widgets->templateMonitorConfigurationBox=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationBox");
widgets->templateMonitorConfigurationMonitorLabel=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationMonitorLabel");
widgets->templateMonitorConfigurationResolutionLabel=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationResolutionLabel");
widgets->templateMonitorConfigurationResolutionCombo=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationResolutionCombo");
widgets->templateMonitorConfigurationFrequencyLabel=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationFrequencyLabel");
widgets->templateMonitorConfigurationFrequencyCombo=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationFrequencyCombo");
widgets->templateMonitorConfigurationRotationLabel=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationRotationLabel");
widgets->templateMonitorConfigurationRotationCombo=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationRotationCombo");
widgets->templateMonitorConfigurationMainRadio=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationMainRadio");
widgets->templateMonitorConfigurationParameterLineCheck=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationParameterLineCheck");
widgets->templateMonitorConfigurationParameterLineEntry=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationParameterLineEntry");
widgets->templateMonitorConfigurationDoNotSwitchOffLabel=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationDoNotSwitchOffLabel");
widgets->templateMonitorConfigurationDoNotSwitchOffCheck=yon_gtk_builder_get_widget(widgets->builder,"templateMonitorConfigurationDoNotSwitchOffCheck");
g_signal_connect(G_OBJECT(widgets->mainDriverAutomaticallyChooseCheck), "toggled", G_CALLBACK(on_auto_choose_drivers), widgets);
// g_signal_connect(G_OBJECT(widgets->mainHybridGraphicsDiscreteCheck), "toggled", G_CALLBACK(on_sensitive_change), widgets);
g_signal_connect(G_OBJECT(widgets->mainExtraLaunchOptirunCheck), "toggled", G_CALLBACK(on_sensitive_change), widgets->mainExtraLaunchOptirunEntry);
g_signal_connect(G_OBJECT(widgets->mainExtraLaunchPrismusunCheck), "toggled", G_CALLBACK(on_sensitive_change), widgets->mainExtraLaunchPrismusunEntry);
g_signal_connect(G_OBJECT(widgets->mainExtraLaunchOptirunCheck), "toggled", G_CALLBACK(on_sensitive_change), widgets->extraOptirunChooseAppsButton);
g_signal_connect(G_OBJECT(widgets->mainExtraLaunchPrismusunCheck), "toggled", G_CALLBACK(on_sensitive_change), widgets->extraPrimusunChooseAppsButton);
g_signal_connect(G_OBJECT(widgets->MainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(widgets->mainDriverProprietaryDriverButton), "clicked", G_CALLBACK(on_proprietary_driver_window_open), NULL);
g_signal_connect(G_OBJECT(widgets->extraOptirunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets);
g_signal_connect(G_OBJECT(widgets->extraPrimusunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets);
g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsAboutMenuItem), "activate", G_CALLBACK(on_about), NULL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverProprietaryDriverCombo),_("Don't use"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo),_("Off"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo),_("fbdev"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo),_("Off"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo),_("fbdev"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo),_("1st variant. May cause perfomance drops in video games"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo),_("2nd variant. May not work on specific video cards"));
gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel),_("Video output configuration"));
gtk_label_set_text(GTK_LABEL(widgets->mainDriverProprietaryDriverLabel),_("Proprietary driver: "));
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel),_("Failsafe driver nVidia: "));
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel),_("Failsafe driver AMD/ATI: "));
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel),_("Driver"));
// gtk_label_set_text(GTK_LABEL(widgets->monitorConfigurationMethodLabel),_("Configuration method"));
gtk_label_set_text(GTK_LABEL(widgets->mainMonitorConfigurationFrameLabel),_("Monitor configuration"));
gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel),_("Hybrid graphics"));
gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel),_("Fix frame gap (nVidia)"));
gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel),_("Extra"));
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel),_("UBlinux Video Configuration"));
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel),_("Load"));
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel),_("Save"));
gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck),_("On"));
gtk_button_set_label(GTK_BUTTON(widgets->mainDriverAutomaticallyChooseCheck),_("Automatically choose and use driver"));
gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchOptirunCheck),_("Launch programms through optirun (nVidia): "));
gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchPrismusunCheck),_("Launch programs through primusun (nVidia): "));
gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck),_("discrete video only (AMD/ATI)"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadGlobalMenuItem),_("Load from global configuration"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadLocalMenuItem),_("Load from local configuration"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalLocalMenuItem),_("Save to global an local configuration"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalMenuItem),_("Save to global configuration"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveLocalMenuItem),_("Save to local configuration"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsDocumentationMenuItem),_("Documentation"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsAboutMenuItem),_("About"));
// gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchThroughButton),_("Change"));
yon_ubl_header_setup(widgets->mainHeadOverlay,widgets->headBox,widgets->mainHeadBackgroundImage, banner_path);
// gtk_overlay_add_overlay(GTK_OVERLAY(widgets->mainHeadOverlay),widgets->headBox);
// gtk_image_set_from_file(GTK_IMAGE(widgets->mainHeadBackgroundImage),banner_path);
MonitorSettings *monitors = yon_setup_monitor_settings();
videoconfig.monitors=yon_dictionary_pack_monitors(monitors,yon_check_for_monitors());
widgets->overlays=yon_dictionary_pack_overlays(monitors,yon_check_for_monitors());
yon_dictionary_gtk_pack_start_multiple_widgets(widgets->overlays,widgets->mainMonitorVisualConfigurationBox,0,0,0);
// yon_dictionary_gtk_pack_start_multiple_widgets(widgets->monitors,widgets->mainMonitorConfigurationBox,0,0,0);
}
int main(int argc, char *argv[]){
local=setlocale(LC_ALL, "");
textdomain (LocaleName);
gtk_init(&argc, &argv);
GError error;
// xfconf_init (&error);
// display_channel = xfconf_channel_new ("displays");
videoconfig.applist=yon_apps_scan_and_parse_desktops(&videoconfig.appsize);
yon_setup_config();
widgets_dict widgets;
yon_setup_widgets(&widgets);
gtk_widget_show(widgets.MainWindow);
yon_fill_ui(&widgets);
yon_ubl_status_box_render(widgets.mainStatusBox,widgets.mainStatusIcon,widgets.mainStatusLabel,"com.ublinux.ubl-settings-video.checked",_("Configuration has been loaded"),BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkCssProvider *css=gtk_css_provider_new();
gtk_css_provider_load_from_path(css,CssPath,NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css),
-1);
gtk_main();
return 0;
}