|
|
|
|
@ -874,8 +874,42 @@ void on_groups_clicked(GtkWidget *self, GtkEntry *output_target){
|
|
|
|
|
}
|
|
|
|
|
free(groupname);
|
|
|
|
|
}
|
|
|
|
|
gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
|
|
|
|
|
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),0),0);
|
|
|
|
|
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),GTK_SELECTION_SINGLE);
|
|
|
|
|
const char *current_group=gtk_entry_get_text(output_target);
|
|
|
|
|
int digits=0;
|
|
|
|
|
for (int k=0;k<strlen(current_group);k++){
|
|
|
|
|
if (g_ascii_isdigit(current_group[k])){
|
|
|
|
|
digits++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *final_group_name=NULL;
|
|
|
|
|
|
|
|
|
|
if (digits==strlen(current_group)){
|
|
|
|
|
for (int i=0;i<main_config.groups_size;i++){
|
|
|
|
|
int group_size=0;
|
|
|
|
|
config_str groups_parsed = yon_char_parse(main_config.groups[i],&group_size,":");
|
|
|
|
|
if (group_size>2&&!strcmp(groups_parsed[2],current_group)){
|
|
|
|
|
final_group_name=yon_char_new(groups_parsed[0]);
|
|
|
|
|
if (group_size) yon_char_parsed_free(groups_parsed,group_size);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (group_size) yon_char_parsed_free(groups_parsed,group_size);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
final_group_name=yon_char_new(current_group);
|
|
|
|
|
}
|
|
|
|
|
for_iter(window->list,&iter){
|
|
|
|
|
char *group;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,1,&group,-1);
|
|
|
|
|
if (!strcmp(group,final_group_name)){
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),&iter);
|
|
|
|
|
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(window->GroupsTree),gtk_tree_model_get_path(GTK_TREE_MODEL(window->list),&iter),gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),0,0,0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dictionary *dict = NULL;
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"output",output_target);
|
|
|
|
|
@ -908,6 +942,7 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
|
|
|
|
|
void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){
|
|
|
|
|
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
|
|
|
|
|
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);
|
|
|
|
|
GtkTreeIter iter, itar,itor;
|
|
|
|
|
@ -1233,6 +1268,7 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){
|
|
|
|
|
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_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_COLUMN(window->GroupColumn),USERS_LABEL);
|
|
|
|
|
GtkTreeIter iter, itar,itor;
|
|
|
|
|
char *output = (char*)gtk_entry_get_text(target);
|
|
|
|
|
@ -1334,6 +1370,28 @@ void on_group_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int config_size=0;
|
|
|
|
|
int final_size=0;
|
|
|
|
|
config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size);
|
|
|
|
|
yon_char_parsed_prepend_strings(config_users,config_size,":");
|
|
|
|
|
config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_users,config_size,&final_size);
|
|
|
|
|
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck))){
|
|
|
|
|
int found=0;
|
|
|
|
|
char *uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
|
|
|
|
|
for (int i=0;i<final_size;i++){
|
|
|
|
|
int parsed_size;
|
|
|
|
|
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
|
|
|
|
|
printf("%s / %s\n",parsed[2],uid_string);
|
|
|
|
|
if (parsed_size>1&&!strcmp(parsed[2],uid_string)&&strcmp(parsed[2],window->last_gid)) found = 1;
|
|
|
|
|
if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
}
|
|
|
|
|
if (found){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GID_ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->userUIDEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
group_name = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
|
|
|
|
|
if (group_name[0]>'0'&&group_name[0]<'9'){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GROUP_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
@ -1506,8 +1564,8 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
|
|
|
|
|
window->HeaderLabel=yon_gtk_builder_get_widget(builder,"HeaderLabel");
|
|
|
|
|
window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
|
|
|
|
|
window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
|
|
|
|
|
window->list = gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING);
|
|
|
|
|
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),1,GTK_SORT_ASCENDING);
|
|
|
|
|
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_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL);
|
|
|
|
|
@ -1523,10 +1581,13 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
|
|
|
|
|
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);
|
|
|
|
|
int parsed_size=0;
|
|
|
|
|
config_str parsed = yon_char_parse(current[i],&parsed_size,":");
|
|
|
|
|
if (parsed_size>2&&!yon_char_is_empty(parsed[2])){
|
|
|
|
|
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,parsed[0],2,atoi(parsed[2]),-1);
|
|
|
|
|
}
|
|
|
|
|
if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
}
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(window->GroupsTree),GTK_TREE_MODEL(window->list));
|
|
|
|
|
|
|
|
|
|
@ -1559,6 +1620,7 @@ void on_standard_groups_open(GtkWidget *self, main_window *widgets){
|
|
|
|
|
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_label_set_text(GTK_LABEL(window->HeaderLabel),DEFAULT_GROUPS_TITLE_LABEL);
|
|
|
|
|
gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
|
|
|
|
|
GtkTreeIter iter, itar,itor;
|
|
|
|
|
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)){
|
|
|
|
|
@ -1745,7 +1807,7 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
|
|
|
|
|
g_date_time_unref(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,8,parsed_size>2?date_string:"",9,expiration_string,10,parsed_size>3?parsed[3]:"",11,parsed_size>4?parsed[4]:"",12,parsed_size>5?parsed[5]:"",13,parsed_size>2?parsed[6]:"",-1);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,0,!strcmp(parsed[1],"!*"),8,parsed_size>2?date_string:"",9,expiration_string,10,parsed_size>3?parsed[3]:"",11,parsed_size>4?parsed[4]:"",12,parsed_size>5?parsed[5]:"",13,parsed_size>2?parsed[6]:"",-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -1922,7 +1984,28 @@ void on_user_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
if (uid_auto_active){
|
|
|
|
|
uid_string="";
|
|
|
|
|
} else {
|
|
|
|
|
int config_size=0;
|
|
|
|
|
int final_size=0;
|
|
|
|
|
config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size);
|
|
|
|
|
yon_char_parsed_prepend_strings(config_users,config_size,":");
|
|
|
|
|
config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size);
|
|
|
|
|
|
|
|
|
|
uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
|
|
|
|
|
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){
|
|
|
|
|
int found=0;
|
|
|
|
|
for (int i=0;i<final_size;i++){
|
|
|
|
|
int parsed_size;
|
|
|
|
|
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
|
|
|
|
|
if (parsed_size>1&&!strcmp(parsed[2],uid_string)&&strcmp(parsed[2],window->last_uid)) found = 1;
|
|
|
|
|
if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
}
|
|
|
|
|
if (found){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),UID_ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->userUIDEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (yon_char_is_empty(uid_string)){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->userUIDEntry);
|
|
|
|
|
@ -2531,6 +2614,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
|
|
|
|
|
if (!strcmp(parameters[2],"x"))
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),1);
|
|
|
|
|
else {
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),0);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:"");
|
|
|
|
|
if (!yon_char_is_empty(parameters[2]))
|
|
|
|
|
window->last_uid=yon_char_new(parameters[2]);
|
|
|
|
|
|