Merge pull request 'Added localisation configuration for users' (#295) from YanTheKaller/ubl-settings-usergroups:master into master

Reviewed-on: #295
pull/304/head v2.43
Dmitry Razumov 1 month ago
commit 35c294ae75

@ -1042,4 +1042,16 @@ msgstr ""
#: source/ubl-strings.h:302 #: source/ubl-strings.h:302
msgid "The selected home directory is used by another user" msgid "The selected home directory is used by another user"
msgstr ""
#: source/ubl-strings.h:302
msgid "System language:"
msgstr ""
#: source/ubl-strings.h:302
msgid "Regional settings"
msgstr ""
#: source/ubl-strings.h:302
msgid "System"
msgstr "" msgstr ""

@ -1123,6 +1123,18 @@ msgstr "ММ-ДД-ГГГГ"
msgid "The selected home directory is used by another user" msgid "The selected home directory is used by another user"
msgstr "Указанный домашний каталог используется другим пользователем" msgstr "Указанный домашний каталог используется другим пользователем"
#: source/ubl-strings.h:302
msgid "System language:"
msgstr "Язык системы:"
#: source/ubl-strings.h:302
msgid "Regional settings"
msgstr "Региональные настройки"
#: source/ubl-strings.h:302
msgid "System"
msgstr "Системный"
#~ msgid "User(-s)" #~ msgid "User(-s)"
#~ msgstr "Пользователь(-ли)" #~ msgstr "Пользователь(-ли)"

@ -39,7 +39,7 @@ set(DEPENDFILES
../ubl-settings-usergroups-savesettings.glade ../ubl-settings-usergroups-savesettings.glade
../ubl-settings-usergroups-confirmation.glade ../ubl-settings-usergroups-confirmation.glade
../ubl-settings-usergroups-system-deletion-confirmation.glade ../ubl-settings-usergroups-system-deletion-confirmation.glade
../sync_parameters.csv ../csv/sync_parameters.csv
../csv/hash_list.csv ../csv/hash_list.csv
../csv/shell_list.csv ../csv/shell_list.csv
../gresource.xml ../gresource.xml

@ -58,7 +58,7 @@ void yon_gtk_login_block_symbols(GtkEntry *target){
void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *window){ void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *window){
char *user_shell=NULL; char *user_shell=NULL;
char *user_home=NULL; char *user_home=NULL;
char *login=NULL; // char *login=NULL;
char *create_system_user=NULL; char *create_system_user=NULL;
char *create_ununique=NULL; char *create_ununique=NULL;
char *do_not_check=NULL; char *do_not_check=NULL;
@ -69,19 +69,26 @@ void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *windo
if (do_not_check_actve) if (do_not_check_actve)
do_not_check = "--badnames"; do_not_check = "--badnames";
login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); // login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){ // if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); // yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); // gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
yon_ubl_status_highlight_incorrect(window->userLoginEntry); // yon_ubl_status_highlight_incorrect(window->userLoginEntry);
return; // return;
} // }
if (yon_char_is_empty(login)){ // if (yon_char_is_empty(login)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); // yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); // gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
yon_ubl_status_highlight_incorrect(window->userLoginEntry); // yon_ubl_status_highlight_incorrect(window->userLoginEntry);
return; // return;
} // }
char *user_lang = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->LanguageCombo));
if (!yon_char_is_empty(user_lang)){
user_lang = yon_char_unite("--lang ",user_lang,NULL);
} else user_lang="";
int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo)); int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo));
if (user_shell_active>0){ if (user_shell_active>0){
@ -119,6 +126,8 @@ void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *windo
final_string = yon_char_unite(final_string,!yon_char_is_empty(final_string)?" ":"", final_string = yon_char_unite(final_string,!yon_char_is_empty(final_string)?" ":"",
yon_char_return_if_exist(user_shell,""), yon_char_return_if_exist(user_shell,""),
!yon_char_is_empty(user_shell)?" ":"", !yon_char_is_empty(user_shell)?" ":"",
yon_char_return_if_exist(user_lang,""),
!yon_char_is_empty(user_lang)?" ":"",
yon_char_return_if_exist(create_system_user,""), yon_char_return_if_exist(create_system_user,""),
!yon_char_is_empty(create_system_user)?" ":"", !yon_char_is_empty(create_system_user)?" ":"",
yon_char_return_if_exist(create_ununique,""), yon_char_return_if_exist(create_ununique,""),
@ -180,6 +189,38 @@ void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window
free(home_parameter); free(home_parameter);
} }
gboolean yon_user_set_locales(GtkWidget *target){
char *languages_string = config(LOCALE_parameter);
int languages_size;
config_str languages = yon_char_parse(languages_string,&languages_size,",");
GHashTable *hash = main_config.locales_hash;
char *config_lang = g_object_get_data(G_OBJECT(target),"value");
for (int i=0;i<languages_size;i++){
char *locale_str = g_hash_table_lookup(hash,languages[i]);
if (!yon_char_is_empty(locale_str)){
int parsed_size;
config_str parsed = yon_char_parse(locale_str,&parsed_size,"|");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(target),parsed[0],parsed[1]);
}
}
if (!yon_char_is_empty(config_lang)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(target),config_lang);
}
return G_SOURCE_REMOVE;
}
void *yon_load_languages(void *){
int size;
config_str locales = yon_config_load(languages_command,&size);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(locales[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(locales[i],&parsed_size,"|");
g_hash_table_insert(main_config.locales_hash,yon_char_new(parsed[0]),yon_char_new(locales[i]));
}
g_thread_exit(NULL);
}
ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window)); 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); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user);
@ -205,6 +246,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
window->userWarningSpin=yon_gtk_builder_get_widget(builder,"userWarningSpin"); window->userWarningSpin=yon_gtk_builder_get_widget(builder,"userWarningSpin");
window->userActivitySpin=yon_gtk_builder_get_widget(builder,"userActivitySpin"); window->userActivitySpin=yon_gtk_builder_get_widget(builder,"userActivitySpin");
window->userForceChangeCheck=yon_gtk_builder_get_widget(builder,"userForceChangeCheck"); window->userForceChangeCheck=yon_gtk_builder_get_widget(builder,"userForceChangeCheck");
window->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
window->userShellCombo=yon_gtk_builder_get_widget(builder,"userShellCombo"); window->userShellCombo=yon_gtk_builder_get_widget(builder,"userShellCombo");
window->userShellEntry=yon_gtk_builder_get_widget(builder,"userShellEntry"); window->userShellEntry=yon_gtk_builder_get_widget(builder,"userShellEntry");
window->userHomeCombo=yon_gtk_builder_get_widget(builder,"userHomeCombo"); window->userHomeCombo=yon_gtk_builder_get_widget(builder,"userHomeCombo");
@ -297,6 +339,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_home_changed),window); g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_home_changed),window);
g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->LanguageCombo),"changed",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userShellEntry),"changed",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userShellEntry),"changed",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userCreateUnuniqueCheck),"toggled",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userCreateUnuniqueCheck),"toggled",G_CALLBACK(on_parameter_changed),window);

@ -157,11 +157,9 @@ void yon_interface_update(main_window *widgets){
} }
GdkRGBA rgba = {0}; GdkRGBA rgba = {0};
char *wheel = yon_char_parsed_check_exist_begins_with(main_config.shadow,main_config.shadow_size,"wheel"); yon_char_check_element(parameters[3],"wheel",",");
int wheel_size;
config_str wheel_parsed = yon_char_parse(wheel,&wheel_size,":");
char *param = config(ADDADM_parameter); char *param = config(ADDADM_parameter);
if ((parameters_size>1&&atoi(parameters[1])==1000&&!yon_char_is_empty(param)&&!strcmp(param,"yes"))||yon_char_parsed_check_exist(wheel_parsed,wheel_size,login)>-1){ if ((parameters_size>1&&atoi(parameters[1])==1000&&!yon_char_is_empty(param)&&!strcmp(param,"yes"))||yon_char_check_element(parameters[3],"wheel",",")){
rgba.red=253.0/255.0; rgba.red=253.0/255.0;
rgba.green=251.0/255.0; rgba.green=251.0/255.0;
rgba.blue=216.0/255.0; rgba.blue=216.0/255.0;
@ -1559,6 +1557,7 @@ void on_main_add(GtkWidget *, main_window *widgets){
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_user_save),dict); g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_user_save),dict);
gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window)); gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window));
yon_user_set_locales(window->LanguageCombo);
gtk_widget_show(window->CreateUserWindow); gtk_widget_show(window->CreateUserWindow);
} else { } else {
gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree))); gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)));
@ -1583,6 +1582,7 @@ void on_main_edit(GtkWidget *, main_window *widgets){
model = GTK_TREE_MODEL(widgets->UsersList); model = GTK_TREE_MODEL(widgets->UsersList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){
ubl_settings_usergroups_user_window *window = yon_ubl_settings_usergroups_user_new(); ubl_settings_usergroups_user_window *window = yon_ubl_settings_usergroups_user_new();
gtk_widget_set_sensitive(window->userLoginEntry,0);
gtk_window_set_title(GTK_WINDOW(window->CreateUserWindow),CONFIGURE_USER_TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->CreateUserWindow),CONFIGURE_USER_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->userTitleNameLabel),CONFIGURE_USER_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->userTitleNameLabel),CONFIGURE_USER_TITLE_LABEL);
dictionary *dict = NULL; dictionary *dict = NULL;
@ -1649,12 +1649,19 @@ void on_main_edit(GtkWidget *, main_window *widgets){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2);
i++; i++;
} else if (!strcmp(parameters_substring[i],"--shell")||!strcmp(parameters_substring[i],"-s")){ } else if (!strcmp(parameters_substring[i],"--shell")||!strcmp(parameters_substring[i],"-s")){
if (!gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->userShellCombo),parameters_substring[i+1])){ if (yon_char_is_empty(parameters_substring[i+1])){
gtk_entry_set_text(GTK_ENTRY(window->userShellEntry),parameters_substring[i+1]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userShellCombo),0);
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->userShellCombo),"Set"); } else {
if (!gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->userShellCombo),parameters_substring[i+1])){
gtk_entry_set_text(GTK_ENTRY(window->userShellEntry),parameters_substring[i+1]);
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->userShellCombo),"Set");
}
} }
i++; i++;
} else if (!strcmp(parameters_substring[i],"--lang")){
g_object_set_data(G_OBJECT(window->LanguageCombo),"value",parameters_substring[i+1]);
window->config_locale=yon_char_new(parameters_substring[i+1]);
}else if (!strcmp(parameters_substring[i],"--system")||!strcmp(parameters_substring[i],"-r")){ }else if (!strcmp(parameters_substring[i],"--system")||!strcmp(parameters_substring[i],"-r")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck),1);
}else if (!strcmp(parameters_substring[i],"--no-create-home")||!strcmp(parameters_substring[i],"-M")){ }else if (!strcmp(parameters_substring[i],"--no-create-home")||!strcmp(parameters_substring[i],"-M")){
@ -1749,6 +1756,7 @@ void on_main_edit(GtkWidget *, main_window *widgets){
} }
} }
} }
yon_user_set_locales(window->LanguageCombo);
} }
} else { } else {
@ -2182,6 +2190,7 @@ void config_init(){
main_config.launch_arguments=NULL; main_config.launch_arguments=NULL;
main_config.launch_size=0; main_config.launch_size=0;
int login_size; int login_size;
main_config.locales_hash = g_hash_table_new(g_str_hash,g_str_equal);
config_str login_defs = yon_file_open(uid_path,&login_size); config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){ for (int i=0;i<login_size;i++){
if (login_defs[i][0]!='#'){ if (login_defs[i][0]!='#'){
@ -2356,6 +2365,8 @@ template_main_window *yon_main_window_complete(main_window *widgets){
main_config.users_list = widgets->UsersList; main_config.users_list = widgets->UsersList;
main_config.groups_list = widgets->GroupsList; main_config.groups_list = widgets->GroupsList;
g_thread_new("locales",(GThreadFunc)yon_load_languages,NULL);
/* Signal connection | Присоединение сигналов */ /* Signal connection | Присоединение сигналов */
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_main_add),widgets); g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_main_add),widgets);

@ -19,7 +19,7 @@
#endif #endif
#include "ubl-strings.h" #include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-usergroups" #define WIKI_LINK "https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-usergroups"
#define _(String) gettext(String) #define _(String) gettext(String)
@ -59,6 +59,8 @@
#define get_system_shadow_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_usershadow_from_system ",target,NULL) #define get_system_shadow_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_usershadow_from_system ",target,NULL)
#define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL) #define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL)
#define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\""
#define remove_user_from_system_command(target) yon_char_append("userdel ",target) #define remove_user_from_system_command(target) yon_char_append("userdel ",target)
#define remove_user_and_homedir_from_system_command(target) yon_char_append("userdel -r ",target) #define remove_user_and_homedir_from_system_command(target) yon_char_append("userdel -r ",target)
#define remove_group_from_system_command(target) yon_char_append("groupdel ",target) #define remove_group_from_system_command(target) yon_char_append("groupdel ",target)
@ -105,8 +107,8 @@
#define user_info_pdf_command(target,path) yon_char_unite("echo ",target,path,NULL) #define user_info_pdf_command(target,path) yon_char_unite("echo ",target,path,NULL)
#define user_info_txt_command(target,path) yon_char_unite("echo ",target,path,NULL) #define user_info_txt_command(target,path) yon_char_unite("echo ",target,path,NULL)
#define config_get_command(source) yon_char_unite("ubconfig --source ",source," -ea get [users] DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERADD_SYNC[*] USERSHADOW[*] USERSHADOW_SYNC[*] GROUPADD[*] GROUPADD_SYNC[*] GROUPADD_SYNC"," -- [system] SYSTEMBOOT_STATEMODE"," -- [save] SAVE_ROOTCOPY_CHANGES",NULL) #define config_get_command(source) yon_char_unite("ubconfig --source ",source," -ea get [users] DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERADD_SYNC[*] USERSHADOW[*] USERSHADOW_SYNC[*] GROUPADD[*] GROUPADD_SYNC[*] GROUPADD_SYNC"," -- [system] SYSTEMBOOT_STATEMODE"," -- [save] SAVE_ROOTCOPY_CHANGES", " -- [locale] LOCALE",NULL)
#define config_get_default_command "ubconfig --source default -ea get users DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM" #define config_get_default_command "ubconfig --source default -ea get users DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM -- get [locale] LOCALE"
#define config_get_global_only_parameters "ubconfig --source global -ea get users DEFAULTPASSWD DEFAULTROOTPASSWD" #define config_get_global_only_parameters "ubconfig --source global -ea get users DEFAULTPASSWD DEFAULTROOTPASSWD"
#define config_get_local_only_parameters "" #define config_get_local_only_parameters ""
@ -156,6 +158,8 @@
#define USERADD_SYNC_parameter "USERADD_SYNC" #define USERADD_SYNC_parameter "USERADD_SYNC"
#define USERADD_SYNC_parameter_command "ubconfig --source system get users USERADD_SYNC" #define USERADD_SYNC_parameter_command "ubconfig --source system get users USERADD_SYNC"
#define LOCALE_parameter "LOCALE"
#define LOCALE_parameter_command "ubconfig --source system get [locale] LOCALE"
#define USERADD_SEARCH_macro "USERADD[" #define USERADD_SEARCH_macro "USERADD["
#define USERADD_parameter_command yon_char_unite("ubconfig --source system get users USERADD[",target,"]",NULL) #define USERADD_parameter_command yon_char_unite("ubconfig --source system get users USERADD[",target,"]",NULL)
@ -202,6 +206,7 @@ typedef struct {
int save_config; int save_config;
int launch_size; int launch_size;
config_str launch_arguments; config_str launch_arguments;
GHashTable *locales_hash;
} config; } config;
extern config main_config; extern config main_config;
@ -410,6 +415,7 @@ typedef struct{
GtkWidget *userWarningSpin; GtkWidget *userWarningSpin;
GtkWidget *userActivitySpin; GtkWidget *userActivitySpin;
GtkWidget *userForceChangeCheck; GtkWidget *userForceChangeCheck;
GtkWidget *LanguageCombo;
GtkWidget *userShellCombo; GtkWidget *userShellCombo;
GtkWidget *userShellEntry; GtkWidget *userShellEntry;
GtkWidget *userHomeCombo; GtkWidget *userHomeCombo;
@ -438,6 +444,8 @@ typedef struct{
char *old_password; char *old_password;
char *old_username; char *old_username;
char *last_uid; char *last_uid;
char *config_locale;
GThread *locale_thread;
} ubl_settings_usergroups_user_window; } ubl_settings_usergroups_user_window;
typedef struct { typedef struct {
@ -627,4 +635,6 @@ int yon_system_user_sync(char *user);
void on_homedir_changed(GtkComboBox *self, GtkWidget *target); void on_homedir_changed(GtkComboBox *self, GtkWidget *target);
int yon_config_check_valid(); int yon_config_check_valid();
void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window); void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window);
gboolean yon_user_set_locales(GtkWidget *target);
void *yon_load_languages(void *target);
#endif #endif

@ -301,4 +301,7 @@
#define DMY_SLASH_FORMAT_LABEL _("DD/MM/YYYY") #define DMY_SLASH_FORMAT_LABEL _("DD/MM/YYYY")
#define MDY_FORMAT_LABEL _("MM-DD-YYYY") #define MDY_FORMAT_LABEL _("MM-DD-YYYY")
#define HOMEDIR_USED_LABEL _("The selected home directory is used by another user") #define HOMEDIR_USED_LABEL _("The selected home directory is used by another user")
#define SYSTEM_LANGUAGE_LABEL _("System language:")
#define REGIONAL_SETTINGS_LABEL _("Regional settings")
#define SYSTEM_LABEL _("System")

@ -76,8 +76,8 @@
<row> <row>
<col id="0">False</col> <col id="0">False</col>
<col id="1" translatable="yes">Group GID range</col> <col id="1" translatable="yes">Group GID range</col>
<col id="2" translatable="yes"/> <col id="2" translatable="yes"></col>
<col id="3" translatable="yes"/> <col id="3" translatable="yes"></col>
<col id="4">True</col> <col id="4">True</col>
<col id="5">True</col> <col id="5">True</col>
<col id="6">False</col> <col id="6">False</col>
@ -90,8 +90,8 @@
<row> <row>
<col id="0">False</col> <col id="0">False</col>
<col id="1" translatable="yes">Group GID in system</col> <col id="1" translatable="yes">Group GID in system</col>
<col id="2" translatable="yes"/> <col id="2" translatable="yes"></col>
<col id="3" translatable="yes"/> <col id="3" translatable="yes"></col>
<col id="4">True</col> <col id="4">True</col>
<col id="5">True</col> <col id="5">True</col>
<col id="6">False</col> <col id="6">False</col>
@ -176,8 +176,8 @@
<row> <row>
<col id="0">False</col> <col id="0">False</col>
<col id="1" translatable="yes">Users UID range</col> <col id="1" translatable="yes">Users UID range</col>
<col id="2" translatable="yes"/> <col id="2" translatable="yes"></col>
<col id="3" translatable="yes"/> <col id="3" translatable="yes"></col>
<col id="4">True</col> <col id="4">True</col>
<col id="5">True</col> <col id="5">True</col>
<col id="6">False</col> <col id="6">False</col>
@ -190,8 +190,8 @@
<row> <row>
<col id="0">False</col> <col id="0">False</col>
<col id="1" translatable="yes">User UID in system</col> <col id="1" translatable="yes">User UID in system</col>
<col id="2" translatable="yes"/> <col id="2" translatable="yes"></col>
<col id="3" translatable="yes"/> <col id="3" translatable="yes"></col>
<col id="4">True</col> <col id="4">True</col>
<col id="5">True</col> <col id="5">True</col>
<col id="6">False</col> <col id="6">False</col>
@ -339,7 +339,7 @@
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="DefaultUserAdministratorCheck"> <object class="GtkCheckButton" id="DefaultUserAdministratorCheck">
<property name="label" translatable="yes"> user ID of 1000 is an administrator included in the wheel group</property> <property name="label" translatable="yes">A user ID of 1000 is an administrator included in the wheel group</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="receives-default">False</property> <property name="receives-default">False</property>

@ -582,6 +582,83 @@
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">System language:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LanguageCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item id="system" translatable="yes">System</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Regional settings</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
@ -816,7 +893,7 @@
<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">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -1099,7 +1176,7 @@
<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>
<child> <child>
@ -1135,7 +1212,7 @@
<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">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>

Loading…
Cancel
Save