From b644effe5a8e0b8a402452a007bc34e82b6eb8a5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 16:52:27 +0600 Subject: [PATCH] Frequency saving done --- source/ubl-settings-video-strings.h | 5 + source/ubl-settings-video.c | 194 ++++++++++++++++++++-------- source/ubl-settings-video.h | 2 +- 3 files changed, 144 insertions(+), 57 deletions(-) diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h index 6df2e43..5bc3d26 100644 --- a/source/ubl-settings-video-strings.h +++ b/source/ubl-settings-video-strings.h @@ -61,6 +61,11 @@ #define ACCEPT_LABEL _("Accept") #define DONT_USE_LABEL _("Don't use") #define PROPRIETARY_LOADING_LABEL _("Driver list is currently loading...") +#define PROPRIETARY_LOADING_FAILED_LABEL _("Driver list is failed to load.") +#define PROPRIETARY_DELETING_IN_PROGRESS_LABEL _("Deleting driver...") +#define PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL _("Installing driver...") +#define PROPRIETARY_OPETAION_DONE_LABEL _("Driver operation is done.") +#define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.") #define INFORMATION_LABEL _("Information") #define DRIVERS_LABEL _("Drivers") diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 8c62f7a..12cd6e4 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -33,7 +33,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->position_port=NULL; config->port=NULL; config->resolution=NULL; - config->frequency=NULL; + config->frequency=0; videoconfig.status_render.text_to_render=MONITOR_PORT_SUCCESS_LABEL; videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; yon_ubl_status_box_render(&videoconfig.status_render); @@ -52,6 +52,8 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->position_port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPositionPortCombo)); } + if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo))>0) + config->frequency=gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo)); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) { config->resolution =yon_char_divide_search((char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)),";",-1); int rotation = gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationRotationCombo)); @@ -87,6 +89,11 @@ void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){ gtk_widget_destroy(widgets->TerminalRevealer); yon_proprieary_get(); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_OPETAION_DONE_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); } static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) @@ -162,48 +169,91 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){ } void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); - - + if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_install(GtkWidget *self,widgets_dict *widgets){ - + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ - + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_DELETING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ - + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_DELETING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ @@ -215,9 +265,16 @@ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_info(GtkWidget *self,widgets_dict *widgets){ @@ -229,10 +286,16 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){ char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); - + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ @@ -311,11 +374,11 @@ char *yon_configuration_get_save_command(char *command){ str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL); } - if (strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0) + if (videoconfig.optirun&&strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0) str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=","\"",videoconfig.optirun,"\"",NULL)); else str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=\"\"",NULL)); - if (strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0) + if (videoconfig.primusrun&&strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0) str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=","\"", videoconfig.primusrun,"\"",NULL)); else str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL)); @@ -430,9 +493,13 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets) } void yon_update_config(widgets_dict *widgets) -{ +{ + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchOptirunCheck))==1) videoconfig.optirun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchOptirunEntry))); + else videoconfig.optirun = NULL; + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchPrismusunCheck))==1) videoconfig.primusrun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchPrismusunEntry))); + else videoconfig.primusrun = NULL; videoconfig.failsafenVidia = yon_char_new( gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo))); videoconfig.failsafeATI = yon_char_new( gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo))); } @@ -704,9 +771,14 @@ void yon_monitor_view_update(){ gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,"")); monitorconfig *params=yon_dictionary_get_data(yon_dictionary_get_data(dict,monitor_window*)->config,monitorconfig*); gtk_widget_set_sensitive(yon_dictionary_get_data(dict,monitor_window*)->templateMonitorImage,params->enable); - if (config->resolution) - gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),config->resolution); - else if (params->stringparameters){ + if (config->resolution){ + char *freq=""; + if (config->frequency>0){ + if (config->frequency==1) freq ="60"; + else if (config->frequency==2) freq="75"; + } + gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),yon_char_unite(config->resolution,":",freq,NULL)); + }else if (params->stringparameters){ int size=0; config_str rtn=yon_char_parse(params->stringparameters,&size,","); char *res=yon_char_divide_search(yon_char_new(yon_char_parsed_get_resolution(rtn,size))," ",-1); @@ -857,15 +929,15 @@ char *yon_monitor_make_string(monitorconfig* config) char *frequency=""; - if (config->frequency) - if (first==1){ - frequency=config->frequency; - first=0; - }else{ - frequency=yon_char_get_augumented(",",config->frequency); - } + if (config->frequency){ + if (config->frequency==1) frequency="x60"; + else if (config->frequency==2) frequency="x75"; + } + if (strcmp(resolution,"")!=0) + resolution=yon_char_get_augumented(resolution,frequency); + - char *stringparameters=yon_char_unite("",main,resolution,frequency,enable,position,rotation,dpms,cvt,reduced,gtf,NULL); + char *stringparameters=yon_char_unite("",main,resolution,enable,position,rotation,dpms,cvt,reduced,gtf,NULL); config->stringparameters=yon_char_new(stringparameters); } @@ -954,11 +1026,19 @@ dictionary *yon_proprieary_get(){ } } yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=""; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + if (videoconfig.proprietary){ + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=""; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_LOADING_FAILED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } @@ -966,16 +1046,18 @@ dictionary *yon_proprieary_get(){ * [EN] */ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ - dictionary *dict=NULL; - gtk_list_store_clear(list); - for_dictionaries(dict,videoconfig.proprietary){ - GtkTreeIter iter; - int size=0; - config_str str = yon_char_parse((char*)dict->data,&size,";"); - gtk_list_store_append(list,&iter); - gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); - if (strstr(dict->key," installed")) - gtk_list_store_set(list,&iter,0,1,-1); + if(videoconfig.proprietary){ + dictionary *dict=NULL; + gtk_list_store_clear(list); + for_dictionaries(dict,videoconfig.proprietary){ + GtkTreeIter iter; + int size=0; + config_str str = yon_char_parse((char*)dict->data,&size,";"); + gtk_list_store_append(list,&iter); + gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + if (strstr(dict->key," installed")) + gtk_list_store_set(list,&iter,0,1,-1); + } } } @@ -1102,7 +1184,7 @@ monitor_config yon_monitor_config_new(char *port){ monitor->position_port=NULL; monitor->resolution=NULL; monitor->resolutionCapabilities=NULL; - monitor->frequency=NULL; + monitor->frequency=0; monitor->rotation=0; monitor->stringparameters=NULL; monitor->dpms=0; @@ -1171,6 +1253,7 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_ } } + char *yon_char_parsed_get_resolution(config_str parsed_string, int size){ char *left=NULL, *right=NULL, *freq=NULL; for (int i=0;imainStatusIcon; videoconfig.status_render.label=widgets->mainStatusLabel; videoconfig.status_render.box=widgets->mainStatusBox; - if (videoconfig.lock) if (videoconfig.lock_load_global==1) gtk_widget_set_sensitive(widgets->mainHeaderLoadGlobalMenuItem,0); if (videoconfig.lock_save_global==1) diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 0a107d9..17b9547 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -139,7 +139,7 @@ typedef struct char *port; char *resolution; config_str resolutionCapabilities; - char *frequency; + int frequency; int rotation; char *stringparameters; int dpms;