@ -12,6 +12,25 @@ 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 ) {
void on_auto_choose_drivers ( GtkWidget * self , widgets_dict * widgets ) {
int state = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( self ) ) ;
int state = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( self ) ) ;
@ -54,6 +73,19 @@ 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 ) {
void yon_parse_monitor ( dictionary * monitor , char * string_of_settings ) {
char * result = NULL ;
char * result = NULL ;
if ( ( strstr ( string_of_settings , " , " ) ) ) {
if ( ( strstr ( string_of_settings , " , " ) ) ) {
@ -65,13 +97,18 @@ void yon_parse_monitor(dictionary *monitor,char *string_of_settings){
}
}
void yon_default_configs ( ) {
}
void yon_setup_config ( ) {
void yon_setup_config ( ) {
FILE * videoports = popen ( get_ports_command , " r " ) ;
FILE * videoports = popen ( get_ports_command , " r " ) ;
char str [ 1000 ] ;
char str [ 1000 ] ;
while ( fgets ( str , 1000 , videoports ) ) {
while ( fgets ( str , 1000 , videoports ) ) {
printf ( " %s \n " , str ) ;
printf ( " %s \n " , str ) ;
char * strng = yon_char_divide_search ( str , " \n " , 0 ) ;
char * strng = yon_char_divide_search ( str , " \n " , 0 ) ;
monitorconfig * monitor = malloc ( sizeof ( monitorconfig ) ) ;
monitorconfig * monitor = NULL ;
monitor = malloc ( sizeof ( monitorconfig ) ) ;
monitor - > port = yon_char_new ( strng ) ;
monitor - > port = yon_char_new ( strng ) ;
if ( ! videoconfig . monitors ) {
if ( ! videoconfig . monitors ) {
videoconfig . monitors = yon_dictionary_create_with_data ( strng , monitor ) ; }
videoconfig . monitors = yon_dictionary_create_with_data ( strng , monitor ) ; }
@ -90,6 +127,7 @@ void yon_setup_config(){
memset ( result , 0 , 1000 ) ;
memset ( result , 0 , 1000 ) ;
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
videoconfig . failsafenVidia = result ;
videoconfig . failsafenVidia = result ;
else if ( strcmp ( result , " " ) = = 0 ) { yon_default_configs ( ) ; return ; }
else videoconfig . failsafenVidia = NULL ;
else videoconfig . failsafenVidia = NULL ;
memset ( result , 0 , 1000 ) ;
memset ( result , 0 , 1000 ) ;
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
@ -105,7 +143,7 @@ void yon_setup_config(){
else videoconfig . primusrun = NULL ;
else videoconfig . primusrun = NULL ;
for_dictionaries ( dct , videoconfig . monitors ) {
for_dictionaries ( dct , videoconfig . monitors ) {
fgets ( result , 1000 , local ) ;
fgets ( result , 1000 , local ) ;
if ( strcmp ( result , " (null) \n " ) ! = 0 ) {
if ( strcmp ( result , " (null) \n " ) ! = 0 | | strcmp ( result , " " ) ! = 0 ) {
char * curmonitor = strstr ( result , " = " ) + 1 ;
char * curmonitor = strstr ( result , " = " ) + 1 ;
yon_parse_monitor ( dct , curmonitor ) ;
yon_parse_monitor ( dct , curmonitor ) ;
}
}
@ -177,11 +215,20 @@ void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings){
gtk_button_set_label ( GTK_BUTTON ( monitors - > templateMonitorConfigurationDoNotSwitchOffCheck ) , _ ( " DPMS off " ) ) ;
gtk_button_set_label ( GTK_BUTTON ( monitors - > templateMonitorConfigurationDoNotSwitchOffCheck ) , _ ( " DPMS off " ) ) ;
gtk_widget_show ( monitors - > templateMonitorConfigurationWindow ) ;
gtk_widget_show ( monitors - > templateMonitorConfigurationWindow ) ;
char * addln = NULL ;
char * addln = NULL ;
if ( ! monitor s- > curconfig | | ! ( ( monitorconfig * ) monitor s- > curconfig - > data ) - > resolution ) addln = _ ( " Default S ettings" ) ;
if ( ! setting s- > curconfig | | ! ( ( monitorconfig * ) setting s- > curconfig - > data ) - > resolution ) addln = _ ( " Default s ettings" ) ;
else addln = ( ( monitorconfig * ) monitor s- > curconfig - > data ) - > resolution ;
else addln = ( ( monitorconfig * ) setting s- > curconfig - > data ) - > resolution ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationResolutionCombo ) , addln ) ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationResolutionCombo ) , addln ) ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationFrequencyCombo ) , _ ( " Default Settings " ) ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( monitors - > templateMonitorConfigurationResolutionCombo ) , 0 ) ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationRotationCombo ) , _ ( " Default Settings " ) ) ;
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 ( ) {
MonitorSettings * yon_setup_monitor_settings ( ) {
@ -197,6 +244,7 @@ MonitorSettings *yon_setup_monitor_settings(){
monitors [ i ] . templateMonitorInfoResolutionLabel = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoResolutionLabel " ) ) ;
monitors [ i ] . templateMonitorInfoResolutionLabel = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoResolutionLabel " ) ) ;
monitors [ i ] . templateMonitorInfoConfigureButton = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoConfigureButton " ) ) ;
monitors [ i ] . templateMonitorInfoConfigureButton = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoConfigureButton " ) ) ;
monitors [ i ] . curconfig = yon_dictionary_get_nth ( videoconfig . monitors , i ) ;
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 ) ) ;
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 , " " ) ;
char * res = yon_char_get_augumented ( ( ( monitorconfig * ) monitors [ i ] . curconfig - > data ) - > resolution , " " ) ;
if ( ! res ) res = _ ( " Default settings " ) ;
if ( ! res ) res = _ ( " Default settings " ) ;
@ -302,11 +350,27 @@ void yon_setup_widgets(widgets_dict *widgets){
widgets - > templateMonitorConfigurationDoNotSwitchOffCheck = yon_gtk_builder_get_widget ( widgets - > builder , " templateMonitorConfigurationDoNotSwitchOffCheck " ) ;
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 - > 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 - > 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 - > 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 - > 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 - > headInfoLabel ) , _ ( " Video output configuration " ) ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > mainDriverProprietaryDriverLabel ) , _ ( " Proprietary driver: " ) ) ;
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 - > mainDriverFailsafeNvidiaLabel ) , _ ( " Failsafe driver nVidia: " ) ) ;
@ -363,7 +427,7 @@ int main(int argc, char *argv[]){
yon_setup_widgets ( & widgets ) ;
yon_setup_widgets ( & widgets ) ;
gtk_widget_show ( widgets . MainWindow ) ;
gtk_widget_show ( widgets . MainWindow ) ;
yon_fill_ui ( & widgets ) ;
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 ) ;
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 ( ) ;
GtkCssProvider * css = gtk_css_provider_new ( ) ;
gtk_css_provider_load_from_path ( css , CssPath , NULL ) ;
gtk_css_provider_load_from_path ( css , CssPath , NULL ) ;
gtk_style_context_add_provider_for_screen ( gdk_screen_get_default ( ) ,
gtk_style_context_add_provider_for_screen ( gdk_screen_get_default ( ) ,