diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 56b7782..f19d3c9 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2625,13 +2625,7 @@ void on_config_update(GtkWidget *self, main_window *widgets){ } int *yon_element_chosen(GtkWidget *target){ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(GTK_TREE_VIEW(target)); - if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(target)),&model,&iter)){ - return (int*)0x1; - } - return (int*)0x0; + return (int*)0x1; } /**config_init() @@ -2751,6 +2745,21 @@ void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_wi typedef int (*RmbCheck)(void*); +gboolean on_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; + 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; +} + /**yon_main_window_complete(main_window *widgets) * [EN] * @@ -2805,9 +2814,11 @@ 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); - yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); - yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),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,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); + 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); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree)); yon_load_proceed(YON_CONFIG_LOCAL); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 55beca7..e14a39b 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -66,6 +66,7 @@ #define USERSHADOW_SYNC(user) yon_char_unite("USERSHADOW_SYNC[",user,"]",NULL) #define GROUPADD_SYNC(user) yon_char_unite("GROUPADD_SYNC[",user,"]",NULL) +#define add_icon_name "com.ublinux.ubl-settings-usergroups.increase-symbolic" #define edit_icon_name "com.ublinux.ubl-settings-usergroups.edit-symbolic" #define delete_icon_name "com.ublinux.ubl-settings-usergroups.trash-symbolic" @@ -107,22 +108,7 @@ string version_application; char *local; typedef struct { -// Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT { - int socket_id; - int load_socket_id; - int save_socket_id; - - int lock_help; - int lock_save_local; - int lock_save_global; - int lock_load_global; - int lock_load_system; - - int load_mode; - - int always_open_documentation; -// } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT -// Type custom parameters below: : + template_config_fields config_str groups; int groups_size; config_str users; @@ -162,6 +148,9 @@ typedef struct { GtkWidget *GroupsTree; GtkWidget *MainNotebook; GtkWidget *SavingSettingsButton; + + rmb_menu_window *UsersMenu; + rmb_menu_window *GroupsMenu; } main_window; diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade index 16713af..f201788 100644 --- a/ubl-settings-usergroups.glade +++ b/ubl-settings-usergroups.glade @@ -329,6 +329,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 Locked 0 @@ -344,6 +345,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 UID 1 @@ -359,6 +361,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 Login 2 @@ -374,6 +377,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 User name 3 @@ -390,6 +394,7 @@ name True fixed 10 + 10 Main group 4 @@ -406,6 +411,7 @@ group True fixed 10 + 10 Additional groups 5 @@ -425,6 +431,7 @@ groups True fixed 10 + 10 Additional parameters 6 @@ -443,6 +450,7 @@ parameters autosize 10 + 10 Password status 7