diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 879ddf0..49a0a15 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -271,14 +271,13 @@ void yon_hide_passwords(template_saving_window *window){ if(!yon_char_is_empty(old_value)){ config_str parsed = NULL; parsed = yon_char_parse(old_value,&size,":"); - if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")&&parsed[5][0]!='%'&&parsed[5][1]!='%'){ + if (size>5&&!yon_char_is_empty(parsed[5])&&!check_is_password_hash(parsed[5])){ free(old_value); free(parsed[5]); parsed[5]=yon_char_new("*******"); old_value = yon_char_parsed_to_string(parsed,size,":"); } else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) { free(old_value); - free(yon_char_divide(parsed[5],1)); old_value = yon_char_parsed_to_string(parsed,size,":"); } if (parsed){ @@ -979,6 +978,18 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){ full_groups=extend_groups; } } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AddNewCheck))){ + char *custom_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->AddNewEntry)); + if (!yon_char_is_empty(custom_groups)){ + char *temp = yon_char_unite(full_groups,",",custom_groups,NULL); + if (!yon_char_is_empty(full_groups)) free(full_groups); + full_groups=temp; + } else { + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->AddNewEntry); + return; + } + } gtk_entry_set_text(output,full_groups); } else { gtk_entry_set_text(output,config(USERGROUPS_parameter)); @@ -988,6 +999,7 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){ void on_groups_multiple_clicked(GtkWidget *, GtkEntry *output_target){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0); + gtk_widget_show(window->AddNewBox); gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL); gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),ADDITIONAL_GROUPS_TITLE_LABEL); @@ -1313,6 +1325,7 @@ void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_windo void on_user_choose(GtkWidget *, GtkEntry *target){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1); + gtk_widget_hide(window->DefaultCheck); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL); gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),UID_LABEL); @@ -1615,11 +1628,17 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell")); window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn")); window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck"); + window->AddNewCheck=yon_gtk_builder_get_widget(builder,"AddNewCheck"); + window->AddNewEntry=yon_gtk_builder_get_widget(builder,"AddNewEntry"); + window->AddNewBox=yon_gtk_builder_get_widget(builder,"AddNewBox"); + window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox"); window->list = gtk_list_store_new(3,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),2,GTK_SORT_ASCENDING); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->AddNewEntry),";.'\"*%$#!-=+\\|/_@^&()№:?<>"); yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow"); gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL); + g_signal_connect(G_OBJECT(window->AddNewCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->AddNewEntry); g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->GroupsTree); g_signal_connect(G_OBJECT(window->StatusCell),"toggled",G_CALLBACK(on_group_clicked),window); GtkTreeIter iter; diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 227d4d0..c1448a9 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -267,12 +267,16 @@ typedef struct{ typedef struct{ GtkWidget *GroupsWindow; + GtkWidget *StatusBox; GtkWidget *GroupsTree; GtkListStore *list; GtkWidget *GroupsCancelButton; GtkWidget *GroupsOkButton; GtkWidget *HeaderLabel; GtkWidget *DefaultCheck; + GtkWidget *AddNewCheck; + GtkWidget *AddNewEntry; + GtkWidget *AddNewBox; GtkCellRenderer *StatusCell; GtkTreeViewColumn *GroupColumn; } ubl_settings_usergroups_group_window; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 26636c7..19234f5 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -125,6 +125,7 @@ #define ADDITIONAL_GROUPS_TITLE_LABEL _("Additional groups") #define GROUPS_TITLE_LABEL _("Choose groups") #define GROUP_USERS_TITLE_LABEL _("Choose users") +#define ADD_TO_NEW _("Add to new:") //ubl-settings-usergroups-system.glade #define INSPECTOR_TITLE_LABEL _("System users and groups") diff --git a/ubl-settings-usergroups-group.glade b/ubl-settings-usergroups-group.glade index c150d07..47cc29a 100644 --- a/ubl-settings-usergroups-group.glade +++ b/ubl-settings-usergroups-group.glade @@ -23,21 +23,14 @@ True False - 5 - 5 - 5 - 5 - 5 - 5 vertical - 5 - - Default + True - True - False - True + False + + + False @@ -46,101 +39,130 @@ - + True - True - in + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + 5 - + + Default True True - 2 - vertical - - - none - - + False + True + + + False + True + 0 + + + + + True + True + in - - Chosen + + True + True + 2 + vertical - - - 0 - + + Chosen + + + + 0 + + + - - - - - ID - True - 2 - - - 2 - + + ID + True + 2 + + + + 2 + + + - - - - - Group - descending - 1 - - - 1 - + + Group + descending + 1 + + + + 1 + + + - - - - True - True - 1 - - - - - False - 5 - - - Add to new: - True - True - False - True - - False + True True - 0 + 1 - - True - True + + False + 5 + + + Add to new: + True + True + False + True + + + False + True + 0 + + + + + True + False + True + + + True + True + 1 + + False True - 1 + 2 - False + True True - 2 + 1 diff --git a/ubl-settings-usergroups.pot b/ubl-settings-usergroups.pot index a018a60..c5df777 100644 --- a/ubl-settings-usergroups.pot +++ b/ubl-settings-usergroups.pot @@ -430,6 +430,10 @@ msgstr "" msgid "Choose users" msgstr "" +#: source/ubl-strings.h:127 +msgid "Add to new:" +msgstr "" + #: source/ubl-strings.h:130 msgid "System users and groups" msgstr "" diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index 264c9b8..2bc75fb 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -463,6 +463,10 @@ msgstr "Выбрать группы" msgid "Choose users" msgstr "Выбрать пользователей" +#: source/ubl-strings.h:127 +msgid "Add to new:" +msgstr "Добавить в новую:" + #: source/ubl-strings.h:130 msgid "System users and groups" msgstr "Пользователи и группы в системе"