diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 80d85ab..29d9ec6 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -32,7 +32,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin set(SOURCE_FILES ubl-settings-video.c ubl-utils.c - ubl-settings-video.h ubl-settings-video-cm.h) set(LIBRARIES diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 61ea790..aea0871 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -18,9 +18,7 @@ void on_subwindow_close(GtkWidget *self) void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){ - videoconfig.status_render.text_to_render=MONITOR_PORT_ERROR_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); return; } config->main=0; @@ -34,9 +32,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->port=NULL; config->resolution=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); + yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); config->port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPortCombo)); window->config->key = yon_char_new(config->port); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->templateMonitorConfigurationParameterLineCheck))==0){ @@ -89,11 +85,7 @@ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) @@ -169,11 +161,7 @@ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -182,20 +170,12 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -204,20 +184,12 @@ void on_driver_install(GtkWidget *self,widgets_dict *widgets){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -226,20 +198,12 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -248,11 +212,7 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -269,11 +229,7 @@ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -290,11 +246,7 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -441,21 +393,14 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets) // } if (str){ yon_config_save(str); - - videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } - // else - // yon_ubl_status_box_render(widgets->mainStatusBox, widgets->mainStatusIcon, widgets->mainStatusLabel, _("Local configuration saving failed."), BACKGROUND_IMAGE_FAIL_TYPE); } void on_configuration_save_local_global(GtkWidget *self, widgets_dict *widgets) { on_configuration_save_global_local(self, widgets); - videoconfig.status_render.text_to_render=GLOBAL_LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets) @@ -466,10 +411,7 @@ void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets) str=yon_configuration_get_save_command(save_drivers_global_local_command); if (str){ yon_config_save(str); - - videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } } @@ -485,10 +427,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets) // } if (str){ yon_config_save(str); - - videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } } @@ -662,6 +601,45 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){ } } +void on_read_documentation(GtkWidget *self,gpointer user_data){ + yon_ubl_browser_window_open(UBLINUX_WIKI_LINK,WEB_VIEW_TITLE_LABEL); + +} + +void on_toggle(GtkWidget *self, int *changing_var){ + *changing_var = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); +} + +void on_link(GtkWidget *self, char* link, gpointer user_data){ + if (GTK_IS_ABOUT_DIALOG(self)){ + gtk_widget_destroy(self); + } + if (videoconfig.alwaysredirect==0){ + GtkBuilder *builder=gtk_builder_new_from_file(glade_path); + GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow"); + GtkWidget *readButton=yon_gtk_builder_get_widget(builder,"ReadHelpButton"); + GtkWidget *cancelButton=yon_gtk_builder_get_widget(builder,"CancelHelpButton"); + GtkWidget *titleLabel=yon_gtk_builder_get_widget(builder,"helpHeader"); + GtkWidget *headQuestionLabel=yon_gtk_builder_get_widget(builder,"webHeaderNameLabel"); + GtkWidget *textLabel=yon_gtk_builder_get_widget(builder,"helpText"); + GtkWidget *alwaysOpenCheck=yon_gtk_builder_get_widget(builder,"AlwaysOpenHelpCheckbox"); + + g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_read_documentation),NULL); + g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(cancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(alwaysOpenCheck),"toggled",G_CALLBACK(on_toggle),&videoconfig.alwaysredirect); + + gtk_label_set_text(GTK_LABEL(titleLabel),SETTINGS_VIDEO_TITLE_LABEL); + gtk_label_set_text(GTK_LABEL(headQuestionLabel),HELP_TITLE_LABEL); + gtk_label_set_text(GTK_LABEL(textLabel),HELP_INFO_LABEL); + gtk_button_set_label(GTK_BUTTON(alwaysOpenCheck),HELP_ALWAYS_OPEN_LABEL); + + gtk_widget_show(sureWindow); + }else { + on_read_documentation(NULL,NULL); + } +} + /**void on_about() * [EN] */ @@ -674,6 +652,7 @@ void on_about() gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), version_application); gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window), _("Project Home Page")); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window), _("Videocard and monitor configuration manager")); + g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL); gtk_widget_set_visible(hideButtonBox, 0); gtk_widget_show(window); } @@ -1001,11 +980,7 @@ void on_config_fill_interface(widgets_dict *widgets) * [EN] */ dictionary *yon_proprieary_get(){ - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_LOADING_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); videoconfig.proprietary=NULL; int drivers_size=0; config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size); @@ -1027,11 +1002,7 @@ dictionary *yon_proprieary_get(){ } if (videoconfig.proprietary){ 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size); if (drivers){ @@ -1052,18 +1023,10 @@ 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=PROPRIETARY_USE_LOCAL_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } 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); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } } @@ -1550,7 +1513,7 @@ void yon_setup_widgets(widgets_dict *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); - g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsDocumentationMenuItem), "activate", G_CALLBACK(on_about), NULL); + g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsDocumentationMenuItem), "activate", G_CALLBACK(on_link), NULL); g_signal_connect(G_OBJECT(widgets->mainHeaderLoadGlobalMenuItem), "activate", G_CALLBACK(on_configuration_load_global), widgets); g_signal_connect(G_OBJECT(widgets->mainHeaderLoadLocalMenuItem), "activate", G_CALLBACK(on_configuration_load_local), widgets); @@ -1711,10 +1674,7 @@ int main(int argc, char *argv[]) // yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); // yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist); gtk_widget_show(widgets.MainWindow); - // yon_fill_ui(&widgets); - videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); on_config_fill_interface(&widgets); yon_monitor_set_resolutions(); yon_adapter_window_setup(&widgets); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index b05462c..c4120fe 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -1,5 +1,9 @@ #include #include +#include "ubl-settings-video-cm.h" +#ifdef WEBKIT_FOUND + #include +#endif #include #include #include @@ -11,14 +15,13 @@ #include #include #include -#ifdef WEBKIT_FOUND - #include -#endif #include "ubl-utils.h" #include "ubl-settings-video-strings.h" #ifndef UBL_SETINGS_VIDEO_H #define UBL_SETINGS_VIDEO_H +#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-video" + #define icon_name "com.ublinux.ubl-settings-video" #define banner_path "/usr/share/ubl-settings-video/images/ubl-settings-video-banner.png" @@ -105,6 +108,7 @@ typedef struct { typedef struct { + int alwaysredirect; config_str loaded_config; int configsize; int autoChooseDrivers;