From a55fef3c9295b83af187702d7c83c8998e6ebcd7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 22 Feb 2024 12:13:15 +0600 Subject: [PATCH] Added context menu for user and group tree views --- source/ubl-settings-usergroups.c | 11 ++++++++--- source/ubl-settings-usergroups.h | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 27cd420..0282921 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1463,7 +1463,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ char *do_not_check = NULL; int samba_sync = 0; int samba_password_sync = 0; - char *deactivate = NULL; + int deactivate = 0; char *extra_options = NULL; char *useradd_boot = ""; char *useradd_shutdown = ""; @@ -2000,12 +2000,14 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ if (parameter_string[0]=='\"') yon_char_divide(parameter_string,0); if (parameter_string[strlen(parameter_string)-1]=='\"') parameter_string[strlen(parameter_string)-1]='\0'; config_str parameters = yon_char_parse(parameter_string,&parsed_size,":"); + if(!strcmp(parameters[0],"x")) + parameters[0]=""; gtk_entry_set_text(GTK_ENTRY(window->userLoginEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:""); window->old_username=name; if (parsed_size>1){ - if (strcmp(parameters[1],"x")){ + if (parsed_size>1&&!strcmp(parameters[1],"x")||parsed_size<=1||strcmp(parameters[1],"")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0); gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry), parsed_size>1?parameters[1]:""); } @@ -2057,12 +2059,13 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ } // gtk_entry_set_text(GTK_ENTRY(window->), parsed_size>4?parameters[4]:""); } + if (parsed_size>5){ window->old_password=parameters[5]; if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2); } - + } int samba_sync = yon_samba_sync_get(name); if (samba_sync==1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),1); @@ -2384,6 +2387,8 @@ 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); + yon_rmb_menu_setup(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,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); 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)); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index c333159..38577be 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -65,6 +65,9 @@ #define USERSHADOW_SYNC(user) yon_char_unite("USERSHADOW_SYNC[",user,"]",NULL) #define GROUPADD_SYNC(user) yon_char_unite("GROUPADD_SYNC[",user,"]",NULL) +#define edit_icon_name "com.ublinux.ubl-settings-usergroups.edit-symbolic" +#define delete_icon_name "com.ublinux.ubl-settings-usergroups.trash-symbolic" + #define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd) typedef char* string;