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