diff --git a/source/ubl-settings-usergroups-group.c b/source/ubl-settings-usergroups-group.c index 182d78b..48379d9 100644 --- a/source/ubl-settings-usergroups-group.c +++ b/source/ubl-settings-usergroups-group.c @@ -31,6 +31,8 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); + // yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userGroupsEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userLoginEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); on_GID_update(NULL,window); dictionary *entry_dict=NULL; yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->PasswordCombo); diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c index ebe7fb8..5ece399 100644 --- a/source/ubl-settings-usergroups-password.c +++ b/source/ubl-settings-usergroups-password.c @@ -132,7 +132,9 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton"); - + + yon_gtk_entry_allow_password_symbols(GTK_ENTRY(window->PasswordEntry)); + yon_gtk_entry_allow_password_symbols(GTK_ENTRY(window->RepeatPasswordEntry)); yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"PasswordWindow"); g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->PasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL); diff --git a/source/ubl-settings-usergroups-system.c b/source/ubl-settings-usergroups-system.c index 3be6dd0..984730c 100644 --- a/source/ubl-settings-usergroups-system.c +++ b/source/ubl-settings-usergroups-system.c @@ -64,7 +64,7 @@ void yon_remove_confirmation_window_accept_clicked(GtkWidget *self,dictionary *d char *target; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ yon_tree_model_sort_filter_get_model_iter(GTK_TREE_MODEL_SORT(model),&iter,&child); - gtk_tree_model_get(model,&child,2,&target,-1); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->liststore1),&child,2,&target,-1); } for_iter(GTK_TREE_MODEL(widgets->UsersList),&itar){ char *cur; diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index e0a2b56..29692ae 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -136,6 +136,19 @@ void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *windo } } +void on_homedir_changed(GtkComboBox *self, GtkWidget *target){ + int active = gtk_combo_box_get_active(self); + switch(active){ + case 2: + gtk_widget_set_sensitive(target,1); + break; + default: + gtk_widget_set_sensitive(target,0); + break; + } + +} + ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user); @@ -185,7 +198,8 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); window->expiration_unix=NULL; window->last_uid=NULL; - yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),":"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"\"'[]"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userLoginEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); time_t t = time(NULL); struct tm tm = *localtime(&t); @@ -226,8 +240,8 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ g_signal_connect(G_OBJECT(window->userAdditionalGroupsButton),"clicked",G_CALLBACK(on_groups_multiple_clicked),window->userAdditionalGroupsEntry); g_signal_connect(G_OBJECT(window->userPasswordExpirationButton),"clicked",G_CALLBACK(on_expiration_clicked),window); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry); - g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeEntry); - g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeButton); + g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_homedir_changed),window->userHomeButton); + g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_homedir_changed),window->userHomeEntry); g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userPasswordButton); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userGroupsEntry); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UserGroupsButton); @@ -355,7 +369,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ 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 (window->last_uid&&strcmp(uid_string,window->last_uid)){ + if (!window->last_uid||strcmp(uid_string,window->last_uid)){ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){ int found=0; for (int i=0;iStatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->userUIDEntry); - gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); - 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); + gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); + return; + } + } } int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck)); @@ -514,17 +528,19 @@ void on_user_save(GtkWidget *self, dictionary *dict){ password_change_interval_maximum = yon_char_from_long(password_change_interval_maximum_active); } else password_change_interval_maximum = 0; - guint year, month, day; - gtk_calendar_get_date(GTK_CALENDAR(window->ExpirationCalendar),&year,&month,&day); - char *dy = yon_char_from_int(day); - char *mn = yon_char_from_int(month+1); - char *yr = yon_char_from_int(year); - if (month+1<10) mn = yon_char_append("0",mn); - if (day<10) dy = yon_char_append("0",dy); - password_expiration_date = yon_char_unite(yr,"-",mn,"-",dy,NULL); - // password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)); - if (yon_char_is_empty(password_expiration_date)){ - password_expiration_date="-1"; + if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)))){ + guint year, month, day; + gtk_calendar_get_date(GTK_CALENDAR(window->ExpirationCalendar),&year,&month,&day); + char *dy = yon_char_from_int(day); + char *mn = yon_char_from_int(month+1); + char *yr = yon_char_from_int(year); + if (month+1<10) mn = yon_char_append("0",mn); + if (day<10) dy = yon_char_append("0",dy); + password_expiration_date = yon_char_unite(yr,"-",mn,"-",dy,NULL); + // password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)); + if (yon_char_is_empty(password_expiration_date)){ + password_expiration_date="-1"; + } } long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin)); @@ -674,11 +690,13 @@ int yon_system_user_sync(char *target_user){ free(optionals); if (!yon_char_is_empty(config_user)){ - char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target_user)); char *parameter_name = USERADD(target_user); + char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",parameter_name); yon_config_register(parameter_name,user_command,config_user); yon_config_remove_ignore(parameter_name); free(config_user); + free(user_command); + free(parameter_name); } else return 0; if (!yon_char_is_empty(config_shadow)){ diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 0f8aa38..b617b3f 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -624,4 +624,5 @@ void on_date_format_changed(GtkWidget *, main_window *widgets); char *yon_user_get_system_groups(char *target_login); int yon_system_group_sync(char *group); int yon_system_user_sync(char *user); +void on_homedir_changed(GtkComboBox *self, GtkWidget *target); #endif \ No newline at end of file diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index 4c6fa9a..65cc985 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -134,4 +134,9 @@ background:transparent; .marginright image{ margin-right: 2px; +} + +button { + min-width: 26px; + min-height: 24px; } \ No newline at end of file