diff --git a/source/ubl-settings-video-driver.c b/source/ubl-settings-video-driver.c
index cf8f980..fc28a53 100644
--- a/source/ubl-settings-video-driver.c
+++ b/source/ubl-settings-video-driver.c
@@ -1,5 +1,13 @@
#include "ubl-settings-video.h"
+void on_devices_button_clicked(GtkWidget *, main_window *widgets){
+ GtkWidget *selection = GTK_WIDGET(gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList)));
+ if (selection){
+ driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
+ on_devices_info_clicked(NULL,driver);
+ }
+}
+
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");
@@ -13,26 +21,38 @@ void on_devices_info_clicked(GtkWidget *, driver_struct* driver){
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);
+void yon_driver_struct_update(main_window *widgets,driver_struct *driver){
+ driver->module_installed = yon_packages_check_installed(driver->module);
+ driver->package_installed = yon_packages_check_installed(driver->package);
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);
+ g_signal_handlers_block_by_func(G_OBJECT(driver->ModuleInstalledCheck),G_CALLBACK(on_install_activate),widgets);
+ g_signal_handlers_block_by_func(G_OBJECT(driver->PackageInstalledCheck),G_CALLBACK(on_install_activate),widgets);
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);
+ g_signal_handlers_unblock_by_func(G_OBJECT(driver->ModuleInstalledCheck),G_CALLBACK(on_install_activate),widgets);
+ g_signal_handlers_unblock_by_func(G_OBJECT(driver->PackageInstalledCheck),G_CALLBACK(on_install_activate),widgets);
int size;
+ char *driver_link = NULL;
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);
+ if (!size){
+ driver_link = yon_char_new(driver->name);
+ driver->supported_devices_avaliable=0;
+ } else {
+ driver_link = yon_char_unite("",driver->name,"",NULL);
+ yon_char_parsed_free(html,size);
+ driver->supported_devices_avaliable=1;
+ }
+
+ gtk_label_set_markup(GTK_LABEL(driver->DriverLabel),driver_link);
+ free(driver_link);
}
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);
+ on_devices_info_clicked(NULL,driver);
}
driver_struct *yon_driver_struct_new(){
@@ -46,7 +66,6 @@ driver_struct *yon_driver_struct_new(){
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;
@@ -57,8 +76,11 @@ driver_struct *yon_driver_struct_new(){
driver->package_installed = 0;
driver->module_exist = 0;
driver->package_exist = 0;
+ driver->supported_devices_avaliable=0;
+
+ g_object_set_data(G_OBJECT(driver->ModuleInstalledCheck),"driver_struct",driver);
+ g_object_set_data(G_OBJECT(driver->PackageInstalledCheck),"driver_struct",driver);
- 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-install.c b/source/ubl-settings-video-install.c
index fdb4b4e..adca892 100644
--- a/source/ubl-settings-video-install.c
+++ b/source/ubl-settings-video-install.c
@@ -7,17 +7,17 @@ void on_terminal_revealer_open(GtkWidget *, main_window *widgets){
case 0: { // opens
gtk_button_set_label(GTK_BUTTON(widgets->MoreButton),LESS_LABEL);
- g_object_ref(widgets->MenusTab);
- gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(widgets->MenusTab)),widgets->MenusTab);
- gtk_paned_add1(GTK_PANED(widgets->TerminalPaned),widgets->MenusTab);
+ g_object_ref(widgets->TerminalMoveBox);
+ gtk_container_remove(GTK_CONTAINER(widgets->TerminalMoveTargetBox),widgets->TerminalMoveBox);
+ gtk_paned_add1(GTK_PANED(widgets->TerminalPaned),widgets->TerminalMoveBox);
- int pos;
+ int pos=250;
if (yon_window_config_get_parameter("settings","paned_pos",&pos,YON_TYPE_INT)) {
gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),pos);
}
gtk_widget_show(widgets->TerminalPaned);
- gtk_widget_show(widgets->MenusTab);
+ gtk_widget_show(widgets->TerminalMoveBox);
@@ -33,36 +33,59 @@ void on_terminal_revealer_open(GtkWidget *, main_window *widgets){
gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),g_value_get_int(&val));
g_value_unset(&val);
- g_object_ref(widgets->MenusTab);
- gtk_container_remove(GTK_CONTAINER(widgets->TerminalPaned),widgets->MenusTab);
- gtk_box_pack_start(GTK_BOX(gtk_widget_get_parent(widgets->TerminalPaned)),widgets->MenusTab,1,1,0);
+ g_object_ref(widgets->TerminalMoveBox);
+ gtk_container_remove(GTK_CONTAINER(widgets->TerminalPaned),widgets->TerminalMoveBox);
+ gtk_box_pack_start(GTK_BOX(widgets->TerminalMoveTargetBox),widgets->TerminalMoveBox,1,1,0);
- gtk_box_reorder_child(GTK_BOX(gtk_widget_get_parent(widgets->MenusTab)),widgets->MenusTab,0);
+ gtk_box_reorder_child(GTK_BOX(widgets->TerminalMoveTargetBox),widgets->TerminalMoveBox,0);
gtk_widget_hide(widgets->TerminalPaned);
} break;
}
}
+void on_install_activate(GtkWidget *self, main_window *widgets){
+ g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_install_activate),widgets);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self),!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)));
+ g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_install_activate),widgets);
+ driver_struct *driver = g_object_get_data(G_OBJECT(self),"driver_struct");
+ char *install_target = NULL;
+ if (self == driver->ModuleInstalledCheck){
+ install_target = driver->module;
+ } else if (self == driver->PackageInstalledCheck){
+ install_target = driver->package;
+ }
+ char *command = NULL;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self))){
+ command = delete_proprietary_command(install_target);
+ } else {
+ command = install_proprietary_command(install_target);
+ }
+ g_mutex_lock(&main_config.progress_mutex);
+ main_config.progress_active=1;
+ g_mutex_unlock(&main_config.progress_mutex);
+ vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),10,15);
+ vte_terminal_set_input_enabled(VTE_TERMINAL(widgets->InstallTerminal),1);
+ vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1);
+ g_signal_connect_after(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_install_check),driver);
+ yon_terminal_integrated_start(widgets->InstallTerminal,command);
+ // g_signal_connect(G_OBJECT(widgets->InstallTerminal),"contents-changed",G_CALLBACK(on_terminal_check_progress),widgets);
+ g_timeout_add(500,(GSourceFunc)on_terminal_check_progress,widgets);
+}
+
+void on_install_check(GtkWidget *self,gint ,driver_struct *driver){
+ main_window *widgets = g_object_get_data(G_OBJECT(self),"widgets");
+ yon_packages_update_package(driver->package);
+ yon_packages_update_package(driver->module);
+
+ yon_driver_struct_update(widgets,driver);
+ // g_signal_handlers_block_by_func(G_OBJECT(driver->ModuleInstalledCheck),G_CALLBACK(on_install_activate),widgets);
+ // g_signal_handlers_block_by_func(G_OBJECT(driver->PackageInstalledCheck),G_CALLBACK(on_install_activate),widgets);
+ // gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver->ModuleInstalledCheck),yon_packages_check_installed(driver->module));
+ // gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver->PackageInstalledCheck),yon_packages_check_installed(driver->package));
+ // g_signal_handlers_unblock_by_func(G_OBJECT(driver->ModuleInstalledCheck),G_CALLBACK(on_install_activate),widgets);
+ // g_signal_handlers_unblock_by_func(G_OBJECT(driver->PackageInstalledCheck),G_CALLBACK(on_install_check),driver);
+}
-// 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;
-// 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(yon_char_unite(PROPRIETARY_OPETAION_DONE_LABEL,". ",PROPRIETARY_LOADING_LABEL,NULL),BACKGROUND_IMAGE_SUCCESS_TYPE);
+// void yon_terminal_start(main_window *widgets, char *usr_command){
// }
\ No newline at end of file
diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c
index eacd583..6b89071 100644
--- a/source/ubl-settings-video.c
+++ b/source/ubl-settings-video.c
@@ -3,7 +3,7 @@
config main_config;
void on_terminal_done(GtkWidget *, int , main_window *widgets){
- gtk_widget_destroy(widgets->TerminalRevealer);
+ vte_terminal_feed_child(VTE_TERMINAL(widgets->InstallTerminal),"^C",2);
}
void on_terminal_more(GtkWidget *, main_window *widgets){
@@ -15,7 +15,7 @@ gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active
gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *widgets){
-
+ vte_terminal_set_input_enabled(VTE_TERMINAL(self),0);
g_mutex_lock(&main_config.progress_mutex);
main_config.progress_active=0;
g_mutex_unlock(&main_config.progress_mutex);
@@ -26,40 +26,15 @@ gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *wid
}
on_terminal_done(self,0,widgets);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0);
return G_SOURCE_REMOVE;
}
+// gboolean on_terminal_check_progress(GtkWidget *,main_window *widgets){
gboolean on_terminal_check_progress(main_window *widgets){
- char *text = vte_terminal_get_text_format(VTE_TERMINAL(widgets->terminal),VTE_FORMAT_TEXT);
- GRegex *regex = g_regex_new("\\d?\\d?\\d%",0,0,NULL);
-
- GMatchInfo *match = NULL;
- g_regex_match(regex,text,0,&match);
- g_regex_unref(regex);
- double percentage = 0.0;
- char *last_match = NULL;
- while (g_match_info_matches(match)) {
- char *current_match = g_match_info_fetch(match, 0);
- if (last_match) {
- g_free(last_match);
- }
- last_match = current_match;
- g_match_info_next(match, NULL);
- }
-
- if (last_match) {
- yon_char_remove_last_symbol(last_match,'%');
- percentage = g_ascii_strtod(last_match,NULL);
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel), percentage / 100);
- g_free(last_match);
- } else {
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel));
- }
- if (text) g_free(text);
- if (match) g_match_info_unref(match);
-
g_mutex_lock(&main_config.progress_mutex);
- if (percentage>99||!main_config.progress_active){
+ if (!main_config.progress_active){
g_mutex_unlock(&main_config.progress_mutex);
return G_SOURCE_REMOVE;
}
@@ -74,67 +49,23 @@ void on_command_cancel(GtkWidget *,main_window *widgets){
on_terminal_done(NULL,0,widgets);
}
-void yon_terminal_start(main_window *widgets, char *usr_command){
- char **command=new_arr(char*,2);
- gchar **envp = g_get_environ();
- command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
- command[1]=NULL;
- char **env=new_arr(char*,2);
- env[0]="";
- env[1]=NULL;
-
- GtkBuilder *builder=gtk_builder_new_from_resource(glade_terminal_path);
- widgets->TerminalBox = yon_gtk_builder_get_widget(builder, "TerminalBox");
- widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer");
- widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder, "TerminalMoreRevieler");
- widgets->TerminalCancelButton = yon_gtk_builder_get_widget(builder, "TerminalCancelButton");
- widgets->TerminalMoreButton = yon_gtk_builder_get_widget(builder, "TerminalMoreButton");
- widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll");
- widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
-
- widgets->terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
- g_signal_connect(G_OBJECT(widgets->terminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
- g_signal_connect(G_OBJECT(widgets->TerminalCancelButton),"clicked",G_CALLBACK(on_command_cancel),widgets);
-
- gtk_button_set_label(GTK_BUTTON(widgets->TerminalMoreButton),MORE_LABEL);
- vte_terminal_set_size(VTE_TERMINAL(widgets->terminal),10,15);
- gtk_widget_set_app_paintable(widgets->terminal,1);
- gtk_style_context_add_class(gtk_widget_get_style_context(widgets->terminal),"opacited");
- gtk_style_context_add_class(gtk_widget_get_style_context(widgets->terminal),"workingbg");
- gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer);
- g_signal_connect(G_OBJECT(widgets->TerminalMoreButton), "clicked", G_CALLBACK(on_terminal_more), widgets);
- g_signal_connect(G_OBJECT(widgets->terminal), "destroy", G_CALLBACK(on_terminal_destroy), widgets);
- gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),1);
- vte_terminal_reset(VTE_TERMINAL(widgets->terminal),0,1);
- yon_terminal_integrated_start_shell(widgets->terminal,usr_command,NULL,NULL);
- vte_terminal_set_scrollback_lines(VTE_TERMINAL(widgets->terminal), 100);
- vte_terminal_set_scroll_on_output(VTE_TERMINAL(widgets->terminal), TRUE);
- vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(widgets->terminal), TRUE);
- vte_terminal_set_input_enabled(VTE_TERMINAL(widgets->terminal),1);
- gtk_widget_show_all(widgets->TerminalRevealer);
- gtk_widget_realize(widgets->terminal);
- g_mutex_lock(&main_config.progress_mutex);
- main_config.progress_active=1;
- g_mutex_unlock(&main_config.progress_mutex);
- gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0.00001);
- g_idle_add((GSourceFunc)on_terminal_check_progress,widgets);
+void on_driver_pack_selection_change(GtkWidget *, GtkListBoxRow *selection, main_window *widgets){
+ if (selection){
+ driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
+ if (driver->supported_devices_avaliable){
+ gtk_widget_set_sensitive(widgets->SupportedDevicesButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->SupportedDevicesButton,0);
+ }
+ gtk_widget_set_sensitive(widgets->AboutModuleButton,1);
+ gtk_widget_set_sensitive(widgets->AboutPackageButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->SupportedDevicesButton,0);
+ gtk_widget_set_sensitive(widgets->AboutModuleButton,0);
+ gtk_widget_set_sensitive(widgets->AboutPackageButton,0);
+ }
}
-// void on_driver_pack_selection_change(GtkWidget *, main_window *widgets){
-// GtkTreeIter iter;
-// 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_widget_set_sensitive(widgets->InfoButton,1);
-// int installed=0;
-// gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)),&iter,0,&installed,-1);
-// if (installed==1){
-// }
-// } else {
-// gtk_widget_set_sensitive(widgets->InfoButton,0);
-// }
-// }
-
gpointer yon_driver_info_launch(void *command){
if (!system((char*)command)){
yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
@@ -144,98 +75,31 @@ gpointer yon_driver_info_launch(void *command){
return NULL;
}
-// void on_driver_pack_info(GtkWidget *, main_window *widgets){
-// GtkTreeIter iter;
-// 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)){
-// yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
-// 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);
-// g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
-// } else {
-// yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
-// }
-// }
-
-// 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;
-// 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 {
-// 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 = yon_confirmation_dialog_data_new();
-// data->action_text=yon_char_unite(INSTALL_CONFIRMATION_LABEL(package),"\n",INSTALL_ATTENTION_LABEL,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);
-// yon_ubl_status_box_render(PACKAGE_INSTALL_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
-// }
-// }
-// free(data);
-// } else {
-// dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
-// data->action_text=REMOVE_CONFIRMATION_LABEL(package);
-// 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);
-// yon_ubl_status_box_render(PACKAGE_REMOVE_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
-// }
-// }
-// free(data);
-// }
-// }
-
-// 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;
-// 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 = yon_confirmation_dialog_data_new();
-// data->action_text=INSTALL_CONFIRMATION_LABEL(package);
-// 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);
-// yon_ubl_status_box_render(MODULE_INSTALL_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
-// }
-// }
-// free(data);
-// } else {
-// dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
-// data->action_text=REMOVE_CONFIRMATION_LABEL(package);
-// 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);
-// yon_ubl_status_box_render(MODULE_REMOVE_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
-// }
-// }
-// free(data);
-// }
-// }
+void on_driver_pack_info(GtkWidget *, main_window *widgets){
+ GtkWidget *selection = GTK_WIDGET(gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList)));
+ if (selection){
+ driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
+
+ yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
+ char *command = get_info_proprietary_command(driver->package);
+ g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
+ } else {
+ yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
+ }
+}
+
+void on_driver_module_info(GtkWidget *, main_window *widgets){
+ GtkWidget *selection = GTK_WIDGET(gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList)));
+ if (selection){
+ driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
+
+ yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
+ char *command = get_info_proprietary_command(driver->module);
+ g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
+ } else {
+ yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
+ }
+}
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));
@@ -245,25 +109,27 @@ gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widg
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);
-// }
-// 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)) {
-// 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));
-// }
-// }
-// }
+void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){
+ const char *active = gtk_combo_box_get_active_id(GTK_COMBO_BOX(self));
+ if (!yon_char_is_empty(active)){
+ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
+ for (GList *iter = list; iter; iter=iter->next){
+ driver_struct *driver = g_object_get_data(G_OBJECT(iter->data),"driver_struct");
+ if (!strcmp(driver->kernel,active)){
+ gtk_widget_show(GTK_WIDGET(iter->data));
+ } else {
+ gtk_widget_hide(GTK_WIDGET(iter->data));
+ }
+ }
+ g_list_free(list);
+ } else {
+ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
+ for (GList *iter = list; iter; iter=iter->next){
+ gtk_widget_show(GTK_WIDGET(iter->data));
+ }
+ g_list_free(list);
+ }
+}
void on_port_chosen_changed(GtkWidget *, monitor_edit_window *window){
dictionary *dict=NULL;
@@ -1074,11 +940,10 @@ void yon_drivers_resize(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_widget_set_sensitive(widgets->LoadDriversButton,1);
-// return G_SOURCE_REMOVE;
-// }
+gboolean yon_proprietary_set(main_window *widgets){
+ gtk_widget_set_sensitive(widgets->LoadDriversButton,1);
+ return G_SOURCE_REMOVE;
+}
gboolean yon_proprietary_append(driver_struct *){
@@ -1090,24 +955,17 @@ gboolean yon_proprietary_append(driver_struct *){
}
gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct *append){
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(append->widgets->KernelsCombo),append->kernel);
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(append->widgets->KernelsCombo),append->kernel,append->kernel);
free(append->kernel);
free(append);
return G_SOURCE_REMOVE;
}
-// gboolean yon_proprietary_disconnect(main_window *widgets){
-// g_object_ref(main_config.list);
-// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL);
-// return G_SOURCE_REMOVE;
-// }
-
-// gboolean yon_proprietary_connect(main_window *widgets){
-// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
-// gtk_spinner_stop(GTK_SPINNER(widgets->DriversLoadingSpinner));
-// gtk_widget_hide(widgets->DriversLoadingSpinner);
-// return G_SOURCE_REMOVE;
-// }
+gboolean yon_proprietary_connect(main_window *widgets){
+ gtk_spinner_stop(GTK_SPINNER(widgets->DriversLoadingSpinner));
+ gtk_widget_hide(widgets->DriversLoadingSpinner);
+ return G_SOURCE_REMOVE;
+}
void yon_proprietary_local_get(main_window *widgets){
g_idle_add((GSourceFunc)yon_proprietary_clear,widgets);
@@ -1132,7 +990,6 @@ void yon_proprietary_local_get(main_window *widgets){
yon_char_remove_last_symbol(rtn[i],'\n');
}
- g_idle_add((GSourceFunc)yon_proprietary_disconnect,widgets);
for (int dr_desc=1;dr_descpackage_exist = yon_packages_check_exist(current[2]);
GtkWidget *list_row = gtk_list_box_row_new();
gtk_widget_show(list_row);
+ g_signal_connect(G_OBJECT(target->ModuleInstalledCheck),"clicked", G_CALLBACK(on_install_activate),widgets);
+ g_signal_connect(G_OBJECT(target->PackageInstalledCheck),"clicked", G_CALLBACK(on_install_activate),widgets);
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_driver_struct_update(widgets,target);
// yon_proprietary_append(cur);
free(current);
}
@@ -1180,11 +1039,10 @@ void yon_proprietary_local_get(main_window *widgets){
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);
-// yon_proprietary_local_get(widgets);
-// }
+void yon_proprietary_get_thread(GtkWidget *,main_window *widgets){
+ yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
+ yon_proprietary_local_get(widgets);
+}
void yon_monitor_view_dictionary_destroy(void *window){
monitor_data *monitor=(monitor_data*)window;
@@ -1446,6 +1304,22 @@ void on_gapfix_changed(GtkWidget*, main_window *widgets){
}
}
+int check_rmb_menu(void *data){
+ main_window *widgets = (main_window*)data;
+ GtkListBoxRow *selection = gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList));
+ if (selection){
+ driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
+ if (driver->supported_devices_avaliable){
+ gtk_widget_set_sensitive(GTK_WIDGET(widgets->menu->buttons->first->data),1);
+ } else {
+ gtk_widget_set_sensitive(GTK_WIDGET(widgets->menu->buttons->first->data),0);
+ }
+ return 1;
+ }
+
+ return 0;
+}
+
/** void yon_setup_widgets(main_window *widgets)
* [EN]
* Sets up every element on main window
@@ -1456,7 +1330,8 @@ 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);
+ widgets->MainBox = yon_gtk_builder_get_widget(builder,"BoxMain");
+ gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),widgets->MainBox,1,1,0);
// Custom widgets configuration
{
widgets->AutoDriverCombo = yon_gtk_builder_get_widget(builder,"AutoDriverCombo");
@@ -1479,6 +1354,9 @@ template_main_window *yon_main_window_complete(main_window *widgets){
widgets->TerminalOverlay = yon_gtk_builder_get_widget(builder, "TerminalOverlay");
widgets->MenusTab = yon_gtk_builder_get_widget(builder, "MenusTab");
widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton");
+ widgets->SupportedDevicesButton = yon_gtk_builder_get_widget(builder,"SupportedDevicesButton");
+ widgets->AboutModuleButton = yon_gtk_builder_get_widget(builder,"AboutModuleButton");
+ widgets->AboutPackageButton = yon_gtk_builder_get_widget(builder,"AboutPackageButton");
widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo");
@@ -1490,11 +1368,14 @@ template_main_window *yon_main_window_complete(main_window *widgets){
widgets->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel");
widgets->DevicesLabel = yon_gtk_builder_get_widget(builder,"DevicesLabel");
- widgets->MoreButton = yon_gtk_builder_get_widget(builder,"MoreButton");
+ widgets->MoreButton = yon_gtk_builder_get_widget(builder,"TerminalMoreButton");
widgets->TerminalPaned = yon_gtk_builder_get_widget(builder,"TerminalPaned");
widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder,"TerminalMoreRevieler");
widgets->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
- widgets->InstallTerminal = yon_gtk_builder_get_widget(builder,"InstallTerminal");
+ widgets->TerminalBox = yon_gtk_builder_get_widget(builder,"TerminalBox");
+ // widgets->InstallTerminal = vte_terminal_new();
+ widgets->InstallTerminal = yon_gtk_builder_get_widget(builder,"TerminalTerminal");
+ widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder,"TerminalMoreRevieler");
widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab"));
widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab"));
@@ -1512,12 +1393,20 @@ template_main_window *yon_main_window_complete(main_window *widgets){
widgets->DriversLoadingSpinner = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingSpinner"));
widgets->DriversList = yon_gtk_builder_get_widget(builder, "DriversList");
-
+ widgets->TerminalCancelButton = yon_gtk_builder_get_widget(builder, "TerminalCancelButton");
+ widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
+ widgets->TerminalMoveBox = yon_gtk_builder_get_widget(builder, "TerminalMoveBox");
+ widgets->TerminalMoveTargetBox = yon_gtk_builder_get_widget(builder, "TerminalMoveTargetBox");
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->DriversLoadingOverlay),widgets->DriversLoadingSpinner);
g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets);
+ g_signal_connect(G_OBJECT(widgets->SupportedDevicesButton), "clicked", G_CALLBACK(on_devices_button_clicked), widgets);
+ g_signal_connect(G_OBJECT(widgets->AboutModuleButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
+ g_signal_connect(G_OBJECT(widgets->AboutPackageButton), "clicked", G_CALLBACK(on_driver_module_info), widgets);
- g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
+ g_signal_connect(G_OBJECT(widgets->DriversList), "row-selected", G_CALLBACK(on_driver_pack_selection_change), widgets);
+
+ g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),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);
@@ -1536,6 +1425,22 @@ template_main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->OptirunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
g_signal_connect(G_OBJECT(widgets->PrimusrunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets);
+ g_signal_connect(G_OBJECT(widgets->TerminalCancelButton),"clicked",G_CALLBACK(on_command_cancel),widgets);
+
+ g_object_set_data(G_OBJECT(widgets->InstallTerminal),"widgets",widgets);
+ {
+ gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer);
+ vte_terminal_set_scrollback_lines(VTE_TERMINAL(widgets->InstallTerminal), 100);
+ vte_terminal_set_scroll_on_output(VTE_TERMINAL(widgets->InstallTerminal), TRUE);
+ vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(widgets->InstallTerminal), TRUE);
+ vte_terminal_set_input_enabled(VTE_TERMINAL(widgets->InstallTerminal),1);
+ gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0.1);
+ }
+ widgets->menu = yon_rmb_menu_setup(widgets->DriversList,check_rmb_menu,widgets,
+ SUPPORTED_LABEL,icon_devices_path,G_CALLBACK(on_devices_button_clicked),widgets,
+ MODULE_INFO_LABEL,icon_module_path,G_CALLBACK(on_driver_module_info),widgets,
+ PACKAGE_INFO_LABEL,icon_package_path,G_CALLBACK(on_driver_pack_info),widgets,
+ NULL);
{
int size;
config_str default_driver = yon_config_load(yon_config_parameter_prepare_command(VGADRV_AUTO_command,"default",NULL,NULL),&size);
diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h
index 3c87738..13c55d8 100644
--- a/source/ubl-settings-video.h
+++ b/source/ubl-settings-video.h
@@ -50,7 +50,7 @@
#define get_resolutions_supportable_command "resource:///com/ublinux/csv/resolutions.csv"
-#define install_proprietary_command(target) yon_char_append("yes | pacman --quiet --needed -Sy ",target)
+#define install_proprietary_command(target) yon_char_append("pacman --quiet --needed -Sy ",target)
#define delete_proprietary_command(target) yon_char_append("pacman -R --noconfirm ",target)
@@ -60,12 +60,15 @@
#define yon_get_kernels_installed "find /usr/lib/modules/ -maxdepth 2 -type f -iname \"pkgbase\" -exec cat {} + 2>/dev/null"
+#define icon_devices_path "com.ublinux.libublsettingsui-gtk3.database-symbolic"
+#define icon_module_path "com.ublinux.libublsettingsui-gtk3.dropbox-symbolic"
+#define icon_package_path "com.ublinux.libublsettingsui-gtk3.lookup-symbolic"
+
#define yon_get_is_installed_command(target) yon_char_append("pacman -Q ",target)
#define yon_get_is_exist_command(target) yon_char_append("pacman -Ss ",target)
#define yon_get_all_pacman_packages_command "pacman -Slq"
#define yon_get_add_installed_packages "pacman -Qq"
-#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'"
#define get_adapter_info_json "lshw -c display -quiet -json"
#define get_drivers_for_card_command "lspci | grep -E ' VGA | Display ' | cut -d' ' -f 1 | xargs -i lspci -k -s {}|grep Kernel|sed -e 's/^\t*//g' -e 's/Kernel driver in use: /uses=/g' -e 's/Kernel modules: /all=/g'"
@@ -129,6 +132,7 @@ typedef struct {
typedef struct
{
template_window_fields
+ GtkWidget *MainBox;
GtkWidget *AutoDriverCombo;
GtkWidget *FreeDriverCombo;
GtkWidget *FailsafeNvidiaCombo;
@@ -185,11 +189,17 @@ typedef struct
GtkWidget *TerminalPaned;
GtkWidget *TerminalRevealer;
GtkWidget *InstallTerminal;
+ GtkWidget *TerminalMoveBox;
+ GtkWidget *TerminalMoveTargetBox;
GtkWidget *MenusTab;
- GtkWidget *terminal;
GtkWidget *LoadDriversButton;
+ GtkWidget *SupportedDevicesButton;
+ GtkWidget *AboutModuleButton;
+ GtkWidget *AboutPackageButton;
+
+ rmb_menu_window *menu;
} main_window;
typedef struct
@@ -249,6 +259,7 @@ typedef struct {
int package_installed;
int module_exist;
int package_exist;
+ int supported_devices_avaliable;
} driver_struct;
typedef struct
@@ -356,9 +367,9 @@ void on_terminal_more(GtkWidget *self, main_window *widgets);
void on_terminal_destroy(GtkWidget *self, main_window *widgets);
gboolean on_terminal_check_progress(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_selection_change(GtkWidget *, GtkListBoxRow *selection, 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_install_activate(GtkWidget *self, 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);
@@ -401,7 +412,6 @@ 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);
-gboolean yon_proprietary_disconnect(main_window *widgets);
gboolean yon_proprietary_connect(main_window *widgets);
void on_app_chooser_open(GtkWidget *self, main_window *widgets);
gpointer yon_driver_info_launch(void *command);
@@ -409,9 +419,13 @@ 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_driver_struct_update(main_window *widgets,driver_struct *driver);
void yon_drivers_resize(main_window *);
void on_link_activate(GtkWidget *, char*, driver_struct *driver);
void on_terminal_revealer_open(GtkWidget *, main_window *widgets);
+void on_driver_module_info(GtkWidget *, main_window *widgets);
+void on_devices_button_clicked(GtkWidget *, main_window *widgets);
+int check_rmb_menu(void *data);
+void on_install_check(GtkWidget *self,gint status,driver_struct *driver);
#endif
\ No newline at end of file
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index bed3be1..c5ecf29 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -59,6 +59,8 @@
#define INSTALLED_LOW_LABEL _("installed")
#define PACKAGE_LABEL _("Package")
#define SUPPORTED_LABEL _("Supported Devices")
+#define MODULE_INFO_LABEL _("Module information")
+#define PACKAGE_INFO_LABEL _("Package information")
#define MODULE_INSTALL_PROCESS_LABEL(target) yon_char_unite(_("Install module driver")," ",target,"...",NULL)
#define MODULE_REMOVE_PROCESS_LABEL(target) yon_char_unite(_("Remove module driver")," ",target,"...",NULL)
diff --git a/ubl-settings-video-driver-tab.glade b/ubl-settings-video-driver-tab.glade
index a673a2c..3a88694 100644
--- a/ubl-settings-video-driver-tab.glade
+++ b/ubl-settings-video-driver-tab.glade
@@ -1,13 +1,8 @@
-
+
-