diff --git a/gresource.xml b/gresource.xml
index fc38ddb..ead2b57 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -19,6 +19,7 @@
ubinstall-gtk-configuration-mode.glade
ubinstall-gtk-source.glade
ubinstall-gtk-source-element.glade
+ ubinstall-gtk-layouts.glade
ubinstall-gtk.css
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index acc10a7..797d534 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -72,6 +72,7 @@ set(DEPENDFILES
../ubinstall-gtk-configuration-mode.glade
../ubinstall-gtk-source.glade
../ubinstall-gtk-source-element.glade
+ ../ubinstall-gtk-layouts.glade
../gresource.xml
../ubinstall-gtk.css
../modules.csv
@@ -147,6 +148,7 @@ set(SOURCE_FILES
ubinstall-gtk-install-start.c
ubinstall-gtk-startup-services.c
ubinstall-gtk-kernel.c
+ ubinstall-gtk-language.c
ubinstall-gtk.h
ubl-strings.h
)
diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c
index 915582c..1af6ded 100644
--- a/source/ubinstall-gtk-components.c
+++ b/source/ubinstall-gtk-components.c
@@ -195,24 +195,27 @@ void yon_os_components_init(main_window *widgets){
int size = 0;
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter;
- if (!list){
- gtk_overlay_add_overlay(GTK_OVERLAY(widgets->OSOverlay),widgets->OSSpinner);
- gtk_spinner_start(GTK_SPINNER(widgets->OSSpinner));
- gtk_widget_show(widgets->OSSpinner);
- g_thread_new("geag",(GThreadFunc)yon_os_components_setup,widgets);
- while(gtk_events_pending()) gtk_main_iteration();
- list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
- for(iter = list;iter;iter=iter->next){
- os_row *row = g_object_get_data(iter->data,"kernel_row");
- int cur_size = 0;
- gtk_widget_realize(row->RowBox);
- gtk_widget_get_preferred_width(row->RowBox,&cur_size,NULL);
- if (sizenext){
- os_row *row = g_object_get_data(iter->data,"kernel_row");
- gtk_widget_set_size_request(row->RowBox,size,-1);
- }
+ for (iter=list;iter;iter=iter->next){
+ os_row *row = g_object_get_data(iter->data,"kernel_row");
+ free(row);
+ gtk_widget_destroy(GTK_WIDGET(iter->data));
+ }
+ gtk_overlay_add_overlay(GTK_OVERLAY(widgets->OSOverlay),widgets->OSSpinner);
+ gtk_spinner_start(GTK_SPINNER(widgets->OSSpinner));
+ gtk_widget_show(widgets->OSSpinner);
+ g_thread_new("geag",(GThreadFunc)yon_os_components_setup,widgets);
+ while(gtk_events_pending()) gtk_main_iteration();
+ list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
+ for(iter = list;iter;iter=iter->next){
+ os_row *row = g_object_get_data(iter->data,"kernel_row");
+ int cur_size = 0;
+ gtk_widget_realize(row->RowBox);
+ gtk_widget_get_preferred_width(row->RowBox,&cur_size,NULL);
+ if (sizenext){
+ os_row *row = g_object_get_data(iter->data,"kernel_row");
+ gtk_widget_set_size_request(row->RowBox,size,-1);
}
char *modules = config(modules_parameter);
diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c
new file mode 100644
index 0000000..ff6041b
--- /dev/null
+++ b/source/ubinstall-gtk-language.c
@@ -0,0 +1,243 @@
+#include "ubinstall-gtk.h"
+
+void yon_language_update(main_window *widgets){
+ gtk_list_store_clear(widgets->LanguageList);
+ {
+ char *config_locale = config(locale_parameter);
+ char *config_languages = config(lang_parameter);
+ if (yon_char_is_empty(config_locale)||yon_config_check_ignore(locale_parameter)){
+ gtk_switch_set_active(GTK_SWITCH(widgets->LocaleDefaultSwitch),1);
+ } else {
+ gtk_switch_set_active(GTK_SWITCH(widgets->LocaleDefaultSwitch),0);
+ int parsed_param_size;
+ config_str parsed_param = yon_char_parse(config_locale,&parsed_param_size,",");
+ GtkTreeIter iter;
+ for (int i=0;iLanguageList,&iter);
+ gtk_list_store_set(widgets->LanguageList,&iter,1,parsed[1],2,parsed[2],3,parsed[0],-1);
+ if (!yon_char_is_empty(config_languages)){
+ if (!strcmp(config_languages,parsed[0])){
+ gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1);
+ }
+ } else if (yon_char_is_empty(config_languages)&&!i){
+ gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1);
+ }
+ yon_char_parsed_free(parsed,parsed_size);
+ }
+ }
+ }
+ }
+
+}
+
+
+void on_locale_toggle(GtkCellRenderer *, gchar *path,language_window *window){
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(window->LanguagesList);
+ gtk_tree_model_get_iter_from_string(model,&iter,path);
+ gboolean is_active;
+ char *target;
+ gtk_tree_model_get(model,&iter,0,&is_active,1,&target,-1);
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!is_active,-1);
+
+ char *locales = (char*)gtk_entry_get_text(GTK_ENTRY(window->ManualEntry));
+ if (!is_active){
+ if (!yon_char_check_element(locales,target,",")){
+ char *temp = yon_char_append_element(locales,target,",");
+ gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),temp);
+ free(temp);
+ }
+ } else {
+ char *temp = yon_char_remove_element(locales,target,",");
+ gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),temp);
+ if (!yon_char_is_empty(temp)) free(temp);
+ }
+}
+
+void on_locale_accept(GtkWidget *self, language_window *window){
+ main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
+
+ char *final = (char*)gtk_entry_get_text(GTK_ENTRY(window->ManualEntry));
+ if (yon_char_is_empty(final)) {
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ char *locale_str = config(locale_parameter);
+ GtkTreeIter iter,itar;
+ for_iter (GTK_TREE_MODEL(window->LanguagesList),&iter){
+ char *locale,*lang,*territory;
+ int status;
+ gtk_tree_model_get(GTK_TREE_MODEL(window->LanguagesList),&iter,0,&status,1,&locale,2,&lang,3,&territory,-1);
+ if (status){
+ gtk_list_store_append(widgets->LanguageList,&itar);
+ gtk_list_store_set(widgets->LanguageList,&itar,1,lang,2,territory,3,locale,-1);
+ if (!yon_char_is_empty(locale_str)&&!strcmp(locale_str,locale)){
+ gtk_list_store_set(widgets->LanguageList,&itar,0,1,-1);
+ }
+ }
+ }
+ if (yon_char_is_empty(locale_str)){
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LanguageList),&iter)){
+ gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1);
+ }
+ }
+ on_subwindow_close(self);
+}
+
+gboolean yon_locale_window_set_locales(struct locales_struct *data){
+ GtkTreeIter iter;
+ gtk_list_store_append(GTK_LIST_STORE(data->list),&iter);
+ gtk_list_store_set(GTK_LIST_STORE(data->list),&iter,1,data->locale,2,data->lang,3,data->territory,0,data->chosen,-1);
+ if(!yon_char_is_empty(data->lang)) free(data->lang);
+ if(!yon_char_is_empty(data->locale)) free(data->locale);
+ if(!yon_char_is_empty(data->territory)) free(data->territory);
+ if(!yon_char_is_empty(data->lang)) free(data);
+ return G_SOURCE_REMOVE;
+}
+
+gboolean yon_locale_window_unlock(GtkWidget *spinner){
+ gtk_widget_hide(spinner);
+ return G_SOURCE_REMOVE;
+}
+
+void *yon_locales_load_func(language_window *window){
+ char *config_value = config(locale_parameter);
+ int config_parsed_size;
+ config_str config_parsed = NULL;
+ if (config_value){
+ gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),config_value);
+ config_parsed = yon_char_parse(config_value,&config_parsed_size,",");
+ }
+
+ int size;
+ config_str languages = yon_config_load(languages_command,&size);
+ for (int i=0;ilist=window->LanguagesList;
+ yon_char_remove_last_symbol(languages[i],'\n');
+ int parsed_size;
+ config_str parsed = yon_char_parse(languages[i],&parsed_size,"|");
+ data_struct->locale = yon_char_new(parsed[0]);
+ data_struct->lang = yon_char_new(parsed[1]);
+ data_struct->territory = yon_char_new(parsed[2]);
+
+ if (config_parsed_size&&yon_char_parsed_check_exist(config_parsed,config_parsed_size,parsed[0])>-1){
+ data_struct->chosen=1;
+ } else {
+ data_struct->chosen=0;
+ }
+ 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_unlock,window->LoadingSpinner);
+ yon_char_parsed_free(config_parsed,config_parsed_size);
+ g_thread_exit(NULL);
+}
+
+language_window *yon_language_window_new(){
+ language_window *window = malloc(sizeof(language_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_locales_path);
+ window->Window = yon_gtk_builder_get_widget(builder,"Window");
+ window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->LanguagesTree = yon_gtk_builder_get_widget(builder,"LanguagesTree");
+ window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
+ window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
+ window->ManualEntry = yon_gtk_builder_get_widget(builder,"ManualEntry");
+ window->LoadingOverlay = yon_gtk_builder_get_widget(builder,"LoadingOverlay");
+ window->LoadingSpinner = yon_gtk_builder_get_widget(builder,"LoadingSpinner");
+ window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleCell"));
+ window->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList"));
+
+ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window);
+ g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window);
+ yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(window->LanguagesTree));
+
+ gtk_overlay_add_overlay(GTK_OVERLAY(window->LoadingOverlay),window->LoadingSpinner);
+ g_thread_new("locales-thread",(GThreadFunc)yon_locales_load_func,window);
+ return window;
+}
+
+void on_language_open(GtkWidget *, main_window *widgets){
+ language_window *window = yon_language_window_new();
+
+ g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
+
+ yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),ADD_LANGUAGE_TITLE_LABEL,icon_path,"LocalesWindow");
+
+ gtk_widget_show(window->Window);
+
+}
+
+void on_language_remove(GtkWidget *, main_window *widgets){
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LocaleTree)),&model,&iter)){
+ gtk_list_store_remove(widgets->LanguageList,&iter);
+ }
+}
+
+
+void on_language_default_toggled(GtkWidget *, int status, main_window *widgets){
+ gtk_widget_set_sensitive(widgets->LocaleTree,!status);
+ gtk_widget_set_sensitive(widgets->LocaleAddButton,!status);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (!status&>k_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LocaleTree)),&model,&iter)){
+ gtk_widget_set_sensitive(widgets->LocaleRemoveButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->LocaleRemoveButton,0);
+ }
+}
+
+void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets){
+ GtkTreeIter fiter;
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguageList);
+ gtk_tree_model_get_iter_from_string(model,&fiter,path);
+ for_iter(model,&iter){
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,0,-1);
+
+ }
+ char *target;
+ gtk_tree_model_get(model,&fiter,3,&target,-1);
+ gtk_list_store_set(GTK_LIST_STORE(model),&fiter,0,1,-1);
+ // yon_config_register(lang_parameter,lang_parameter_command,target);
+}
+
+int yon_language_save(main_window *widgets){
+ int status = gtk_switch_get_active(GTK_SWITCH(widgets->LocaleDefaultSwitch));
+ if (!status){
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguageList);
+ GtkTreeIter iter;
+ char *locales = NULL;
+ for_iter(model,&iter){
+ int status;
+ char *target;
+
+ gtk_tree_model_get(model,&iter,0,&status,3,&target,-1);
+ char *temp = yon_char_append_element(locales?locales:"",target,",");
+ if (!yon_char_is_empty(locales)) free(locales);
+ locales = temp;
+ if (status){
+ yon_config_register(lang_parameter,lang_parameter_command,target);
+ }
+ }
+ if (!yon_char_is_empty(locales)){
+ yon_config_register(locale_parameter,locale_parameter_command,locales);
+ }
+ } else {
+ yon_config_remove_by_key(lang_parameter);
+ yon_config_remove_by_key(locale_parameter);
+ }
+
+ return 1;
+}
+
+void yon_language_init(main_window *widgets){
+ yon_language_update(widgets);
+}
\ No newline at end of file
diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c
index e71202a..3be4fcd 100644
--- a/source/ubinstall-gtk-page-switch.c
+++ b/source/ubinstall-gtk-page-switch.c
@@ -10,11 +10,12 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_SECTIONS: return yon_sections_get_next_page(widgets); break;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_SOFTWARE; break;
case YON_PAGE_SOFTWARE: return main_config.configure_mode? YON_PAGE_REGION : YON_PAGE_INSTALLATION_BEGIN; break;
- case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_KEYBOARD; break;
+ case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_REGION; break;
case YON_PAGE_KERNEL: return YON_PAGE_PACKAGES_HUB; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_PACKAGES_HUB; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_PACKAGES_HUB; break;
- case YON_PAGE_REGION: return YON_PAGE_KEYBOARD; break;
+ case YON_PAGE_REGION: return YON_PAGE_LANGUAGE; break;
+ case YON_PAGE_LANGUAGE: return YON_PAGE_KEYBOARD; break;
case YON_PAGE_KEYBOARD: return YON_PAGE_USERS; break;
case YON_PAGE_USERS: return YON_PAGE_STARTUP; break;
case YON_PAGE_STARTUP: return YON_PAGE_BOOTLOADER; break;
@@ -181,6 +182,9 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_REGION:
return yon_region_save(widgets);
break;
+ case YON_PAGE_LANGUAGE:
+ return yon_language_save(widgets);
+ break;
case YON_PAGE_KEYBOARD:
return yon_keyboard_save(widgets);
break;
@@ -260,6 +264,7 @@ void yon_switch_page_render(main_window *widgets){
case YON_PAGE_REGION:
page = 3;
break;
+ case YON_PAGE_LANGUAGE:
case YON_PAGE_KEYBOARD:
page = 4;
break;
@@ -361,6 +366,9 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_REGION:
yon_region_init(widgets);
break;
+ case YON_PAGE_LANGUAGE:
+ yon_language_init(widgets);
+ break;
case YON_PAGE_KEYBOARD:
yon_keyboard_init(widgets);
break;
diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
index dc003c3..a268a84 100644
--- a/source/ubinstall-gtk.c
+++ b/source/ubinstall-gtk.c
@@ -973,6 +973,13 @@ void yon_main_window_create(main_window *widgets){
widgets->UserAddBox=yon_gtk_builder_get_widget(builder,"UserAddBox");
widgets->UserAddButton=yon_gtk_builder_get_widget(builder,"UserAddButton");
+ widgets->LocaleTree = yon_gtk_builder_get_widget(builder,"LocaleTree");
+ widgets->LocaleAddButton = yon_gtk_builder_get_widget(builder,"LocaleAddButton");
+ widgets->LocaleRemoveButton = yon_gtk_builder_get_widget(builder,"LocaleRemoveButton");
+ widgets->LocaleDefaultSwitch = yon_gtk_builder_get_widget(builder,"LocaleDefaultSwitch");
+ widgets->LocaleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"LocaleCell"));
+ widgets->LanguageList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguageList"));
+
widgets->HotnameEntry=yon_gtk_builder_get_widget(builder,"HotnameEntry");
widgets->mainSettingsButton=yon_gtk_builder_get_widget(builder,"mainSettingsButton");
widgets->RegionImage = yon_gtk_builder_get_widget(builder,"RegionImage");
@@ -1088,6 +1095,12 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets);
g_signal_connect(G_OBJECT(widgets->NextButton),"clicked",G_CALLBACK(on_page_next_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_prev_clicked),widgets);
+
+ g_signal_connect(G_OBJECT(widgets->LocaleAddButton),"clicked",G_CALLBACK(on_language_open),widgets);
+ g_signal_connect(G_OBJECT(widgets->LocaleRemoveButton),"clicked",G_CALLBACK(on_language_remove),widgets);
+ g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(on_language_default_toggled),widgets);
+ g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets);
+
g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->AvailableLanguagesButton),"clicked",G_CALLBACK(on_language_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets);
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
index 3be8be8..be3bc1e 100755
--- a/source/ubinstall-gtk.h
+++ b/source/ubinstall-gtk.h
@@ -38,6 +38,7 @@
#define glade_path_configuration_mode "/com/ublinux/ui/ubinstall-gtk-configuration-mode.glade"
#define glade_path_source "/com/ublinux/ui/ubinstall-gtk-source.glade"
#define glade_path_source_element "/com/ublinux/ui/ubinstall-gtk-source-element.glade"
+#define glade_locales_path "/com/ublinux/ui/ubinstall-gtk-layouts.glade"
#define CssPath "/com/ublinux/css/ubinstall-gtk.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
@@ -351,6 +352,7 @@ enum YON_PAGES {
YON_PAGE_SOFTWARE,
YON_PAGE_PACMAN_SOFTWARE,
YON_PAGE_REGION,
+ YON_PAGE_LANGUAGE,
YON_PAGE_KEYBOARD,
YON_PAGE_USERS,
YON_PAGE_STARTUP,
@@ -498,6 +500,13 @@ typedef struct {
GtkWidget *menu1;
GtkWidget *menu2;
+ GtkWidget *LocaleDefaultSwitch;
+ GtkWidget *LocaleTree;
+ GtkWidget *LocaleAddButton;
+ GtkWidget *LocaleRemoveButton;
+ GtkCellRenderer *LocaleCell;
+ GtkListStore *LanguageList;
+
GtkWidget *RegionImage;
GtkWidget *RegionBox;
GtkWidget *RegionAspect;
@@ -998,6 +1007,28 @@ struct row_data {
char *description;
};
+typedef struct {
+ GtkWidget *Window;
+ GtkWidget *StatusBox;
+ GtkWidget *LanguagesTree;
+
+ GtkWidget *CancelButton;
+ GtkWidget *AcceptButton;
+ GtkWidget *ManualEntry;
+ GtkWidget *LoadingOverlay;
+ GtkWidget *LoadingSpinner;
+ GtkCellRenderer *ToggleCell;
+
+ GtkListStore *LanguagesList;
+} language_window;
+
+struct locales_struct {
+ char *locale;
+ char *lang;
+ char *territory;
+ int chosen;
+ GtkListStore *list;
+};
void config_init();
main_window *yon_main_window_complete();
@@ -1236,4 +1267,17 @@ kernel_addon_row *yon_kernel_addon_row_new();
void yon_kernel_addon_row_setup(kernel_addon_row *row, char *name, char *modules,char *package, char *description);
void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row);
void on_kernel_addon_info(GtkLabel *self);
-void yon_license_init(main_window *widgets);
\ No newline at end of file
+void yon_license_init(main_window *widgets);
+void on_locale_toggle(GtkCellRenderer *, gchar *path,language_window *window);
+void on_locale_accept(GtkWidget *self, language_window *window);
+gboolean yon_locale_window_set_locales(struct locales_struct *data);
+gboolean yon_locale_window_unlock(GtkWidget *spinner);
+void *yon_locales_load_func(language_window *window);
+language_window *yon_language_window_new();
+void on_language_open(GtkWidget *, main_window *widgets);
+void on_language_remove(GtkWidget *, main_window *widgets);
+void on_language_default_toggled(GtkWidget *, int status, main_window *widgets);
+void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets);
+void yon_language_update(main_window *widgets);
+int yon_language_save(main_window *widgets);
+void yon_language_init(main_window *widgets);
\ No newline at end of file
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index 8085f29..a9931c5 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -234,6 +234,7 @@ NULL)
#define PACKAGE_INFO_LABEL _("Package information")
#define LICENCE_AGREE_LABEL _("Yes, I agree to the License Agreement")
#define LICENCE_DISAGREE_LABEL _("No, i do not agree")
+#define ADD_LANGUAGE_TITLE_LABEL _("Add locales")
// #define _LABEL _("Package:")
// #define _LABEL _("Module:")
// #define _LABEL _("New section at")
diff --git a/ubinstall-gtk-layouts.glade b/ubinstall-gtk-layouts.glade
new file mode 100644
index 0000000..b359c15
--- /dev/null
+++ b/ubinstall-gtk-layouts.glade
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/ubinstall-gtk.desktop b/ubinstall-gtk.desktop
old mode 100644
new mode 100755
diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade
index d847ac4..835983a 100644
--- a/ubinstall-gtk.glade
+++ b/ubinstall-gtk.glade
@@ -94,6 +94,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -126,6 +138,7 @@
LayoutList
+
True
False
@@ -321,11 +334,21 @@
False
com.ublinux.libublsettingsui-gtk3.flag-finish-symbolic
+
+ True
+ False
+ com.ublinux.libublsettingsui-gtk3.increase-symbolic
+
True
False
com.ublinux.libublsettingsui-gtk3.properties-symbolic
+
+ True
+ False
+ com.ublinux.libublsettingsui-gtk3.trash-symbolic
+
True
False
@@ -1048,7 +1071,7 @@ agreement
True
False
- This program will ask you few questions and help you install system on your computer
+ Please read the license agreement before continuing the installation.
center
True
0
@@ -1238,7 +1261,7 @@ agreement
True
False
- This program will ask you few questions and help you install system on your computer
+ Please specify what type of installation you want to perform
center
True
0
@@ -1768,7 +1791,7 @@ agreement
True
False
- Installation completion
+ Selection of main components
True
0
@@ -1788,7 +1811,7 @@ agreement
True
False
- This program will ask you few questions and help you install system on your computer
+ Specify what type of installation you want to perform
center
True
0
@@ -1909,12 +1932,8 @@ agreement
-
-
- True
- False
- Selecting additional software to install from the repository via the Internet
-
+
+
@@ -3273,7 +3292,7 @@ agreement
True
False
- Choose system kernel
+ Location
True
0
@@ -3293,7 +3312,7 @@ agreement
True
False
- This program will ask you few questions and help you install system on your computer
+ Enter your time zone
center
True
0
@@ -3609,6 +3628,204 @@ agreement
False
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Available locales in the system:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ Default
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ True
+ in
+ 125
+
+
+ True
+ True
+ LanguageList
+ 0
+
+
+ System locale
+
+
+ True
+
+
+ 0
+
+
+
+
+
+
+ 100
+ Locale
+
+
+
+ 3
+
+
+
+
+
+
+ Language
+ True
+
+
+
+ 1
+
+
+
+
+
+
+ Territory
+ True
+
+
+
+ 2
+
+
+
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ True
+ Add locale
+ image29
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ Remove language
+ image30
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ 10
+
+
+
+
+ True
+ False
+ Language
+
+
+ 10
+ False
+
+
True
@@ -3653,7 +3870,7 @@ agreement
True
False
- Choose system kernel
+ Keyboard
True
0
@@ -3673,7 +3890,7 @@ agreement
True
False
- This program will ask you few questions and help you install system on your computer
+ Specify your preferred keyboard settings
center
True
0
@@ -3723,7 +3940,6 @@ agreement
True
False
- Keyboard
@@ -3993,7 +4209,7 @@ agreement
- 10
+ 11
@@ -4003,7 +4219,7 @@ agreement
Keyboard
- 10
+ 11
False
@@ -4453,7 +4669,7 @@ agreement
- 11
+ 12
@@ -4463,7 +4679,7 @@ agreement
Users
- 11
+ 12
False
@@ -4751,7 +4967,7 @@ agreement
- 12
+ 13
@@ -4761,7 +4977,7 @@ agreement
Startup configuration
- 12
+ 13
False
@@ -5217,7 +5433,7 @@ agreement
- 13
+ 14
@@ -5227,7 +5443,7 @@ agreement
Bootloader
- 13
+ 14
False
@@ -5713,7 +5929,7 @@ agreement
- 14
+ 15
@@ -5723,7 +5939,7 @@ agreement
Network
- 14
+ 15
False
@@ -6071,7 +6287,7 @@ agreement
- 15
+ 16
@@ -6081,7 +6297,7 @@ agreement
Packages
- 15
+ 16
False
@@ -6225,7 +6441,7 @@ agreement
- 16
+ 17
@@ -6235,7 +6451,7 @@ agreement
Installation process
- 16
+ 17
False
@@ -6416,7 +6632,7 @@ or continue working in the environment, booted from the Live image.
- 17
+ 18
@@ -6426,7 +6642,7 @@ or continue working in the environment, booted from the Live image.
Completion
- 17
+ 18
False
@@ -6605,7 +6821,7 @@ or continue working in the environment, booted from the Live image.
- 18
+ 19
@@ -6615,7 +6831,7 @@ or continue working in the environment, booted from the Live image.
Completed
- 18
+ 19
False
@@ -6794,7 +7010,7 @@ or continue working in the environment, booted from the Live image.
- 19
+ 20
@@ -6804,7 +7020,7 @@ or continue working in the environment, booted from the Live image.
Configuration error
- 19
+ 20
False
@@ -6983,7 +7199,7 @@ or continue working in the environment, booted from the Live image.
- 20
+ 21
@@ -6993,7 +7209,7 @@ or continue working in the environment, booted from the Live image.
Configuration end
- 20
+ 21
False
@@ -7172,7 +7388,7 @@ or continue working in the environment, booted from the Live image.
- 21
+ 22
@@ -7182,7 +7398,7 @@ or continue working in the environment, booted from the Live image.
Configuration saved
- 21
+ 22
False
@@ -7636,7 +7852,7 @@ or continue working in the environment, booted from the Live image.
- 22
+ 23
@@ -7646,7 +7862,7 @@ or continue working in the environment, booted from the Live image.
Common Installation
- 22
+ 23
False
@@ -8310,7 +8526,7 @@ or continue working in the environment, booted from the Live image.
- 23
+ 24
@@ -8320,7 +8536,7 @@ or continue working in the environment, booted from the Live image.
Installation next to system
- 23
+ 24
False
@@ -8939,7 +9155,7 @@ or continue working in the environment, booted from the Live image.
- 24
+ 25
@@ -8949,7 +9165,7 @@ or continue working in the environment, booted from the Live image.
Installation on same partition
- 24
+ 25
False
@@ -9995,7 +10211,7 @@ separately into the selected partition.
- 25
+ 26
@@ -10005,7 +10221,7 @@ separately into the selected partition.
Advanced section
- 25
+ 26
False
@@ -10480,7 +10696,7 @@ separately into the selected partition.
- 26
+ 27
@@ -10490,7 +10706,7 @@ separately into the selected partition.
Recovery section
- 26
+ 27
False
@@ -10882,7 +11098,7 @@ separately into the selected partition.
- 27
+ 28
@@ -10892,7 +11108,7 @@ separately into the selected partition.
GRUB install
- 27
+ 28
False
@@ -11271,7 +11487,7 @@ separately into the selected partition.
- 28
+ 29
@@ -11281,7 +11497,7 @@ separately into the selected partition.
GRUB update
- 28
+ 29
False
@@ -12007,7 +12223,7 @@ separately into the selected partition.
- 29
+ 30
@@ -12017,7 +12233,7 @@ separately into the selected partition.
OS only
- 29
+ 30
False
@@ -12813,7 +13029,7 @@ separately into the selected partition.
- 30
+ 31
@@ -12823,7 +13039,7 @@ separately into the selected partition.
User data only
- 30
+ 31
False