diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 5c6b1ac..73457a7 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -195,6 +195,43 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ } } +void on_driver_pack_selection_change(GtkWidget *self, widgets_dict *widgets){ + GtkTreeIter iter; + char *name; + GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + int installed=0; + gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->proprietaryTreeView)),&iter,0,&installed,-1); + if (installed==1){ + gtk_widget_set_sensitive(widgets->proprietaryInstallButton,0); + gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,1); + } else { + gtk_widget_set_sensitive(widgets->proprietaryInstallButton,1); + gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,0); + } + } +} + +void on_driver_selection_change(GtkWidget *self, widgets_dict *widgets){ + GtkTreeIter iter; + char *name; + GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + int installed=0; + gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->driversTreeView)),&iter,0,&installed,-1); + if (installed==1){ + gtk_widget_set_sensitive(widgets->driversInstallButton,0); + gtk_widget_set_sensitive(widgets->driversDeleteButton,1); + } else { + gtk_widget_set_sensitive(widgets->driversInstallButton,1); + gtk_widget_set_sensitive(widgets->driversDeleteButton,0); + } + } + +} + void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; @@ -994,9 +1031,32 @@ dictionary *yon_proprieary_get(){ yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); videoconfig.proprietary=NULL; int drivers_size=0; - config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size); int size=0; - char **rtn = yon_config_load(get_proprietary_drivers_info_command,&size); + config_str drivers=NULL; + config_str rtn=NULL; + drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size); + if (drivers){ + printf("%s\n",drivers[0]); + for (int drivers_found=0;drivers_foundproprietaryDeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryInfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); + g_signal_connect(G_OBJECT(widgets->proprietaryTreeView), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets); + g_signal_connect(G_OBJECT(widgets->driversTreeView), "cursor-changed", G_CALLBACK(on_driver_selection_change), widgets); g_signal_connect(G_OBJECT(widgets->driversDeleteButton), "clicked", G_CALLBACK(on_driver_delete), widgets); g_signal_connect(G_OBJECT(widgets->driversInstallButton), "clicked", G_CALLBACK(on_driver_install), widgets);