From 8cf0e16e3f8c19e1b3a6fe971fb065f572094aab Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 13 Jun 2024 18:00:41 +0600 Subject: [PATCH 01/21] Driver tab changes --- source/ubl-settings-video.c | 235 ++++++--------- source/ubl-settings-video.h | 44 +-- source/ubl-strings.h | 4 +- ubl-settings-video.glade | 556 +++++++++++++----------------------- video-drivers.csv | 60 ++-- 5 files changed, 344 insertions(+), 555 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 67b4be1..7edbd2d 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -30,7 +30,7 @@ static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer void on_terminal_check_progress(VteTerminal *terminal, main_window *widgets){ char *text = vte_terminal_get_text(terminal,NULL,NULL,NULL); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_find_count(text,"::")/4); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_count(text,"::")/4); } void yon_terminal_start(main_window *widgets, char *usr_command){ @@ -98,7 +98,7 @@ void on_driver_pack_install(GtkWidget *self,main_window *widgets){ GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); 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_append(install_proprietary_command,name)); @@ -107,25 +107,11 @@ void on_driver_pack_install(GtkWidget *self,main_window *widgets){ } } -void on_driver_install(GtkWidget *self,main_window *widgets){ - GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,2,&name,-1); - yon_terminal_start(widgets,yon_char_append(install_proprietary_command,name)); - gtk_list_store_set(main_config.list,&iter,0,1,-1); - } else { - yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - } -} - void on_driver_pack_delete(GtkWidget *self,main_window *widgets){ GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); 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_append(delete_proprietary_command,name)); @@ -138,70 +124,22 @@ void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets){ GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_widget_set_sensitive(widgets->proprietaryInfoButton,1); + gtk_widget_set_sensitive(widgets->InfoButton,1); int installed=0; - gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->proprietaryTreeView)),&iter,0,&installed,-1); + gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)),&iter,0,&installed,-1); if (installed==1){ - gtk_widget_set_sensitive(widgets->proprietaryInstallButton,0); - gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,1); - } else { - gtk_widget_set_sensitive(widgets->proprietaryInstallButton,1); - gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,0); - } - } else { - gtk_widget_set_sensitive(widgets->proprietaryInfoButton,0); - gtk_widget_set_sensitive(widgets->proprietaryInstallButton,0); - gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,0); - } -} - -void on_driver_selection_change(GtkWidget *self, main_window *widgets){ - GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_widget_set_sensitive(widgets->driversInfoButton,1); - int installed=0; - char *module, *package; - gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->driversTreeView)),&iter,0,&installed,1,&module,2,&package,-1); - char *target; - if (strcmp(module,"")) - target = module; - else - target = package; - if (yon_char_parsed_check_exist(drivers_always_active,drivers_always_active_size,target)>-1){ - gtk_widget_set_sensitive(widgets->driversInstallButton,0); - gtk_widget_set_sensitive(widgets->driversDeleteButton,0); - } - else if (installed==1){ - gtk_widget_set_sensitive(widgets->driversInstallButton,0); - gtk_widget_set_sensitive(widgets->driversDeleteButton,1); + // gtk_widget_set_sensitive(widgets->InstallButton,0); + // gtk_widget_set_sensitive(widgets->DeleteButton,1); } else { - gtk_widget_set_sensitive(widgets->driversInstallButton,1); - gtk_widget_set_sensitive(widgets->driversDeleteButton,0); + // gtk_widget_set_sensitive(widgets->InstallButton,1); + // gtk_widget_set_sensitive(widgets->DeleteButton,0); } } else { - gtk_widget_set_sensitive(widgets->proprietaryInfoButton,0); - gtk_widget_set_sensitive(widgets->proprietaryInstallButton,0); - gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,0); - } - -} - -void on_driver_delete(GtkWidget *self,main_window *widgets){ - GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,2,&name,-1); - yon_terminal_start(widgets,yon_char_append(delete_proprietary_command,name)); - gtk_list_store_set(main_config.list,&iter,0,0,-1); - } else { - yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + gtk_widget_set_sensitive(widgets->InfoButton,0); + // gtk_widget_set_sensitive(widgets->InstallButton,0); + // gtk_widget_set_sensitive(widgets->DeleteButton,0); } } @@ -213,7 +151,7 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){ GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); 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,yon_char_append(get_info_proprietary_command,name)); @@ -223,22 +161,20 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){ } } -void on_driver_info(GtkWidget *self,main_window *widgets){ +void on_pack_install_activate(){ + +} - pthread_attr_t attr; - pthread_t tid; - pthread_attr_init(&attr); - GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,2,&name,-1); - pthread_create(&tid,&attr,(void*)yon_launch,yon_char_append(get_info_proprietary_command,name)); - yon_ubl_status_box_render(INFO_PROCESS_LABEL,BACKGROUND_IMAGE_INFO_TYPE); - } else { - yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - } +void on_module_install_activate(){ + +} + +void on_pack_remove_activate(){ + +} + +void on_module_remove_activate(){ + } void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ @@ -345,6 +281,10 @@ void on_resolutions_unsupported_show(GtkToggleButton *self, monitor_edit_window void on_save_done(main_window *widgets, config_str output, int size){ if (widgets) {}; + // char *gapfix1 = yon_config_get_by_key(KWIN_TRIPLE_BUFFER); + // char *gapfix2 = yon_config_get_by_key(GL_YIELD); + // int gapfix1_status = yon_config_get_status(KWIN_TRIPLE_BUFFER); + // int gapfix2_status = yon_config_get_status(GL_YIELD); char *final_output = yon_char_parsed_to_string(output,size,""); printf("%s\n",final_output); free(final_output); @@ -449,12 +389,18 @@ void yon_interface_save(){ // switch (gtk_combo_box_get_active(GTK_COMBO_BOX(main_config.widgets->FrameGapCombo))){ // case 0: yon_config_remove_by_key(GL_YIELD); // yon_config_remove_by_key(KWIN_TRIPLE_BUFFER); + // yon_config_set_status(KWIN_TRIPLE_BUFFER,-2); + // yon_config_set_status(GL_YIELD,-2); // break; // case 2: yon_config_register(GL_YIELD,GL_YIELD_command,"USLEEP"); // yon_config_remove_by_key(KWIN_TRIPLE_BUFFER); + // yon_config_set_status(KWIN_TRIPLE_BUFFER,-2); + // yon_config_set_status(GL_YIELD,-2); // break; // case 3: yon_config_register(KWIN_TRIPLE_BUFFER,KWIN_TRIPLE_BUFFER_command,"1"); // yon_config_remove_by_key(GL_YIELD); + // yon_config_set_status(KWIN_TRIPLE_BUFFER,-2); + // yon_config_set_status(GL_YIELD,-2); // break; // } switch (gtk_combo_box_get_active(GTK_COMBO_BOX(main_config.widgets->DisplayDiscreteOnly))){ @@ -959,31 +905,41 @@ void yon_monitor_view_update(){ void yon_proprietary_local_get(){ gtk_list_store_clear(main_config.list); gtk_list_store_clear(main_config.list2); - int drivers_size=0; + int kernels_size; + config_str kernels_installed=yon_config_load(yon_debug_output("%s\n",yon_get_kernels_installed),&kernels_size); + + for (int i=0;i-1; - gtk_list_store_append(main_config.list,&iter); - gtk_list_store_set(main_config.list,&iter,0,status,1,current[1],2,current[2],3,current[3],4,_(current[4]),5,_(current[5]),-1); - } else if (strcmp(current[2],"")){ - int status= yon_char_parsed_check_exist(drivers,drivers_size,current[2])>-1; - gtk_list_store_append(main_config.list2,&iter); - gtk_list_store_set(main_config.list2,&iter,0,status,1,current[2],2,current[2],3,current[3],4,_(current[4]),5,_(current[5]),-1); + if ((!strcmp(current[0],"")||yon_char_parsed_check_exist(kernels_installed,kernels_size,current[0])>-1)){ + if ((!yon_char_is_empty(current[1])&&!system(yon_get_is_exist_command(current[1])))||(!yon_char_is_empty(current[1])&&!system(yon_get_is_exist_command(current[2])))){ + int module_status = !yon_char_is_empty(current[1])?!system(yon_get_is_installed_command(current[1])):0; + int package_status = !yon_char_is_empty(current[2])?!system(yon_get_is_installed_command(current[2])):0; + gtk_list_store_append(main_config.list,&iter); + gtk_list_store_set(main_config.list,&iter,0,module_status,1,package_status,2,current[0],3,current[3],4,current[4],5,_(current[5]),7,current[1],8,current[2],-1); + } } } + textdomain(template_ui_LocaleName); + yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + textdomain(LocaleName); +} + +void yon_proprietary_get_thread(){ + yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); + GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),NULL); } void yon_monitor_view_dictionary_destroy(void *window){ @@ -1199,18 +1155,22 @@ void yon_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){ gtk_widget_set_sensitive(target,active>1 ? 1 : 0); } +void on_database_update(void *self,void *widgets){ + yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command); +} + /** void yon_setup_widgets(main_window *widgets) * [EN] * Sets up every element on main window * [RU] * * */ -void yon_main_window_complete(main_window *widgets){ +template_main_window *yon_main_window_complete(main_window *widgets){ widgets = yon_remalloc(widgets,sizeof(main_window)); main_config.widgets=widgets; GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0); - // Custom widgets configuration + // Custom widgets configuration { widgets->AutoDriverCombo = yon_gtk_builder_get_widget(builder,"AutoDriverCombo"); widgets->FreeDriverCombo = yon_gtk_builder_get_widget(builder,"FreeDriverCombo"); @@ -1228,27 +1188,15 @@ void yon_main_window_complete(main_window *widgets){ widgets->PrimusrunButton = yon_gtk_builder_get_widget(builder,"PrimusrunButton"); widgets->FrameGapCombo = yon_gtk_builder_get_widget(builder,"FrameGapCombo"); - widgets->proprietaryTreeView = yon_gtk_builder_get_widget(builder, "proprietaryTreeView"); - widgets->proprietaryInfoButton = yon_gtk_builder_get_widget(builder, "proprietaryInfoButton"); - widgets->proprietaryDeleteButton = yon_gtk_builder_get_widget(builder, "proprietaryDeleteButton"); - widgets->proprietaryInstallButton = yon_gtk_builder_get_widget(builder, "proprietaryInstallButton"); - widgets->proprietaryTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(builder, "proprietaryTreeSelection")); - widgets->driversTreeView = yon_gtk_builder_get_widget(builder, "driversTreeView"); - widgets->driversInfoButton = yon_gtk_builder_get_widget(builder, "driversInfoButton"); - widgets->driversDeleteButton = yon_gtk_builder_get_widget(builder, "driversDeleteButton"); - widgets->driversInstallButton = yon_gtk_builder_get_widget(builder, "driversInstallButton"); + widgets->DriversTree = yon_gtk_builder_get_widget(builder, "DriversTree"); + widgets->InfoButton = yon_gtk_builder_get_widget(builder, "InfoButton"); + // widgets->DeleteButton = yon_gtk_builder_get_widget(builder, "DeleteButton"); + // widgets->InstallButton = yon_gtk_builder_get_widget(builder, "InstallButton"); widgets->TerminalOverlay = yon_gtk_builder_get_widget(builder, "TerminalOverlay"); widgets->MenusTab = yon_gtk_builder_get_widget(builder, "MenusTab"); - widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(builder, "driversTreeSelection")); widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton"); - widgets->LoadDriversButton1 = yon_gtk_builder_get_widget(builder,"LoadDriversButton1"); - widgets->proprietaryNotebook = yon_gtk_builder_get_widget(builder,"notebook1"); - widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "proprietartInstalledColumn")); - widgets->ProprietaryPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryPackageColumn")); - widgets->ProprietaryDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryDriverColumn")); - widgets->ProprietaryDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryDescriptionColumn")); - widgets->ProprietarySupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietarySupportedColumn")); + widgets->DriversTree = yon_gtk_builder_get_widget(builder,"DriversTree"); widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab")); widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab")); @@ -1263,27 +1211,15 @@ void yon_main_window_complete(main_window *widgets){ widgets->InformationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel")); widgets->InformationLabel2 = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel2")); - widgets->driverInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "driverInstalledColumn")); - widgets->driverPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "driverPackageColumn")); - widgets->driverDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "driverDriverColumn")); - widgets->driverDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "driverDescriptionColumn")); - widgets->driverSupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "driverSupportedColumn")); - main_config.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6")); main_config.list2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore1")); - g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_local_get), widgets); - g_signal_connect(G_OBJECT(widgets->LoadDriversButton1), "clicked", G_CALLBACK(yon_proprietary_local_get), widgets); + g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets); - g_signal_connect(G_OBJECT(widgets->proprietaryDeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); - g_signal_connect(G_OBJECT(widgets->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); - g_signal_connect(G_OBJECT(widgets->proprietaryInfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); - g_signal_connect(G_OBJECT(widgets->proprietaryTreeView), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets); - g_signal_connect(G_OBJECT(widgets->driversTreeView), "cursor-changed", G_CALLBACK(on_driver_selection_change), widgets); - - g_signal_connect(G_OBJECT(widgets->driversDeleteButton), "clicked", G_CALLBACK(on_driver_delete), widgets); - g_signal_connect(G_OBJECT(widgets->driversInstallButton), "clicked", G_CALLBACK(on_driver_install), widgets); - g_signal_connect(G_OBJECT(widgets->driversInfoButton), "clicked", G_CALLBACK(on_driver_info), widgets); + // g_signal_connect(G_OBJECT(widgets->DeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); + // g_signal_connect(G_OBJECT(widgets->InstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); + g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); + g_signal_connect(G_OBJECT(widgets->DriversTree), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); @@ -1297,10 +1233,14 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunEntry); // yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); + yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->DriversTree)); + yon_adapter_window_setup(widgets); } yon_save_window_set_postsave_function(on_save_done,widgets); on_config_local_load(NULL,widgets); + + return (template_main_window*)widgets; } /**config_init() @@ -1335,7 +1275,7 @@ int main(int argc, char *argv[]){ gtk_init(&argc, &argv); template_main_window *widgets = yon_ubl_window_setup(); - yon_main_window_complete((main_window*)widgets); + widgets = yon_main_window_complete((main_window*)widgets); char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_load(path); @@ -1344,8 +1284,15 @@ int main(int argc, char *argv[]){ yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); textdomain(LocaleName); } + if (system(yon_check_database_command)){ + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=DATABASE_UNACCESSIBLE_LABEL; + data->function = on_database_update; + data->data = widgets; + yon_confirmation_dialog_call(widgets->HeadOverlay,data); - yon_proprietary_local_get(); + } + yon_proprietary_get_thread(); // on_config_fill_interface(&widgets); yon_monitor_set_resolutions(); gtk_main(); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 4cee7ae..82df60a 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -1,9 +1,6 @@ #include #include -#include "ubl-cmake.h" -#ifdef WEBKIT_FOUND - #include -#endif +#include #include #include #include @@ -17,7 +14,6 @@ #include #include #include -// #include "ubl-utils.h" #include "ubl-strings.h" #define VTE_INCLUDE #include @@ -81,9 +77,15 @@ #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" +#define yon_check_database_command "pacman -Sqs >/dev/null" + +#define yon_get_kernels_installed "find /usr/lib/modules/ -maxdepth 2 -type f -iname \"pkgbase\" -exec cat {} + 2>/dev/null" + +#define yon_get_is_installed_command(target) yon_char_append("pacman -Qs ",target) +#define yon_get_is_exist_command(target) yon_char_append("pacman -Ss ",target) + #define get_proprietary_drivers_command "pacman -Sysq 'ubm-nvidia-.*|amdgpu|^nvidia-[0-9]{1,}[a-zA-Z]{0,}-dkms|^mesa$|^xf86-video-intel$|^lib32-vulkan-intel$'" #define get_proprietary_drivers_local_command "pacman -Qq |grep -E 'nvidia|^vulkan-amdgpu|^amdgpu-pro-libgl'" -#define get_proprietary_installed_command "pacman -Qsq 'ubm-nvidia-.*|amdgpu|^nvidia-[0-9]{1,}[a-zA-Z]{0,}-dkms|^mesa$|^xf86-video-intel$|^lib32-vulkan-intel$'" // #define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" #define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ,_]{1,}\"|sed 's/: /=/g'|sed 's/ /-/g'" @@ -100,8 +102,8 @@ #define OPTIRUN "OPTIRUN" #define PRIMUSRUN "PRIMUSRUN" #define INTEGRATEDVGA "INTEGRATEDVGA" -#define KWIN_TRIPLE_BUFFER "\"export KWIN_TRIPLE_BUFFER" -#define GL_YIELD "\"export __GL_YIELD" +#define KWIN_TRIPLE_BUFFER "export KWIN_TRIPLE_BUFFER" +#define GL_YIELD "export __GL_YIELD" #define VGADRV_AUTO_command "ubconfig --source global get [video] VGADRV_AUTO" #define VGADRV_NOFREE_command "ubconfig --source global get [video] VGADRV_NOFREE" @@ -176,28 +178,8 @@ typedef struct GtkWidget *PrimusrunButton; GtkWidget *FrameGapCombo; - GtkWidget *proprietaryTreeView; - GtkWidget *proprietaryInfoButton; - GtkWidget *proprietaryDeleteButton; - GtkWidget *proprietaryInstallButton; - GtkTreeSelection *proprietaryTreeSelection; - GtkWidget *driversTreeView; - GtkWidget *driversInfoButton; - GtkWidget *driversDeleteButton; - GtkWidget *driversInstallButton; - GtkTreeSelection *driversTreeSelection; - - GtkTreeViewColumn *proprietartInstalledColumn; - GtkTreeViewColumn *ProprietaryPackageColumn; - GtkTreeViewColumn *ProprietaryDriverColumn; - GtkTreeViewColumn *ProprietaryDescriptionColumn; - GtkTreeViewColumn *ProprietarySupportedColumn; - - GtkTreeViewColumn *driverInstalledColumn; - GtkTreeViewColumn *driverPackageColumn; - GtkTreeViewColumn *driverDriverColumn; - GtkTreeViewColumn *driverDescriptionColumn; - GtkTreeViewColumn *driverSupportedColumn; + GtkWidget *DriversTree; + GtkWidget *InfoButton; GtkWidget *DriverModulesTab; GtkWidget *DriversTab; @@ -223,8 +205,6 @@ typedef struct GtkWidget *MenusTab; GtkWidget *LoadDriversButton; - GtkWidget *LoadDriversButton1; - GtkWidget *proprietaryNotebook; } main_window; typedef struct diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 47e58f2..4535f58 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -182,4 +182,6 @@ #define DESCR35_LABEL _("X.org vesa video driver") #define DESCR36_LABEL _("X.org vmware video driver") #define DESCR37_LABEL _("X.org 3dfx Voodoo1/Voodoo2 2D video driver") -#define DESCR38_LABEL _("X.org X11 qxl video driver") \ No newline at end of file +#define DESCR38_LABEL _("X.org X11 qxl video driver") + +#define DATABASE_UNACCESSIBLE_LABEL _("Database files must be updated") \ No newline at end of file diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 450681f..7ded75f 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -280,16 +280,6 @@ False dialog-information-symbolic - - True - False - user-trash-symbolic - - - True - False - dialog-information-symbolic - True False @@ -300,26 +290,6 @@ False com.ublinux.libublsettingsui-gtk3.sync-symbolic - - True - False - com.ublinux.libublsettingsui-gtk3.sync-symbolic - - - True - False - go-bottom-symbolic - - - True - False - user-trash-symbolic - - - True - False - go-bottom-symbolic - @@ -338,18 +308,24 @@ - + + + - + - + + + + + @@ -1057,410 +1033,280 @@ - + True False + 5 + 5 + 5 + 5 + vertical - + True - True - 5 - 5 - 5 - 5 - 5 - 5 + False True False 5 5 - 5 - 5 - 5 vertical 5 - - - True - True - external - - - True - True - 5 - liststore6 - 1 - vertical - True - 4 - - - - - - Installed - descending - 0 - - - - 0 - - - - - - - Package - - - - 1 - - - - - - - Driver - - - - 3 - - - - - - - autosize - Description - - - word - 150 - - - 4 - - - - - - - autosize - Supported Devices - - - word - 220 - - - 5 - - - - - - - - - True - True - 0 - - True False - center 5 - - Update - True - True - True - image3 - - - False - True - 0 - - - - - Установить + True - False - True - True - image9 + False + Kernel: False True - end 0 - - Удалить + True - False - True - True - image11 + False + 0 + + Default (All installed) + - False + True True - end 1 - - - Подробнее - True - False - True - True - image10 - - - False - True - end - 2 - - False True - 1 + 0 - - - - - True - False - Driver Modules - - - False - - - - - True - False - 5 - 5 - 5 - 5 - 5 - vertical - 5 - + True - True - external + False + 5 - + True - True - 5 - liststore1 - 0 - vertical - True - 4 - - + False + vertical + 5 + + + True + True + True + image3 + + + + False + True + 0 + - - Installed - - - - 0 - - + + True + False + True + True + image10 + + + False + True + 2 + + + + False + True + 0 + + + + + True + False + vertical - - Package + + True + True + liststore1 - - word - 175 + + Installed - - 2 - - - - - - Driver - - - 3 - + - - - - - autosize - Description - - word - 150 - - - 4 - + + + + + + + + + False + True + 0 + - - autosize - Supported Devices + + True + True + external + in - - word - 220 + + True + True + liststore6 + 1 + both + True + 4 + + + Module + + + + 0 + + + + + + + Package + descending + 0 + + + + 1 + + + + + + + Kernel + + + + 2 + + + + + + + Driver + + + + 3 + + + + + + + autosize + Description + + + word + 150 + + + 4 + + + + + + + autosize + Supported Devices + + + word + 220 + + + 5 + + + + - - 5 - + + + True + True + 1 + - - - - True - True - 0 - - - - - True - False - center - 5 - - - Update - True - True - True - image4 - - False - True - 0 - - - - - Установить - True - False - True - True - image6 - - - False - True - end - 0 - - - - - Удалить - True - False - True - True - image7 - - - False + True True - end 1 - - - Подробнее - True - False - True - True - image12 - - - False - True - end - 2 - - - False + True True 1 + - 1 - - - - - True - False - Drivers - - - 1 - False + -1 - - -1 + True + True + 0 diff --git a/video-drivers.csv b/video-drivers.csv index cde0928..1677e91 100644 --- a/video-drivers.csv +++ b/video-drivers.csv @@ -1,23 +1,37 @@ -OS_VERSION_ID;DRV_PAСKAGE_UBM;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT -2204;ubm-nvidia-340;;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Driver for nVidia 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX series video cards -2204;;nvidia-340xx-dkms;nvidia-340;UBLinux package includes NVIDIA 340xx driver and utilities;Driver for nVidia 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX series video cards -2204;ubm-nvidia-390;;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Driver for nVidia 6XX, 7XX, 9XX, 10XX, 16XX series video cards -2204;;nvidia-390xx-dkms;nvidia-390;UBLinux package includes NVIDIA 390xx driver and utilities;Driver for nVidia 6XX, 7XX, 9XX, 10XX, 16XX series video cards -2204;ubm-nvidia-470;;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards -2204;;nvidia-470xx-dkms;nvidia-470;UBLinux package includes NVIDIA 470xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards -2204;ubm-nvidia-510;;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards -2204;;nvidia-510xx-dkms;nvidia-510;UBLinux package includes NVIDIA 510xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards -2204;;xf86-video-nouveau;video-nouveau;UBLinux package includes opensource driver NVIDIA;Open source nvidia graphics card driver -2204;;vulkan-amdgpu-pro;vulkan-amdgpu-pro;UBLinux package includes AMD Vulkan driver and utilities;Driver for AMD Radeon™ R9 285/290/290X, Radeon™ R9 360/380/380X/390/390X, Radeon™ R9 Fury/Fury X/Nano, Radeon™ RX 400/500, Radeon™ RX Vega, Radeon™ VII, Radeon™ RX 5000/6000/7000 series video cards -2204;ubm-amdgpu-pro;;vulkan-amdgpu-pro;UBLinux module includes AMD driver and utilities;Driver for AMD серий Radeon™ R9 285/290/290X, Radeon™ R9 360/380/380X/390/390X, Radeon™ R9 Fury/Fury X/Nano, Radeon™ RX 400/500, Radeon™ RX Vega, Radeon™ VII, Radeon™ RX 5000/6000/7000 series video cards -2204;;xf86-video-intel;video-intel;UBLinux package includes Intel driver and utilities;Driver for video cards Intel i810/i830/i915/945G/G965+ and newer, except GMA 3600 -2204;;xf86-video-amdgpu;video-amdgpu;UBLinux package includes AMD opensource driver;Opensource X.org amdgpu video driver for AMD graphics card -2204;;xf86-video-ati;video-ati;UBLinux package includes ATI opensource driver;Opensource X.org ati video driver for ATI graphics card -2204;;xf86-video-dummy;video-dummy;UBLinux package includes dummy driver;X.org dummy video driver -2204;;xf86-video-fbdev;video-fbdev;UBLinux package includes framebuffer video driver;X.org framebuffer video driver -2204;;xf86-video-openchrome;video-openchrome;UBLinux package includes VIA video driver;Open Source X driver for VIA IGPs -2204;;xf86-video-sisusb;video-sisusb;UBLinux package includes SiS video driver;X.org SiS USB video driver -2204;;xf86-video-vesa;video-vesa;UBLinux package includes vesa video driver;X.org vesa video driver -2204;;xf86-video-vmware;video-vmware;UBLinux package includes VMWare video driver;X.org vmware video driver -2204;;xf86-video-voodoo;video-voodoo;UBLinux package includes Voodoo video driver;X.org 3dfx Voodoo1/Voodoo2 2D video driver -2204;;xf86-video-qxl;video-qxl;UBLinux package includes qxl video driver;X.org X11 qxl video driver \ No newline at end of file +KERNEL_PACKAGE;DRV_PAСKAGE_UBM;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT +;;xf86-video-amdgpu;video-amdgpu;X.org amdgpu video driver;AMD graphics +;;xf86-video-ati;video-ati;X.org ati video driver;ATI graphics +;;xf86-video-dummy;video-dummy;X.org dummy video driver;Dummy video +;;xf86-video-fbdev;video-fbdev;X.org framebuffer video driver;Framebuffer +;;xf86-video-intel;video-intel;X.org Intel video driver;Intel i810/i830/i915/945G/G965+ and newer, except GMA 3600 +;;xf86-video-nouveau;video-nouveau;X.org nVidia video driver;nVidia graphics +;;xf86-video-qxl;video-qxl;X.org X11 qxl video driver;QXL +;;xf86-video-sisusb;video-sisusb;X.org SiS USB video driver;SiS USB +;;xf86-video-vesa;video-vesa;X.org vesa video driver;Vesa +;;xf86-video-vmware;video-vmware;X.org vmware video driver;Vmware +;;xf86-video-voodoo;video-voodoo;X.org 3dfx Voodoo1/Voodoo2 2D video driver;3dfx Voodoo1/Voodoo2 2D +;;xf86-video-openchrome;video-openchrome;X.Org Openchrome drivers;Openchrome +;;xf86-video-tdfx;video-tdfx;X.org tdfx video driver;TDFX +;;xf86-video-r128;video-r128;X.org ati Rage128 video driver;ATI Rage128 +;;xf86-video-mach64;video-mach64;X.org mach64 video driver;ATI Mach64 +;;xf86-video-siliconmotion;video-siliconmotion;X.org siliconmotion video driver;Driver for Silicon Motion based video cards (Lynx, LynxE, Lynx3D, LynxEM, LynxEM+, Lynx3DM, Cougar3DR, MSOC) +;;xf86-video-s3virge;video-s3virge;X.org S3 Virge video driver;Driver for S3 based video cards (ViRGE, ViRGE VX, ViRGE DX, ViRGE GX, ViRGE GX2, ViRGE MX, ViRGE MX+, Trio 3D, Trio 3D/2X) +;;xf86-video-s3;video-s3virge;X.org S3 video driver;Driver for S3 based video cards (Trio32, Trio64, Trio64V+, Aurora64V+,Trio64UV+, Trio64V2/DX, Trio64V2/GX, Vision964, Vision968) +;;xf86-video-rendition;video-rendition;X.org Rendition video driver;Driver for Rendition/Micron based video card (V1000, V2100, V2200) +;;xf86-video-neomagic;video-neomagic;X.org neomagic video driver;Driver for the Neomagic graphics chipsets (MagicGraph 128, 128V, 128ZV, 128ZV+, 128XD, 256AV, 256AV+, 256ZX, 256XL+) +;;xf86-video-mga;video-mga;X.org mga video driver;Driver for Matrox video cards (MGA2064W, MGA1064SG, MGA2164W, G100, G200, G400, G450, G550) +;;xf86-video-i740;video-i740;X.org Intel i740 video driver;Driver for Intel i740 video cards +;;xf86-video-i128;video-i128;X.org Number 9 I128 video driver;Driver for Number 9 I128 video cards (I128 rev 1, I128-II, I128-T2R, I128-T2R4) +;;xf86-video-dummy-with-vt;dummy-with-vt;X.org dummy video driver with an allocated vt;Dummy video +;;xf86-video-cirrus;video-cirrus;Cirrus Logic video driver for the Xorg X server;Driver for Cirrus Logic video chips +;;xf86-video-chips;video-chips;X.org Chips and Technologies video driver;Driver for Chips and Technologies video processors (ct65520, ct65525, ct65530, ct65535, ct65540, ct65545, ct65546, ct65548, ct64200, ct64300, ct65550, ct65554, ct65555, ct68554, ct69000, ct69030) +;;ubm-amdgpu-pro;vulkan-amdgpu-pro;vulkan-amdgpu-pro;AMD Vulkan driver and utilities;Driver for AMD Radeon™ R9 285/290/290X, Radeon™ R9 360/380/380X/390/390X, Radeon™ R9 Fury/Fury X/Nano, Radeon™ RX 400/500, Radeon™ RX Vega, Radeon™ VII, Radeon™ RX 5000/6000/7000 series video cards +linux515;ubm-linux515-nvidia-390xx;linux515-nvidia-390xx;nvidia-390;NVIDIA 390xx driver and utilities;Driver for nVidia 6XX, 7XX, 9XX, 10XX, 16XX series video cards +linux515;ubm-linux515-nvidia-470xx;linux515-nvidia-470xx;nvidia-470;NVIDIA 470xx driver and utilities;Driver for nVidia MX100, MX200, MX300, MX400, MX500, 6XX, 7XX, 8XX, 9XX, 10XX, 16XX, 20XX, 30XX, NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX series video cards +linux515;ubm-linux515-nvidia;linux515-nvidia;nvidia-550;NVIDIA 550xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards +linux61;ubm-linux61-nvidia-390xx;linux61-nvidia-390xx;nvidia-390;NVIDIA 390xx driver and utilities;Driver for nVidia 6XX, 7XX, 9XX, 10XX, 16XX series video cards +linux61;ubm-linux61-nvidia-470xx;linux61-nvidia-470xx;nvidia-470;NVIDIA 470xx driver and utilities;Driver for nVidia MX100, MX200, MX300, MX400, MX500, 6XX, 7XX, 8XX, 9XX, 10XX, 16XX, 20XX, 30XX, NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX series video cards +linux61;ubm-linux61-nvidia;linux61-nvidia;nvidia-550;NVIDIA 550xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards +linux66;ubm-linux66-nvidia-390xx;linux66-nvidia-390xx;nvidia-390;NVIDIA 390xx driver and utilities;Driver for nVidia 6XX, 7XX, 9XX, 10XX, 16XX series video cards +linux66;ubm-linux66-nvidia-470xx;linux66-nvidia-470xx;nvidia-470;NVIDIA 470xx driver and utilities;Driver for nVidia MX100, MX200, MX300, MX400, MX500, 6XX, 7XX, 8XX, 9XX, 10XX, 16XX, 20XX, 30XX, NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX series video cards +linux66;ubm-linux66-nvidia;linux66-nvidia;nvidia-550;NVIDIA 550xx driver and utilities;Driver for nVidia NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX series video cards \ No newline at end of file -- 2.35.1 From a308e6d23e5ee01de46f907aebce8946f6108abe Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Jun 2024 11:24:31 +0600 Subject: [PATCH 02/21] Added callback for installing and removing toggle buttons --- source/ubl-settings-video.c | 95 +++++++++++++++++++++++++------------ source/ubl-settings-video.h | 9 ++-- source/ubl-strings.h | 6 ++- ubl-settings-video.glade | 10 +++- 4 files changed, 83 insertions(+), 37 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 7edbd2d..cce6be1 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -101,7 +101,7 @@ void on_driver_pack_install(GtkWidget *self,main_window *widgets){ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); 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_append(install_proprietary_command,name)); + yon_terminal_start(widgets,install_proprietary_command(name)); } else { yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } @@ -114,7 +114,7 @@ void on_driver_pack_delete(GtkWidget *self,main_window *widgets){ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); 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_append(delete_proprietary_command,name)); + yon_terminal_start(widgets,delete_proprietary_command(name)); } else { yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } @@ -130,16 +130,9 @@ void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets){ int installed=0; gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)),&iter,0,&installed,-1); if (installed==1){ - // gtk_widget_set_sensitive(widgets->InstallButton,0); - // gtk_widget_set_sensitive(widgets->DeleteButton,1); - } else { - // gtk_widget_set_sensitive(widgets->InstallButton,1); - // gtk_widget_set_sensitive(widgets->DeleteButton,0); - } + } } else { gtk_widget_set_sensitive(widgets->InfoButton,0); - // gtk_widget_set_sensitive(widgets->InstallButton,0); - // gtk_widget_set_sensitive(widgets->DeleteButton,0); } } @@ -149,32 +142,56 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){ pthread_t tid; pthread_attr_init(&attr); GtkTreeIter iter; - char *name; + char *module, *package; GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); 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,yon_char_append(get_info_proprietary_command,name)); + gtk_tree_model_get(list_s,&iter,7,&module,8,&package,-1); + char *command = get_info_proprietary_command(yon_char_is_empty(module)?package:module); + pthread_create(&tid,&attr,(void*)yon_launch,command); yon_ubl_status_box_render(INFO_PROCESS_LABEL,BACKGROUND_IMAGE_INFO_TYPE); } else { yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } -void on_pack_install_activate(){ - -} - -void on_module_install_activate(){ - -} - -void on_pack_remove_activate(){ - +void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){ + GtkTreeIter iter; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); + char *package; + int installed; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,8,&package,-1); + if (!installed){ + if (!yon_char_is_empty(package)){ + char *command = install_proprietary_command(package); + yon_terminal_start(widgets,command); + } + } else { + if (!yon_char_is_empty(package)){ + char *command = delete_proprietary_command(package); + yon_terminal_start(widgets,command); + } + } } -void on_module_remove_activate(){ +void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){ + GtkTreeIter iter; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); + char *package; + int installed; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,0,&installed,7,&package,-1); + if (!installed){ + if (!yon_char_is_empty(package)){ + char *command = install_proprietary_command(package); + yon_terminal_start(widgets,command); + } + } else { + if (!yon_char_is_empty(package)){ + char *command = delete_proprietary_command(package); + yon_terminal_start(widgets,command); + } + } } void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ @@ -902,14 +919,21 @@ void yon_monitor_view_update(){ } } -void yon_proprietary_local_get(){ +void yon_proprietary_local_get(main_window *widgets){ gtk_list_store_clear(main_config.list); gtk_list_store_clear(main_config.list2); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo)); + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),ALL_INSTALLED_KERNELS_LABEL); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KernelsCombo),0); int kernels_size; config_str kernels_installed=yon_config_load(yon_debug_output("%s\n",yon_get_kernels_installed),&kernels_size); + if (!kernels_size){ + yon_ubl_status_box_render(KERNELS_SUPPORTED_UNFOUND_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } for (int i=0;iKernelsCombo),kernels_installed[i]); } int size; @@ -935,11 +959,16 @@ void yon_proprietary_local_get(){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list)); + g_thread_exit (NULL); } -void yon_proprietary_get_thread(){ +void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets){ yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); - GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),NULL); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL); + GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets); + + // yon_proprietary_local_get(widgets); } void yon_monitor_view_dictionary_destroy(void *window){ @@ -1156,7 +1185,7 @@ void yon_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){ } void on_database_update(void *self,void *widgets){ - yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command); + yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command("")); } /** void yon_setup_widgets(main_window *widgets) @@ -1197,6 +1226,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){ widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton"); widgets->DriversTree = yon_gtk_builder_get_widget(builder,"DriversTree"); + widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo"); widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab")); widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab")); @@ -1211,13 +1241,16 @@ template_main_window *yon_main_window_complete(main_window *widgets){ widgets->InformationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel")); widgets->InformationLabel2 = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel2")); + widgets->PackageRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "PackageRenderer")); + widgets->ModuleRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ModuleRenderer")); + main_config.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6")); main_config.list2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore1")); g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets); - // g_signal_connect(G_OBJECT(widgets->DeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); - // g_signal_connect(G_OBJECT(widgets->InstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); + g_signal_connect(G_OBJECT(widgets->PackageRenderer), "toggled", G_CALLBACK(on_pack_install_activate), widgets); + g_signal_connect(G_OBJECT(widgets->ModuleRenderer), "toggled", G_CALLBACK(on_module_install_activate), widgets); g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); g_signal_connect(G_OBJECT(widgets->DriversTree), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets); @@ -1292,7 +1325,7 @@ int main(int argc, char *argv[]){ yon_confirmation_dialog_call(widgets->HeadOverlay,data); } - yon_proprietary_get_thread(); + yon_proprietary_get_thread(NULL,(main_window*)widgets); // on_config_fill_interface(&widgets); yon_monitor_set_resolutions(); gtk_main(); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 82df60a..4d2b1d3 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -69,11 +69,11 @@ #define remove_drivers_local_command "/usr/bin/ubconfig --target system remove video " -#define install_proprietary_command "pacman --quiet --needed --noconfirm -Sy " +#define install_proprietary_command(target) yon_char_append("pacman --quiet --needed --noconfirm -Sy ",target) -#define delete_proprietary_command "pacman -R --noconfirm " +#define delete_proprietary_command(target) yon_char_append("pacman -R --noconfirm ",target) -#define get_info_proprietary_command "pamac-manager --details=" +#define get_info_proprietary_command(target) yon_char_append("pamac-manager --details=",target) #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" @@ -179,6 +179,9 @@ typedef struct GtkWidget *FrameGapCombo; GtkWidget *DriversTree; + GtkCellRenderer *ModuleRenderer; + GtkCellRenderer *PackageRenderer; + GtkWidget *KernelsCombo; GtkWidget *InfoButton; GtkWidget *DriverModulesTab; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 4535f58..c24e9c6 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -184,4 +184,8 @@ #define DESCR37_LABEL _("X.org 3dfx Voodoo1/Voodoo2 2D video driver") #define DESCR38_LABEL _("X.org X11 qxl video driver") -#define DATABASE_UNACCESSIBLE_LABEL _("Database files must be updated") \ No newline at end of file +#define DATABASE_UNACCESSIBLE_LABEL _("Database files must be updated") + +#define KERNELS_SUPPORTED_UNFOUND_LABEL _("Warning: Couldn't find any supported kernel version") + +#define ALL_INSTALLED_KERNELS_LABEL _("Default (All installed)") \ No newline at end of file diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 7ded75f..1ca9a0f 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -1071,7 +1071,7 @@ - + True False 0 @@ -1153,6 +1153,9 @@ True True liststore1 + + + Installed @@ -1192,11 +1195,14 @@ both True 4 + + + Module - + 0 -- 2.35.1 From c814a20c749b5f40a99b84ae3b9754e18d2a55bb Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Jun 2024 12:30:49 +0600 Subject: [PATCH 03/21] Added confirmation windows for installing and deleting drivers --- source/ubl-settings-video.c | 101 +++++++++++++++++++++--------------- source/ubl-settings-video.h | 2 + source/ubl-strings.h | 5 +- ubl-settings-video.glade | 9 ++-- 4 files changed, 70 insertions(+), 47 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index cce6be1..7a882ba 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -17,7 +17,22 @@ gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active void on_terminal_destroy(GtkWidget *self, main_window *widgets){ gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0); gtk_widget_destroy(widgets->TerminalRevealer); - yon_proprietary_local_get(); + GtkTreeModel *model; + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)),&model,&iter)){ + char *module, *package; + gtk_tree_model_get(model, &iter, 7,&module, 8,&package,-1); + if (!yon_char_is_empty(module)){ + if (!system(yon_get_is_installed_command(module))){ + gtk_list_store_set(main_config.list,&iter,9,1,-1); + } + } else { + if (!system(yon_get_is_installed_command(package))){ + gtk_list_store_set(main_config.list,&iter,10,1,-1); + } + } + } + yon_proprietary_get_thread(NULL,widgets); yon_ubl_status_box_render(PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } @@ -94,32 +109,6 @@ void yon_terminal_start(main_window *widgets, char *usr_command){ gtk_widget_show_all(widgets->TerminalRevealer); } -void on_driver_pack_install(GtkWidget *self,main_window *widgets){ - GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); - if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,install_proprietary_command(name)); - } else { - yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - } -} - -void on_driver_pack_delete(GtkWidget *self,main_window *widgets){ - GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); - if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,delete_proprietary_command(name)); - } else { - yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - } -} - void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets){ GtkTreeIter iter; char *name; @@ -162,15 +151,29 @@ void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_windo int installed; gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,8,&package,-1); if (!installed){ - if (!yon_char_is_empty(package)){ - char *command = install_proprietary_command(package); - yon_terminal_start(widgets,command); + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=INSTALL_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = install_proprietary_command(package); + yon_terminal_start(widgets,command); + } } + free(data); } else { - if (!yon_char_is_empty(package)){ - char *command = delete_proprietary_command(package); - yon_terminal_start(widgets,command); + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=REMOVE_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = delete_proprietary_command(package); + yon_terminal_start(widgets,command); + } } + free(data); } } @@ -180,17 +183,31 @@ void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_win gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); char *package; int installed; - gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,0,&installed,7,&package,-1); + gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,7,&package,-1); if (!installed){ - if (!yon_char_is_empty(package)){ - char *command = install_proprietary_command(package); - yon_terminal_start(widgets,command); + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=INSTALL_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = install_proprietary_command(package); + yon_terminal_start(widgets,command); + } } + free(data); } else { - if (!yon_char_is_empty(package)){ - char *command = delete_proprietary_command(package); - yon_terminal_start(widgets,command); + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=REMOVE_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = delete_proprietary_command(package); + yon_terminal_start(widgets,command); + } } + free(data); } } @@ -952,7 +969,7 @@ void yon_proprietary_local_get(main_window *widgets){ int module_status = !yon_char_is_empty(current[1])?!system(yon_get_is_installed_command(current[1])):0; int package_status = !yon_char_is_empty(current[2])?!system(yon_get_is_installed_command(current[2])):0; gtk_list_store_append(main_config.list,&iter); - gtk_list_store_set(main_config.list,&iter,0,module_status,1,package_status,2,current[0],3,current[3],4,current[4],5,_(current[5]),7,current[1],8,current[2],-1); + gtk_list_store_set(main_config.list,&iter,0,module_status,1,package_status,2,current[0],3,current[3],4,current[4],5,_(current[5]),7,current[1],8,current[2],9,!yon_char_is_empty(current[1]),10,!yon_char_is_empty(current[2]),-1); } } } @@ -967,8 +984,6 @@ void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets){ yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL); GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets); - - // yon_proprietary_local_get(widgets); } void yon_monitor_view_dictionary_destroy(void *window){ diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 4d2b1d3..4915e5a 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -327,4 +327,6 @@ monitor_data *yon_monitor_new(main_window *widgets,int dull); void yon_launch_with_output(char *command); void yon_proprietary_local_get(); void yon_monitor_view_update(); + +void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets); #endif \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index c24e9c6..6ce7cf6 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -188,4 +188,7 @@ #define KERNELS_SUPPORTED_UNFOUND_LABEL _("Warning: Couldn't find any supported kernel version") -#define ALL_INSTALLED_KERNELS_LABEL _("Default (All installed)") \ No newline at end of file +#define ALL_INSTALLED_KERNELS_LABEL _("Default (All installed)") + +#define INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install driver "),target,"?",NULL) +#define REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove driver "),target,"?",NULL) \ No newline at end of file diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 1ca9a0f..08d4486 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -326,6 +326,10 @@ + + + + @@ -1049,8 +1053,6 @@ True False - 5 - 5 vertical 5 @@ -1185,7 +1187,6 @@ True True external - in True @@ -1204,6 +1205,7 @@ + 9 0 @@ -1217,6 +1219,7 @@ + 10 1 -- 2.35.1 From 0c8856cf59023f2b98ce7ddc7be4ce48cc4b5850 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Jun 2024 12:34:54 +0600 Subject: [PATCH 04/21] Localisation updates --- ubl-settings-video.pot | 36 +++++++++++++++++++++++++++++++----- ubl-settings-video_ru.po | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index 6201f78..99f5193 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -17,23 +17,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-settings-video.h:30 +#: source/ubl-settings-video.h:26 msgid "https://wiki.ublinux.com" msgstr "" -#: source/ubl-settings-video.h:43 +#: source/ubl-settings-video.h:39 msgid "Failed to load global configuration" msgstr "" -#: source/ubl-settings-video.h:44 +#: source/ubl-settings-video.h:40 msgid "Failed to load local configuration" msgstr "" -#: source/ubl-settings-video.h:46 +#: source/ubl-settings-video.h:42 msgid "Saving to global configuration Succeeded" msgstr "" -#: source/ubl-settings-video.h:47 +#: source/ubl-settings-video.h:43 msgid "Saving to local configuration Succeeded" msgstr "" @@ -713,3 +713,29 @@ msgstr "" #: source/ubl-strings.h:185 msgid "X.org X11 qxl video driver" msgstr "" + +#: source/ubl-strings.h:187 +msgid "Database files must be updated" +msgstr "" + +#: source/ubl-strings.h:189 +msgid "Warning: Couldn't find any supported kernel version" +msgstr "" + +#: source/ubl-strings.h:191 +msgid "Default (All installed)" +msgstr "" + +#: source/ubl-strings.h:193 +msgid "Are you sure want to install driver " +msgstr "" + +#: source/ubl-strings.h:194 +msgid "Are you sure want to remove driver " +msgstr "" + +msgid "Discrete video only (AMD/ATI)" +msgstr "Только дискретное видео (AMD/ATI)" + +msgid "Driver modules" +msgstr "Модули драйвера" \ No newline at end of file diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index 09e927d..54bfb60 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -17,23 +17,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-settings-video.h:30 +#: source/ubl-settings-video.h:26 msgid "https://wiki.ublinux.com" msgstr "https://wiki.ublinux.ru" -#: source/ubl-settings-video.h:43 +#: source/ubl-settings-video.h:39 msgid "Failed to load global configuration" msgstr "Ошибка загрузки глобальной конфигурации" -#: source/ubl-settings-video.h:44 +#: source/ubl-settings-video.h:40 msgid "Failed to load local configuration" msgstr "Ошибка загрузки локальной конфигурации" -#: source/ubl-settings-video.h:46 +#: source/ubl-settings-video.h:42 msgid "Saving to global configuration Succeeded" msgstr "Успешное сохранение глобальной конфигурации" -#: source/ubl-settings-video.h:47 +#: source/ubl-settings-video.h:43 msgid "Saving to local configuration Succeeded" msgstr "Успешно записана локальная конфигурация" @@ -728,8 +728,28 @@ msgstr "X.org 3dfx Voodoo1/Voodoo2 2D-видеодрайвер" msgid "X.org X11 qxl video driver" msgstr "Видеодрайвер X.org X11 qxl" -#~ msgid "Discrete video only (AMD/ATI)" -#~ msgstr "Только дискретное видео (AMD/ATI)" +#: source/ubl-strings.h:187 +msgid "Database files must be updated" +msgstr "Базы данных репозитория должны быть обновлены" + +#: source/ubl-strings.h:189 +msgid "Warning: Couldn't find any supported kernel version" +msgstr "Предупреждение: Поддерживаемые версии ядра не найдены" + +#: source/ubl-strings.h:191 +msgid "Default (All installed)" +msgstr "По умолчанию (все установленные)" -#~ msgid "Driver modules" -#~ msgstr "Модули драйвера" +#: source/ubl-strings.h:193 +msgid "Are you sure want to install driver " +msgstr "Вы уверены что хотите установить драйвер " + +#: source/ubl-strings.h:194 +msgid "Are you sure want to remove driver " +msgstr "Вы уверены что хотите удалить драйвер " + +msgid "Discrete video only (AMD/ATI)" +msgstr "Только дискретное видео (AMD/ATI)" + +msgid "Driver modules" +msgstr "Модули драйвера" -- 2.35.1 From d7b86a7d6c48eced209344e0701405741f9c6f87 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Jun 2024 15:09:46 +0600 Subject: [PATCH 05/21] Filter combo box now works --- source/ubl-settings-video.c | 147 ++++++++++++++++++++++++------------ 1 file changed, 97 insertions(+), 50 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 7a882ba..1b2bf70 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -145,69 +145,115 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){ } void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){ + + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeIter iter; - gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); - char *package; - int installed; - gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,8,&package,-1); - if (!installed){ - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); - data->action_text=INSTALL_CONFIRMATION_LABEL(package); - data->function=NULL; - data->data=NULL; - if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ - if (!yon_char_is_empty(package)){ - char *command = install_proprietary_command(package); - yon_terminal_start(widgets,command); - } - } - free(data); + if (!GTK_IS_TREE_MODEL_FILTER(model)){ + + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); + model=GTK_TREE_MODEL(main_config.list); } else { - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); - data->action_text=REMOVE_CONFIRMATION_LABEL(package); - data->function=NULL; - data->data=NULL; - if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ - if (!yon_char_is_empty(package)){ - char *command = delete_proprietary_command(package); - yon_terminal_start(widgets,command); + GtkTreeIter itar; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,path); + gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model),&iter,&itar); + } + char *package; + int installed; + gtk_tree_model_get(GTK_TREE_MODEL(model),&iter,1,&installed,8,&package,-1); + if (!installed){ + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=INSTALL_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = install_proprietary_command(package); + yon_terminal_start(widgets,command); + } } + free(data); + } else { + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=REMOVE_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = delete_proprietary_command(package); + yon_terminal_start(widgets,command); + } + } + free(data); } - free(data); - } } void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){ - + + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeIter iter; - gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); - char *package; - int installed; + if (!GTK_IS_TREE_MODEL_FILTER(model)){ + + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path); + } else { + GtkTreeIter itar; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,path); + gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model),&iter,&itar); + } + char *package; + int installed; gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,7,&package,-1); - if (!installed){ - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); - data->action_text=INSTALL_CONFIRMATION_LABEL(package); - data->function=NULL; - data->data=NULL; - if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ - if (!yon_char_is_empty(package)){ - char *command = install_proprietary_command(package); - yon_terminal_start(widgets,command); + if (!installed){ + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=INSTALL_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = install_proprietary_command(package); + yon_terminal_start(widgets,command); + } + } + free(data); + } else { + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text=REMOVE_CONFIRMATION_LABEL(package); + data->function=NULL; + data->data=NULL; + if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ + if (!yon_char_is_empty(package)){ + char *command = delete_proprietary_command(package); + yon_terminal_start(widgets,command); + } } + free(data); + } +} + +gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widgets){ + const char *target = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo)); + char *cur; + gtk_tree_model_get(model,iter,2,&cur,-1); + if (!strcmp(cur,target))return 1; + return 0; +} + +void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){ + int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self)); + if (active){ + if (!GTK_IS_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)))){ + GtkTreeModel *model = gtk_tree_model_filter_new(GTK_TREE_MODEL(main_config.list),NULL); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),model); + gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model),(GtkTreeModelFilterVisibleFunc)yon_filter_func,widgets,NULL); + } else { + gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)))); } - free(data); } else { - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); - data->action_text=REMOVE_CONFIRMATION_LABEL(package); - data->function=NULL; - data->data=NULL; - if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){ - if (!yon_char_is_empty(package)){ - char *command = delete_proprietary_command(package); - yon_terminal_start(widgets,command); - } + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)); + if (GTK_IS_TREE_MODEL_FILTER(model)) { + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL); + g_object_unref(model); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list)); } - free(data); } } @@ -1279,6 +1325,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL); g_signal_connect(G_OBJECT(widgets->OptirunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->OptirunEntry); g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunEntry); + g_signal_connect(G_OBJECT(widgets->KernelsCombo),"changed",G_CALLBACK(on_kernel_filter_changed),widgets); // yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->DriversTree)); -- 2.35.1 From ee63c3fcb0984b14f61063158eab9ebbea3479db Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Feb 2025 15:44:50 +0600 Subject: [PATCH 06/21] Fixes --- source/CMakeLists.txt | 18 ++-- source/ubl-cmake.in | 1 - source/ubl-settings-video.c | 198 +++++++++++++++++------------------- source/ubl-settings-video.h | 53 ++++++++-- source/ubl-strings.h | 4 + ubl-settings-video.glade | 17 ++-- ubl-settings-video.pot | 144 ++++++++++++++------------ ubl-settings-video_ru.po | 138 ++++++++++++++----------- 8 files changed, 314 insertions(+), 259 deletions(-) delete mode 100644 source/ubl-cmake.in diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index a344161..9d47284 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -29,10 +29,6 @@ if(WEBKIT_LIBRARIES_FOUND) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() -configure_file(ubl-cmake.in ubl-cmake.h) - -file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) - set(GRESOURCE_C resources.c) set(GRESOURCE_XML gresource.xml) @@ -68,19 +64,21 @@ add_custom_target( DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} ) -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ -O2 -pipe -fno-plt -fexceptions \ - -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ + -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection") - + +string(FIND "${CMAKE_CXX_FLAGS}" "-D_FORTIFY_SOURCE" FORTIFY_FOUND) + +if(FORTIFY_FOUND EQUAL -1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wp,-D_FORTIFY_SOURCE=2") +endif() set(SOURCE_FILES ubl-settings-video.c ubl-settings-video.h ubl-strings.h - ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h ) set(LIBRARIES diff --git a/source/ubl-cmake.in b/source/ubl-cmake.in deleted file mode 100644 index d4623a7..0000000 --- a/source/ubl-cmake.in +++ /dev/null @@ -1 +0,0 @@ -#cmakedefine WEBKIT_FOUND diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 1b2bf70..cb21d71 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -2,19 +2,18 @@ config main_config; - -void on_terminal_done(GtkWidget *terminal, int size, main_window *widgets){ +void on_terminal_done(GtkWidget *terminal, int , main_window *){ gtk_widget_destroy(terminal); } -void on_terminal_more(GtkWidget *self, main_window *widgets){ +void on_terminal_more(GtkWidget *, main_window *widgets){ int active = gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->TerminalMoreRevieler)); if (active ==1) active = 0; else active=1; gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active); } -void on_terminal_destroy(GtkWidget *self, main_window *widgets){ +void on_terminal_destroy(GtkWidget *, main_window *widgets){ gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0); gtk_widget_destroy(widgets->TerminalRevealer); GtkTreeModel *model; @@ -36,16 +35,16 @@ void on_terminal_destroy(GtkWidget *self, main_window *widgets){ yon_ubl_status_box_render(PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } -static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) +static void child_ready(VteTerminal *terminal, GPid pid, GError *, gpointer user_data) { if (!terminal) return; if (pid == -1) printf("Error\n\n\n"); else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data)); } -void on_terminal_check_progress(VteTerminal *terminal, main_window *widgets){ - char *text = vte_terminal_get_text(terminal,NULL,NULL,NULL); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_count(text,"::")/4); +void on_terminal_check_progress(VteTerminal *, main_window *){ + // char *text = vte_terminal_get_text(terminal,NULL,NULL,NULL); + // gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_count(text,"::")/4); } void yon_terminal_start(main_window *widgets, char *usr_command){ @@ -109,9 +108,9 @@ void yon_terminal_start(main_window *widgets, char *usr_command){ gtk_widget_show_all(widgets->TerminalRevealer); } -void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets){ +void on_driver_pack_selection_change(GtkWidget *, main_window *widgets){ GtkTreeIter iter; - char *name; + // char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ @@ -125,7 +124,7 @@ void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets){ } } -void on_driver_pack_info(GtkWidget *self, main_window *widgets){ +void on_driver_pack_info(GtkWidget *, main_window *widgets){ pthread_attr_t attr; pthread_t tid; @@ -144,7 +143,7 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){ } } -void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){ +void on_pack_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *widgets){ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeIter iter; @@ -187,7 +186,7 @@ void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_windo } } -void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){ +void on_module_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *widgets){ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeIter iter; @@ -233,7 +232,7 @@ gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widg const char *target = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo)); char *cur; gtk_tree_model_get(model,iter,2,&cur,-1); - if (!strcmp(cur,target))return 1; + if (!yon_char_is_empty(cur)&&!yon_char_is_empty(target)&&!strcmp(cur,target))return 1; return 0; } @@ -244,9 +243,9 @@ void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){ GtkTreeModel *model = gtk_tree_model_filter_new(GTK_TREE_MODEL(main_config.list),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),model); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model),(GtkTreeModelFilterVisibleFunc)yon_filter_func,widgets,NULL); - } else { - gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)))); } + gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)))); + } else { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)); if (GTK_IS_TREE_MODEL_FILTER(model)) { @@ -257,7 +256,7 @@ void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){ } } -void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ +void on_port_chosen_changed(GtkWidget *, monitor_edit_window *window){ dictionary *dict=NULL; for (int i=0;iresolutionssize;i++){ free(window->resolutions); @@ -283,10 +282,10 @@ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ yon_char_remove_last_symbol(resolutions[i],'\n'); } resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*); - int found_size=0; + // int found_size=0; int found = -1; for (int i=0;isize;i++){ - char *check_line; + // char *check_line; for (int j=1;jline[i])){ found = j; @@ -326,7 +325,7 @@ void on_sensitive_change_reversed(GtkWidget *self, GtkWidget *toggle) gtk_widget_set_sensitive(toggle, !state); } -void on_auto_choose_drivers(GtkWidget *self, main_window *widgets) +void on_auto_choose_drivers(GtkWidget *self, main_window *) { int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); main_config.autoChooseDrivers=state; @@ -359,8 +358,7 @@ void on_resolutions_unsupported_show(GtkToggleButton *self, monitor_edit_window } } -void on_save_done(main_window *widgets, config_str output, int size){ - if (widgets) {}; +void on_save_done(main_window *, config_str output, int size){ // char *gapfix1 = yon_config_get_by_key(KWIN_TRIPLE_BUFFER); // char *gapfix2 = yon_config_get_by_key(GL_YIELD); // int gapfix1_status = yon_config_get_status(KWIN_TRIPLE_BUFFER); @@ -386,14 +384,14 @@ void on_save_done(main_window *widgets, config_str output, int size){ void yon_interface_save(){ - char *autodrivers = NULL; - char *freedrivers = NULL; - char *dpms= NULL; + // char *autodrivers = NULL; + // char *freedrivers = NULL; + // char *dpms= NULL; char *dpi = NULL; - char *failsafenvidia = NULL; - char *failsafeati = NULL; - char *optirun = NULL; - char *primusrun = NULL; + // char *failsafenvidia = NULL; + // char *failsafeati = NULL; + // char *optirun = NULL; + // char *primusrun = NULL; switch (gtk_combo_box_get_active(GTK_COMBO_BOX(main_config.widgets->AutoDriverCombo))){ case 0: yon_config_remove_by_key(VGADRV_AUTO); break; @@ -453,8 +451,9 @@ void yon_interface_save(){ break; case 1: yon_config_register(OPTIRUN,OPTIRUN_command,"no"); break; - case 2: if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(main_config.widgets->OptirunEntry)))) - yon_config_register(OPTIRUN,OPTIRUN_command,(char*)gtk_entry_get_text(GTK_ENTRY(main_config.widgets->OptirunEntry))); + case 2: if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(main_config.widgets->OptirunEntry)))){ + yon_config_register(OPTIRUN,OPTIRUN_command,(char*)gtk_entry_get_text(GTK_ENTRY(main_config.widgets->OptirunEntry))); + } break; } switch (gtk_combo_box_get_active(GTK_COMBO_BOX(main_config.widgets->PrimusrunCombo))){ @@ -462,8 +461,9 @@ void yon_interface_save(){ break; case 1: yon_config_register(PRIMUSRUN,PRIMUSRUN_command,"no"); break; - case 2: if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(main_config.widgets->PrimusrunEntry)))) - yon_config_register(PRIMUSRUN,PRIMUSRUN_command,(char*)gtk_entry_get_text(GTK_ENTRY(main_config.widgets->PrimusrunEntry))); + case 2: if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(main_config.widgets->PrimusrunEntry)))){ + yon_config_register(PRIMUSRUN,PRIMUSRUN_command,(char*)gtk_entry_get_text(GTK_ENTRY(main_config.widgets->PrimusrunEntry))); + } break; } // switch (gtk_combo_box_get_active(GTK_COMBO_BOX(main_config.widgets->FrameGapCombo))){ @@ -511,8 +511,8 @@ void yon_interface_update(){ char *optirun = yon_config_get_by_key(OPTIRUN); char *primusrun = yon_config_get_by_key(PRIMUSRUN); char *discrete = yon_config_get_by_key(INTEGRATEDVGA); - char *gapfix1 = yon_config_get_by_key(GL_YIELD); - char *gapfix2 = yon_config_get_by_key(KWIN_TRIPLE_BUFFER); + // char *gapfix1 = yon_config_get_by_key(GL_YIELD); + // char *gapfix2 = yon_config_get_by_key(KWIN_TRIPLE_BUFFER); if (!yon_char_is_empty(autodrivers)&&!strcmp(autodrivers,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->AutoDriverCombo),2); @@ -606,56 +606,49 @@ void yon_interface_update(){ } void yon_load_proceed(YON_CONFIG_TYPE type){ - yon_config_clean(); + if (type!=YON_CONFIG_CUSTOM){ + yon_config_clean(); + } if (!yon_char_is_empty(config_get_default_command)) yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); - if (type==YON_CONFIG_GLOBAL){ - yon_config_load_config(type,config_get_global_command,NULL); - } else if (type==YON_CONFIG_LOCAL){ - yon_config_load_config(type,config_get_local_command,NULL); - } else if (type==YON_CONFIG_CUSTOM){ - char *path=""; - textdomain(template_ui_LocaleName); - GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); - yon_gtk_window_setup(GTK_WINDOW(dialog),NULL,TITLE_LABEL,icon_name,"FileChooserWindow"); - textdomain(LocaleName); - gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-video"); - gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL); - GtkFileFilter *filter = gtk_file_filter_new(); - gtk_file_filter_add_pattern(filter,"*.ini"); - gtk_file_filter_set_name(filter, "*.ini"); - gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); - gtk_widget_show(dialog); - int response = gtk_dialog_run(GTK_DIALOG(dialog)); - if (response == GTK_RESPONSE_ACCEPT){ - char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - if (!yon_char_is_empty(file)){ - path=yon_char_unite("'",file,"'",NULL); - free(file); - } - gtk_widget_destroy(dialog); - } else { - gtk_widget_destroy(dialog); - } - yon_config_load_config(type,yon_config_get_custom_command(path),NULL); - } + switch (type){ + case YON_CONFIG_GLOBAL: + yon_config_load_config(type,config_get_command("global"),NULL); + yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE); + break; + case YON_CONFIG_LOCAL: + yon_config_load_config(type,config_get_command(system),NULL); + yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE); + break; + case YON_CONFIG_CUSTOM: + char *path = NULL; + path=yon_custom_config_init(GTK_FILE_CHOOSER_ACTION_OPEN); + if (!yon_char_is_empty(path)){ + yon_config_clean(); + yon_config_load_config(type,config_get_command(path),NULL); + yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE); + } + break; + default: + break; + } } -void on_config_local_load(GtkWidget *self,main_window *widgets){ +void on_config_local_load(GtkWidget *self,main_window *){ if (self){} yon_load_proceed(YON_CONFIG_LOCAL); main_config.load_mode=1; yon_interface_update(); } -void on_config_global_load(GtkWidget *self,main_window *widgets){ +void on_config_global_load(GtkWidget *self,main_window *){ if (self){} yon_load_proceed(YON_CONFIG_GLOBAL); main_config.load_mode=0; yon_interface_update(); } -void on_config_custom_load(GtkWidget *self,main_window *widgets){ +void on_config_custom_load(GtkWidget *self,main_window *){ if (self){} yon_load_proceed(YON_CONFIG_CUSTOM); main_config.load_mode=3; @@ -665,20 +658,20 @@ void on_config_custom_load(GtkWidget *self,main_window *widgets){ void on_config_global_local_save(){ yon_interface_save(); main_config.save_config=3; - yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); + yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL); } void on_config_local_save(){ yon_interface_save(); main_config.save_config=1; - yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL); + yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL); } void on_config_global_save(){ yon_interface_save(); main_config.save_config=0; - yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL); + yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL); } @@ -686,7 +679,7 @@ void on_config_custom_save(GtkWidget *self, main_window *widgets){ yon_interface_save(); if (self&&widgets){} main_config.save_config=1; - template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL); + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL); if (window){}; } @@ -696,7 +689,7 @@ void on_config_custom_save(GtkWidget *self, main_window *widgets){ /**void on_monitor_delete(GtkWidget *self,monitor_data windowd) * [EN] */ -void on_monitor_delete(GtkWidget *self,monitor_data *window){ +void on_monitor_delete(GtkWidget *,monitor_data *window){ if(window){ GtkWidget *target = gtk_widget_get_parent(window->ScreenOverlay); GtkWidget *flow_box = gtk_widget_get_parent(target); @@ -712,7 +705,7 @@ void on_monitor_delete(GtkWidget *self,monitor_data *window){ /**void on_monitor_switch(GtkWidget *self,monitor_data *window) * [EN] */ -void on_monitor_switch(GtkWidget *self,monitor_data *window){ +void on_monitor_switch(GtkWidget *,monitor_data *window){ if(window){ int enable = 0; gtk_widget_set_sensitive(window->MonitorImage,!enable); @@ -722,20 +715,20 @@ void on_monitor_switch(GtkWidget *self,monitor_data *window){ /**void on_monitor_add(GtkWidget *self,monitor_data *window) * [EN] */ -void on_monitor_add(GtkWidget *self,main_window *widgets){ +void on_monitor_add(GtkWidget *,main_window *widgets){ if(widgets){ yon_monitor_new(widgets,0); } } -void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ +void on_monitor_config_save(GtkWidget *, monitor_edit_window *window){ int enabled=0; char *target=NULL; int main_display=0; char *resolution = NULL; char *rotate = NULL; char *position = NULL; - int switch_off=0; + // int switch_off=0; int modeline_cvt = 0; int cvt_reduced = 0; int modeline_gtf = 0; @@ -752,7 +745,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ if (pos&>k_combo_box_get_active(GTK_COMBO_BOX(window->PositionPortCombo))){ position = yon_char_append(pos==1?"lo:":pos==2?"ro:":pos==3?"ab:":"be",gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PositionPortCombo))); } - switch_off = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DoNotSwitchOffCheck)); + // switch_off = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DoNotSwitchOffCheck)); modeline_cvt = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ModelineCVTCheck)); cvt_reduced = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UseCVTReducedCheck)); modeline_gtf = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ModelineGTFCheck)); @@ -827,28 +820,28 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->MainCheck),1); } else if (strstr(parsed[i],"lo:")||strstr(parsed[i],"LeftOf:")){ - char *location = yon_char_divide_search(parsed[i],":",-1); + yon_char_divide_search(parsed[i],":",-1); int target = yon_gtk_combo_box_text_find(window->PositionPortCombo,parsed[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationCombo),target); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PositionPosCombo),1); } else if (strstr(parsed[i],"ro:")||strstr(parsed[i],"RightOf:")){ - char *location = yon_char_divide_search(parsed[i],":",-1); + yon_char_divide_search(parsed[i],":",-1); yon_gtk_combo_box_text_find(window->PositionPortCombo,parsed[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PositionPosCombo),2); } else if (strstr(parsed[i],"ab:")||strstr(parsed[i],"Above:")){ - char *location = yon_char_divide_search(parsed[i],":",-1); + yon_char_divide_search(parsed[i],":",-1); yon_gtk_combo_box_text_find(window->PositionPortCombo,parsed[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PositionPosCombo),3); } else if (strstr(parsed[i],"bee:")||strstr(parsed[i],"Below:")){ - char *location = yon_char_divide_search(parsed[i],":",-1); + yon_char_divide_search(parsed[i],":",-1); yon_gtk_combo_box_text_find(window->PositionPortCombo,parsed[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PositionPosCombo),4); } else if (strstr(parsed[i],"rotate:")){ - char *location = yon_char_divide_search(parsed[i],":",-1); + yon_char_divide_search(parsed[i],":",-1); if (strcmp(parsed[i],"normal")){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationCombo),0); } else if (strcmp(parsed[i],"left")){ @@ -867,7 +860,7 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){ } } -void on_monitor_configure(GtkWidget *self,monitor_data *window){ +void on_monitor_configure(GtkWidget *,monitor_data *window){ if(window){ monitor_edit_window *monitors = new(monitor_edit_window); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_configuration); @@ -906,7 +899,7 @@ void on_monitor_configure(GtkWidget *self,monitor_data *window){ char *target = (char*)gtk_label_get_text(GTK_LABEL(window->NameLabel)); monitors->curport=NULL; - dictionary *dict=NULL; + // dictionary *dict=NULL; int config_size; config_str config_ports = yon_config_get_all_by_key(XORG_PARAMETER,&config_size); for (int i=0;iMonitorsBox)); - for (int i=0;iKernelsCombo)); @@ -1019,17 +1012,17 @@ void yon_proprietary_local_get(main_window *widgets){ } } } - textdomain(template_ui_LocaleName); - yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - textdomain(LocaleName); + char *status_text = yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ", main_config.load_mode==1?yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL),NULL); + yon_ubl_status_box_render(status_text,BACKGROUND_IMAGE_SUCCESS_TYPE); + free(status_text); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list)); g_thread_exit (NULL); } -void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets){ +void yon_proprietary_get_thread(GtkWidget *,main_window *widgets){ yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL); - GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets); + g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets); } void yon_monitor_view_dictionary_destroy(void *window){ @@ -1089,7 +1082,6 @@ void yon_monitor_set_resolutions(){ supported->size=0; yon_dictionary_add_or_create_if_exists_with_data(main_config.supported_resolutions,connected_ports[i],supported); } - config_str final=NULL; for(int i=0;iInformationCompanyLogoImage2),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } - else if (strstr(vendor,"AMD"),strstr(vendor,"Advanced Micro Devices")){ + else if (strstr(vendor,"AMD")&&strstr(vendor,"Advanced Micro Devices")){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage2),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.amd-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } @@ -1245,7 +1237,7 @@ void yon_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){ gtk_widget_set_sensitive(target,active>1 ? 1 : 0); } -void on_database_update(void *self,void *widgets){ +void on_database_update(void *,void *widgets){ yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command("")); } @@ -1287,6 +1279,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){ widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton"); widgets->DriversTree = yon_gtk_builder_get_widget(builder,"DriversTree"); + widgets->TopTree = yon_gtk_builder_get_widget(builder,"TopTree"); widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo"); widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab")); @@ -1326,8 +1319,14 @@ template_main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->OptirunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->OptirunEntry); g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunEntry); g_signal_connect(G_OBJECT(widgets->KernelsCombo),"changed",G_CALLBACK(on_kernel_filter_changed),widgets); + + // yon_gtk_tree_view_column_minimal_fixed_size_set(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->DriversTree),0)); + // yon_gtk_tree_view_column_minimal_fixed_size_set(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->DriversTree),1)); + + // gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->TopTree),0),gtk_tree_view_column_get_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->DriversTree),0))+gtk_tree_view_column_get_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->DriversTree),1))); // yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); + gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(widgets->AutoDriverCombo),yon_get_default_label_with_parameter(VGADRV_AUTO_command)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->DriversTree)); yon_adapter_window_setup(widgets); @@ -1374,21 +1373,14 @@ int main(int argc, char *argv[]){ char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_load(path); - if (getuid()!=0){ - textdomain(template_ui_LocaleName); - yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - textdomain(LocaleName); - } if (system(yon_check_database_command)){ dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); data->action_text=DATABASE_UNACCESSIBLE_LABEL; data->function = on_database_update; data->data = widgets; yon_confirmation_dialog_call(widgets->HeadOverlay,data); - } yon_proprietary_get_thread(NULL,(main_window*)widgets); - // on_config_fill_interface(&widgets); yon_monitor_set_resolutions(); gtk_main(); return 0; diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 4915e5a..acf6892 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -119,11 +119,7 @@ #define XORG_PARAMETER "XORG_MONITOR" -#define config_get_command(target) yon_char_append("cat ",target) - -#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get [video] XORG_MONITOR[*] VGADRV_AUTO VGADRV_NOFREE XORG_EXT XORG_DPI FAILSAFEATI FAILSAFENVIDIA OPTIRUN PRIMUSRUN INTEGRATEDVGA",NULL) -#define config_get_local_command "ubconfig --source system get [video] XORG_MONITOR[*] VGADRV_AUTO VGADRV_NOFREE XORG_EXT XORG_DPI FAILSAFEATI FAILSAFENVIDIA OPTIRUN PRIMUSRUN INTEGRATEDVGA" -#define config_get_global_command yon_char_new("ubconfig --source global get [video] XORG_MONITOR[*] VGADRV_AUTO VGADRV_NOFREE XORG_EXT XORG_DPI FAILSAFEATI FAILSAFENVIDIA OPTIRUN PRIMUSRUN INTEGRATEDVGA") +#define config_get_command(source) yon_char_unite("ubconfig --source ",source," get [video] XORG_MONITOR[*] VGADRV_AUTO VGADRV_NOFREE XORG_EXT XORG_DPI FAILSAFEATI FAILSAFENVIDIA OPTIRUN PRIMUSRUN INTEGRATEDVGA",NULL) #define config_get_default_command "" #define config_get_global_only_parameters "" @@ -179,6 +175,7 @@ typedef struct GtkWidget *FrameGapCombo; GtkWidget *DriversTree; + GtkWidget *TopTree; GtkCellRenderer *ModuleRenderer; GtkCellRenderer *PackageRenderer; GtkWidget *KernelsCombo; @@ -325,8 +322,50 @@ typedef struct monitor_data *yon_monitor_new(main_window *widgets,int dull); void yon_launch_with_output(char *command); -void yon_proprietary_local_get(); void yon_monitor_view_update(); - +void on_save_done(main_window *, config_str output, int size); void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets); +void on_terminal_done(GtkWidget *terminal, int size, main_window *widgets); +void on_terminal_more(GtkWidget *self, main_window *widgets); +void on_terminal_destroy(GtkWidget *self, main_window *widgets); +void on_terminal_check_progress(VteTerminal *terminal, main_window *widgets); +void yon_terminal_start(main_window *widgets, char *usr_command); +void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets); +void on_driver_pack_info(GtkWidget *self, main_window *widgets); +void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets); +void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets); +gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widgets); +void on_kernel_filter_changed(GtkWidget *self, main_window *widgets); +void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window); +void on_sensitive_change(GtkWidget *self, GtkWidget *toggle); +void on_sensitive_change_reversed(GtkWidget *self, GtkWidget *toggle); +void on_auto_choose_drivers(GtkWidget *self, main_window *widgets); +void on_resolutions_unsupported_show(GtkToggleButton *self, monitor_edit_window *window); +void yon_interface_save(); +void yon_interface_update(); +void yon_load_proceed(YON_CONFIG_TYPE type); +void on_config_local_load(GtkWidget *self,main_window *widgets); +void on_config_global_load(GtkWidget *self,main_window *widgets); +void on_config_custom_load(GtkWidget *self,main_window *widgets); +void on_config_global_local_save(); +void on_config_local_save(); +void on_config_global_save(); +void on_config_custom_save(GtkWidget *self, main_window *widgets); +void on_monitor_delete(GtkWidget *self,monitor_data *window); +void on_monitor_switch(GtkWidget *self,monitor_data *window); +void on_monitor_add(GtkWidget *self,main_window *widgets); +void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window); +void yon_monitor_parse(monitor_edit_window *window, char *string); +void on_monitor_configure(GtkWidget *self,monitor_data *window); +void yon_monitor_view_update(); +void *yon_proprietary_local_get(main_window *widgets); +void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets); +void yon_monitor_view_dictionary_destroy(void *window); +monitor_data *yon_monitor_new(main_window *widgets,int dull); +void yon_monitor_set_resolutions(); +void yon_adapter_window_setup(main_window *widgets); +void yon_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target); +void on_database_update(void *self,void *widgets); +template_main_window *yon_main_window_complete(main_window *widgets); +void config_init(); #endif \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 6ce7cf6..06a2288 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -119,6 +119,10 @@ #define DESCRIPTION_LABEL _("Description") #define VENDOR_LABEL _("Vendor") #define MODEL_LABEL _("Model") +#define KERNEL_LABEL _("Kernel:") +#define KERNEL_TAB_LABEL _("Kernel") +#define MODULE_TAB_LABEL _("Module") +#define DRIVER_INFO_LABEL _("Driver information") #define USED_KERNEL_DRIVER_LABEL _("Kernel driver in use") #define AVALIABLE_KERNEL_DRIVERS_LABEL _("Kernel modules") #define INTEL_DESCRIPTION_LABEL _("UBLinux package includes Intel driver and utilities") diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 08d4486..cba8093 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -1110,6 +1110,7 @@ True True True + Update image3 + + + + + + 300 + 1 + 10 + + diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index b36ee71..8e8026d 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -2,7 +2,6 @@ - True @@ -110,166 +109,6 @@ - - 300 - 0.7299999937415127 - 1 - 10 - - - True - True - False - end - True - - - True - False - 0 - in - - - True - False - - - True - False - 5 - 5 - 5 - 5 - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - False - center - - - True - True - 0 - - - - - More - True - True - True - True - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - - - True - False - vertical - - - True - False - True - natural - adjustment1 - natural - UTF-8 - True - False - - - True - True - 0 - - - - - True - True - 0 - - - - - True - False - vertical - adjustment1 - True - False - 1 - 2 - - - False - True - 1 - - - - - - - False - True - 1 - - - - - - - - - True - False - - - - - - - True False -- 2.35.1 From cf79de6f71a8f5bff1e18a8dd9fcd5e302c84314 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 6 Mar 2025 12:23:05 +0600 Subject: [PATCH 19/21] Fixed KDE style for monitor button --- ubl-settings-video.css | 1 + 1 file changed, 1 insertion(+) diff --git a/ubl-settings-video.css b/ubl-settings-video.css index 1ca94fe..b2a9e8b 100644 --- a/ubl-settings-video.css +++ b/ubl-settings-video.css @@ -4,6 +4,7 @@ } .noborder { border:none; + box-shadow: none; } .nobackground { background:transparent; -- 2.35.1 From b4b168f6f8bddf48cb9d78a1e76ecacb26a617af Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 6 Mar 2025 17:38:41 +0600 Subject: [PATCH 20/21] Added status messages to terminal window --- source/ubl-settings-video.c | 2 +- source/ubl-strings.h | 1 + ubl-settings-video.pot | 14 +++++++++++--- ubl-settings-video_ru.po | 17 ++++++++++++----- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 2ce4df0..6218e0f 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1291,7 +1291,7 @@ void yon_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){ } void on_database_update(void *,void *widgets){ - yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command("")); + yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command(""),yon_char_get_localised_from_lib(SUCCESS_LABEL),OPERATION_FAIL_LABEL); } /** void yon_setup_widgets(main_window *widgets) diff --git a/source/ubl-strings.h b/source/ubl-strings.h index a600ed2..86d75c6 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -200,6 +200,7 @@ #define ALL_INSTALLED_KERNELS_LABEL _("Default (All installed)") #define FAIL_LABEL _("Driver installation has failed") +#define OPERATION_FAIL_LABEL _("Operation has failed") #define INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install driver "),"",target,"?",NULL) #define REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove driver "),"",target,"?",NULL) diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index bf57b6c..99b92f9 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -776,19 +776,27 @@ msgstr "" msgid "Default (All installed)" msgstr "" +#: source/ubl-strings.h:202 +msgid "Driver installation has failed" +msgstr "" + #: source/ubl-strings.h:203 +msgid "Operation has failed" +msgstr "" + +#: source/ubl-strings.h:205 msgid "Are you sure want to install driver " msgstr "" -#: source/ubl-strings.h:204 +#: source/ubl-strings.h:206 msgid "Are you sure want to remove driver " msgstr "" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:207 msgid "Attention!" msgstr "" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:207 msgid "" "If you work in sandbox mode, you must install the package with the module!" msgstr "" diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index 80b037d..a1d2d54 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -809,24 +809,31 @@ msgstr "Предупреждение: Поддерживаемые версии msgid "Default (All installed)" msgstr "По умолчанию (все установленные)" +#: source/ubl-strings.h:202 +msgid "Driver installation has failed" +msgstr "Установка драйвера завершена с ошибкой" + #: source/ubl-strings.h:203 +msgid "Operation has failed" +msgstr "Операция завершена с ошибкой" + +#: source/ubl-strings.h:205 msgid "Are you sure want to install driver " msgstr "Вы уверены что хотите установить драйвер " -#: source/ubl-strings.h:204 +#: source/ubl-strings.h:206 msgid "Are you sure want to remove driver " msgstr "Вы уверены что хотите удалить драйвер " -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:207 msgid "Attention!" msgstr "Внимание!" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:207 msgid "" "If you work in sandbox mode, you must install the package with the module!" msgstr "" -"Если вы работаете в режиме песочницы необходимо установить пакет с " -"модулем!" +"Если вы работаете в режиме песочницы необходимо установить пакет с модулем!" #~ msgid "Driver modules" #~ msgstr "Модули драйвера" -- 2.35.1 From 1898a5c5cf60fbb1ad8face323ae43eae934f8e7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 6 Mar 2025 18:03:48 +0600 Subject: [PATCH 21/21] Fixed gapfix parameter --- source/ubl-settings-video.c | 51 +++++++++++++++++++++++++++---------- source/ubl-settings-video.h | 8 ++++-- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 6218e0f..51f579e 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -381,10 +381,6 @@ void on_resolutions_unsupported_show(GtkToggleButton *self, monitor_edit_window } void on_save_done(main_window *, config_str output, int size){ - // char *gapfix1 = yon_config_get_by_key(KWIN_TRIPLE_BUFFER); - // char *gapfix2 = yon_config_get_by_key(GL_YIELD); - // int gapfix1_status = yon_config_get_status(KWIN_TRIPLE_BUFFER); - // int gapfix2_status = yon_config_get_status(GL_YIELD); char *final_output = yon_char_parsed_to_string(output,size,""); printf("%s\n",final_output); free(final_output); @@ -536,9 +532,19 @@ void yon_interface_update(){ char *optirun = yon_config_get_by_key(OPTIRUN); char *primusrun = yon_config_get_by_key(PRIMUSRUN); char *discrete = yon_config_get_by_key(INTEGRATEDVGA); - // char *gapfix1 = yon_config_get_by_key(GL_YIELD); - // char *gapfix2 = yon_config_get_by_key(KWIN_TRIPLE_BUFFER); - + char *gapfix1 = config(GAPFIX1_parameter); + char *gapfix2 = config(GAPFIX2_parameter); + + if (!yon_char_is_empty(gapfix1)){ + gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->FrameGapCombo),2); + + } else if (!yon_char_is_empty(gapfix2)){ + gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->FrameGapCombo),3); + + } else { + gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->FrameGapCombo),0); + } + if (!yon_char_is_empty(autodrivers)&&!strcmp(autodrivers,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->AutoDriverCombo),2); else if (!yon_char_is_empty(autodrivers)&&!strcmp(autodrivers,"no")) @@ -621,12 +627,6 @@ void yon_interface_update(){ else gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->DisplayDiscreteOnly),0); - // if (!yon_char_is_empty(gapfix1)) - // gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->FailsafeNvidiaCombo),2); - // else if (!yon_char_is_empty(gapfix2)) - // gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->FailsafeNvidiaCombo),3); - // else - // gtk_combo_box_set_active(GTK_COMBO_BOX(main_config.widgets->FailsafeNvidiaCombo),1); yon_monitor_view_update(); } @@ -1294,6 +1294,30 @@ void on_database_update(void *,void *widgets){ yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command(""),yon_char_get_localised_from_lib(SUCCESS_LABEL),OPERATION_FAIL_LABEL); } +void on_gapfix_changed(GtkWidget*, main_window *widgets){ + int active = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->FrameGapCombo)); + switch(active){ + case 0: { + yon_config_remove_by_key(GAPFIX1_parameter); + yon_config_remove_by_key(GAPFIX2_parameter); + } break; + case 1: { + yon_config_remove_by_key(GAPFIX2_parameter); + yon_config_remove_by_key(GAPFIX2_parameter); + } break; + case 2:{ + + yon_config_register(GAPFIX1_parameter,GAPFIX1_command,"USLEEP"); + yon_config_remove_by_key(GAPFIX2_parameter); + } break; + case 3:{ + yon_config_register(GAPFIX2_parameter,GAPFIX2_command,"1"); + yon_config_remove_by_key(GAPFIX1_parameter); + + } break; + } +} + /** void yon_setup_widgets(main_window *widgets) * [EN] * Sets up every element on main window @@ -1374,6 +1398,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->OptirunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->OptirunEntry); g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunEntry); g_signal_connect(G_OBJECT(widgets->KernelsCombo),"changed",G_CALLBACK(on_kernel_filter_changed),widgets); + g_signal_connect(G_OBJECT(widgets->FrameGapCombo),"changed",G_CALLBACK(on_gapfix_changed),widgets); // yon_gtk_tree_view_column_minimal_fixed_size_set(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->DriversTree),0)); // yon_gtk_tree_view_column_minimal_fixed_size_set(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->DriversTree),1)); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index a080180..2dcfbca 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -98,8 +98,11 @@ #define OPTIRUN "OPTIRUN" #define PRIMUSRUN "PRIMUSRUN" #define INTEGRATEDVGA "INTEGRATEDVGA" -#define KWIN_TRIPLE_BUFFER "export KWIN_TRIPLE_BUFFER" -#define GL_YIELD "export __GL_YIELD" + +#define GAPFIX1_parameter "ENVIRONMENT[profile:__GL_YIELD]" +#define GAPFIX1_command "ubconfig --source global get [environment] ENVIRONMENT[profile:__GL_YIELD]" +#define GAPFIX2_parameter "ENVIRONMENT[profile:KWIN_TRIPLE_BUFFER]" +#define GAPFIX2_command "ubconfig --source global get [environment] ENVIRONMENT[profile:KWIN_TRIPLE_BUFFER]" #define VGADRV_AUTO_command "ubconfig --source global get [video] VGADRV_AUTO" #define VGADRV_NOFREE_command "ubconfig --source global get [video] VGADRV_NOFREE" @@ -389,4 +392,5 @@ gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct gboolean yon_proprietary_append(struct proprietary_struct *target); gboolean yon_proprietary_clear(main_window *widgets); gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets); +void on_gapfix_changed(GtkWidget*self, main_window *widgets); #endif \ No newline at end of file -- 2.35.1