Added callback for installing and removing toggle buttons

pull/89/head
parent 8cf0e16e3f
commit a308e6d23e

@ -101,7 +101,7 @@ void on_driver_pack_install(GtkWidget *self,main_window *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree));
if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_append(install_proprietary_command,name)); yon_terminal_start(widgets,install_proprietary_command(name));
} else { } else {
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
@ -114,7 +114,7 @@ void on_driver_pack_delete(GtkWidget *self,main_window *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree));
if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_append(delete_proprietary_command,name)); yon_terminal_start(widgets,delete_proprietary_command(name));
} else { } else {
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
@ -130,16 +130,9 @@ void on_driver_pack_selection_change(GtkWidget *self, main_window *widgets){
int installed=0; int installed=0;
gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)),&iter,0,&installed,-1); gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)),&iter,0,&installed,-1);
if (installed==1){ if (installed==1){
// gtk_widget_set_sensitive(widgets->InstallButton,0);
// gtk_widget_set_sensitive(widgets->DeleteButton,1);
} else {
// gtk_widget_set_sensitive(widgets->InstallButton,1);
// gtk_widget_set_sensitive(widgets->DeleteButton,0);
} }
} else { } else {
gtk_widget_set_sensitive(widgets->InfoButton,0); gtk_widget_set_sensitive(widgets->InfoButton,0);
// gtk_widget_set_sensitive(widgets->InstallButton,0);
// gtk_widget_set_sensitive(widgets->DeleteButton,0);
} }
} }
@ -149,32 +142,56 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){
pthread_t tid; pthread_t tid;
pthread_attr_init(&attr); pthread_attr_init(&attr);
GtkTreeIter iter; GtkTreeIter iter;
char *name; char *module, *package;
GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,7,&module,8,&package,-1);
pthread_create(&tid,&attr,(void*)yon_launch,yon_char_append(get_info_proprietary_command,name)); char *command = get_info_proprietary_command(yon_char_is_empty(module)?package:module);
pthread_create(&tid,&attr,(void*)yon_launch,command);
yon_ubl_status_box_render(INFO_PROCESS_LABEL,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_render(INFO_PROCESS_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
} else { } else {
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
void on_pack_install_activate(){ void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){
GtkTreeIter iter;
} gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
char *package;
void on_module_install_activate(){ int installed;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,8,&package,-1);
} if (!installed){
if (!yon_char_is_empty(package)){
void on_pack_remove_activate(){ char *command = install_proprietary_command(package);
yon_terminal_start(widgets,command);
}
} else {
if (!yon_char_is_empty(package)){
char *command = delete_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
} }
void on_module_remove_activate(){ void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
char *package;
int installed;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,0,&installed,7,&package,-1);
if (!installed){
if (!yon_char_is_empty(package)){
char *command = install_proprietary_command(package);
yon_terminal_start(widgets,command);
}
} else {
if (!yon_char_is_empty(package)){
char *command = delete_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
} }
void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
@ -902,14 +919,21 @@ void yon_monitor_view_update(){
} }
} }
void yon_proprietary_local_get(){ void yon_proprietary_local_get(main_window *widgets){
gtk_list_store_clear(main_config.list); gtk_list_store_clear(main_config.list);
gtk_list_store_clear(main_config.list2); gtk_list_store_clear(main_config.list2);
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),ALL_INSTALLED_KERNELS_LABEL);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KernelsCombo),0);
int kernels_size; int kernels_size;
config_str kernels_installed=yon_config_load(yon_debug_output("%s\n",yon_get_kernels_installed),&kernels_size); config_str kernels_installed=yon_config_load(yon_debug_output("%s\n",yon_get_kernels_installed),&kernels_size);
if (!kernels_size){
yon_ubl_status_box_render(KERNELS_SUPPORTED_UNFOUND_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
for (int i=0;i<kernels_size;i++){ for (int i=0;i<kernels_size;i++){
yon_char_remove_last_symbol(kernels_installed[i],'\n'); yon_char_remove_last_symbol(kernels_installed[i],'\n');
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),kernels_installed[i]);
} }
int size; int size;
@ -935,11 +959,16 @@ void yon_proprietary_local_get(){
textdomain(template_ui_LocaleName); textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName); textdomain(LocaleName);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
g_thread_exit (NULL);
} }
void yon_proprietary_get_thread(){ void yon_proprietary_get_thread(GtkWidget *self,main_window *widgets){
yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL);
GThread *thread = g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets);
// yon_proprietary_local_get(widgets);
} }
void yon_monitor_view_dictionary_destroy(void *window){ void yon_monitor_view_dictionary_destroy(void *window){
@ -1156,7 +1185,7 @@ void yon_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){
} }
void on_database_update(void *self,void *widgets){ void on_database_update(void *self,void *widgets){
yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command); yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),install_proprietary_command(""));
} }
/** void yon_setup_widgets(main_window *widgets) /** void yon_setup_widgets(main_window *widgets)
@ -1197,6 +1226,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){
widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton"); widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton");
widgets->DriversTree = yon_gtk_builder_get_widget(builder,"DriversTree"); widgets->DriversTree = yon_gtk_builder_get_widget(builder,"DriversTree");
widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo");
widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab")); widgets->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"));
@ -1211,13 +1241,16 @@ template_main_window *yon_main_window_complete(main_window *widgets){
widgets->InformationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel")); widgets->InformationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel"));
widgets->InformationLabel2 = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel2")); widgets->InformationLabel2 = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel2"));
widgets->PackageRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "PackageRenderer"));
widgets->ModuleRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ModuleRenderer"));
main_config.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6")); main_config.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"));
g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets); g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets);
// g_signal_connect(G_OBJECT(widgets->DeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); g_signal_connect(G_OBJECT(widgets->PackageRenderer), "toggled", G_CALLBACK(on_pack_install_activate), widgets);
// g_signal_connect(G_OBJECT(widgets->InstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); g_signal_connect(G_OBJECT(widgets->ModuleRenderer), "toggled", G_CALLBACK(on_module_install_activate), widgets);
g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
g_signal_connect(G_OBJECT(widgets->DriversTree), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets); g_signal_connect(G_OBJECT(widgets->DriversTree), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets);
@ -1292,7 +1325,7 @@ int main(int argc, char *argv[]){
yon_confirmation_dialog_call(widgets->HeadOverlay,data); yon_confirmation_dialog_call(widgets->HeadOverlay,data);
} }
yon_proprietary_get_thread(); yon_proprietary_get_thread(NULL,(main_window*)widgets);
// on_config_fill_interface(&widgets); // on_config_fill_interface(&widgets);
yon_monitor_set_resolutions(); yon_monitor_set_resolutions();
gtk_main(); gtk_main();

@ -69,11 +69,11 @@
#define remove_drivers_local_command "/usr/bin/ubconfig --target system remove video " #define remove_drivers_local_command "/usr/bin/ubconfig --target system remove video "
#define install_proprietary_command "pacman --quiet --needed --noconfirm -Sy " #define install_proprietary_command(target) yon_char_append("pacman --quiet --needed --noconfirm -Sy ",target)
#define delete_proprietary_command "pacman -R --noconfirm " #define delete_proprietary_command(target) yon_char_append("pacman -R --noconfirm ",target)
#define get_info_proprietary_command "pamac-manager --details=" #define get_info_proprietary_command(target) yon_char_append("pamac-manager --details=",target)
#define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2"
@ -179,6 +179,9 @@ typedef struct
GtkWidget *FrameGapCombo; GtkWidget *FrameGapCombo;
GtkWidget *DriversTree; GtkWidget *DriversTree;
GtkCellRenderer *ModuleRenderer;
GtkCellRenderer *PackageRenderer;
GtkWidget *KernelsCombo;
GtkWidget *InfoButton; GtkWidget *InfoButton;
GtkWidget *DriverModulesTab; GtkWidget *DriverModulesTab;

@ -185,3 +185,7 @@
#define DESCR38_LABEL _("X.org X11 qxl video driver") #define DESCR38_LABEL _("X.org X11 qxl video driver")
#define DATABASE_UNACCESSIBLE_LABEL _("Database files must be updated") #define DATABASE_UNACCESSIBLE_LABEL _("Database files must be updated")
#define KERNELS_SUPPORTED_UNFOUND_LABEL _("Warning: Couldn't find any supported kernel version")
#define ALL_INSTALLED_KERNELS_LABEL _("Default (All installed)")

@ -1071,7 +1071,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText"> <object class="GtkComboBoxText" id="KernelsCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property> <property name="active">0</property>
@ -1153,6 +1153,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="title" translatable="yes">Installed</property> <property name="title" translatable="yes">Installed</property>
@ -1192,11 +1195,14 @@
<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="title" translatable="yes">Module</property> <property name="title" translatable="yes">Module</property>
<child> <child>
<object class="GtkCellRendererToggle"/> <object class="GtkCellRendererToggle" id="ModuleRenderer"/>
<attributes> <attributes>
<attribute name="active">0</attribute> <attribute name="active">0</attribute>
</attributes> </attributes>

Loading…
Cancel
Save