diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index 1688abc..02b2f0c 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -5320,4 +5320,8 @@ msgid "Vietnamese (US)" msgstr "" msgid "Vietnamese (France)" +msgstr "" + +#: source/libublsettingsui-gtk3.h:675 +msgid "Grant root access" msgstr "" \ No newline at end of file diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 3049e25..fed073e 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -5517,3 +5517,6 @@ msgstr "Вьетнамский (США)" msgid "Vietnamese (France)" msgstr "Вьетнамский (Франция)" +#: source/libublsettingsui-gtk3.h:675 +msgid "Grant root access" +msgstr "Предоставить root-доступ" \ No newline at end of file diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index 6b0b209..bedb05f 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -9,6 +9,19 @@ int yon_bootloader_save(main_window *widgets){ } if (!gtk_switch_get_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch))){ yon_config_register(AUTOLOGINUSER_parameter,AUTOLOGINUSER_parameter_command,"no"); + } else { + yon_config_register(AUTOLOGINUSER_parameter,AUTOLOGINUSER_parameter_command,"yes"); + + } + { + int size; + config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&size); + for (int i=0;iBootloadUsersList); int admin_size=0; @@ -29,24 +42,15 @@ int yon_bootloader_save(main_window *widgets){ yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); } } - } else { - int size; - config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&size); - for (int i=0;iprev_name)&&strcmp(username,window->prev_name)){ - // yon_config_remove_by_key(GRUB_PASSWORD(window->prev_name)); - // int size; - // char *superusers = config(GRUB_SUPERUSERS_parameter); - // config_str parsed = yon_char_parse(superusers,&size,","); - // int pos = yon_char_parsed_check_exist(parsed,size,(char*)username); - // if (pos>-1){ - // parsed = yon_char_parsed_rip(parsed,&size,pos); - // char *superusers = yon_char_parsed_to_string(parsed,size,","); - // if (!yon_char_is_empty(superusers)){ - // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); - // } else { - // yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); - // } - // } - // } - // yon_config_register(GRUB_PASSWORD(username),GRUB_SUPERUSERS_parameter_command,(char*)password); GtkTreeIter iter; gtk_list_store_append(widgets->BootloadUsersList,&iter); gtk_list_store_set(widgets->BootloadUsersList,&iter,0,gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck)),1,username,2,password,3,"******",-1); - // free(password); - // if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck))){ - // int size; - // char *superusers = config(GRUB_SUPERUSERS_parameter); - // config_str parsed = yon_char_parse(superusers,&size,","); - // if (yon_char_parsed_check_exist(parsed,size,(char*)username)==-1){ - // yon_char_parsed_add_or_create_if_exists(parsed,&size,(char*)username); - // char *superusers = yon_char_parsed_to_string(parsed,size,","); - // // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); - // } - // } else { - // int size; - // char *superusers = config(GRUB_SUPERUSERS_parameter); - // config_str parsed = yon_char_parse(superusers,&size,","); - // int pos = yon_char_parsed_check_exist(parsed,size,(char*)username); - // if (pos!=-1){ - // parsed = yon_char_parsed_rip(parsed,&size,pos); - - // char *superusers = yon_char_parsed_to_string(parsed,size,","); - // // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); - // } - // } on_subwindow_close(window->Window); } @@ -184,6 +149,48 @@ void on_bootloader_user_add(GtkWidget *, main_window *widgets){ gtk_widget_show(window->Window); } +void on_bootloader_user_edit(GtkWidget *, main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootloadUserTree)),&model,&iter)){ + int admin; + char *username; + char *password; + gtk_tree_model_get(model,&iter,0,&admin,1,&username,2,&password,-1); + bootloader_user_window *window = yon_bootloader_user_window_new(); + g_object_set_data(G_OBJECT(window->AcceptButton),"widgets",widgets); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_bootloader_user_accept),window); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),NULL,icon_path,"bootloader_window"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->AdminCheck),admin); + gtk_entry_set_text(GTK_ENTRY(window->UsernameEntry),username); + gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password); + gtk_widget_show(window->Window); + } +} + +void on_bootloader_admin_toggled(GtkWidget *, char *path, main_window *widgets){ + GtkTreeIter iter; + int active; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->BootloadUsersList),&iter,path); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->BootloadUsersList),&iter,0,&active,-1); + gtk_list_store_set(widgets->BootloadUsersList,&iter,0,!active,-1); +} + +void on_bootloader_user_remove(GtkWidget *, main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootloadUserTree)),&model,&iter)){ + char *target; + gtk_tree_model_get(model,&iter,1,&target,-1); + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->title = WARNING_TITLE_LABEL; + data->action_text = BOOTLOADER_USER_REMOVE_LABEL(target); + if (yon_confirmation_dialog_call(widgets->MainWindow,data)){ + gtk_list_store_remove(widgets->BootloadUsersList,&iter); + } + } +} + void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){ int size; config_str options = yon_config_load(get_menus_entry_command,&size); @@ -490,15 +497,21 @@ void yon_bootloader_init(main_window *widgets){ } if (!yon_char_is_empty(autologin)&&(!strcmp(autologin,"no")||!strcmp(autologin,"disable"))){ gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),0); + + } else { + gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1); + + } + { int admins_size; config_str admins_parsed = yon_char_parse(admins,&admins_size,","); GtkTreeIter iter; for (int i=0;iBootloadUsersList,&iter); gtk_list_store_set(widgets->BootloadUsersList,&iter,0,yon_char_parsed_check_exist(admins_parsed,admins_size,subkey)>-1,1,subkey,2,parameter,3,"******",-1); @@ -507,7 +520,5 @@ void yon_bootloader_init(main_window *widgets){ free(subkey); } yon_char_parsed_free(admins_parsed,admins_size); - } else { - gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1); } } \ No newline at end of file diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 5e42f36..7dadc0a 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -4,7 +4,10 @@ int yon_kernel_save(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox)); char *config_val = config(packages_parameter); - if (yon_char_is_empty(config_val)) yon_config_register(packages_parameter,packages_parameter_command,NULL); + if (yon_char_is_empty(config_val)) { + yon_config_register(packages_parameter,packages_parameter_command,NULL); + yon_config_set_status(packages_parameter,-1); + } char *enabled_module = NULL; int overall_size = 0; int active_size = 0; diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c index b52d43b..0a37ec6 100644 --- a/source/ubinstall-gtk-startup-apps.c +++ b/source/ubinstall-gtk-startup-apps.c @@ -51,7 +51,7 @@ void yon_startup_apps_setup(main_window *widgets){ config_str parsed = yon_char_parse(apps[i],&parsed_size,";"); if (parsed_size&&!yon_char_is_empty(parsed[0])){ gtk_list_store_append(widgets->StartupAppsList,&iter); - gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(_(parsed[2]),""),-1); + gtk_list_store_set(widgets->StartupAppsList,&iter,0,0,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(_(parsed[2]),""),-1); } } @@ -97,7 +97,7 @@ void yon_startup_apps_setup(main_window *widgets){ if (parsed_size&&parsed){ for (int i=0;iStartupAppsList,&iter); - gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,2,parsed[i],-1); + gtk_list_store_set(widgets->StartupAppsList,&iter,0,0,2,parsed[i],-1); } } yon_char_parsed_free(parsed,parsed_size); diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 12af9dd..45dbe95 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -207,12 +207,8 @@ int yon_startup_save(main_window *widgets){ } } if (size){ - if (list_size==size){ - yon_config_register(SERVICES_ENABLE_parameter,SERVICES_ENABLE_parameter_command,"auto"); - } else { char *final = yon_char_parsed_to_string(modules,size,","); yon_config_register(SERVICES_ENABLE_parameter,SERVICES_ENABLE_parameter_command,final); - } yon_char_parsed_free(modules,size); } else { yon_config_remove_by_key(SERVICES_ENABLE_parameter); diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 9b343fd..32e61b8 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -234,6 +234,33 @@ gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *w } +void yon_gtk_widget_set_translation(GtkWidget *target){ + GObject *cur_widget = NULL; + char *widget_text = NULL; + if (GTK_IS_BUTTON(target)){ + cur_widget = G_OBJECT(target); + widget_text = yon_char_new(gtk_button_get_label(GTK_BUTTON(cur_widget))); + } else if (GTK_IS_LABEL(target)){ + cur_widget = G_OBJECT(target); + widget_text = yon_char_new(gtk_label_get_label(GTK_LABEL(cur_widget))); + } else if (GTK_IS_TREE_VIEW_COLUMN(target)){ + cur_widget = G_OBJECT(target); + widget_text = yon_char_new(gtk_tree_view_column_get_title(GTK_TREE_VIEW_COLUMN(cur_widget))); + } else if (GTK_IS_MENU_ITEM(target)){ + cur_widget = G_OBJECT(target); + GList *list = gtk_container_get_children(GTK_CONTAINER(cur_widget)); + if (list) { + GtkWidget *widget = target; + g_list_free(list); + if (GTK_IS_BOX(widget)){ + return; + } + } + widget_text = yon_char_new(gtk_menu_item_get_label(GTK_MENU_ITEM(cur_widget))); + } else return; + g_object_set_data(G_OBJECT(cur_widget),"original_label",(void*)widget_text); +} + void yon_translation_init(GtkBuilder *builder){ GSList *list = gtk_builder_get_objects(builder); @@ -270,9 +297,14 @@ void yon_translation_init(GtkBuilder *builder){ void yon_update_translation(main_window *widgets){ GtkBuilder *builder = widgets->builder; GSList *list = gtk_builder_get_objects(builder); - list = g_slist_append(list,widgets->DocumentationMenuItem); - list = g_slist_append(list,widgets->AboutMenuItem); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->DocumentationMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->AboutMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->root_button),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->ConfigurationModeMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableVNCMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableRDPMenuItem),"Label")); GSList *iter; + for (iter = list; iter; iter = iter->next){ if (iter->data == widgets->LicenceLabel){ yon_licence_load(widgets); diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index 00f419b..4d40bb7 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -68,7 +68,11 @@ int yon_user_save(yon_user_struct *user){ return 0; } } - char *parameter = yon_char_unite(yon_char_return_if_exist(name,""),":::::",yon_char_return_if_exist(password,""),NULL); + char *admin_uid = NULL; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(user->AdminCheck))){ + admin_uid = yon_config_get(admuid_parameter); + } + char *parameter = yon_char_unite(yon_char_return_if_exist(name,""),":",yon_char_return_if_exist(admin_uid,""),"::::",yon_char_return_if_exist(password,""),NULL); yon_config_register(USERADD_parameter(login),USERADD_parameter_command(login),parameter); free(parameter); return 1; @@ -76,6 +80,7 @@ int yon_user_save(yon_user_struct *user){ void on_user_add(GtkWidget *,main_window *widgets){ yon_user_struct *user = yon_user_struct_new(); + g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets); g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); } @@ -97,16 +102,16 @@ void yon_password_new(GtkWidget *, yon_user_struct *user){ yon_password_hash_list_set(window,NULL,NULL,0); } -void yon_user_admin_check(GtkWidget *, yon_user_struct *user){ - main_window *widgets = g_object_get_data(G_OBJECT(user->MainBox),"widgets"); +void yon_user_admin_check(GtkWidget *self, main_window *widgets){ + yon_user_struct *user = g_object_get_data(G_OBJECT(self),"yon_user_struct"); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox)); GList *iter; for(iter=list;iter;iter=iter->next){ if (iter->data!=user->MainBox){ yon_user_struct *cur_user = g_object_get_data(G_OBJECT(iter->data),"yon_user_struct"); - g_signal_handlers_block_by_func(G_OBJECT(cur_user->AdminCheck),G_CALLBACK(yon_user_admin_check),cur_user); + g_signal_handlers_block_by_func(G_OBJECT(cur_user->AdminCheck),G_CALLBACK(yon_user_admin_check),widgets); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_user->AdminCheck),0); - g_signal_handlers_unblock_by_func(G_OBJECT(cur_user->AdminCheck),G_CALLBACK(yon_user_admin_check),cur_user); + g_signal_handlers_unblock_by_func(G_OBJECT(cur_user->AdminCheck),G_CALLBACK(yon_user_admin_check),widgets); } } } @@ -127,13 +132,13 @@ yon_user_struct *yon_user_struct_new(){ yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"[]'\":\n"); g_object_set_data(G_OBJECT(user->MainBox),"yon_user_struct",user); + g_object_set_data(G_OBJECT(user->AdminCheck),"yon_user_struct",user); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(user->PasswordEntry)); g_signal_connect(G_OBJECT(user->PasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),user->PasswordEntry); g_signal_connect(G_OBJECT(user->PasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),user->PasswordButton); g_signal_connect(G_OBJECT(user->PasswordButton),"clicked",G_CALLBACK(yon_password_new),user); - g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),user); g_signal_connect(G_OBJECT(user->RemoveButton),"clicked",G_CALLBACK(on_user_remove_clicked),user); return user; } @@ -169,6 +174,8 @@ void yon_user_init(main_window *widgets){ config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&users_size); if (!users_size){ yon_user_struct *user = yon_user_struct_new(); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); + g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets); g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),ADMINISTRATOR_LABEL); @@ -176,6 +183,7 @@ void yon_user_init(main_window *widgets){ } for (int i=0;iAdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets); g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); @@ -190,6 +198,11 @@ void yon_user_init(main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),login); if (parsed_size>0) gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),parsed[0]); + if (parsed_size>1){ + if (!yon_char_is_empty(parsed[1])){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); + } + } if (parsed_size>5&&!yon_char_is_empty(parsed[5])){ gtk_entry_set_text(GTK_ENTRY(user->PasswordEntry),parsed[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(user->PasswordCombo),1); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 8c4d573..d95c7ac 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -585,6 +585,8 @@ void yon_main_window_create(main_window *widgets){ widgets->BootloadNoPasswordSwitch = yon_gtk_builder_get_widget(builder,"BootloadNoPasswordSwitch"); widgets->BootloadUserTree = yon_gtk_builder_get_widget(builder,"BootloadUserTree"); widgets->BootloadUserAddButton = yon_gtk_builder_get_widget(builder,"BootloadUserAddButton"); + widgets->BootloadUserEditButton = yon_gtk_builder_get_widget(builder,"BootloadUserEditButton"); + widgets->BootloadAdminCheckCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"BootloadAdminCheckCell")); widgets->BootloadUserRemoveButton = yon_gtk_builder_get_widget(builder,"BootloadUserRemoveButton"); widgets->BootloadUsersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootloadUsersList")); @@ -753,11 +755,14 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"icon-press",G_CALLBACK(on_pacman_icon_press),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"activate",G_CALLBACK(on_pacman_search_enter),widgets); g_signal_connect(G_OBJECT(widgets->BootloadUserAddButton),"clicked",G_CALLBACK(on_bootloader_user_add),widgets); + g_signal_connect(G_OBJECT(widgets->BootloadUserEditButton),"clicked",G_CALLBACK(on_bootloader_user_edit),widgets); + g_signal_connect(G_OBJECT(widgets->BootloadAdminCheckCell),"toggled",G_CALLBACK(on_bootloader_admin_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->BootloadUserRemoveButton),"clicked",G_CALLBACK(on_bootloader_user_remove),widgets); g_signal_connect(G_OBJECT(widgets->BootloadTimerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->BootloadTimerSpin); - g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton); - g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton); - g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree); + // g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton); + // g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton); + // g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree); g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainNameEntry); g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainAdminEntry); @@ -818,25 +823,13 @@ void yon_main_window_create(main_window *widgets){ } yon_window_config_load(path); yon_window_config_add_instant_parameter("fullscreen","window",&fullscreen,YON_TYPE_BOOLEAN); - - yon_startup_language_init(); - yon_locale_init(); - yon_main_window_update_locale(widgets); - - yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); - - gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); - - gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL); - gtk_overlay_add_overlay(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox); - gtk_overlay_set_overlay_pass_through(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox,1); - gtk_widget_hide(widgets->TimeZoneMapOverlayBox); - g_thread_new("Partitions_thread",(GThreadFunc)yon_partitions_list_load,widgets); { widgets->EnableRDPMenuItem = gtk_menu_item_new(); GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Label = gtk_label_new(ENABLE_RDP_LABEL); GtkWidget *Check = gtk_check_button_new(); + yon_gtk_widget_set_translation(Label); + g_object_set_data(G_OBJECT(widgets->EnableRDPMenuItem),"Label",Label); gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0); gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0); gtk_container_add(GTK_CONTAINER(widgets->EnableRDPMenuItem),Box); @@ -850,6 +843,8 @@ void yon_main_window_create(main_window *widgets){ GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Label = gtk_label_new(ENABLE_VNC_LABEL); GtkWidget *Check = gtk_check_button_new(); + yon_gtk_widget_set_translation(Label); + g_object_set_data(G_OBJECT(widgets->EnableVNCMenuItem),"Label",Label); gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0); gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0); gtk_container_add(GTK_CONTAINER(widgets->EnableVNCMenuItem),Box); @@ -862,6 +857,8 @@ void yon_main_window_create(main_window *widgets){ widgets->ConfigurationModeMenuItem = gtk_menu_item_new(); GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Label = gtk_label_new(CONFIGURATION_MODE_LABEL); + yon_gtk_widget_set_translation(Label); + g_object_set_data(G_OBJECT(widgets->ConfigurationModeMenuItem),"Label",Label); widgets->ConfigurationModeCheck = gtk_check_button_new(); gtk_box_pack_start(GTK_BOX(Box),widgets->ConfigurationModeCheck,0,0,0); gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0); @@ -874,6 +871,29 @@ void yon_main_window_create(main_window *widgets){ gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0); } } + { + widgets->root_button = yon_root_button_new(main_config.argv,main_config.argc); + GtkWidget *Label = g_object_get_data(G_OBJECT(widgets->root_button),"Label"); + yon_gtk_widget_set_translation(Label); + gtk_style_context_add_class(gtk_widget_get_style_context(widgets->root_button),"menuitemtop"); + gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),widgets->root_button); + + yon_root_button_init(widgets->root_button,GTK_WINDOW(widgets->MainWindow)); + } + + yon_startup_language_init(); + yon_locale_init(); + yon_main_window_update_locale(widgets); + + yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); + + gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); + + gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL); + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox); + gtk_overlay_set_overlay_pass_through(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox,1); + gtk_widget_hide(widgets->TimeZoneMapOverlayBox); + g_thread_new("Partitions_thread",(GThreadFunc)yon_partitions_list_load,widgets); { if (main_config.lock_load_global == 1){ @@ -963,6 +983,8 @@ main_window *yon_main_window_complete(){ } int main(int argc, char *argv[]){ + main_config.argv=argv; + main_config.argc = argc; // __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); config_str unfound = NULL; int size=0; @@ -1003,11 +1025,6 @@ int main(int argc, char *argv[]){ -1); { widgets = yon_main_window_complete(); - GtkWidget *root_button = yon_root_button_new(argv,argc); - gtk_style_context_add_class(gtk_widget_get_style_context(root_button),"menuitemtop"); - gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),root_button); - - yon_root_button_init(root_button,GTK_WINDOW(widgets->MainWindow)); on_config_global_load(NULL,widgets); } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 5f2bcc8..cf7d9d4 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -183,7 +183,7 @@ layout && /description:/ {\ #define xkbvariant_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBVARIANT']" #define xkboptions_parameter "AUTOINSTALL[ubconfig set [keyboard] XKBOPTIONS]" #define xkboptions_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBOPTIONS']" -#define hostname_parameter "AUTOINSTALL[ubconfig set [system] HOSTNAMEe]" +#define hostname_parameter "AUTOINSTALL[ubconfig set [system] HOSTNAME]" #define hostname_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [system] HOSTNAME']" #define zone_parameter "AUTOINSTALL[ubconfig set [clock] ZONE]" #define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [clock] ZONE']" @@ -229,8 +229,8 @@ layout && /description:/ {\ #define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[", target, "]']", NULL) #define KERNEL_BOOT_parameter "AUTOINSTALL[ubconfig set [boot] KERNEL_BOOT]" #define KERNEL_BOOT_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [boot] KERNEL_BOOT']" -#define SERVICES_ENABLE_parameter "AUTOINSTALL[ubconfig set [boot] SERVICES_ENABLE]" -#define SERVICES_ENABLE_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] SERVICES_ENABLE']" +#define SERVICES_ENABLE_parameter "AUTOINSTALL[ubconfig set [system] SERVICES_ENABLE]" +#define SERVICES_ENABLE_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [system] SERVICES_ENABLE']" #define AUTOEXEC_parameter "AUTOINSTALL[ubconfig set [desktop] AUTOEXEC[@users]]" #define AUTOEXEC_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [desktop] AUTOEXEC[@users]']" #define GRUB_SUPERUSERS_parameter "AUTOINSTALL[ubconfig set [boot] GRUB_SUPERUSERS]" @@ -258,6 +258,8 @@ layout && /description:/ {\ #define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]" #define finish_parameter "AUTOINSTALL[finish]" #define finish_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[finish]" +#define admuid_parameter "ADMUID" +#define admuid_parameter_command "ubconfig --source global get [users] ADMUID" #define SYSTEM_LANG_parameter "AUTOINSTALL['ubconfig set [locale] LANG']" #define SYSTEM_LANG_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [locale] LANG']" @@ -291,7 +293,7 @@ layout && /description:/ {\ #define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL) -#define config_get_default_command "ubconfig -ea --noconarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG" +#define config_get_default_command "ubconfig -ea --noconarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG -- get [users] ADMUID" #define config_get_global_only_parameters "" #define config_get_local_only_parameters "" @@ -302,7 +304,7 @@ layout && /description:/ {\ #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 get_package_info_command(target) yon_char_unite("pacman -Si ", target,"| sed 's/ */ /g'",NULL) +#define get_package_info_command(target) yon_char_unite("pacman -Si ", target, "| sed 's/ */ /g'", NULL) #define layouts_command "sed -En '/^! layout$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst" #define layouts_variant_command "sed -En '/^! variant$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+([^ :]+):[[:blank:]]+(.*)/\\2|\\1|\\3/p' /usr/share/X11/xkb/rules/evdev.lst" @@ -310,14 +312,14 @@ layout && /description:/ {\ #define install_common_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_format_parameter, \ part_label_parameter, \ part_fs_type_parameter #define install_part_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_format_parameter, \ part_fs_label_parameter, \ part_parameter, \ @@ -326,7 +328,7 @@ layout && /description:/ {\ #define install_next_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_format_parameter, \ part_fs_label_parameter, \ part_parameter, \ @@ -335,7 +337,7 @@ layout && /description:/ {\ #define install_advanced_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_format_parameter, \ part_label_parameter, \ part_parameter, \ @@ -344,12 +346,12 @@ layout && /description:/ {\ #define install_grub_install_update_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_parameter #define install_system_only_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_format_parameter, \ part_label_parameter, \ part_parameter, \ @@ -359,7 +361,7 @@ layout && /description:/ {\ #define install_userdata_only_parameters \ AUTOINSTALL_TYPE_INSTALL, \ - device_parameter, \ + device_parameter, \ part_format_parameter, \ part_label_parameter, \ part_parameter, \ @@ -470,6 +472,9 @@ typedef struct config_str modules; int modules_size; + + config_str argv; + int argc; } config; extern config main_config; @@ -525,7 +530,6 @@ typedef struct GtkListStore *RegionTimezoneCompletionList; GtkTreeModelFilter *RegionTimezoneCompletionFilter; - GtkWidget *InstallationRadio; GtkWidget *InstallationNearRadio; GtkWidget *InstallationLinuxRadio; @@ -731,6 +735,8 @@ typedef struct GtkWidget *BootloadDefaulOSButton; GtkWidget *BootloadNoPasswordSwitch; GtkWidget *BootloadUserAddButton; + GtkWidget *BootloadUserEditButton; + GtkCellRenderer *BootloadAdminCheckCell; GtkWidget *BootloadUserRemoveButton; GtkWidget *BootloadUserTree; GtkListStore *BootloadUsersList; @@ -797,6 +803,8 @@ typedef struct gboolean slider_stop; + GtkWidget *root_button; + } main_window; enum ADVANCED_PART_TYPE @@ -950,7 +958,7 @@ typedef struct GtkWidget *ArrowImage; yon_menu_window *window; - + char *name; char *id; int children; @@ -1489,9 +1497,9 @@ int yon_startup_app_save(main_window *widgets); void yon_on_about(GtkWidget *, main_window *); void on_gparted_update(GtkWidget *, main_window *widgets); void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item); -yon_menu_item *yon_menu_add_item(yon_menu_window *target_menu,const char *id, const char *name, int children); +yon_menu_item *yon_menu_add_item(yon_menu_window *target_menu, const char *id, const char *name, int children); void yon_menu_ungrab(yon_menu_window *window); -void on_menu_chosen(GtkWidget *, GtkListBoxRow* row, yon_menu_window *window); +void on_menu_chosen(GtkWidget *, GtkListBoxRow *row, yon_menu_window *window); gboolean yon_locale_window_load(language_window *window); void yon_os_password_open(GtkWidget *, main_window *widgets); void yon_userdata_password_open(GtkWidget *, main_window *widgets); @@ -1499,15 +1507,15 @@ double yon_password_check_func(yon_password_window *window, const char *password void yon_source_update(source_window *window); void yon_main_window_update_locale(main_window *widgets); gboolean yon_progress_bar_start(main_window *widgets); -void *yon_progress_file_buzyfy(void*); +void *yon_progress_file_buzyfy(void *); void yon_startup_language_init(); -gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets); +gboolean on_languages_search_func(GtkTreeModel *model, gint col, const char *key, GtkTreeIter *iter, main_window *widgets); void yon_update_translation(main_window *widgets); void yon_translation_init(GtkBuilder *builder); void yon_licence_load(main_window *widgets); -void on_network_removed(GtkWidget *,network_info *info); +void on_network_removed(GtkWidget *, network_info *info); char *yon_bootloader_get_os_name(char *parameter); -gboolean on_region_refilter(GtkTreeModel* model, GtkTreeIter* iter, main_window *widgets); +gboolean on_region_refilter(GtkTreeModel *model, GtkTreeIter *iter, main_window *widgets); void on_region_entry_changed(GtkWidget *, main_window *widgets); char *yon_size_get_name_from_letter(char letter); void yon_map_status_hide(main_window *widgets); @@ -1527,7 +1535,7 @@ config_str yon_os_components_get_modules(int *size); int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets); void on_pacman_search_enter(GtkEntry *self, main_window *widgets); gboolean yon_log_scroll(log_window *window); -gboolean on_log_window_exit(GtkWidget *,GdkEvent*, log_window *window); +gboolean on_log_window_exit(GtkWidget *, GdkEvent *, log_window *window); void yon_modules_missed_func(main_window *widgets); void yon_scroll_block_for_builder(GtkBuilder *builder); void yon_advanced_device_choose(main_window *widgets, const char *device); @@ -1544,14 +1552,14 @@ void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets); void on_advanced_part_create(GtkWidget *self, main_window *widgets); int yon_advanced_part_select_for_data(advanced_part_data *data, main_window *widgets); int yon_advanced_part_check_count(main_window *widgets); -advanced_part_widgets *yon_advanced_part_get_for_name(const char *part_name,main_window *widgets); +advanced_part_widgets *yon_advanced_part_get_for_name(const char *part_name, main_window *widgets); void yon_advanced_part_create_for_part(GtkTreeIter *iter, main_window *widgets); int yon_advanced_part_get_pos(advanced_part_widgets *part, main_window *widgets); int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets); void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_part_data *data); void yon_advanced_part_data_unref(advanced_part_data *data); void on_advanced_part_content_changed(GtkWidget *, GtkWidget *, main_window *widgets); -gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *); +gboolean on_keyboard_search_func(GtkTreeModel *model, gint, const char *key, GtkTreeIter *iter, main_window *); void yon_update_part_sections(main_window *widgets); void on_advanced_part_toggled(GtkWidget *self); void yon_advanced_part_save(main_window *widgets); @@ -1560,4 +1568,8 @@ void yon_advanced_part_to_data(advanced_part_widgets *part, advanced_part_data * void yon_advanced_part_save_part(advanced_part_data *data); void yon_advanced_part_remove_for_part(const char *part_name, main_window *widgets); int yon_software_check_packages_size(GtkWidget *, main_window *widgets); -void yon_user_admin_check(GtkWidget *self, yon_user_struct *user); \ No newline at end of file +void yon_user_admin_check(GtkWidget *self, main_window *widgets); +void yon_gtk_widget_set_translation(GtkWidget *target); +void on_bootloader_user_edit(GtkWidget *, main_window *widgets); +void on_bootloader_admin_toggled(GtkWidget *, char *path, main_window *widgets); +void on_bootloader_user_remove(GtkWidget *, main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 8d41492..d90f427 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -196,6 +196,7 @@ NULL) #define APPLICATIONS_EDIT_TITLE_LABEL _("Edit application") #define APPLICATIONS_REMOVE_TITLE_LABEL _("Remove application") #define BOOTLOADER_USER_EXIST_LABEL(target) yon_char_unite(_("User")," ", target," ", _("is already exists. Do you really want to save user")," ",target,"?",NULL) +#define BOOTLOADER_USER_REMOVE_LABEL(target) yon_char_unite(_("You are about to delete bootloader user"), " ", target,". ",_("Do you really want to remove user?"),NULL) #define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL) #define WRONG_IP_LABEL _("Ip adress is incorrect") diff --git a/ubinstall-gtk-advanced-box.glade b/ubinstall-gtk-advanced-box.glade index 035138d..807227b 100644 --- a/ubinstall-gtk-advanced-box.glade +++ b/ubinstall-gtk-advanced-box.glade @@ -338,6 +338,8 @@ True False True + False + * False diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index c4c84be..ca8bbe7 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -583,6 +583,11 @@ False com.ublinux.libublsettingsui-gtk3.sync-symbolic + + True + False + com.ublinux.libublsettingsui-gtk3.edit-symbolic + True False @@ -6350,7 +6355,7 @@ Select a different installation source. Administrator - + 0 @@ -6410,6 +6415,22 @@ Select a different installation source. 0 + + + True + True + True + image43 + + + + False + True + 1 + + True @@ -6423,7 +6444,7 @@ Select a different installation source. False True - 1 + 2