WIP configuration menus saving fixes

pull/196/head
parent 3b950e6675
commit a000cb60a9

@ -164,14 +164,15 @@ void on_bootloader_user_add(GtkWidget *, main_window *widgets){
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);
textdomain("ublinux-init-grub-functions");
for (int i=1;i<size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,";");
config_str parsed = yon_char_parse(_(options[i]),&parsed_size,";");
int id_size;
config_str id_parsed = yon_char_parse(parsed[0],&id_size,">");
int name_size;
config_str name_parsed = yon_char_parse(parsed[1],&name_size,">");
config_str name_parsed = yon_char_parse(_(parsed[1]),&name_size,">");
if (yon_char_parsed_check_exist(id_parsed,id_size,item->id)==0){
yon_menu_item *subitem = yon_menu_add_item(window,parsed[0],name_parsed[1],0);
gtk_list_box_insert(GTK_LIST_BOX(window->ChildrenListBox),subitem->MenuItemRow,-1);
@ -182,6 +183,7 @@ void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){
yon_char_parsed_free(name_parsed,name_size);
yon_char_parsed_free(parsed,parsed_size);
}
textdomain(LocaleName);
}
void yon_menu_ungrab(yon_menu_window *window){
@ -241,6 +243,7 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){
int size;
config_str options = yon_config_load(get_menus_entry_command,&size);
GHashTable *created = g_hash_table_new(g_str_hash,g_str_equal);
textdomain("ublinux-init-grub-functions");
for (int i=1;i<size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
@ -259,13 +262,14 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){
if (!g_hash_table_contains(created,parsed[0])){
g_hash_table_add(created,parsed[0]);
yon_menu_item *item = yon_menu_add_item(window,parsed[0],parsed[1],have_children);
yon_menu_item *item = yon_menu_add_item(window,parsed[0],_(parsed[1]),have_children);
gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemRow,-1);
if (!have_children){
gtk_widget_hide(item->ArrowImage);
}
}
}
textdomain(LocaleName);
g_hash_table_unref(created);
yon_char_parsed_free(options,size);
gtk_window_set_transient_for(GTK_WINDOW(window->MenuWindow), GTK_WINDOW(widgets->MainWindow));

@ -10,16 +10,38 @@ int yon_keyboard_save(main_window *widgets){
yon_ubl_status_highlight_incorrect(widgets->KeyboardLayoutTree);
return 0;
}
char *final = NULL;
for_iter(widgets->LayoutsList, &iter){
char *target;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),&iter,0,&target,-1);
char *temp = yon_char_append_element(final,target,",");
if (!yon_char_is_empty(final)) free(final);
final = temp;
}
yon_config_register(xkblayout_parameter,xkblayout_parameter_command,final);
if(!yon_char_is_empty(final)) free(final);
}
const char *keyboard_model = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo));
if (!yon_char_is_empty(keyboard_model)){
yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,(char*)keyboard_model);
} else {
yon_config_remove_by_key(xkbmodel_parameter);
}
int numlock_active = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo));
char *numlock = NULL;
switch(numlock_active){
case 1: numlock = "on";
break;
case 2: numlock = "off";
break;
}
yon_config_register(num_lock_boot_parameter,num_lock_boot_parameter_command,numlock);
on_options_save(NULL,widgets);
return 1;
}
void yon_keyboard_init(main_window *widgets){
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardLayoutChangingCombo),G_CALLBACK(on_options_save),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardNumLockCombo),G_CALLBACK(on_num_lock_changed),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardComposeSwitch),G_CALLBACK(on_compose_switch),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets);
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo));
int size;
@ -89,8 +111,10 @@ void yon_keyboard_init(main_window *widgets){
{
char *name = yon_config_get_by_key(num_lock_boot_parameter);
if (name) {
if (!strcmp(name,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),1);
else if (!strcmp(name,"no")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),2);
if (!strcmp(name,"yes")||!strcmp(name,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),1);
else if (!strcmp(name,"no")||!strcmp(name,"off")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),2);
} else {
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),0);
}
}
{
@ -118,22 +142,22 @@ void yon_keyboard_init(main_window *widgets){
}
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardNumLockCombo),G_CALLBACK(on_num_lock_changed),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardLayoutChangingCombo),G_CALLBACK(on_options_save),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardComposeSwitch),G_CALLBACK(on_compose_switch),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets);
}
void on_layouts_accept(GtkWidget *self, layouts_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
if (!yon_char_is_empty(window->parameters)){
yon_config_register(xkblayout_parameter,xkblayout_parameter_command,window->parameters);
} else {
yon_config_remove_by_key(xkblayout_parameter);
gtk_list_store_clear(widgets->LayoutsList);
GtkTreeIter iter;
for_iter (window->list,&iter){
int active;
char *target;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&target,3,&active,-1);
if (active){
yon_layout_load(target,widgets);
}
}
on_subwindow_close(self);
yon_keyboard_init(widgets);
}
void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){
@ -244,7 +268,6 @@ void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window *
if (yon_confirmation_dialog_call(widgets->MainWindow,data)!=GTK_RESPONSE_ACCEPT) return;
gtk_list_store_remove(widgets->LayoutsList,&iter);
}
yon_keyboard_init(widgets);
}
void on_system_layouts_remove(GtkWidget *, main_window *widgets){
@ -356,30 +379,6 @@ void on_layout_move_down(GtkWidget *, main_window *widgets){
}
}
void on_compose_switch(GtkWidget *,int status,main_window *widgets){
switch(status){
case 0:{
yon_config_remove_element(xkboptions_parameter,"compose:rwin",",");
} break;
case 1:{
yon_config_append_element(xkboptions_parameter,"compose:rwin",",");
} break;
}
yon_keyboard_init(widgets);
}
void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets){
switch(status){
case 0:{
yon_config_remove_element(xkboptions_parameter,"grp_led:scroll",",");
} break;
case 1:{
yon_config_append_element(xkboptions_parameter,"grp_led:scroll",",");
} break;
}
yon_keyboard_init(widgets);
}
void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets){
gtk_widget_set_sensitive(widgets->KeyboardLayoutTree,!status);
gtk_widget_set_sensitive(widgets->KeyboardLayoutAddButton,!status);
@ -426,18 +425,6 @@ void on_layout_selection_changed(GtkTreeView *self,main_window *widgets){
}
void on_num_lock_changed(GtkComboBox *self, main_window *){
switch (gtk_combo_box_get_active(self)){
case 0:
yon_config_remove_by_key(num_lock_boot_parameter);
break;
case 1: yon_config_register(num_lock_boot_parameter,num_lock_boot_parameter_command,"yes");
break;
case 2:yon_config_register(num_lock_boot_parameter,num_lock_boot_parameter_command,"no");
break;
}
}
void on_model_changed(GtkComboBoxText *self, main_window *widgets){
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(self))){
case 0:
@ -452,14 +439,21 @@ void on_model_changed(GtkComboBoxText *self, main_window *widgets){
void on_options_save(GtkWidget *,main_window *widgets){
char *main_id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardLayoutChangingCombo));
int parameter_parsed_size;
config_str parameter_parsed = NULL;
yon_char_parsed_add_or_create_if_exists(parameter_parsed,&parameter_parsed_size,!yon_char_is_empty(main_id)?main_id:"");
char *final_parameter = yon_char_parsed_to_string_full(parameter_parsed,parameter_parsed_size,",");
yon_char_parsed_free(parameter_parsed,parameter_parsed_size);
if (!yon_char_is_empty(final_parameter)){
yon_config_register(xkboptions_parameter,xkboptions_parameter_command,final_parameter);
free(final_parameter);
char *options = yon_char_append_element(NULL,main_id,",");
if (gtk_switch_get_active(GTK_SWITCH(widgets->KeyboardComposeSwitch))){
char *temp = yon_char_append_element(options,"compose:rwin",",");
if (!yon_char_is_empty(options)) free(options);
options = temp;
}
if (gtk_switch_get_active(GTK_SWITCH(widgets->KeyboardScrollLockSwitch))){
char *temp = yon_char_append_element(options,"grp_led:scroll",",");
if (!yon_char_is_empty(options)) free(options);
options = temp;
}
if (!yon_char_is_empty(options)){
yon_config_register(xkboptions_parameter,xkboptions_parameter_command,options);
free(options);
} else {
yon_config_remove_by_key(xkboptions_parameter);
}

@ -112,8 +112,32 @@ gboolean yon_locale_window_unlock(GtkWidget *spinner){
return G_SOURCE_REMOVE;
}
gboolean yon_locale_window_load(language_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
char *config_languages = NULL;
GtkTreeIter iter;
for_iter (widgets->LanguageList,&iter){
char *code;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&iter,3,&code,-1);
char *temp = yon_char_append_element(config_languages,code,",");
if (!yon_char_is_empty(config_languages)) free(config_languages);
config_languages = temp;
}
if (!yon_char_is_empty(config_languages))
gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),config_languages);
for_iter (window->LanguagesList,&iter){
char *code;
gtk_tree_model_get(GTK_TREE_MODEL(window->LanguagesList),&iter,1,&code,-1);
if (yon_char_check_element(config_languages,code,",")){
gtk_list_store_set(window->LanguagesList,&iter,0,1,-1);
}
}
yon_locale_window_unlock(window->LoadingSpinner);
return G_SOURCE_REMOVE;
}
void *yon_locales_load_func(language_window *window){
char *config_value = config(locale_parameter);
char *config_value = config(lang_parameter);
int config_parsed_size;
config_str config_parsed = NULL;
if (config_value){
@ -141,6 +165,7 @@ void *yon_locales_load_func(language_window *window){
g_idle_add((GSourceFunc)yon_locale_window_set_locales,data_struct);
yon_char_parsed_free(parsed,parsed_size);
}
g_idle_add((GSourceFunc)yon_locale_window_load,window);
g_idle_add((GSourceFunc)yon_locale_window_unlock,window->LoadingSpinner);
yon_char_parsed_free(config_parsed,config_parsed_size);
g_thread_exit(NULL);
@ -167,6 +192,7 @@ language_window *yon_language_window_new(){
gtk_overlay_add_overlay(GTK_OVERLAY(window->LoadingOverlay),window->LoadingSpinner);
g_thread_new("locales-thread",(GThreadFunc)yon_locales_load_func,window);
return window;
}

@ -10,20 +10,11 @@ int yon_region_save(main_window *widgets){
yon_ubl_status_highlight_incorrect(widgets->ZoneCombo);
return 0;
}
char *languages = "";
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesFilter);
char *lang_code=NULL;
for_iter(model,&iter){
gtk_tree_model_get(model,&iter,2,&lang_code,-1);
languages = yon_char_unite(languages,!yon_char_is_empty(languages)?",":"",lang_code,NULL);
}
if (yon_char_is_empty(languages)){
yon_config_remove_by_key(locale_parameter);
} else {
yon_config_register(locale_parameter,locale_parameter_command,languages);
free(languages);
}
const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
char *final = yon_char_unite(region,"/",zone,NULL);
yon_config_register(zone_parameter,zone_parameter_command,final);
free(final);
return 1;
}
@ -46,24 +37,6 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
void yon_region_init(main_window *widgets){
int size;
config_str parsed = NULL;
int langsize;
config_str lang = default_langs(&langsize);
GtkTreeIter iter;
gtk_list_store_clear(widgets->LanguagesList);
config_str languages = yon_config_load(languages_command,&size);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(languages[i],&parsed_size,"|");
gtk_list_store_append(widgets->LanguagesList,&iter);
gtk_list_store_set(widgets->LanguagesList,&iter,0,0,1,parsed[0],2,parsed[1],3,parsed[2],-1);
}
yon_char_parsed_free(parsed,size);
if (lang)
yon_char_parsed_free(lang,langsize);
parsed = yon_dir_get_contents(zone_path,&size);
for (int i=0;i<size;i++){
if (!strstr(parsed[i],".")&&strcmp(parsed[i],"posix")&&strcmp(parsed[i],"right")){
@ -77,10 +50,6 @@ void yon_region_init(main_window *widgets){
while(gtk_events_pending()) gtk_main_iteration();
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->RegionCombo),0);
yon_char_parsed_free(parsed,size);
gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter),0);
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
char *zone = yon_char_new(config(zone_parameter));
if (!yon_char_is_empty(zone)){

@ -89,7 +89,6 @@ void on_config_global_save(GtkWidget *,main_window *widgets){
gboolean on_install_success(main_window *widgets){
gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),"");
// gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETION);
yon_config_restore(widgets);
on_page_next_clicked(NULL,widgets);
@ -294,12 +293,12 @@ void *on_setup_system_configuration(void * data){
}
if (!main_config.dry_run){
char *parameter_string = yon_char_parsed_to_string(all_parameters,size," ");
char *command = set_user_config_command(parameter_string);
if (system(yon_debug_output("%s\n",command))){};
yon_char_parsed_free(all_parameters,size);
free(command);
if (parameter_string) free(parameter_string);
char *parameter_string = yon_char_parsed_to_string(all_parameters,size," ");
char *command = set_user_config_command(parameter_string);
if (system(yon_debug_output("%s\n",command))){};
yon_char_parsed_free(all_parameters,size);
free(command);
if (parameter_string) free(parameter_string);
} else {
yon_launch("ubconfig --source system get /");
}

@ -91,6 +91,8 @@ yon_user_struct *yon_user_struct_new(){
user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo");
user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"'\"=:\n");
yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"'\":\n");
g_object_set_data(G_OBJECT(user->MainBox),"yon_user_struct",user);

@ -941,9 +941,6 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->KeyboardLayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardLayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardNumLockCombo),"changed",G_CALLBACK(on_num_lock_changed),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardComposeSwitch),"state-set",G_CALLBACK(on_compose_switch),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardScrollLockSwitch),"state-set",G_CALLBACK(on_scroll_lock_switch),widgets);
g_signal_connect(G_OBJECT(widgets->GrubInstallDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->GrubUpdateDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
@ -1108,23 +1105,6 @@ void yon_main_window_create(main_window *widgets){
textdomain(LocaleName);
}
}
{
int size;
config_str slides = yon_char_parsed_new(&size,slide_repeat_path);
widgets->region_original = gdk_pixbuf_new_from_resource(regions_path,NULL);
widgets->keyboard_original = gdk_pixbuf_new_from_resource(keyboard_path,NULL);
widgets->user_original = gdk_pixbuf_new_from_resource(users_path,NULL);
widgets->startup_original = gdk_pixbuf_new_from_resource(startup_path,NULL);
widgets->bootloader_original = gdk_pixbuf_new_from_resource(bootloader_path,NULL);
widgets->network_original = gdk_pixbuf_new_from_resource(network_icon_path,NULL);
widgets->slides_original = NULL;
widgets->slides_original = g_list_prepend(widgets->slides_original,gdk_pixbuf_new_from_resource(slide_0_path,NULL));
for (int i=1;i<size;i++){
widgets->slides_original = g_list_prepend(widgets->slides_original,gdk_pixbuf_new_from_resource(slides[i-1],NULL));
}
widgets->slides_original = g_list_reverse(widgets->slides_original);
yon_char_parsed_free(slides,size);
}
gtk_builder_connect_signals(builder,NULL);
if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){
gtk_widget_show(widgets->StartScenarioButton);

@ -632,15 +632,6 @@ typedef struct
GtkTreeModel *LanguagesFilter;
GtkTreeModel *LayoutsFilter;
GdkPixbuf *region_original;
GdkPixbuf *keyboard_original;
GdkPixbuf *user_original;
GdkPixbuf *startup_original;
GdkPixbuf *bootloader_original;
GdkPixbuf *network_original;
GList *slides_original;
float region_height_mult;
GtkWidget *RegionSensitiveSwitch;
GtkWidget *HostnameSensitiveSwitch;
@ -1414,12 +1405,9 @@ void yon_layout_load(char *layout, main_window *widgets);
void yon_layout_build(layouts_window *window);
void on_layout_move_up(GtkWidget *, main_window *widgets);
void on_layout_move_down(GtkWidget *, main_window *widgets);
void on_compose_switch(GtkWidget *, int status, main_window *widgets);
void on_scroll_lock_switch(GtkWidget *, int status, main_window *widgets);
void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets);
void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets);
void on_layout_selection_changed(GtkTreeView *self, main_window *widgets);
void on_num_lock_changed(GtkComboBox *self, main_window *);
void on_model_changed(GtkComboBoxText *self, main_window *widgets);
void on_options_save(GtkWidget *, main_window *widgets);
void yon_packages_tab_init(main_window *widgets);
@ -1460,3 +1448,4 @@ 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);
void yon_menu_ungrab(yon_menu_window *window);
void on_menu_chosen(GtkWidget *, GtkListBoxRow* row, yon_menu_window *window);
gboolean yon_locale_window_load(language_window *window);
Loading…
Cancel
Save