Driver tab rework

pull/118/head
parent eb8bb5e682
commit 3d3efda1cb
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -5,6 +5,8 @@
<file>ubl-settings-video-monitor.glade</file> <file>ubl-settings-video-monitor.glade</file>
<file>ubl-settings-video-terminal.glade</file> <file>ubl-settings-video-terminal.glade</file>
<file>ubl-settings-video-configuration.glade</file> <file>ubl-settings-video-configuration.glade</file>
<file>ubl-settings-video-driver-tab.glade</file>
<file>ubl-settings-video-html.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>ubl-settings-video.css</file> <file>ubl-settings-video.css</file>
@ -13,4 +15,11 @@
<file>video-drivers.csv</file> <file>video-drivers.csv</file>
<file>resolutions.csv</file> <file>resolutions.csv</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/html">
<file>nvidia-340.html</file>
<file>nvidia-390.html</file>
<file>nvidia-470.html</file>
<file>nvidia-575.html</file>
<file>nvidia-575-open.html</file>
</gresource>
</gresources> </gresources>

@ -297,7 +297,7 @@ msgstr "Пакет"
#: source/ubl-strings.h:60 #: source/ubl-strings.h:60
msgid "Supported Devices" msgid "Supported Devices"
msgstr "Устройства" msgstr "Поддерживаемые устройства"
#: source/ubl-strings.h:62 #: source/ubl-strings.h:62
msgid "Install module driver" msgid "Install module driver"

@ -38,8 +38,16 @@ add_custom_target(GLADE ubl-settings-video.glade)
set(DEPENDFILES set(DEPENDFILES
../ubl-settings-video.glade ../ubl-settings-video.glade
../ubl-settings-video-terminal.glade ../ubl-settings-video-terminal.glade
../ubl-settings-video-terminal.glade
../ubl-settings-video-monitor.glade ../ubl-settings-video-monitor.glade
../ubl-settings-video-configuration.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 ../gresource.xml
../ubl-settings-video.css ../ubl-settings-video.css
../video-drivers.csv ../video-drivers.csv
@ -79,6 +87,7 @@ endif()
set(SOURCE_FILES set(SOURCE_FILES
ubl-settings-video.c ubl-settings-video.c
ubl-settings-video-driver.c
ubl-settings-video.h ubl-settings-video.h
ubl-strings.h ubl-strings.h
) )

@ -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("<a href = \"\">",driver->name,"</a>",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;
}

@ -1017,17 +1017,85 @@ void yon_monitor_view_update(){
} }
gboolean yon_proprietary_clear(main_window *widgets){ gboolean yon_proprietary_clear(main_window *widgets){
gtk_widget_set_sensitive(widgets->LoadDriversButton,0); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
gtk_list_store_clear(main_config.list); GList *iter = NULL;
gtk_list_store_clear(main_config.list2); for (iter = list; iter; iter=iter->next){
gtk_spinner_start(GTK_SPINNER(widgets->DriversLoadingSpinner)); driver_struct *driver = g_object_get_data(G_OBJECT(iter->data),"driver_struct");
gtk_widget_show(widgets->DriversLoadingSpinner); free(driver->name);
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo)); free(driver->module);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),ALL_INSTALLED_KERNELS_LABEL); free(driver->package);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KernelsCombo),0); 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; 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){ gboolean yon_proprietary_set(main_window *widgets){
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
gtk_widget_set_sensitive(widgets->LoadDriversButton,1); 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){ gboolean yon_proprietary_append(driver_struct *){
GtkTreeIter iter; // GtkTreeIter iter;
gtk_list_store_append(main_config.list,&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); // 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); // free(target);
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
@ -1063,7 +1131,7 @@ gboolean yon_proprietary_connect(main_window *widgets){
return G_SOURCE_REMOVE; 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); g_idle_add((GSourceFunc)yon_proprietary_clear,widgets);
int kernels_size; int kernels_size;
config_str kernels_installed=yon_config_load(yon_get_kernels_installed,&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'); 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<packages_size;i++){
yon_char_remove_last_symbol(packages[i],'\n');
g_hash_table_add(table,packages[i]);
}
free(packages);
}
int installed_size;
config_str installed_packages = yon_config_load(yon_get_add_installed_packages,&installed_size);
GHashTable *installed = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
if (installed_packages){
for (int i=0;i<installed_size;i++){
yon_char_remove_last_symbol(installed_packages[i],'\n');
g_hash_table_add(installed,installed_packages[i]);
}
free(installed_packages);
}
g_idle_add((GSourceFunc)yon_proprietary_disconnect,widgets); g_idle_add((GSourceFunc)yon_proprietary_disconnect,widgets);
for (int dr_desc=1;dr_desc<size;dr_desc++){ for (int dr_desc=1;dr_desc<size;dr_desc++){
while(gtk_events_pending()) gtk_main_iteration();
int current_size; int current_size;
config_str current = yon_char_parse(rtn[dr_desc],&current_size,";"); config_str current = yon_char_parse(rtn[dr_desc],&current_size,";");
if ((!strcmp(current[0],"")|| if ((!strcmp(current[0],"")||
yon_char_parsed_check_exist(kernels_installed,kernels_size,current[0])>-1)){ yon_char_parsed_check_exist(kernels_installed,kernels_size,current[0])>-1)){
if ((!yon_char_is_empty(current[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])&& (!yon_char_is_empty(current[2])&&
g_hash_table_contains(table,current[2]))){ yon_packages_check_exist(current[2]))){
int module_status = !yon_char_is_empty(current[1])?g_hash_table_contains(installed,current[1]):0; driver_struct *target = yon_driver_struct_new();
int package_status = !yon_char_is_empty(current[2])?g_hash_table_contains(installed,current[2]):0; target->name = yon_char_new(current[3]);
struct proprietary_struct *cur = malloc(sizeof(struct proprietary_struct)); target->module = current[1];
cur->drivers=current; target->package = current[2];
cur->drivers_size=current_size; target->kernel = current[0];
cur->module_status=module_status; target->devices = current_size>5?current[5]:NULL;
cur->package_status=package_status; target->description = current[4];
cur->module_exist=g_hash_table_contains(table,current[1]); target->module_installed = yon_packages_check_installed(current[1]);
cur->package_exist=g_hash_table_contains(table,current[2]); target->package_installed = yon_packages_check_installed(current[2]);
g_idle_add((GSourceFunc)yon_proprietary_append,cur); 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) { if (dr_desc==size-1) {
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets); g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
} }
} }
g_hash_table_unref(table);
g_hash_table_unref(installed);
if (!size){ if (!size){
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets); 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); yon_ubl_status_box_render_thread(status_text,!getuid()?BACKGROUND_IMAGE_SUCCESS_TYPE:BACKGROUND_IMAGE_FAIL_TYPE);
free(status_text); free(status_text);
g_idle_add((GSourceFunc)yon_proprietary_set,widgets); 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){ void yon_proprietary_get_thread(GtkWidget *,main_window *widgets){
yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL); 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){ 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->TopTree = yon_gtk_builder_get_widget(builder,"TopTree");
widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo"); 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->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab"));
widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab")); widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab"));
// widgets->MainTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "MainTabLabel")); // 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->PackageRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "PackageRenderer"));
widgets->ModuleRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ModuleRenderer")); 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.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6"));
main_config.list2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore1")); 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.lock_save_local=0;
main_config.load_mode=1; main_config.load_mode=1;
main_config.progress_active=0; main_config.progress_active=0;
yon_packages_init();
} }
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
local=setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
textdomain (LocaleName); textdomain (LocaleName);
config_init(); config_init();
@ -1680,5 +1746,6 @@ int main(int argc, char *argv[]){
yon_proprietary_get_thread(NULL,(main_window*)widgets); yon_proprietary_get_thread(NULL,(main_window*)widgets);
yon_monitor_set_resolutions(); yon_monitor_set_resolutions();
gtk_main(); gtk_main();
yon_packages_finish();
return 0; return 0;
} }

@ -30,6 +30,8 @@
#define banner_path "/com/ublinux/images/ubl-settings-video-banner.png" #define banner_path "/com/ublinux/images/ubl-settings-video-banner.png"
#define glade_path "/com/ublinux/ui/ubl-settings-video.glade" #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_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_monitor "/com/ublinux/ui/ubl-settings-video-monitor.glade"
#define glade_path_configuration "/com/ublinux/ui/ubl-settings-video-configuration.glade" #define glade_path_configuration "/com/ublinux/ui/ubl-settings-video-configuration.glade"
@ -37,6 +39,7 @@
#define LocalePath "/usr/share/locale" #define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-video" #define LocaleName "ubl-settings-video"
#define CssPath "/com/ublinux/css/ubl-settings-video.css" #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" #define get_ports_command "xrandr |grep -E '.*connected' |cut -d' ' -f1"
@ -107,10 +110,9 @@ typedef struct{
void *data; void *data;
} thread_input; } thread_input;
char *local; typedef char* string;
typedef char *string;
__attribute__((unused)) static \
string version_application; string version_application;
#define _(String) gettext(String) #define _(String) gettext(String)
@ -175,6 +177,7 @@ typedef struct
GtkWidget *DriversLoadingSpinner; GtkWidget *DriversLoadingSpinner;
GtkWidget *DriversList; GtkWidget *DriversList;
GtkWidget *InstalledBox;
GtkWidget *InstalledModuleLabel; GtkWidget *InstalledModuleLabel;
GtkWidget *InstalledPackageLabel; GtkWidget *InstalledPackageLabel;
GtkWidget *KernelLabel; GtkWidget *KernelLabel;
@ -239,8 +242,12 @@ typedef struct {
char *module; char *module;
char *package; char *package;
char *kernel; char *kernel;
char *devices;
char *description;
int module_installed; int module_installed;
int package_installed; int package_installed;
int module_exist;
int package_exist;
} driver_struct; } driver_struct;
typedef 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 yon_monitor_parse(monitor_edit_window *window, char *string);
void on_monitor_configure(GtkWidget *self,monitor_data *window); void on_monitor_configure(GtkWidget *self,monitor_data *window);
void yon_monitor_view_update(); 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_proprietary_get_thread(GtkWidget *self,main_window *widgets);
void yon_monitor_view_dictionary_destroy(void *window); void yon_monitor_view_dictionary_destroy(void *window);
monitor_data *yon_monitor_new(main_window *widgets,int dull); 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); template_main_window *yon_main_window_complete(main_window *widgets);
void config_init(); 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_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 yon_proprietary_clear(main_window *widgets);
gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets); gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets);
void on_gapfix_changed(GtkWidget*self, 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); gpointer yon_driver_info_launch(void *command);
void on_command_cancel(GtkWidget *,main_window *widgets); void on_command_cancel(GtkWidget *,main_window *widgets);
gboolean yon_proprietary_set(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 #endif

@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-video"> <interface domain="ubl-settings-video">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-video.css --> <!-- interface-css-provider-path ubl-settings-video.css -->
<object class="GtkBox"> <object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.important-symbolic</property>
</object>
<object class="GtkBox" id="MainBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
@ -11,15 +16,25 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">4</property>
<child> <child>
<object class="GtkCheckButton" id="ModuleInstalledCheck"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<child> <child>
<placeholder/> <object class="GtkCheckButton" id="ModuleInstalledCheck">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
@ -29,14 +44,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="PackageInstalledCheck"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<child>
<placeholder/>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -45,10 +55,24 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="KernelLabel"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Kernel</property> <child>
<object class="GtkCheckButton" id="PackageInstalledCheck">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -57,10 +81,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="DriverLabel"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Driver</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -69,17 +92,112 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="DescriptionLabel"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Description</property> <child>
<object class="GtkLabel" id="KernelLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Kernel</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="DriverLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Driver</property>
<property name="track-visited-links">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="DescriptionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
</packing>
</child>
<child> <child>
<object class="GtkBox" id="DevicesBox"> <object class="GtkBox" id="DevicesBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -107,6 +225,8 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Devices</property> <property name="label" translatable="yes">Devices</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -116,13 +236,13 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">5</property> <property name="position">10</property>
</packing> </packing>
</child> </child>
<style> <style>
<class name="selection"/> <class name="bottomborder"/>
</style> </style>
</object> </object>
<packing> <packing>
@ -132,9 +252,4 @@
</packing> </packing>
</child> </child>
</object> </object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.important-symbolic</property>
</object>
</interface> </interface>

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<requires lib="webkit2gtk" version="2.28"/>
<object class="GtkWindow" id="MainWindow">
<property name="width-request">500</property>
<property name="height-request">350</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-video</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="WebKitWebView" type-func="webkit_web_view_get_type" id="HTMLView">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="HeadLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Video adapter and display settings</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-video</property>
</object>
</child>
</object>
</child>
</object>
</interface>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-video"> <interface domain="ubl-settings-video">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-video.css --> <!-- interface-css-provider-path ubl-settings-video.css -->
@ -828,7 +828,6 @@
</child> </child>
<child> <child>
<object class="GtkButton" id="InfoButton"> <object class="GtkButton" id="InfoButton">
<property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
@ -865,14 +864,77 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">2</property>
<property name="margin-end">2</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property> <property name="orientation">vertical</property>
<property name="xalign">0</property> <child>
<property name="yalign">0</property> <object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Installed</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="InstalledBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="InstalledModuleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Module</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="InstalledPackageLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Package</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -881,12 +943,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -895,12 +954,12 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="KernelLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property> <property name="label" translatable="yes">Kernel</property>
<property name="xalign">0</property> <property name="xalign">0</property>
<property name="yalign">0</property> <property name="yalign">1</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -909,12 +968,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -923,12 +979,12 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="DriverLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property> <property name="label" translatable="yes">Driver</property>
<property name="xalign">0</property> <property name="xalign">0</property>
<property name="yalign">0</property> <property name="yalign">1</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -937,12 +993,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -950,6 +1003,45 @@
<property name="position">5</property> <property name="position">5</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="DescriptionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description</property>
<property name="xalign">0</property>
<property name="yalign">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="DevicesLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Devices</property>
<property name="xalign">0</property>
<property name="yalign">1</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -958,14 +1050,30 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkListBox" id="DriversList"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkListBox" id="DriversList">
<property name="visible">True</property>
<property name="can-focus">False</property>
<style>
<class name="treeview"/>
</style>
</object>
</child>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -1247,6 +1355,9 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="model">liststore1</property> <property name="model">liststore1</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
@ -1278,6 +1389,9 @@
<property name="enable-grid-lines">both</property> <property name="enable-grid-lines">both</property>
<property name="enable-tree-lines">True</property> <property name="enable-tree-lines">True</property>
<property name="tooltip-column">4</property> <property name="tooltip-column">4</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="sizing">fixed</property> <property name="sizing">fixed</property>

Loading…
Cancel
Save