Merge pull request 'master' (#286) from YanTheKaller/ubinstall-gtk:master into master

Reviewed-on: #286
pull/287/head
Dmitry Razumov 2 months ago
commit dbc1c91119

@ -52,7 +52,7 @@ int yon_kernel_addon_save(main_window *widgets){
for(GList *iter = list;iter;iter = iter->next){ for(GList *iter = list;iter;iter = iter->next){
kernel_addon_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); kernel_addon_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row");
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){
yon_config_append_element(packages_parameter,row->modules," "); yon_config_append_element(packages_parameter,row->modules,",");
} }
} }

@ -395,7 +395,7 @@ void yon_kernel_addon_setup(main_window *widgets){
int modules_size; int modules_size;
config_str modules_parsed = NULL; config_str modules_parsed = NULL;
if (!yon_char_is_empty(modules)){ if (!yon_char_is_empty(modules)){
modules_parsed = yon_char_parse(modules,&modules_size," "); modules_parsed = yon_char_parse(modules,&modules_size,",");
} }
int size; int size;

@ -141,7 +141,7 @@ void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonito
config_str parsed = yon_char_parse(current_copy, &size, " "); config_str parsed = yon_char_parse(current_copy, &size, " ");
if (size >= 3) { if (size >= 3) {
double fraction = atof(parsed[2]) / 100; double fraction = atof(parsed[3]) / 100;
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), fraction); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), fraction);
gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), yon_char_parsed_to_string(parsed, size, " ")); gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), yon_char_parsed_to_string(parsed, size, " "));
yon_char_parsed_free(parsed,size); yon_char_parsed_free(parsed,size);

@ -68,6 +68,8 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite
void yon_packages_tab_init(main_window *widgets){ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_clear(widgets->PackagesList); gtk_tree_store_clear(widgets->PackagesList);
int size; int size;
char *config_packages = config(packages_parameter);
config_str packages = yon_resource_open_file(groups_list_path,&size); config_str packages = yon_resource_open_file(groups_list_path,&size);
for (int i=1;i<size;i++){ for (int i=1;i<size;i++){
int parsed_size; int parsed_size;
@ -80,7 +82,7 @@ void yon_packages_tab_init(main_window *widgets){
GtkTreeIter package_iter; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter); gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1);
free(full_string); free(full_string);
gtk_tree_iter_free(subcategory_iter); gtk_tree_iter_free(subcategory_iter);
} else { } else {
@ -90,14 +92,14 @@ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1); gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1);
free(full_string); free(full_string);
} }
} else { } else {
GtkTreeIter package_iter; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter); gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1);
free(full_string); free(full_string);
} }
gtk_tree_iter_free(category_iter); gtk_tree_iter_free(category_iter);
@ -121,7 +123,7 @@ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1); gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1);
free(full_string); free(full_string);
} }
} }

@ -525,6 +525,8 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
case YON_PAGE_INSTALL_ERROR: case YON_PAGE_INSTALL_ERROR:
case YON_PAGE_CONFIGURE_SAVE: case YON_PAGE_CONFIGURE_SAVE:
case YON_PAGE_COMPLETION: case YON_PAGE_COMPLETION:
yon_config_restore(widgets);
gtk_main_quit(); gtk_main_quit();
break; break;
default: { default: {

@ -93,7 +93,6 @@ void on_config_global_save(GtkWidget *,main_window *widgets){
gboolean on_install_success(main_window *widgets){ gboolean on_install_success(main_window *widgets){
gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),""); gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),"");
yon_config_restore(widgets);
on_page_next_clicked(NULL,widgets); on_page_next_clicked(NULL,widgets);
return 0; return 0;

@ -76,6 +76,7 @@ int yon_user_save(yon_user_struct *user){
void on_user_add(GtkWidget *,main_window *widgets){ void on_user_add(GtkWidget *,main_window *widgets){
yon_user_struct *user = yon_user_struct_new(); yon_user_struct *user = yon_user_struct_new();
g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets);
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0);
} }
@ -96,6 +97,20 @@ void yon_password_new(GtkWidget *, yon_user_struct *user){
yon_password_hash_list_set(window,NULL,NULL,0); 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");
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);
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);
}
}
}
yon_user_struct *yon_user_struct_new(){ yon_user_struct *yon_user_struct_new(){
yon_user_struct *user = new(yon_user_struct); yon_user_struct *user = new(yon_user_struct);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_user); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_user);
@ -107,6 +122,7 @@ yon_user_struct *yon_user_struct_new(){
user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo"); user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo");
user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry"); user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton"); user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
user->AdminCheck = yon_gtk_builder_get_widget(builder,"AdminCheck");
yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"[]'\"=:\n"); yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"[]'\"=:\n");
yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"[]'\":\n"); yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"[]'\":\n");
@ -117,6 +133,7 @@ yon_user_struct *yon_user_struct_new(){
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->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->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->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); g_signal_connect(G_OBJECT(user->RemoveButton),"clicked",G_CALLBACK(on_user_remove_clicked),user);
return user; return user;
} }
@ -128,7 +145,7 @@ void yon_user_init(main_window *widgets){
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserRootPasswordEntry)); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserRootPasswordEntry));
char *root_password = config(root_password_parameter); char *root_password = config(root_password_parameter);
char *autologin = config(autologin_parameter); char *autologin = config(autologin_parameter);
if (!yon_char_is_empty(root_password)){ if (!yon_char_is_empty(root_password)&&!yon_config_check_default(root_password_parameter)){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),1); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),1);
gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),root_password); gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),root_password);
} else { } else {
@ -152,12 +169,14 @@ void yon_user_init(main_window *widgets){
config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&users_size); config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&users_size);
if (!users_size){ if (!users_size){
yon_user_struct *user = yon_user_struct_new(); yon_user_struct *user = yon_user_struct_new();
g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets);
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),ADMINISTRATOR_LABEL); gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),ADMINISTRATOR_LABEL);
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),"superadmin"); gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),"superadmin");
} }
for (int i=0;i<users_size;i++){ for (int i=0;i<users_size;i++){
yon_user_struct *user = yon_user_struct_new(); yon_user_struct *user = yon_user_struct_new();
g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets);
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0);
int parsed_size; int parsed_size;

@ -234,6 +234,7 @@ void on_reboot_accepted(main_window *widgets){
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
} }
main_config.exit_accepted=1; main_config.exit_accepted=1;
yon_config_restore(widgets);
while(gtk_events_pending()) gtk_main_iteration(); while(gtk_events_pending()) gtk_main_iteration();
if (system("reboot")){}; if (system("reboot")){};
@ -242,12 +243,13 @@ void on_reboot_accepted(main_window *widgets){
} }
} }
void on_exit_accepted(main_window *){ void on_exit_accepted(main_window *widgets){
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
if (main_config.install_thread){ if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread); pthread_cancel((pthread_t)main_config.install_thread);
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
} }
yon_config_restore(widgets);
main_config.exit_accepted=1; main_config.exit_accepted=1;
while(gtk_events_pending()) gtk_main_iteration(); while(gtk_events_pending()) gtk_main_iteration();
} }
@ -265,6 +267,7 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
return 1; return 1;
} }
} else { } else {
yon_config_restore(widgets);
on_exit_accepted(widgets); on_exit_accepted(widgets);
gtk_main_quit(); gtk_main_quit();
} }

@ -291,7 +291,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_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL)
#define config_get_default_command "ubconfig -ea --conarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG" #define config_get_default_command "ubconfig -ea --noconarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG"
#define config_get_global_only_parameters "" #define config_get_global_only_parameters ""
#define config_get_local_only_parameters "" #define config_get_local_only_parameters ""
@ -923,6 +923,7 @@ typedef struct
GtkWidget *PasswordCombo; GtkWidget *PasswordCombo;
GtkWidget *PasswordEntry; GtkWidget *PasswordEntry;
GtkWidget *PasswordButton; GtkWidget *PasswordButton;
GtkWidget *AdminCheck;
} yon_user_struct; } yon_user_struct;
typedef struct typedef struct
@ -1558,4 +1559,5 @@ void yon_advanced_part_clean_config();
void yon_advanced_part_to_data(advanced_part_widgets *part, advanced_part_data *data); void yon_advanced_part_to_data(advanced_part_widgets *part, advanced_part_data *data);
void yon_advanced_part_save_part(advanced_part_data *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); void yon_advanced_part_remove_for_part(const char *part_name, main_window *widgets);
int yon_software_check_packages_size(GtkWidget *, main_window *widgets); int yon_software_check_packages_size(GtkWidget *, main_window *widgets);
void yon_user_admin_check(GtkWidget *self, yon_user_struct *user);

@ -117,6 +117,20 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkCheckButton" id="AdminCheck">
<property name="label" translatable="yes">Administrator</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

Loading…
Cancel
Save