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.
438 lines
29 KiB
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;
|
|
} |