From 3d3efda1cb18ef714d757f185d4393ac12187bbe Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 9 Jul 2025 16:41:57 +0600 Subject: [PATCH] Driver tab rework --- gresource.xml | 9 ++ locale/ubl-settings-video_ru.po | 2 +- source/CMakeLists.txt | 9 ++ source/ubl-settings-video-driver.c | 64 ++++++++++ source/ubl-settings-video.c | 173 ++++++++++++++++++--------- source/ubl-settings-video.h | 23 +++- ubl-settings-video-driver-tab.glade | 175 +++++++++++++++++++++++----- ubl-settings-video-html.glade | 58 +++++++++ ubl-settings-video.glade | 168 +++++++++++++++++++++----- 9 files changed, 564 insertions(+), 117 deletions(-) create mode 100644 source/ubl-settings-video-driver.c create mode 100644 ubl-settings-video-html.glade diff --git a/gresource.xml b/gresource.xml index 4522480..8d72b82 100644 --- a/gresource.xml +++ b/gresource.xml @@ -5,6 +5,8 @@ ubl-settings-video-monitor.glade ubl-settings-video-terminal.glade ubl-settings-video-configuration.glade + ubl-settings-video-driver-tab.glade + ubl-settings-video-html.glade ubl-settings-video.css @@ -13,4 +15,11 @@ video-drivers.csv resolutions.csv + + nvidia-340.html + nvidia-390.html + nvidia-470.html + nvidia-575.html + nvidia-575-open.html + \ No newline at end of file diff --git a/locale/ubl-settings-video_ru.po b/locale/ubl-settings-video_ru.po index 1107c43..4ff2832 100644 --- a/locale/ubl-settings-video_ru.po +++ b/locale/ubl-settings-video_ru.po @@ -297,7 +297,7 @@ msgstr "Пакет" #: source/ubl-strings.h:60 msgid "Supported Devices" -msgstr "Устройства" +msgstr "Поддерживаемые устройства" #: source/ubl-strings.h:62 msgid "Install module driver" diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 24e487a..14908fb 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -38,8 +38,16 @@ add_custom_target(GLADE ubl-settings-video.glade) set(DEPENDFILES ../ubl-settings-video.glade ../ubl-settings-video-terminal.glade + ../ubl-settings-video-terminal.glade ../ubl-settings-video-monitor.glade ../ubl-settings-video-configuration.glade + ../ubl-settings-video-html.glade + ../ubl-settings-video-driver-tab.glade + ../driver-info/nvidia-340.html + ../driver-info/nvidia-390.html + ../driver-info/nvidia-470.html + ../driver-info/nvidia-575.html + ../driver-info/nvidia-575-open.html ../gresource.xml ../ubl-settings-video.css ../video-drivers.csv @@ -79,6 +87,7 @@ endif() set(SOURCE_FILES ubl-settings-video.c + ubl-settings-video-driver.c ubl-settings-video.h ubl-strings.h ) diff --git a/source/ubl-settings-video-driver.c b/source/ubl-settings-video-driver.c new file mode 100644 index 0000000..cf8f980 --- /dev/null +++ b/source/ubl-settings-video-driver.c @@ -0,0 +1,64 @@ +#include "ubl-settings-video.h" + +void on_devices_info_clicked(GtkWidget *, driver_struct* driver){ + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_html); + GtkWidget *MainWindow = yon_gtk_builder_get_widget(builder, "MainWindow"); + GtkWidget *HTMLView = yon_gtk_builder_get_widget(builder,"HTMLView"); + yon_gtk_window_setup(GTK_WINDOW(MainWindow),NULL,SUPPORTED_LABEL,icon_name,"html_window"); + int size; + config_str fl = yon_resource_open_file(html_path(driver->name),&size); + char *full_text = yon_char_parsed_to_string(fl,size,"\n"); + webkit_web_view_load_html(WEBKIT_WEB_VIEW(HTMLView),full_text,""); + + gtk_widget_show(MainWindow); +} + +void yon_driver_struct_update(driver_struct *driver){ + char *driver_link = yon_char_unite("",driver->name,"",NULL); + gtk_label_set_markup(GTK_LABEL(driver->DriverLabel),driver_link); + gtk_label_set_text(GTK_LABEL(driver->KernelLabel),driver->kernel); + gtk_label_set_text(GTK_LABEL(driver->DevicesLabel),driver->devices); + gtk_label_set_text(GTK_LABEL(driver->DescriptionLabel),driver->description); + gtk_widget_set_visible(driver->ModuleInstalledCheck,driver->module_exist); + gtk_widget_set_visible(driver->PackageInstalledCheck,driver->package_exist); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver->ModuleInstalledCheck),driver->module_installed); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver->PackageInstalledCheck),driver->package_installed); + int size; + config_str html = yon_resource_open_file(html_path(driver->name),&size); + if (!size) gtk_widget_hide(driver->DevicesInfoButton); + else yon_char_parsed_free(html,size); +} + +void on_link_activate(GtkWidget *, char*, driver_struct *driver){ + yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE); + char *command = get_info_proprietary_command(yon_char_is_empty(driver->module)?driver->package:driver->module); + g_thread_new("info_thread",yon_driver_info_launch,(void*)command); +} + +driver_struct *yon_driver_struct_new(){ + driver_struct *driver = new(driver_struct); + + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_driver); + driver->MainBox = yon_gtk_builder_get_widget(builder,"MainBox"); + driver->ModuleInstalledCheck = yon_gtk_builder_get_widget(builder,"ModuleInstalledCheck"); + driver->PackageInstalledCheck = yon_gtk_builder_get_widget(builder,"PackageInstalledCheck"); + driver->KernelLabel = yon_gtk_builder_get_widget(builder,"KernelLabel"); + driver->DriverLabel = yon_gtk_builder_get_widget(builder,"DriverLabel"); + driver->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); + driver->DevicesBox = yon_gtk_builder_get_widget(builder,"DevicesBox"); + driver->DevicesInfoButton = yon_gtk_builder_get_widget(builder,"DevicesInfoButton"); + driver->DevicesLabel = yon_gtk_builder_get_widget(builder,"DevicesLabel"); + + driver->name = NULL; + driver->kernel = NULL; + driver->module = NULL; + driver->package = NULL; + driver->module_installed = 0; + driver->package_installed = 0; + driver->module_exist = 0; + driver->package_exist = 0; + + g_signal_connect(G_OBJECT(driver->DevicesInfoButton),"clicked", G_CALLBACK(on_devices_info_clicked),driver); + g_signal_connect(G_OBJECT(driver->DriverLabel),"activate-link", G_CALLBACK(on_link_activate),driver); + return driver; +} \ No newline at end of file diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 0cdc9e8..8544c80 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1017,17 +1017,85 @@ void yon_monitor_view_update(){ } gboolean yon_proprietary_clear(main_window *widgets){ - gtk_widget_set_sensitive(widgets->LoadDriversButton,0); - gtk_list_store_clear(main_config.list); - gtk_list_store_clear(main_config.list2); - gtk_spinner_start(GTK_SPINNER(widgets->DriversLoadingSpinner)); - gtk_widget_show(widgets->DriversLoadingSpinner); - 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); + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList)); + GList *iter = NULL; + for (iter = list; iter; iter=iter->next){ + driver_struct *driver = g_object_get_data(G_OBJECT(iter->data),"driver_struct"); + free(driver->name); + free(driver->module); + free(driver->package); + free(driver->kernel); + free(driver->description); + free(driver->devices); + gtk_widget_destroy(GTK_WIDGET(iter->data)); + } + // gtk_widget_set_sensitive(widgets->LoadDriversButton,0); + // gtk_list_store_clear(main_config.list); + // gtk_list_store_clear(main_config.list2); + // gtk_spinner_start(GTK_SPINNER(widgets->DriversLoadingSpinner)); + // gtk_widget_show(widgets->DriversLoadingSpinner); + // 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); return G_SOURCE_REMOVE; } +void yon_drivers_resize(main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList)); + GList *iter; + int module_width=0; + int package_width=0; + int kernel_width=0; + int driver_width=0; + int description_width=0; + gtk_widget_get_preferred_width(widgets->InstalledModuleLabel,&module_width,NULL); + gtk_widget_get_preferred_width(widgets->InstalledPackageLabel,&package_width,NULL); + gtk_widget_get_preferred_width(widgets->KernelLabel,&kernel_width,NULL); + gtk_widget_get_preferred_width(widgets->DriverLabel,&driver_width,NULL); + gtk_widget_get_preferred_width(widgets->DescriptionLabel,NULL,&description_width); + for (iter = list;iter;iter=iter->next){ + driver_struct *data = g_object_get_data(G_OBJECT(iter->data),"driver_struct"); + gtk_widget_realize(data->ModuleInstalledCheck); + gtk_widget_realize(data->PackageInstalledCheck); + gtk_widget_realize(data->KernelLabel); + gtk_widget_realize(data->DriverLabel); + gtk_widget_realize(data->DescriptionLabel); + gtk_widget_realize(data->DevicesBox); + int temp_width = 0; + gtk_widget_get_preferred_width(data->ModuleInstalledCheck,&temp_width,NULL); + if (temp_width > module_width) module_width=temp_width; + gtk_widget_get_preferred_width(data->PackageInstalledCheck,&temp_width,NULL); + if (temp_width > package_width) package_width=temp_width; + gtk_widget_get_preferred_width(data->KernelLabel,&temp_width,NULL); + if (temp_width > kernel_width) kernel_width=temp_width; + gtk_widget_get_preferred_width(data->DriverLabel,&temp_width,NULL); + if (temp_width > driver_width) driver_width=temp_width; + gtk_widget_get_preferred_width(data->DescriptionLabel,NULL,&temp_width); + if (temp_width > description_width) description_width=temp_width; + } + if (module_width||package_width||kernel_width||driver_width||description_width){ + for (iter = list;iter;iter=iter->next){ + driver_struct *data = g_object_get_data(G_OBJECT(iter->data),"driver_struct"); + if (module_width) + gtk_widget_set_size_request(gtk_widget_get_parent(data->ModuleInstalledCheck),module_width,-1); + if (package_width) + gtk_widget_set_size_request(gtk_widget_get_parent(data->PackageInstalledCheck),package_width,-1); + if (kernel_width) + gtk_widget_set_size_request(gtk_widget_get_parent(data->KernelLabel),kernel_width,-1); + if (driver_width) + gtk_widget_set_size_request(gtk_widget_get_parent(data->DriverLabel),driver_width,-1); + if (description_width) + gtk_widget_set_size_request(gtk_widget_get_parent(data->DescriptionLabel),description_width,-1); + } + g_list_free(list); + if (module_width) gtk_widget_set_size_request(widgets->InstalledModuleLabel,module_width,-1); + if (package_width) gtk_widget_set_size_request(widgets->InstalledPackageLabel,package_width,-1); + if (kernel_width) gtk_widget_set_size_request(widgets->KernelLabel,kernel_width,-1); + if (driver_width) gtk_widget_set_size_request(widgets->DriverLabel,driver_width,-1); + if (description_width) gtk_widget_set_size_request(widgets->DescriptionLabel,description_width,-1); + } +} + gboolean yon_proprietary_set(main_window *widgets){ gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list)); gtk_widget_set_sensitive(widgets->LoadDriversButton,1); @@ -1035,11 +1103,11 @@ gboolean yon_proprietary_set(main_window *widgets){ } -gboolean yon_proprietary_append(struct proprietary_struct *target){ - GtkTreeIter iter; - gtk_list_store_append(main_config.list,&iter); - gtk_list_store_set(main_config.list,&iter,0,target->module_status,1,target->package_status,2,target->drivers[0],3,target->drivers[3],4,_(target->drivers[4]),5,_(target->drivers[5]),7,target->drivers[1],8,target->drivers[2],9,!yon_char_is_empty(target->drivers[1])&&target->module_exist,10,!yon_char_is_empty(target->drivers[2])&&target->package_exist,-1); - free(target); +gboolean yon_proprietary_append(driver_struct *){ + // GtkTreeIter iter; + // gtk_list_store_append(main_config.list,&iter); + // gtk_list_store_set(main_config.list,&iter,0,target->module_status,1,target->package_status,2,target->drivers[0],3,target->drivers[3],4,_(target->drivers[4]),5,_(target->drivers[5]),7,target->drivers[1],8,target->drivers[2],9,!yon_char_is_empty(target->drivers[1])&&target->module_exist,10,!yon_char_is_empty(target->drivers[2])&&target->package_exist,-1); + // free(target); return G_SOURCE_REMOVE; } @@ -1063,7 +1131,7 @@ gboolean yon_proprietary_connect(main_window *widgets){ return G_SOURCE_REMOVE; } -void *yon_proprietary_local_get(main_window *widgets){ +void yon_proprietary_local_get(main_window *widgets){ g_idle_add((GSourceFunc)yon_proprietary_clear,widgets); int kernels_size; config_str kernels_installed=yon_config_load(yon_get_kernels_installed,&kernels_size); @@ -1086,56 +1154,44 @@ void *yon_proprietary_local_get(main_window *widgets){ yon_char_remove_last_symbol(rtn[i],'\n'); } - int packages_size; - config_str packages = yon_config_load(yon_get_all_pacman_packages_command,&packages_size); - GHashTable *table = g_hash_table_new(g_str_hash,g_str_equal); - if (packages_size){ - for (int i=0;i-1)){ if ((!yon_char_is_empty(current[1])&& - g_hash_table_contains(table,current[1]))|| + yon_packages_check_exist(current[1]))|| (!yon_char_is_empty(current[2])&& - g_hash_table_contains(table,current[2]))){ - int module_status = !yon_char_is_empty(current[1])?g_hash_table_contains(installed,current[1]):0; - int package_status = !yon_char_is_empty(current[2])?g_hash_table_contains(installed,current[2]):0; - struct proprietary_struct *cur = malloc(sizeof(struct proprietary_struct)); - cur->drivers=current; - cur->drivers_size=current_size; - cur->module_status=module_status; - cur->package_status=package_status; - cur->module_exist=g_hash_table_contains(table,current[1]); - cur->package_exist=g_hash_table_contains(table,current[2]); - g_idle_add((GSourceFunc)yon_proprietary_append,cur); + yon_packages_check_exist(current[2]))){ + driver_struct *target = yon_driver_struct_new(); + target->name = yon_char_new(current[3]); + target->module = current[1]; + target->package = current[2]; + target->kernel = current[0]; + target->devices = current_size>5?current[5]:NULL; + target->description = current[4]; + target->module_installed = yon_packages_check_installed(current[1]); + target->package_installed = yon_packages_check_installed(current[2]); + target->module_exist = yon_packages_check_exist(current[1]); + target->package_exist = yon_packages_check_exist(current[2]); + GtkWidget *list_row = gtk_list_box_row_new(); + gtk_widget_show(list_row); + + gtk_container_add(GTK_CONTAINER(list_row),target->MainBox); + g_object_set_data(G_OBJECT(list_row),"driver_struct",target); + gtk_list_box_insert(GTK_LIST_BOX(widgets->DriversList),list_row,-1); + yon_driver_struct_update(target); + // yon_proprietary_append(cur); + free(current); } } if (dr_desc==size-1) { g_idle_add((GSourceFunc)yon_proprietary_connect,widgets); } } - g_hash_table_unref(table); - g_hash_table_unref(installed); + if (!size){ g_idle_add((GSourceFunc)yon_proprietary_connect,widgets); } @@ -1143,13 +1199,13 @@ void *yon_proprietary_local_get(main_window *widgets){ yon_ubl_status_box_render_thread(status_text,!getuid()?BACKGROUND_IMAGE_SUCCESS_TYPE:BACKGROUND_IMAGE_FAIL_TYPE); free(status_text); g_idle_add((GSourceFunc)yon_proprietary_set,widgets); - g_thread_exit (NULL); + yon_drivers_resize(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); - g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets); + yon_proprietary_local_get(widgets); } void yon_monitor_view_dictionary_destroy(void *window){ @@ -1451,6 +1507,14 @@ template_main_window *yon_main_window_complete(main_window *widgets){ widgets->TopTree = yon_gtk_builder_get_widget(builder,"TopTree"); widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo"); + widgets->InstalledBox = yon_gtk_builder_get_widget(builder,"InstalledBox"); + widgets->InstalledModuleLabel = yon_gtk_builder_get_widget(builder,"InstalledModuleLabel"); + widgets->InstalledPackageLabel = yon_gtk_builder_get_widget(builder,"InstalledPackageLabel"); + widgets->KernelLabel = yon_gtk_builder_get_widget(builder,"KernelLabel"); + widgets->DriverLabel = yon_gtk_builder_get_widget(builder,"DriverLabel"); + widgets->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); + widgets->DevicesLabel = yon_gtk_builder_get_widget(builder,"DevicesLabel"); + widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab")); widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab")); // widgets->MainTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "MainTabLabel")); @@ -1468,6 +1532,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){ widgets->PackageRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "PackageRenderer")); widgets->ModuleRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ModuleRenderer")); + widgets->DriversList = yon_gtk_builder_get_widget(builder, "DriversList"); main_config.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6")); main_config.list2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore1")); @@ -1651,10 +1716,11 @@ void config_init(){ main_config.lock_save_local=0; main_config.load_mode=1; main_config.progress_active=0; + yon_packages_init(); } int main(int argc, char *argv[]){ - local=setlocale(LC_ALL, ""); + setlocale(LC_ALL, ""); textdomain (LocaleName); config_init(); @@ -1680,5 +1746,6 @@ int main(int argc, char *argv[]){ yon_proprietary_get_thread(NULL,(main_window*)widgets); yon_monitor_set_resolutions(); gtk_main(); + yon_packages_finish(); return 0; } \ No newline at end of file diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 1ca1787..83c22ad 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -30,6 +30,8 @@ #define banner_path "/com/ublinux/images/ubl-settings-video-banner.png" #define glade_path "/com/ublinux/ui/ubl-settings-video.glade" +#define glade_path_driver "/com/ublinux/ui/ubl-settings-video-driver-tab.glade" +#define glade_path_html "/com/ublinux/ui/ubl-settings-video-html.glade" #define glade_terminal_path "/com/ublinux/ui/ubl-settings-video-terminal.glade" #define glade_path_monitor "/com/ublinux/ui/ubl-settings-video-monitor.glade" #define glade_path_configuration "/com/ublinux/ui/ubl-settings-video-configuration.glade" @@ -37,6 +39,7 @@ #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-video" #define CssPath "/com/ublinux/css/ubl-settings-video.css" +#define html_path(target) yon_char_unite("resource:///com/ublinux/html/",target,".html",NULL) #define get_ports_command "xrandr |grep -E '.*connected' |cut -d' ' -f1" @@ -107,10 +110,9 @@ typedef struct{ void *data; } thread_input; -char *local; - -typedef char *string; +typedef char* string; +__attribute__((unused)) static \ string version_application; #define _(String) gettext(String) @@ -175,6 +177,7 @@ typedef struct GtkWidget *DriversLoadingSpinner; GtkWidget *DriversList; + GtkWidget *InstalledBox; GtkWidget *InstalledModuleLabel; GtkWidget *InstalledPackageLabel; GtkWidget *KernelLabel; @@ -239,8 +242,12 @@ typedef struct { char *module; char *package; char *kernel; + char *devices; + char *description; int module_installed; int package_installed; + int module_exist; + int package_exist; } driver_struct; typedef struct @@ -376,7 +383,6 @@ 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); @@ -387,9 +393,9 @@ void on_database_update(void *self,void *widgets); template_main_window *yon_main_window_complete(main_window *widgets); void config_init(); -void *yon_proprietary_local_get(main_window *widgets); +void yon_proprietary_local_get(main_window *widgets); gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct *append); -gboolean yon_proprietary_append(struct proprietary_struct *target); +gboolean yon_proprietary_append(driver_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); @@ -400,5 +406,10 @@ void on_app_chooser_open(GtkWidget *self, main_window *widgets); gpointer yon_driver_info_launch(void *command); void on_command_cancel(GtkWidget *,main_window *widgets); gboolean yon_proprietary_set(main_window *widgets); +void on_devices_info_clicked(GtkWidget *, driver_struct* driver); +driver_struct *yon_driver_struct_new(); +void yon_driver_struct_update(driver_struct *driver); +void yon_drivers_resize(main_window *); +void on_link_activate(GtkWidget *, char*, driver_struct *driver); #endif \ No newline at end of file diff --git a/ubl-settings-video-driver-tab.glade b/ubl-settings-video-driver-tab.glade index 14625ba..a673a2c 100644 --- a/ubl-settings-video-driver-tab.glade +++ b/ubl-settings-video-driver-tab.glade @@ -1,9 +1,14 @@ - + - + + True + False + com.ublinux.libublsettingsui-gtk3.important-symbolic + + True False vertical @@ -11,15 +16,25 @@ True False - 5 + 4 - + True - True - False - True + False - + + True + True + False + center + center + True + + + False + True + 0 + @@ -29,14 +44,9 @@ - + True - True - False - True - - - + False False @@ -45,10 +55,24 @@ - + True False - Kernel + + + True + True + False + center + center + True + + + False + True + 0 + + False @@ -57,10 +81,9 @@ - + True False - Driver False @@ -69,17 +92,112 @@ - + True False - Description + + + True + False + Kernel + 0 + + + False + True + 0 + + - True + False True 4 + + + True + False + + + False + True + 5 + + + + + True + False + + + True + False + Driver + False + 0 + + + False + True + 0 + + + + + False + True + 6 + + + + + True + False + + + False + True + 7 + + + + + True + False + + + True + False + Description + True + 0 + + + False + True + 0 + + + + + False + True + 8 + + + + + True + False + + + False + True + 9 + + True @@ -107,6 +225,8 @@ True False Devices + True + 0 False @@ -116,13 +236,13 @@ - False + True True - 5 + 10 @@ -132,9 +252,4 @@ - - True - False - com.ublinux.libublsettingsui-gtk3.important-symbolic - diff --git a/ubl-settings-video-html.glade b/ubl-settings-video-html.glade new file mode 100644 index 0000000..f016467 --- /dev/null +++ b/ubl-settings-video-html.glade @@ -0,0 +1,58 @@ + + + + + + + 500 + 350 + False + com.ublinux.ubl-settings-video + + + True + False + vertical + + + True + True + + + + + + True + True + 0 + + + + + + + True + False + True + + + True + False + Video adapter and display settings + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-video + + + + + + diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 9461d96..ae8da20 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -1,5 +1,5 @@ - + @@ -828,7 +828,6 @@ - True False True True @@ -865,14 +864,77 @@ True False + 2 + 2 5 - + True False - label - 0 - 0 + vertical + + + True + False + Installed + 0 + 0 + + + False + True + 0 + + + + + True + False + + + True + False + Module + 0 + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + False + Package + 0 + 0 + + + False + True + 2 + + + + + False + True + 1 + + False @@ -881,12 +943,9 @@ - + True False - label - 0 - 0 False @@ -895,12 +954,12 @@ - + True False - label + Kernel 0 - 0 + 1 False @@ -909,12 +968,9 @@ - + True False - label - 0 - 0 False @@ -923,12 +979,12 @@ - + True False - label + Driver 0 - 0 + 1 False @@ -937,12 +993,9 @@ - + True False - label - 0 - 0 False @@ -950,6 +1003,45 @@ 5 + + + True + False + Description + 0 + 1 + + + False + True + 6 + + + + + True + False + + + False + True + 7 + + + + + True + False + Devices + 0 + 1 + + + True + True + 8 + + False @@ -958,14 +1050,30 @@ - + True - False + True + in + + + True + False + + + True + False + + + + + True True - 2 + 1 @@ -1247,6 +1355,9 @@ True True liststore1 + + + fixed @@ -1278,6 +1389,9 @@ both True 4 + + + fixed