Fixed users and groups repeating at group choosing window

pull/133/head
parent 994ba15883
commit 45103f8d60

@ -715,16 +715,26 @@ void on_groups_save(GtkWidget *self, dictionary *dict){
} }
void on_groups_clicked(GtkWidget *self, GtkEntry *output_target){ void on_groups_clicked(GtkWidget *self, GtkEntry *output_target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),MAIN_GROUP_LABEL); gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),MAIN_GROUP_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),MAIN_GROUP_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),MAIN_GROUP_LABEL);
GtkTreeIter iter, itar; GtkTreeIter iter, itar,itor;
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter); int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){
char *groupname; char *groupname;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1); gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1);
int valid1 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itor);
for (;valid1;valid1 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itor)){
char *checked;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itor,1,&checked,-1);
if (!strcmp(groupname,checked)){
break;
}
}
if (!valid1){
gtk_list_store_append(window->list,&itar); gtk_list_store_append(window->list,&itar);
gtk_list_store_set(window->list,&itar,1,groupname,-1); gtk_list_store_set(window->list,&itar,1,groupname,-1);
}
free(groupname); free(groupname);
} }
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),0),0); gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),0),0);
@ -760,10 +770,10 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){
} }
void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
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);
GtkTreeIter iter, itar; GtkTreeIter iter, itar,itor;
char *output = (char*)gtk_entry_get_text(output_target); char *output = (char*)gtk_entry_get_text(output_target);
int size=0; int size=0;
config_str parsed=NULL; config_str parsed=NULL;
@ -774,8 +784,18 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){
char *groupname; char *groupname;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1); gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1);
int valid1 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itor);
for (;valid1;valid1 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itor)){
char *checked;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itor,1,&checked,-1);
if (!strcmp(groupname,checked)){
break;
}
}
if (!valid1){
gtk_list_store_append(window->list,&itar); gtk_list_store_append(window->list,&itar);
gtk_list_store_set(window->list,&itar,1,groupname,-1); gtk_list_store_set(window->list,&itar,1,groupname,-1);
}
free(groupname); free(groupname);
} }
valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter); valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter);
@ -1007,11 +1027,11 @@ void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_w
} }
void on_user_choose(GtkWidget *self, GtkEntry *target){ void on_user_choose(GtkWidget *self, GtkEntry *target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1);
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_COLUMN(window->GroupColumn),USERS_LABEL); gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(window->GroupColumn),USERS_LABEL);
GtkTreeIter iter, itar; GtkTreeIter iter, itar,itor;
char *output = (char*)gtk_entry_get_text(target); char *output = (char*)gtk_entry_get_text(target);
int size=0; int size=0;
config_str parsed=NULL; config_str parsed=NULL;
@ -1022,8 +1042,18 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.users_list),&iter)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.users_list),&iter)){
char *groupname; char *groupname;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.users_list),&iter,2,&groupname,-1); gtk_tree_model_get(GTK_TREE_MODEL(main_config.users_list),&iter,2,&groupname,-1);
int valid1 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itor);
for (;valid1;valid1 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itor)){
char *checked;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itor,1,&checked,-1);
if (!strcmp(groupname,checked)){
break;
}
}
if (!valid1){
gtk_list_store_append(window->list,&itar); gtk_list_store_append(window->list,&itar);
gtk_list_store_set(window->list,&itar,1,groupname,-1); gtk_list_store_set(window->list,&itar,1,groupname,-1);
}
free(groupname); free(groupname);
} }
valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter); valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter);
@ -1232,7 +1262,7 @@ void on_group_clicked(GtkCellRenderer *self, char *path, ubl_settings_usergroups
gtk_list_store_set(window->list,&iter,0,!status,-1); gtk_list_store_set(window->list,&iter,0,!status,-1);
} }
ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(){ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int mode){ // 1 - user, 0 - group
ubl_settings_usergroups_group_window *window = malloc(sizeof(ubl_settings_usergroups_group_window)); ubl_settings_usergroups_group_window *window = malloc(sizeof(ubl_settings_usergroups_group_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group);
window->GroupsWindow=yon_gtk_builder_get_widget(builder,"GroupsWindow"); window->GroupsWindow=yon_gtk_builder_get_widget(builder,"GroupsWindow");
@ -1248,13 +1278,22 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(){
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->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;
gtk_tree_view_set_model(GTK_TREE_VIEW(window->GroupsTree),GTK_TREE_MODEL(window->list)); config_str current;
for (int i=0;i<main_config.groups_size;i++){ int current_size;
char *group_record = yon_char_new(main_config.groups[i]); if (mode==1){
current = main_config.users;
current_size = main_config.users_size;
} else {
current = main_config.groups;
current_size = main_config.groups_size;
}
for (int i=0;i<current_size;i++){
char *group_record = yon_char_new(current[i]);
char *group_name = yon_char_divide_search(group_record,":",-1); char *group_name = yon_char_divide_search(group_record,":",-1);
gtk_list_store_append(window->list,&iter); gtk_list_store_append(window->list,&iter);
gtk_list_store_set(window->list,&iter,0,0,1,group_name,-1); gtk_list_store_set(window->list,&iter,0,0,1,group_name,-1);
} }
gtk_tree_view_set_model(GTK_TREE_VIEW(window->GroupsTree),GTK_TREE_MODEL(window->list));
g_signal_connect(G_OBJECT(window->GroupsCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->GroupsCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
@ -1282,16 +1321,26 @@ void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_wi
} }
void on_standard_groups_open(GtkWidget *self, main_window *widgets){ void on_standard_groups_open(GtkWidget *self, main_window *widgets){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),DEFAULT_GROUPS_TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),DEFAULT_GROUPS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),DEFAULT_GROUPS_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),DEFAULT_GROUPS_TITLE_LABEL);
GtkTreeIter iter, itar; GtkTreeIter iter, itar,itor;
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter); int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){
char *groupname; char *groupname;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1); gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1);
int valid1 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itor);
for (;valid1;valid1 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itor)){
char *checked;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itor,1,&checked,-1);
if (!strcmp(groupname,checked)){
break;
}
}
if (!valid1){
gtk_list_store_append(window->list,&itar); gtk_list_store_append(window->list,&itar);
gtk_list_store_set(window->list,&itar,1,groupname,-1); gtk_list_store_set(window->list,&itar,1,groupname,-1);
}
free(groupname); free(groupname);
} }
g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_standard_groups_accept),window); g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_standard_groups_accept),window);

Loading…
Cancel
Save