diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 98adc53..4349f6c 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2379,18 +2379,29 @@ gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *wi if (event->button==3){ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); GtkTreeIter iter; - dictionary *cur=NULL; - int amount = 0; + if (gtk_tree_model_get_iter_first(model,&iter)&>k_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),&model,&iter)){ + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),1); + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->next->data),1); + } else { + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),0); + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->next->data),0); + } + } + return 0; +} + +gboolean on_system_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){ + if (event->button==3){ + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); + GtkTreeIter iter; int chosen = gtk_tree_model_get_iter_first(model,&iter)&>k_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),&model,&iter); - for_dictionaries(cur,window->buttons){ - amount++; - if (chosen){ - gtk_widget_set_sensitive(GTK_WIDGET(cur->data),1); - } else { - gtk_widget_set_sensitive(GTK_WIDGET(cur->data),0); - } + if (chosen){ + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->data),1); + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),1); + } else { + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->data),0); + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),0); } - if (amount<3) gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->data),1); } return 0; } @@ -2453,13 +2464,15 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); - widgets->UsersMenu = yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); - widgets->GroupsMenu = yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); - widgets->GroupsMenu = yon_rmb_menu_setup(widgets->SystemTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,SYNC_TOOLTIP_LABEL,sync_icon_name,G_CALLBACK(on_user_sync_with_config),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); - widgets->GroupsMenu = yon_rmb_menu_setup(widgets->SystemGroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,SYNC_TOOLTIP_LABEL,sync_icon_name,G_CALLBACK(on_user_sync_with_config),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); + widgets->UsersMenu = yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL); + widgets->GroupsMenu = yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL); + widgets->SystemUsersMenu = yon_rmb_menu_setup(widgets->SystemTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,SYNC_TOOLTIP_LABEL,sync_icon_name,G_CALLBACK(on_user_sync_with_config),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL); + widgets->SystemGroupsMenu = yon_rmb_menu_setup(widgets->SystemGroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,SYNC_TOOLTIP_LABEL,sync_icon_name,G_CALLBACK(on_user_sync_with_config),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL); g_signal_connect(G_OBJECT(widgets->UsersTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->UsersMenu); g_signal_connect(G_OBJECT(widgets->GroupsTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->GroupsMenu); + g_signal_connect(G_OBJECT(widgets->SystemTree),"button-press-event",G_CALLBACK(on_system_menu_open),widgets->UsersMenu); + g_signal_connect(G_OBJECT(widgets->SystemGroupsTree),"button-press-event",G_CALLBACK(on_system_menu_open),widgets->GroupsMenu); yon_system_load(widgets); // on_system_update(NULL,widgets); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index cc74f21..e348159 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -87,6 +87,7 @@ #define edit_icon_name "com.ublinux.ubl-settings-usergroups.edit-symbolic" #define delete_icon_name "com.ublinux.ubl-settings-usergroups.trash-symbolic" #define sync_icon_name "com.ublinux.ubl-settings-usergroups.user-add-symbolic" +#define update_icon_name "com.ublinux.ubl-settings-usergroups.sync-symbolic" #define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd) @@ -209,6 +210,8 @@ typedef struct { rmb_menu_window *UsersMenu; rmb_menu_window *GroupsMenu; + rmb_menu_window *SystemUsersMenu; + rmb_menu_window *SystemGroupsMenu; GtkListStore *liststore1; GtkListStore *liststore2; @@ -514,6 +517,7 @@ void config_init(); void on_selection_changed(GtkWidget *self, main_window *widgets); void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_window *widgets); gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window); +gboolean on_system_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window); main_window *yon_main_window_complete(main_window *widgets); void yon_remove_confirmation_window_accept_clicked(GtkWidget *self,dictionary *dict); system_remove_confirmation_window *yon_system_remove_confirmation_window_new();