Groups list window update; Fixes

pull/235/head
Ivan Dmitrievich Yartsev 10 months ago
parent bf931861d3
commit 3d61aa4f32

@ -271,14 +271,13 @@ void yon_hide_passwords(template_saving_window *window){
if(!yon_char_is_empty(old_value)){ if(!yon_char_is_empty(old_value)){
config_str parsed = NULL; config_str parsed = NULL;
parsed = yon_char_parse(old_value,&size,":"); 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(old_value);
free(parsed[5]); free(parsed[5]);
parsed[5]=yon_char_new("*******"); parsed[5]=yon_char_new("*******");
old_value = yon_char_parsed_to_string(parsed,size,":"); old_value = yon_char_parsed_to_string(parsed,size,":");
} else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) { } else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) {
free(old_value); free(old_value);
free(yon_char_divide(parsed[5],1));
old_value = yon_char_parsed_to_string(parsed,size,":"); old_value = yon_char_parsed_to_string(parsed,size,":");
} }
if (parsed){ if (parsed){
@ -979,6 +978,18 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){
full_groups=extend_groups; 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); gtk_entry_set_text(output,full_groups);
} else { } else {
gtk_entry_set_text(output,config(USERGROUPS_parameter)); 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){ void on_groups_multiple_clicked(GtkWidget *, GtkEntry *output_target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0); 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_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_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),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){ void on_user_choose(GtkWidget *, GtkEntry *target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1); 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_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); 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->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn")); window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck"); 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); 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); 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"); yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL); 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->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); g_signal_connect(G_OBJECT(window->StatusCell),"toggled",G_CALLBACK(on_group_clicked),window);
GtkTreeIter iter; GtkTreeIter iter;

@ -267,12 +267,16 @@ typedef struct{
typedef struct{ typedef struct{
GtkWidget *GroupsWindow; GtkWidget *GroupsWindow;
GtkWidget *StatusBox;
GtkWidget *GroupsTree; GtkWidget *GroupsTree;
GtkListStore *list; GtkListStore *list;
GtkWidget *GroupsCancelButton; GtkWidget *GroupsCancelButton;
GtkWidget *GroupsOkButton; GtkWidget *GroupsOkButton;
GtkWidget *HeaderLabel; GtkWidget *HeaderLabel;
GtkWidget *DefaultCheck; GtkWidget *DefaultCheck;
GtkWidget *AddNewCheck;
GtkWidget *AddNewEntry;
GtkWidget *AddNewBox;
GtkCellRenderer *StatusCell; GtkCellRenderer *StatusCell;
GtkTreeViewColumn *GroupColumn; GtkTreeViewColumn *GroupColumn;
} ubl_settings_usergroups_group_window; } ubl_settings_usergroups_group_window;

@ -125,6 +125,7 @@
#define ADDITIONAL_GROUPS_TITLE_LABEL _("Additional groups") #define ADDITIONAL_GROUPS_TITLE_LABEL _("Additional groups")
#define GROUPS_TITLE_LABEL _("Choose groups") #define GROUPS_TITLE_LABEL _("Choose groups")
#define GROUP_USERS_TITLE_LABEL _("Choose users") #define GROUP_USERS_TITLE_LABEL _("Choose users")
#define ADD_TO_NEW _("Add to new:")
//ubl-settings-usergroups-system.glade //ubl-settings-usergroups-system.glade
#define INSPECTOR_TITLE_LABEL _("System users and groups") #define INSPECTOR_TITLE_LABEL _("System users and groups")

@ -23,21 +23,14 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkCheckButton" id="DefaultCheck"> <object class="GtkBox" id="StatusBox">
<property name="label" translatable="yes">Default</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property> <child>
<property name="draw-indicator">True</property> <placeholder/>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -46,101 +39,130 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="shadow-type">in</property> <property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkTreeView" id="GroupsTree"> <object class="GtkCheckButton" id="DefaultCheck">
<property name="label" translatable="yes">Default</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="search-column">2</property> <property name="receives-default">False</property>
<property name="enable-grid-lines">vertical</property> <property name="draw-indicator">True</property>
<child internal-child="selection"> </object>
<object class="GtkTreeSelection"> <packing>
<property name="mode">none</property> <property name="expand">False</property>
</object> <property name="fill">True</property>
</child> <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeView" id="GroupsTree">
<property name="title" translatable="yes">Chosen</property> <property name="visible">True</property>
<property name="can-focus">True</property>
<property name="search-column">2</property>
<property name="enable-grid-lines">vertical</property>
<child> <child>
<object class="GtkCellRendererToggle" id="StatusCell"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Chosen</property>
<attribute name="active">0</attribute> <child>
</attributes> <object class="GtkCellRendererToggle" id="StatusCell"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">ID</property>
<property name="sort-indicator">True</property>
<property name="sort-column-id">2</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">ID</property>
<attribute name="text">2</attribute> <property name="sort-indicator">True</property>
</attributes> <property name="sort-column-id">2</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="GroupColumn">
<property name="title" translatable="yes">Group</property>
<property name="sort-order">descending</property>
<property name="sort-column-id">1</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn" id="GroupColumn">
<attributes> <property name="title" translatable="yes">Group</property>
<attribute name="text">1</attribute> <property name="sort-order">descending</property>
</attributes> <property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="AddNewBox">
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="AddNewCheck">
<property name="label" translatable="yes">Add to new:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="AddNewEntry"> <object class="GtkBox" id="AddNewBox">
<property name="visible">True</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="AddNewCheck">
<property name="label" translatable="yes">Add to new:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="AddNewEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>

@ -430,6 +430,10 @@ msgstr ""
msgid "Choose users" msgid "Choose users"
msgstr "" msgstr ""
#: source/ubl-strings.h:127
msgid "Add to new:"
msgstr ""
#: source/ubl-strings.h:130 #: source/ubl-strings.h:130
msgid "System users and groups" msgid "System users and groups"
msgstr "" msgstr ""

@ -463,6 +463,10 @@ msgstr "Выбрать группы"
msgid "Choose users" msgid "Choose users"
msgstr "Выбрать пользователей" msgstr "Выбрать пользователей"
#: source/ubl-strings.h:127
msgid "Add to new:"
msgstr "Добавить в новую:"
#: source/ubl-strings.h:130 #: source/ubl-strings.h:130
msgid "System users and groups" msgid "System users and groups"
msgstr "Пользователи и группы в системе" msgstr "Пользователи и группы в системе"

Loading…
Cancel
Save