diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 779fea2..7dadc0a 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -16,9 +16,7 @@ int yon_kernel_save(main_window *widgets){ kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ char *append_str = yon_char_replace(row->modules," ",","); - if (!yon_char_check_elements(config_val,append_str,",")){ - yon_config_append_element(packages_parameter,append_str,","); - } + yon_config_append_element(packages_parameter,append_str,","); free(append_str); active_size++; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){ 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.h b/source/ubinstall-gtk.h index 35647e1..ab2be00 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -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, \ @@ -525,7 +527,6 @@ typedef struct GtkListStore *RegionTimezoneCompletionList; GtkTreeModelFilter *RegionTimezoneCompletionFilter; - GtkWidget *InstallationRadio; GtkWidget *InstallationNearRadio; GtkWidget *InstallationLinuxRadio; @@ -950,7 +951,7 @@ typedef struct GtkWidget *ArrowImage; yon_menu_window *window; - + char *name; char *id; int children; @@ -1489,9 +1490,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 +1500,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 +1528,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 +1545,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 +1561,4 @@ 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); \ No newline at end of file