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.c b/source/ubinstall-gtk.c index 407e957..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); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index cfa66a5..cf7d9d4 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -735,6 +735,8 @@ typedef struct GtkWidget *BootloadDefaulOSButton; GtkWidget *BootloadNoPasswordSwitch; GtkWidget *BootloadUserAddButton; + GtkWidget *BootloadUserEditButton; + GtkCellRenderer *BootloadAdminCheckCell; GtkWidget *BootloadUserRemoveButton; GtkWidget *BootloadUserTree; GtkListStore *BootloadUsersList; @@ -1567,4 +1569,7 @@ 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, main_window *widgets); -void yon_gtk_widget_set_translation(GtkWidget *target); \ No newline at end of file +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.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