From 56373ca63e58113581a67fed935beb29eab12d10 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 13:32:50 +0000 Subject: [PATCH 01/48] Slight fixes --- source/ubinstall-gtk-log.c | 1 + ubinstall-gtk-slider.glade | 1 + 2 files changed, 2 insertions(+) diff --git a/source/ubinstall-gtk-log.c b/source/ubinstall-gtk-log.c index 5de4a71..65f82d7 100644 --- a/source/ubinstall-gtk-log.c +++ b/source/ubinstall-gtk-log.c @@ -88,6 +88,7 @@ void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonito g_mutex_lock(&main_config.progress_mutex); config_str text = yon_file_open(progress_path, &size); + if (!text||!size) return; g_mutex_unlock(&main_config.progress_mutex); if (size) { diff --git a/ubinstall-gtk-slider.glade b/ubinstall-gtk-slider.glade index 7784704..6eeb313 100644 --- a/ubinstall-gtk-slider.glade +++ b/ubinstall-gtk-slider.glade @@ -70,6 +70,7 @@ True False True + fill True 0 From 41c6db9582895ef60d9e330d4aeca53d1908bd7e Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 13:43:06 +0000 Subject: [PATCH 02/48] Fixed title icons size --- ubinstall-gtk.glade | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 6ff08c1..6757b40 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -1123,7 +1123,7 @@ agreement True False - 64 + 48 com.ublinux.ubinstall-gtk.license 0 @@ -1417,7 +1417,7 @@ agreement True False - 64 + 48 com.ublinux.ubinstall-gtk.install-common @@ -1496,7 +1496,7 @@ agreement True False - 64 + 48 com.ublinux.ubinstall-gtk.install-near @@ -1575,7 +1575,7 @@ agreement True False - 64 + 48 com.ublinux.ubinstall-gtk.install-part @@ -1654,7 +1654,7 @@ agreement True False - 64 + 48 com.ublinux.ubinstall-gtk.install-advanced @@ -1733,7 +1733,7 @@ agreement True False - 64 + 48 com.ublinux.ubinstall-gtk.install-recovery @@ -2158,7 +2158,7 @@ agreement True False 48 - /com/ublinux/images/install_type_data_only_normal.png + com.ublinux.libublsettingsui-gtk3.settings-symbolic 0 @@ -7372,7 +7372,7 @@ or continue working in the system Live environment. True False - 64 + 58 com.ublinux.ubinstall-gtk.install-common 0 @@ -7856,7 +7856,7 @@ or continue working in the system Live environment. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-near 0 @@ -8566,7 +8566,7 @@ or continue working in the system Live environment. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-part 0 @@ -9202,7 +9202,7 @@ or continue working in the system Live environment. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-advanced 0 @@ -10276,7 +10276,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-recovery 0 @@ -10390,7 +10390,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-grub @@ -10468,7 +10468,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-grub-update @@ -10546,7 +10546,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-system @@ -10624,7 +10624,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-user @@ -10743,7 +10743,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-grub 0 @@ -11155,7 +11155,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-grub-update 0 @@ -11560,7 +11560,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-system 0 @@ -12378,7 +12378,7 @@ separately into the selected partition. True False - 64 + 48 com.ublinux.ubinstall-gtk.install-user 0 From 9c8621c29a1895c1d0303be3aa9edd673d55bcfc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 16:04:36 +0000 Subject: [PATCH 03/48] Source window rework --- source/ubinstall-gtk-source.c | 188 ++++++++++++---------------------- source/ubinstall-gtk.h | 11 +- ubinstall-gtk-source.glade | 100 +----------------- ubinstall-gtk.css | 3 + 4 files changed, 70 insertions(+), 232 deletions(-) diff --git a/source/ubinstall-gtk-source.c b/source/ubinstall-gtk-source.c index dc4119c..e052630 100644 --- a/source/ubinstall-gtk-source.c +++ b/source/ubinstall-gtk-source.c @@ -1,17 +1,37 @@ #include "ubinstall-gtk.h" void on_source_changed(GtkComboBox *self){ - GtkWidget *devices_combo = g_object_get_data(G_OBJECT(self),"target"); - GtkWidget *path_button = g_object_get_data(G_OBJECT(self),"button"); - GtkWidget *path_combo = g_object_get_data(G_OBJECT(self),"combo"); + source_element *element = g_object_get_data(G_OBJECT(self),"source_element"); if (gtk_combo_box_get_active(self)){ - gtk_widget_show(path_button); - gtk_widget_show(path_combo); - gtk_widget_hide(devices_combo); + gtk_widget_show(element->PathButton); + gtk_widget_show(element->PathEntry); + gtk_widget_hide(element->DeviceCombo); } else{ - gtk_widget_hide(path_button); - gtk_widget_hide(path_combo); - gtk_widget_show(devices_combo); + gtk_widget_hide(element->PathButton); + gtk_widget_hide(element->PathEntry); + gtk_widget_show(element->DeviceCombo); + } +} + +void yon_source_update(source_window *window){ + GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox)); + GList *iter; + for (iter = list; iter; iter = iter->next){ + source_element *element = (source_element*)g_object_get_data(G_OBJECT(iter->data),"source_element"); + if (!iter->next){ + GtkWidget *button = gtk_button_new_from_icon_name(add_icon_path,GTK_ICON_SIZE_BUTTON); + g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_source_add),window); + gtk_box_pack_end(GTK_BOX(element->MainBox),button,0,0,0); + element->AddButton = button; + gtk_style_context_add_class(gtk_widget_get_style_context(button),"thin"); + gtk_style_context_add_class(gtk_widget_get_style_context(button),"instant"); + gtk_widget_show(button); + } else { + if (element->AddButton) { + gtk_widget_destroy(element->AddButton); + element->AddButton = NULL; + } + } } } @@ -25,22 +45,21 @@ source_element *yon_source_element_new(){ element->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo"); element->PathButton = yon_gtk_builder_get_widget(builder,"PathButton"); element->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton"); + element->AddButton = NULL; + yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->DeviceCombo)); yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->TypeCombo)); + g_signal_connect(G_OBJECT(element->RemoveButton),"clicked",G_CALLBACK(on_source_remove),element); g_signal_connect(G_OBJECT(element->PathButton),"clicked",G_CALLBACK(on_source_choose),element); g_signal_connect(G_OBJECT(element->TypeCombo),"changed",G_CALLBACK(on_source_changed),element); - g_object_set_data(G_OBJECT(element->PathButton),"combo",element->TypeCombo); + + g_object_set_data(G_OBJECT(element->PathButton),"source_element",element); g_object_set_data(G_OBJECT(element->MainBox),"source_element",element); - g_object_set_data(G_OBJECT(element->PathButton),"target_combo",element->TypeCombo); - g_object_set_data(G_OBJECT(element->TypeCombo),"target",element->DeviceCombo); - g_object_set_data(G_OBJECT(element->TypeCombo),"button",element->PathButton); - g_object_set_data(G_OBJECT(element->TypeCombo),"combo",element->PathEntry); - gtk_widget_set_sensitive(element->DeviceCombo,0); - gtk_widget_set_sensitive(element->TypeCombo,0); - gtk_widget_set_sensitive(element->PathEntry,0); - gtk_widget_set_sensitive(element->PathButton,0); + g_object_set_data(G_OBJECT(element->TypeCombo),"source_element",element); + gtk_widget_hide(element->PathButton); + int size; config_str parts = yon_config_load(get_parts_and_devices_command, &size); for (int i=0;iAddBox),element->MainBox,0,0,0); + g_object_set_data(G_OBJECT(element->MainBox),"window",window); + + if (yon_char_is_empty(key)) return; + if (yon_char_check_begins_with(key,"/dev/")){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(element->DeviceCombo),key); gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),0); @@ -69,61 +93,27 @@ void yon_source_element_add(char *key,void*,source_window *window){ gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key); gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),1); } - gtk_box_pack_start(GTK_BOX(window->AddBox),element->MainBox,0,0,0); - g_object_set_data(G_OBJECT(element->MainBox),"window",window); - g_object_set_data(G_OBJECT(element->PathButton),"target",window->PathEntry); -} - -void yon_source_update(source_window *window){ - GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox)); - GList *iter; - for (iter=list;iter;iter=iter->next){ - gtk_widget_destroy(GTK_WIDGET(iter->data)); - } - dictionary *dict; - if (!window->sources) return; - for_dictionaries(dict,window->sources){ - yon_source_element_add(dict->key,NULL,window); - - } } void on_source_add(GtkWidget *,source_window *window){ - const char *path = gtk_widget_get_visible(window->PathEntry)?gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->DeviceCombo)); - if (yon_char_is_empty(path)){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(gtk_widget_get_visible(window->PathEntry)?window->PathEntry:window->DeviceCombo); - return; - } - if (!yon_dictionary_get(&window->sources,(char*)path)){ - yon_dictionary_add_or_create_if_exists_with_data(window->sources,yon_char_new(path),NULL); - gtk_entry_set_text(GTK_ENTRY(window->PathEntry),""); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0); - yon_source_update(window); - } else { - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - } + yon_source_element_add(NULL,NULL,window); + yon_source_update(window); } void on_source_remove(GtkWidget *,source_element *element){ source_window *window = g_object_get_data(G_OBJECT(element->MainBox),"window"); - const char *path = gtk_widget_get_visible(element->PathEntry)?gtk_entry_get_text(GTK_ENTRY(element->PathEntry)):gtk_combo_box_get_active_id(GTK_COMBO_BOX(element->DeviceCombo)); - dictionary *dict = yon_dictionary_get(&window->sources,(char*)path); - if (dict){ - window->sources = yon_dictionary_rip(dict); - yon_source_update(window); - } + gtk_widget_destroy(element->MainBox); + yon_source_update(window); } void on_source_choose(GtkWidget *self){ - GtkWidget *target_entry = g_object_get_data(G_OBJECT(self),"target"); - GtkWidget *target_mode = g_object_get_data(G_OBJECT(self),"combo"); - switch (gtk_combo_box_get_active(GTK_COMBO_BOX(target_mode))){ + source_element *element = g_object_get_data(G_OBJECT(self),"source_element"); + switch (gtk_combo_box_get_active(GTK_COMBO_BOX(element->TypeCombo))){ case 1:{ filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window"); + yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window"); if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){ - gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection); + gtk_entry_set_text(GTK_ENTRY(element->PathEntry),dialog->last_success_selection); free(dialog); } @@ -137,7 +127,7 @@ void on_source_choose(GtkWidget *self){ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter); if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){ - gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection); + gtk_entry_set_text(GTK_ENTRY(element->PathEntry),dialog->last_success_selection); free(dialog); } @@ -151,10 +141,6 @@ void on_source_accept(GtkWidget *,source_window *window){ on_subwindow_close(window->Window); return; } - const char *creation_path = gtk_widget_get_visible(window->PathEntry)? gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):NULL; - if (!yon_char_is_empty(creation_path)){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),SOURCE_CREATE_ONGOING_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - } char *sources_list = NULL; GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox)); GList *iter; @@ -207,26 +193,6 @@ void on_source_accept(GtkWidget *,source_window *window){ } else { yon_config_remove_by_key(source_parameter); } - int size; - config_str paths = NULL; - dictionary *dict; - if (window->sources){ - for_dictionaries(dict,window->sources){ - if (yon_char_parsed_check_exist(paths,size,dict->key)>-1){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - return; - } - yon_char_parsed_add_or_create_if_exists(paths,&size,dict->key); - } - if (!size){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->PathEntry); - return; - } - } - char *parameter_string = yon_char_parsed_to_string(paths,(int)size,","); - if (!yon_char_is_empty(parameter_string)) free(parameter_string); - if (!main_config.configure_mode){ int size; config_str parameters = yon_config_get_save_parameters_by_key(&size,locale_parameter,lang_parameter,zone_parameter,NULL); @@ -238,7 +204,6 @@ void on_source_accept(GtkWidget *,source_window *window){ yon_char_parsed_free(parameters,size); } } - yon_dictionary_free_all(window->sources,NULL); on_subwindow_close(window->Window); free(window); } @@ -252,54 +217,27 @@ source_window *yon_source_window_new(){ window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); window->AutoSwitch = yon_gtk_builder_get_widget(builder,"AutoSwitch"); - window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); - window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); - window->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo"); - window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton"); - window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton"); window->AddBox = yon_gtk_builder_get_widget(builder,"AddBox"); - window->sources = NULL; 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_source_accept),window); - g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_source_add),window); - g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_source_choose),window); - g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_source_changed),window); g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),gtk_widget_get_parent(gtk_widget_get_parent(window->AddBox))); - g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->TypeCombo); - g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->DeviceCombo); - g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->PathButton); - g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->PathEntry); - g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->AddButton); - g_object_set_data(G_OBJECT(window->PathButton),"combo",window->TypeCombo); - g_object_set_data(G_OBJECT(window->PathButton),"target",window->PathEntry); - g_object_set_data(G_OBJECT(window->TypeCombo),"target",window->DeviceCombo); - g_object_set_data(G_OBJECT(window->TypeCombo),"button",window->PathButton); - g_object_set_data(G_OBJECT(window->TypeCombo),"combo",window->PathEntry); + { char *config_parameter = config(source_parameter); - if (window->sources){ - yon_dictionary_free_all(window->sources,NULL); - } - int size; - config_str parsed = yon_char_parse(config_parameter,&size,","); - for (int i=0;isources,parsed[i],NULL); - } - yon_char_parsed_free(parsed,size); - } - int size; - config_str parts = yon_config_load(get_parts_and_devices_command, &size); - for (int i=0;iDeviceCombo),parsed[1],parsed[1]); + if (!yon_char_is_empty(config_parameter)){ + gtk_switch_set_active(GTK_SWITCH(window->AutoSwitch),0); + int size; + config_str parsed = yon_char_parse(config_parameter,&size,","); + for (int i=0;iDeviceCombo),0); - yon_char_parsed_free(parts,size); return window; } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 8f05d2e..f8f53fa 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1027,13 +1027,7 @@ typedef struct GtkWidget *CancelButton; GtkWidget *AcceptButton; GtkWidget *AutoSwitch; - GtkWidget *TypeCombo; - GtkWidget *PathEntry; - GtkWidget *DeviceCombo; - GtkWidget *PathButton; - GtkWidget *AddButton; GtkWidget *AddBox; - dictionary *sources; } source_window; typedef struct @@ -1044,6 +1038,7 @@ typedef struct GtkWidget *DeviceCombo; GtkWidget *PathButton; GtkWidget *RemoveButton; + GtkWidget *AddButton; } source_element; @@ -1337,7 +1332,6 @@ void on_source_accept(GtkWidget *, source_window *window); void on_source_choose(GtkWidget *self); void on_source_remove(GtkWidget *, source_element *element); void on_source_add(GtkWidget *, source_window *window); -void yon_source_update(source_window *window); void yon_source_element_add(char *key, void *, source_window *window); source_element *yon_source_element_new(); void on_rdp_toggled(GtkWidget *self, main_window *); @@ -1455,4 +1449,5 @@ 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); -double yon_password_check_func(yon_password_window *window, const char *password_string); \ No newline at end of file +double yon_password_check_func(yon_password_window *window, const char *password_string); +void yon_source_update(source_window *window); \ No newline at end of file diff --git a/ubinstall-gtk-source.glade b/ubinstall-gtk-source.glade index 8c1482d..192097f 100644 --- a/ubinstall-gtk-source.glade +++ b/ubinstall-gtk-source.glade @@ -3,16 +3,6 @@ - - True - False - com.ublinux.libublsettingsui-gtk3.zoom-symbolic - - - True - False - com.ublinux.libublsettingsui-gtk3.increase-symbolic - 400 250 @@ -139,94 +129,6 @@ 0 - - - True - False - 5 - - - True - False - False - 0 - - Device - Folder - ISO-image - - - - False - True - 0 - - - - - False - True - - - True - True - 1 - - - - - True - False - False - 0 - - - True - True - 2 - - - - - False - True - True - image1 - - - - False - True - 3 - - - - - True - False - True - True - image2 - - - - False - True - 4 - - - - - False - True - end - 1 - - True @@ -265,7 +167,7 @@ - False + True True 2 diff --git a/ubinstall-gtk.css b/ubinstall-gtk.css index 97b25fb..ca4778b 100644 --- a/ubinstall-gtk.css +++ b/ubinstall-gtk.css @@ -5,6 +5,9 @@ .noborder { border:none; } +.instant { + transition: 0; +} .borders *{ border-width:0.5px; border-style: solid; From 79603a3653220474fe990739981aff2dbfc4aac8 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 16:33:11 +0000 Subject: [PATCH 04/48] OS Menu visual changes and localisation fixes --- source/ubinstall-gtk-bootloader.c | 6 +++- ubinstall-gtk-menu-item.glade | 1 + ubinstall-gtk-menu.glade | 53 +++++++++++++++++++++++++------ 3 files changed, 49 insertions(+), 11 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index ff47380..ac3e045 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -239,7 +239,6 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){ gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemRow,-1); gtk_widget_hide(item->ArrowImage); } - 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); @@ -248,6 +247,11 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){ yon_char_remove_last_symbol(options[i],'\n'); int parsed_size; config_str parsed = yon_char_parse(options[i],&parsed_size,";"); + { + char *temp = _(parsed[1]); + free(parsed[1]); + parsed[1] = yon_char_new(temp); + } int have_children=0; char *children_id; if ((children_id=strstr(parsed[0],">"))){ diff --git a/ubinstall-gtk-menu-item.glade b/ubinstall-gtk-menu-item.glade index 8e9e6fd..ccd75bf 100644 --- a/ubinstall-gtk-menu-item.glade +++ b/ubinstall-gtk-menu-item.glade @@ -4,6 +4,7 @@ + 25 True True diff --git a/ubinstall-gtk-menu.glade b/ubinstall-gtk-menu.glade index ba2ded6..0aaed23 100644 --- a/ubinstall-gtk-menu.glade +++ b/ubinstall-gtk-menu.glade @@ -3,11 +3,6 @@ - - True - False - com.ublinux.libublsettingsui-gtk3.pan-left-symbolic - 450 250 @@ -54,7 +49,6 @@ True False - none True @@ -94,11 +88,40 @@ 5 - Back True True True - image1 + + + True + False + 5 + + + True + False + com.ublinux.libublsettingsui-gtk3.pan-left-symbolic + + + False + True + 0 + + + + + True + False + Back + + + False + True + 1 + + + + @@ -802,7 +803,8 @@ agreement From 4e270c6d6b8e6e7a22239cb1945024bd6f823fad Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 16:30:20 +0000 Subject: [PATCH 30/48] Fixed advanced box widgets layout --- ubinstall-gtk-advanced-box.glade | 214 +++++++++++++++++++------------ ubinstall-gtk.glade | 24 +++- 2 files changed, 153 insertions(+), 85 deletions(-) diff --git a/ubinstall-gtk-advanced-box.glade b/ubinstall-gtk-advanced-box.glade index 61f8d64..386f53d 100644 --- a/ubinstall-gtk-advanced-box.glade +++ b/ubinstall-gtk-advanced-box.glade @@ -206,33 +206,45 @@ - - True - True - adjustment1 - - - False - True - 1 - - - - + True False - 0 - - Kb - Mb - Gb - Tb - + 5 + + + True + True + adjustment1 + + + False + True + 0 + + + + + True + False + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 1 + + False True - 2 + 3 @@ -245,7 +257,7 @@ False True - 3 + 4 @@ -256,146 +268,170 @@ False True - 4 + 5 + + + False + True + 1 + + + + + True + False + 5 - + True False - File system type: + Encryption: + 0 False True - 5 + 2 - + True False 0 - Default + Off False True - 6 + 3 - - - False - True - 1 - - - - - True - False - 5 - + True False - File system label: - 0 + 5 + + + True + False + True + + + False + True + 0 + + + + + True + False + True + True + image4 + + + + False + True + 1 + + False True - 0 + 3 - + True - True + False + Encryption password: False True - 1 + 4 + + + False + True + 2 + + + + + True + False + 5 - + True False - Encryption: - 0 + File system type: False True - 2 + 0 - + True False 0 - Off + Default False True - 3 + 1 - + True False - Encryption password: - - - False - True - 4 - - - - - True - False - True + File system label: + 0 False True - 5 + 2 - + True - False True - True - image4 - False True - 6 + 3 False True - 2 + 3 @@ -418,16 +454,32 @@ + + + + + + + + + + + + + + - + + - + + diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index cff08b2..e997237 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -300,6 +300,13 @@ + + True + False + + + + True False @@ -880,7 +887,6 @@ agreement - @@ -12149,6 +12155,11 @@ separately into the selected partition. False 1 True + + + False + + @@ -12846,7 +12857,7 @@ separately into the selected partition. True False Size: - 1 + 0 False @@ -12938,7 +12949,7 @@ separately into the selected partition. True False File system type: - 1 + 0 False @@ -12952,6 +12963,11 @@ separately into the selected partition. False 1 True + + + False + + False @@ -13000,7 +13016,7 @@ separately into the selected partition. True False Encryption: - 1 + 0 False From f9e586ed540c2a9f848947e55a5d04ffa95c4c26 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:00:04 +0000 Subject: [PATCH 31/48] Fixed os components loading --- source/ubinstall-gtk-components.c | 2 +- ubinstall-gtk.glade | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index b75dab7..0f6034d 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -124,7 +124,7 @@ gboolean yon_os_component_insert(struct row_data *row_input){ gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1); yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description); char *modules = config(modules_parameter); - if (yon_char_is_empty(modules)){ + if (yon_char_is_empty(modules)||yon_char_check_element(modules,row_input->name,",")||!strcmp(modules,"auto")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } return G_SOURCE_REMOVE; diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index e997237..41ecd93 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -13055,6 +13055,7 @@ separately into the selected partition. True False Encryption password: + 0 False From 4513d0a30f6ee81f1eb824ddaebae8fe3222f152 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:20:36 +0000 Subject: [PATCH 32/48] Fixed autorun of applications add window --- source/ubinstall-gtk-startup-apps.c | 8 ++++---- source/ubl-strings.h | 3 +++ ubinstall-gtk.glade | 7 ------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c index 62b23bb..3ae0a4a 100644 --- a/source/ubinstall-gtk-startup-apps.c +++ b/source/ubinstall-gtk-startup-apps.c @@ -34,7 +34,7 @@ void on_startup_apps_remove(GtkWidget *self,main_window *widgets){ if (!deletable) return; dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); data->action_text = SERVICE_REMOVE_CONFIRMATION_LABEL(unit); - data->title = SERVICE_REMOVE_TITLE_LABEL; + data->title = APPLICATIONS_REMOVE_TITLE_LABEL; if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ gtk_list_store_remove(GTK_LIST_STORE(model),&iter); } @@ -155,7 +155,7 @@ startup_service_window *yon_startup_app_window_new(){ window->GroupLabel = yon_gtk_builder_get_widget(builder,"GroupLabel"); window->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); gtk_label_set_text(GTK_LABEL(window->AppLabel),APP_LABEL); - gtk_label_set_text(GTK_LABEL(window->AppLabel),GROUP_LABEL); + gtk_label_set_text(GTK_LABEL(window->GroupLabel),GROUP_LABEL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_object_set_data(G_OBJECT(window->AcceptButton),"startup_service_window",window); @@ -165,7 +165,7 @@ startup_service_window *yon_startup_app_window_new(){ void on_startup_app_add(GtkWidget *, main_window *widgets){ startup_service_window *window = yon_startup_app_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_ADD_TITLE_LABEL,icon_path,"app_add_window"); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),APPLICATIONS_ADD_TITLE_LABEL,icon_path,"app_add_window"); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_add_accept),widgets); gtk_widget_show(window->Window); } @@ -178,7 +178,7 @@ void on_startup_app_edit(GtkWidget *, main_window *widgets){ gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,1,&unit,2,&app,3,&description,4,&status,-1); if (status){ startup_service_window *window = yon_startup_app_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_EDIT_TITLE_LABEL,icon_path,"app_add_window"); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),APPLICATIONS_EDIT_TITLE_LABEL,icon_path,"app_add_window"); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_edit_accept),widgets); gtk_entry_set_text(GTK_ENTRY(window->UnitEntry),unit); gtk_entry_set_text(GTK_ENTRY(window->ServiceEntry),app); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 7229858..0b67ee3 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -187,6 +187,9 @@ NULL) #define SERVICE_ADD_TITLE_LABEL _("Add service") #define SERVICE_EDIT_TITLE_LABEL _("Edit service") #define SERVICE_REMOVE_TITLE_LABEL _("Remove service") +#define APPLICATIONS_ADD_TITLE_LABEL _("Add application") +#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 GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 41ecd93..640cbd8 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -300,13 +300,6 @@ - - True - False - - - - True False From e6c8a20fc4bb1ef21f18769d7e5e2266daba31ce Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:45:53 +0000 Subject: [PATCH 33/48] Fixed exiting application after installation success --- source/ubinstall-gtk.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 4da367d..3b05b14 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -392,6 +392,9 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ gtk_main_quit(); return 1; } + } else { + on_exit_accepted(widgets); + gtk_main_quit(); } } From accf8e7c73230775ab65d1729324d24cd7ababc0 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:49:32 +0000 Subject: [PATCH 34/48] Advanced widget layout fix --- ubinstall-gtk-advanced-box.glade | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ubinstall-gtk-advanced-box.glade b/ubinstall-gtk-advanced-box.glade index 386f53d..3ab7989 100644 --- a/ubinstall-gtk-advanced-box.glade +++ b/ubinstall-gtk-advanced-box.glade @@ -293,7 +293,7 @@ False True - 2 + 0 @@ -308,7 +308,19 @@ False True - 3 + 1 + + + + + True + False + Encryption password: + + + False + True + 2 @@ -352,18 +364,6 @@ 3 - - - True - False - Encryption password: - - - False - True - 4 - - False From 713d48bac6cdfbc6c23c761b14dd24686b059acf Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 18:07:00 +0000 Subject: [PATCH 35/48] Fixed horizontal scroll on advanced installation page --- ubinstall-gtk.glade | 1 + 1 file changed, 1 insertion(+) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 640cbd8..4fa449d 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -9307,6 +9307,7 @@ separately into the selected partition. True True + never True From e90cf496285d842ff41a1834d74651ff1e73b999 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 11:26:03 +0000 Subject: [PATCH 36/48] Fixed localisation for all codesets --- source/ubinstall-gtk-bootloader.c | 8 +++++--- source/ubinstall-gtk-ui-lang.c | 5 ++--- source/ubinstall-gtk.c | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index b493086..65f7229 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -164,7 +164,8 @@ 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); - bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8"); + bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8"); + textdomain("ublinux-init-grub-functions"); for (int i=1;iMenuWindow), GTK_WINDOW(widgets->MainWindow)); diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index ba8065f..2a5ff07 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -96,7 +96,7 @@ void yon_main_window_update_locale(main_window *widgets){ locale = setlocale(LC_ALL,locale); gtk_widget_destroy(widgets->MainWindow); - bind_textdomain_codeset(LocaleName,"UTF-8"); + textdomain(LocaleName); g_setenv("LANGUAGE",locale,1); yon_main_window_create(widgets); @@ -129,7 +129,6 @@ void set_locales_list(main_window *widgets){ qsort(locales,size,sizeof(char*),yon_char_parsed_compare); GtkTreeIter iter,itar; GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal); - bind_textdomain_codeset(LOCALES_DOMAIN_NAME,"UTF-8"); textdomain(LOCALES_DOMAIN_NAME); for (int i=0;iLicenceLabel),_(licence)); free(licence); yon_char_parsed_free(parsed,size); - bind_textdomain_codeset(LocaleName,"UTF-8"); + textdomain(LocaleName); } } gtk_builder_connect_signals(builder,NULL); @@ -1001,7 +1002,7 @@ main_window *yon_main_window_complete(){ int main(int argc, char *argv[]){ __attribute__((unused)) char *locale = setlocale(LC_ALL, ""); - bind_textdomain_codeset(LocaleName,"UTF-8"); + textdomain(LocaleName); yon_ubl_connect_config((_template_config*)&main_config); config_init(); config_str unfound = NULL; From 076eef9b13cd2f5d08080d3b402fe2513643656c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 12:58:00 +0000 Subject: [PATCH 37/48] Localisation fixes --- locale/ubinstall-gtk.pot | 4 ++++ locale/ubinstall-gtk_ru.po | 4 ++++ source/ubinstall-gtk-kernel.c | 2 +- source/ubinstall-gtk.c | 2 -- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index 596c180..b6131e1 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -695,6 +695,10 @@ msgstr "" msgid "Remove service" msgstr "" +#: source/ubl-strings.h:209 +msgid "Add application" +msgstr "" + #: source/ubl-strings.h:209 msgid "is already exists. Do you really want to save user" msgstr "" diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 958dd77..a566b53 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -724,6 +724,10 @@ msgstr "Изменить службу" msgid "Remove service" msgstr "Удалить службу" +#: source/ubl-strings.h:209 +msgid "Add application" +msgstr "Добавить приложение" + #: source/ubl-strings.h:209 msgid "is already exists. Do you really want to save user" msgstr "уже существует. Вы уверены что хотите сохранить пользователя" diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 4babcb8..f6b5841 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -243,7 +243,7 @@ void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row){ void on_kernel_addon_info(GtkLabel *self){ yon_window *window = yon_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,icon_path,"info-label"); + yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PACKAGE_INFO_LABEL,icon_path,"info-label"); char *package=NULL; package = yon_char_new(gtk_label_get_text(self)); int size; diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index c47d80b..2219bd0 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -376,8 +376,6 @@ void on_exit_accepted(main_window *){ } main_config.exit_accepted=1; while(gtk_events_pending()) gtk_main_iteration(); - // gtk_widget_destroy(widgets->MainWindow); - // gtk_main_quit(); } gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ From da8e85a0023fbe419493a520138208be4a0d0679 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 13:45:02 +0000 Subject: [PATCH 38/48] Installer language page changes --- locale/ubinstall-gtk_ru.po | 2 +- source/ubinstall-gtk-config-hub.c | 8 ++++---- ubinstall-gtk.glade | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index a566b53..33baffb 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -987,7 +987,7 @@ msgstr "Группа" #: source/ubl-strings.h:292 msgid "Select your language:" -msgstr "Выберете язык:" +msgstr "Выберите язык:" #: source/ubl-strings.h:293 msgid "Selecting additional system kernel components" diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c index 61415eb..fc05cea 100644 --- a/source/ubinstall-gtk-config-hub.c +++ b/source/ubinstall-gtk-config-hub.c @@ -153,10 +153,10 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0); - gtk_widget_set_margin_bottom(cur_icon->MainBox,10); - gtk_widget_set_margin_top(cur_icon->MainBox,10); - gtk_widget_set_margin_start(cur_icon->MainBox,10); - gtk_widget_set_margin_end(cur_icon->MainBox,10); + // gtk_widget_set_margin_bottom(cur_icon->MainBox,5); + // gtk_widget_set_margin_top(cur_icon->MainBox,5); + // gtk_widget_set_margin_start(cur_icon->MainBox,5); + // gtk_widget_set_margin_end(cur_icon->MainBox,5); gtk_flow_box_insert(target,flow,-1); gtk_widget_show_all(flow); free(name_wrapped); diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 4fa449d..80d5e8e 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -962,7 +962,7 @@ agreement False Select your language: - + From bff1147a40440abac0cf4a5f50d6248cc0933fdc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 18:19:53 +0000 Subject: [PATCH 39/48] WIP package info window text changes --- source/ubinstall-gtk-kernel.c | 40 ++++++++++++++++++++++++----------- source/ubinstall-gtk-saving.c | 3 +++ source/ubinstall-gtk.h | 1 + ubinstall-gtk.glade | 2 +- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index f6b5841..3b4dd71 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -246,7 +246,7 @@ void on_kernel_addon_info(GtkLabel *self){ yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PACKAGE_INFO_LABEL,icon_path,"info-label"); char *package=NULL; package = yon_char_new(gtk_label_get_text(self)); - int size; + // int size; if (strstr(package,",")){ @@ -256,18 +256,34 @@ void on_kernel_addon_info(GtkLabel *self){ } GtkWidget *label = NULL; - config_str info = yon_config_load(get_package_info_command(package),&size); - if (size!=-1){ - char *final_text = yon_char_parsed_to_string(info,size,""); - label = gtk_label_new(final_text); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); - free(final_text); - } else { - label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + { + yon_packages_info *info = yon_packages_get_info_struct(YON_PACKAGES_ALL,package); + char *info_string = yon_packages_get_info_string(info); + + if (!yon_char_is_empty(info_string)){ + label = gtk_label_new(NULL); + char *temp = yon_char_replace(info_string,"@",""); + gtk_label_set_markup(GTK_LABEL(label),temp); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + } else { + label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + } } + // config_str info = yon_config_load(get_package_info_command(package),&size); + // if (size!=-1){ + // char *final_text = yon_char_parsed_to_string(info,size,""); + // label = gtk_label_new(final_text); + // gtk_widget_show(label); + // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + // free(final_text); + // } else { + // label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); + // gtk_widget_show(label); + // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + // } gtk_label_set_xalign(GTK_LABEL(label),0); gtk_widget_show(window->Window); } diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index 77c8e17..a469abd 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -292,6 +292,9 @@ 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 (main_config.debug_mode){ + // yon_launch(ubinstall_dry_run_command); + // } if (system(yon_debug_output("%s\n",command))){}; yon_char_parsed_free(all_parameters,size); free(command); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 1f7819d..bc8a49a 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -142,6 +142,7 @@ layout && /description:/ {\ }\ \" | sort -u\ " +#define ubinstall_dry_run_command "ubinstall2 --dry-run" #define os_name_get_command "sed -En 's/^PRETTY_NAME=[\"]*([^\"]+)[\"]*/\\1/p' /etc/os-release" #define get_keyboard_layout_change_command "grep \"grp:\" /usr/share/X11/xkb/rules/base.lst | awk '{$1=$1; sub(/^!.*$/, \"\"); if ($1 ~ /^grp:/) {opt=$1; $1=\"\"; print opt \"|\" substr($0,2)}}'" diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 80d5e8e..4cb9099 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -947,7 +947,7 @@ agreement True False - 32 + 24 com.ublinux.ubinstall-gtk.translation-symbolic From 2494cfee413d2051066afc50e9971ecb38d6dc3e Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 10:57:40 +0000 Subject: [PATCH 40/48] Fixed package info output --- gresource.xml | 1 + source/CMakeLists.txt | 1 + source/ubinstall-gtk-kernel.c | 91 ++++++++++++++++++++++---------- source/ubinstall-gtk.h | 3 +- ubinstall-gtk-package-info.glade | 68 ++++++++++++++++++++++++ 5 files changed, 136 insertions(+), 28 deletions(-) create mode 100644 ubinstall-gtk-package-info.glade diff --git a/gresource.xml b/gresource.xml index eaee9ad..4c2b01f 100644 --- a/gresource.xml +++ b/gresource.xml @@ -22,6 +22,7 @@ ubinstall-gtk-layouts.glade ubinstall-gtk-keyboard-layouts.glade ubinstall-gtk-slider.glade + ubinstall-gtk-package-info.glade ubinstall-gtk.css diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index d4ce9e5..0c2e995 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -62,6 +62,7 @@ set(DEPENDFILES ../ubinstall-gtk-layouts.glade ../ubinstall-gtk-keyboard-layouts.glade ../ubinstall-gtk-slider.glade + ../ubinstall-gtk-package-info.glade ../gresource.xml ../ubinstall-gtk.css ../modules.csv diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 3b4dd71..7cefc09 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -240,13 +240,41 @@ void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row){ } } +void yon_gtk_label_set_font(GtkLabel *label); +void yon_gtk_label_set_font(GtkLabel *label){ + g_return_if_fail(GTK_IS_LABEL(label)); + PangoAttrList *attributes = pango_attr_list_new(); + PangoFontDescription *font_descr = pango_font_description_new(); + pango_font_description_set_family(font_descr,"Source Code Pro 10"); + PangoAttribute *font_attr = pango_attr_font_desc_new(font_descr); + pango_attr_list_insert(attributes,font_attr); + gtk_label_set_attributes(GTK_LABEL(label),attributes); +} + +typedef struct { + GtkWidget *MainBox; + GtkWidget *InfoTree; + GtkListStore *InfoList; +} info_element; + +info_element *yon_package_info_element_new(); +info_element *yon_package_info_element_new(){ + info_element *element = malloc(sizeof(info_element)); + memset(element,0,sizeof(info_element)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_package_info); + element->MainBox = yon_gtk_builder_get_widget(builder,"MainBox"); + element->InfoTree = yon_gtk_builder_get_widget(builder,"InfoTree"); + element->InfoList = GTK_LIST_STORE(gtk_builder_get_object(builder,"InfoList")); + + return element; +} void on_kernel_addon_info(GtkLabel *self){ yon_window *window = yon_window_new(); yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PACKAGE_INFO_LABEL,icon_path,"info-label"); char *package=NULL; package = yon_char_new(gtk_label_get_text(self)); - // int size; + int size; if (strstr(package,",")){ @@ -256,35 +284,44 @@ void on_kernel_addon_info(GtkLabel *self){ } GtkWidget *label = NULL; - { - yon_packages_info *info = yon_packages_get_info_struct(YON_PACKAGES_ALL,package); - char *info_string = yon_packages_get_info_string(info); + // { + // yon_packages_info *info = yon_packages_get_info_struct(YON_PACKAGES_ALL,package); + // char *info_string = yon_packages_get_info_string(info); - if (!yon_char_is_empty(info_string)){ - label = gtk_label_new(NULL); - char *temp = yon_char_replace(info_string,"@",""); - gtk_label_set_markup(GTK_LABEL(label),temp); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); - } else { - label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); - } - } - // config_str info = yon_config_load(get_package_info_command(package),&size); - // if (size!=-1){ - // char *final_text = yon_char_parsed_to_string(info,size,""); - // label = gtk_label_new(final_text); - // gtk_widget_show(label); - // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); - // free(final_text); - // } else { - // label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); - // gtk_widget_show(label); - // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + // if (!yon_char_is_empty(info_string)){ + // label = gtk_label_new(NULL); + // yon_gtk_label_set_font(GTK_LABEL(label)); + // char *temp = info_string; + // gtk_label_set_markup(GTK_LABEL(label),temp); + // gtk_widget_show(label); + // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + // } else { + // label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); + // yon_gtk_label_set_font(GTK_LABEL(label)); + // gtk_widget_show(label); + // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + // } // } + config_str info = yon_config_load(get_package_info_command(package),&size); + if (size!=-1){ + info_element *element = yon_package_info_element_new(); + gtk_box_pack_start(GTK_BOX(window->MainBox),element->MainBox,1,1,0); + for (int i=0;iInfoList,&iter); + gtk_list_store_set(element->InfoList,&iter,0,parsed[0],1,parsed[1],-1); + + } + } else { + label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); + yon_gtk_label_set_font(GTK_LABEL(label)); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); gtk_label_set_xalign(GTK_LABEL(label),0); + } gtk_widget_show(window->Window); } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index bc8a49a..a8be308 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -39,6 +39,7 @@ #define glade_locales_path "/com/ublinux/ui/ubinstall-gtk-layouts.glade" #define glade_layouts_path "/com/ublinux/ui/ubinstall-gtk-keyboard-layouts.glade" #define glade_path_slider "/com/ublinux/ui/ubinstall-gtk-slider.glade" +#define glade_path_package_info "/com/ublinux/ui/ubinstall-gtk-package-info.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) @@ -298,7 +299,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_append("pacman -Si ", target) +#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" diff --git a/ubinstall-gtk-package-info.glade b/ubinstall-gtk-package-info.glade new file mode 100644 index 0000000..4d537d2 --- /dev/null +++ b/ubinstall-gtk-package-info.glade @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + True + False + vertical + + + True + True + in + + + True + True + InfoList + False + False + vertical + + + none + + + + + column + + + + 0 + + + + + + + column + + + + 1 + + + + + + + + + True + True + 0 + + + + From fe10ea82e3ebad70b9bfde9940f138c05c520d77 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 11:07:03 +0000 Subject: [PATCH 41/48] Fixed configuration hub elements label wrapping --- source/ubinstall-gtk-config-hub.c | 6 +----- source/ubinstall-gtk-kernel.c | 18 ------------------ 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c index fc05cea..0edfcb5 100644 --- a/source/ubinstall-gtk-config-hub.c +++ b/source/ubinstall-gtk-config-hub.c @@ -140,7 +140,7 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE); - char *name_wrapped = yon_char_wrap_to_length_str(name,10); + char *name_wrapped = yon_char_wrap_to_length_str(name,30); cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); cur_icon->Label = gtk_label_new(name_wrapped); cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL)); @@ -153,10 +153,6 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0); - // gtk_widget_set_margin_bottom(cur_icon->MainBox,5); - // gtk_widget_set_margin_top(cur_icon->MainBox,5); - // gtk_widget_set_margin_start(cur_icon->MainBox,5); - // gtk_widget_set_margin_end(cur_icon->MainBox,5); gtk_flow_box_insert(target,flow,-1); gtk_widget_show_all(flow); free(name_wrapped); diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 7cefc09..f199159 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -284,24 +284,6 @@ void on_kernel_addon_info(GtkLabel *self){ } GtkWidget *label = NULL; - // { - // yon_packages_info *info = yon_packages_get_info_struct(YON_PACKAGES_ALL,package); - // char *info_string = yon_packages_get_info_string(info); - - // if (!yon_char_is_empty(info_string)){ - // label = gtk_label_new(NULL); - // yon_gtk_label_set_font(GTK_LABEL(label)); - // char *temp = info_string; - // gtk_label_set_markup(GTK_LABEL(label),temp); - // gtk_widget_show(label); - // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); - // } else { - // label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); - // yon_gtk_label_set_font(GTK_LABEL(label)); - // gtk_widget_show(label); - // gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); - // } - // } config_str info = yon_config_load(get_package_info_command(package),&size); if (size!=-1){ info_element *element = yon_package_info_element_new(); From 4aa09c6023b8bfc8aea78ec2406dbd7571540621 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 11:47:55 +0000 Subject: [PATCH 42/48] Language search improvements --- source/ubinstall-gtk-ui-lang.c | 10 ++++++++++ source/ubinstall-gtk.c | 2 ++ source/ubinstall-gtk.h | 3 ++- ubinstall-gtk.glade | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 2a5ff07..79e0184 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -119,6 +119,15 @@ int yon_char_parsed_compare(const void *a, const void *b){ return strcmp(*str_a,*str_b); } +gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){ + char *language, *language_localised; + gtk_tree_model_get(model,iter,1,&language,4,&language_localised,-1); + if (strstr(language,key)||strstr(language_localised,key)){ + return 0; + } + return 1; +} + void set_locales_list(main_window *widgets){ gtk_list_store_clear(widgets->InstallerLanguageList); gtk_list_store_clear(widgets->InstallerCountryList); @@ -152,6 +161,7 @@ void set_locales_list(main_window *widgets){ 1,_(language), 2,lang_name, 3,locales[i], + 4,language, -1); } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 2219bd0..f785b7b 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -870,6 +870,8 @@ void yon_main_window_create(main_window *widgets){ gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); + gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL); + { widgets->EnableRDPMenuItem = gtk_menu_item_new(); GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index a8be308..d5cc5dd 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1461,4 +1461,5 @@ 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_startup_language_init(); \ No newline at end of file +void yon_startup_language_init(); +gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 4cb9099..4fbb1d6 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -108,6 +108,8 @@ + + From 5d0c7df8a4e20eb0fe4c33317cfd056c7e1d5409 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 13:49:03 +0000 Subject: [PATCH 43/48] Changed back button logic --- source/ubinstall-gtk-page-switch.c | 33 +++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index e457726..053c0d8 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -58,7 +58,38 @@ enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){ case YON_PAGE_WELCOME: return YON_PAGE_WELCOME; break; case YON_PAGE_LICENCE: return YON_PAGE_WELCOME; break; case YON_PAGE_SECTIONS: return YON_PAGE_LICENCE; break; - case YON_PAGE_OS_COMPONENTS: return YON_PAGE_SECTIONS; break; + case YON_PAGE_OS_COMPONENTS: { + char *install_type = config(AUTOINSTALL_TYPE_INSTALL); + if (!strcmp(install_type,"fast")){ + return YON_PAGE_INSTALL_COMMON; break; + } else if (!strcmp(install_type,"next")){ + return YON_PAGE_INSTALL_SEPARATE; break; + } else if (!strcmp(install_type,"part")){ + return YON_PAGE_INSTALL_SAME_PARTITION; break; + } else if (!strcmp(install_type,"custom")){ + return YON_PAGE_INSTALL_ADVANCED; break; + } else if (!strcmp(install_type,"grub_install")){ + return YON_PAGE_RECOVERY_GRUB_INSTALL; break; + } else if (!strcmp(install_type,"grub_update")){ + return YON_PAGE_RECOVERY_GRUB_UPDATE; break; + } else if (!strcmp(install_type,"system_only")){ + return YON_PAGE_RECOVERY_OS_ONLY; break; + } else if (!strcmp(install_type,"data_only")){ + return YON_PAGE_RECOVERY_USRDATA_ONLY; break; + } + } break; + case YON_PAGE_RECOVERY_BEGIN:{ + char *install_type = config(AUTOINSTALL_TYPE_INSTALL); + if (!strcmp(install_type,"grub_install")){ + return YON_PAGE_RECOVERY_GRUB_INSTALL; break; + } else if (!strcmp(install_type,"grub_update")){ + return YON_PAGE_RECOVERY_GRUB_UPDATE; break; + } else if (!strcmp(install_type,"system_only")){ + return YON_PAGE_RECOVERY_OS_ONLY; break; + } else if (!strcmp(install_type,"data_only")){ + return YON_PAGE_RECOVERY_USRDATA_ONLY; break; + } + } break; case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_CONFIG_HUB: return YON_PAGE_CONFIG_HUB; break; From 25d01cea30bc89446ad3c592446bf1e6b98b16af Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 16:48:13 +0000 Subject: [PATCH 44/48] Added optional dependence - timezonemap --- source/CMakeLists.txt | 16 ++++++++++++++++ source/ubinstall-gtk-region.c | 31 +++++++++++++++++++++++++++++++ source/ubinstall-gtk.c | 3 +++ source/ubinstall-gtk.h | 5 ++++- ubinstall-gtk.glade | 30 ++++++++++++++++++++++++++++-- 5 files changed, 82 insertions(+), 3 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 0c2e995..3706494 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -23,7 +23,13 @@ include_directories(${PWQUALITY_INCLUDE_DIRS}) link_directories(${PWQUALITY_LIBRARY_DIRS}) add_definitions(${PWQUALITY_CFLAGS_OTHER}) +# pkg_check_modules(TIMEZONEMAP REQUIRED timezonemap) +# include_directories(${TIMEZONEMAP_INCLUDE_DIRS}) +# link_directories(${TIMEZONEMAP_LIBRARY_DIRS}) +# add_definitions(${TIMEZONEMAP_CFLAGS_OTHER}) + find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) +find_library(TIMEZONEMAP_LIBRARIES_FOUND timezonemap) option(WEBKIT_FOUND "No" OFF) if(WEBKIT_LIBRARIES_FOUND) @@ -33,6 +39,14 @@ if(WEBKIT_LIBRARIES_FOUND) link_directories(${WEBKIT_LIBRARY_DIRS}) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() +if(TIMEZONEMAP_LIBRARIES_FOUND) + message("TIMEZONEMAP ENABLED") + add_definitions(-DTIMEZONEMAP_INCLUDE) + PKG_CHECK_MODULES(TIMEZONEMAP REQUIRED timezonemap) + include_directories(${TIMEZONEMAP_INCLUDE_DIRS}) + link_directories(${TIMEZONEMAP_LIBRARY_DIRS}) + add_definitions(${TIMEZONEMAP_CFLAGS_OTHER}) +endif() set(GRESOURCE_C resources.c) set(GRESOURCE_XML gresource.xml) @@ -156,8 +170,10 @@ set(LIBRARIES ${VTE291_LIBRARIES} ${JSON_LIBRARIES} ${PWQUALITY_LIBRARIES} + ${TIMEZONEMAP_LIBRARIES} pthread ublsettings + timezonemap ublsettings-gtk3 ublsettingsui-gtk3 ) diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 1870f43..f08be53 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -1,4 +1,5 @@ #include "ubinstall-gtk.h" +#include "timezonemap/cc-timezone-map.h" int yon_region_save(main_window *widgets){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){ @@ -34,7 +35,37 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ free(active); } +void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *); +void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){ + char *zone = yon_char_new(cc_timezone_location_get_zone(location)); + char *timezone = yon_char_divide_search(zone,"/",-1); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone); + while(gtk_events_pending()) gtk_main_iteration(); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); +} + + void yon_region_init(main_window *widgets){ + #ifdef TIMEZONEMAP_INCLUDE + yon_debug_output("%s\n","TIMEZONEMAP enabled"); + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox)); + if (list){ + GList *iter; + for (iter = list; iter; iter=iter->next){ + gtk_widget_destroy(iter->data); + } + g_list_free(list); + } + widgets->RegionMapTarget = GTK_WIDGET(cc_timezone_map_new()); + gtk_box_pack_start(GTK_BOX(widgets->RegionMapBox),GTK_WIDGET(widgets->RegionMapTarget),1,1,0); + g_signal_connect(G_OBJECT(widgets->RegionMapTarget),"location-changed",G_CALLBACK(on_map_selection_changed),widgets); + gtk_widget_show(GTK_WIDGET(widgets->RegionMapTarget)); + char *config_param = config(zone_parameter); + if (!yon_char_is_empty(config_param)){ + cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),config_param); + // cc_timezone_map_set_location(CC_TIMEZONE_MAP(widgets->RegionMapTarget),lon, lat); + } + #endif int size; config_str parsed = NULL; parsed = yon_dir_get_contents(zone_path,&size); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index f785b7b..773d5fe 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -564,6 +564,8 @@ void yon_main_window_create(main_window *widgets){ widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter")); widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList")); // widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo"); + widgets->RegionMapBox=yon_gtk_builder_get_widget(builder,"RegionMapBox"); + widgets->RegionMapTarget=NULL; widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo"); widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch"); @@ -750,6 +752,7 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo); + g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionMapBox); g_signal_connect(G_OBJECT(widgets->KeyboardLayoutTree),"cursor-changed",G_CALLBACK(on_layout_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index d5cc5dd..698d945 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -496,6 +496,10 @@ typedef struct GtkListStore *InstallerLanguageList; GtkTreeModel *InstallerCountryFilter; // GtkWidget *LanguageCombo; + + GtkWidget *RegionMapBox; + GtkWidget *RegionMapTarget; + GtkWidget *RegionSensitiveSwitch; GtkWidget *RegionCombo; GtkWidget *ZoneCombo; @@ -640,7 +644,6 @@ typedef struct GtkTreeModel *LanguagesFilter; GtkTreeModel *LayoutsFilter; - GtkWidget *RegionSensitiveSwitch; GtkWidget *HostnameSensitiveSwitch; GtkWidget *KernelListBox; diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 4fbb1d6..587d466 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -3643,7 +3643,6 @@ agreement True False center - 10 5 @@ -3746,6 +3745,32 @@ agreement False True + end + 0 + + + + + True + False + 0 + none + 35.299999237060547 + + + True + False + False + vertical + + + + + + + + True + True 0 @@ -3757,12 +3782,13 @@ agreement False True + end 1 - False + True True 3 From d15d49d30cf4095dce1948d3a6d12e9b8da1290f Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 18:04:05 +0000 Subject: [PATCH 45/48] Time zone map fixes --- source/ubinstall-gtk-region.c | 23 +++++++++++++++++++++-- source/ubinstall-gtk.c | 3 +++ source/ubinstall-gtk.h | 3 +++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index f08be53..cbb8b4c 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -1,5 +1,7 @@ #include "ubinstall-gtk.h" + #ifdef TIMEZONEMAP_INCLUDE #include "timezonemap/cc-timezone-map.h" +#endif int yon_region_save(main_window *widgets){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){ @@ -19,6 +21,19 @@ int yon_region_save(main_window *widgets){ return 1; } + #ifdef TIMEZONEMAP_INCLUDE +void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *); +void on_zone_changed(GtkWidget *, main_window *widgets){ + g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + + 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 *timezone = yon_char_unite(region,"/",zone,NULL); + cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); +} + #endif + void on_region_changed(GtkComboBox *self, main_window *widgets){ char *active = (char*)gtk_combo_box_get_active_id(self); active = yon_char_append("/usr/share/zoneinfo/",active); @@ -35,15 +50,19 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ free(active); } -void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *); + #ifdef TIMEZONEMAP_INCLUDE void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){ + if (!location) return; + g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); char *zone = yon_char_new(cc_timezone_location_get_zone(location)); char *timezone = yon_char_divide_search(zone,"/",-1); gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone); while(gtk_events_pending()) gtk_main_iteration(); gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); -} + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); +} +#endif void yon_region_init(main_window *widgets){ #ifdef TIMEZONEMAP_INCLUDE diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 773d5fe..b8e855d 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -749,7 +749,10 @@ void yon_main_window_create(main_window *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); + #ifdef TIMEZONEMAP_INCLUDE g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); + g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(on_zone_changed),widgets); + #endif g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionMapBox); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 698d945..16eee29 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1187,7 +1187,10 @@ void on_partition_changed(GtkWidget *self, main_window *widgets); void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_size, GtkComboBox *size_type); gboolean on_yon_exit(GtkWidget *, GdkEvent *, main_window *widgets); void on_locale_changed(GtkWidget *, main_window *); +#ifdef TIMEZONEMAP_INCLUDE void on_region_changed(GtkComboBox *self, main_window *widgets); +#endif +void on_zone_changed(GtkWidget *, main_window *widgets); void on_page_cancel_clicked(GtkWidget *, main_window *widgets); int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree, char *mode, main_window *widgets); void on_process_log_view(GtkWidget *, main_window *widgets); From 7b947387dd78d80982dc0405936c83c7cb371e25 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 18:29:47 +0000 Subject: [PATCH 46/48] Localisation fixes --- locale/ubinstall-gtk.pot | 1599 ++++++++++++++++++++++++++++++++ locale/ubinstall-gtk_ru.po | 1797 ++++++++++++++++++++++++++++++++++++ 2 files changed, 3396 insertions(+) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index b6131e1..cf10456 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -1824,3 +1824,1602 @@ msgid "" "Allows system booting for diskless and standard workstations over a local " "network or the Internet (even over slow connection channels)." msgstr "" + +msgid "Generic 86-key PC" +msgstr "" + +msgid "Generic 101-key PC" +msgstr "" + +msgid "Generic 102-key PC" +msgstr "" + +msgid "Generic 104-key PC" +msgstr "" + +msgid "Generic 104-key PC with L-shaped Enter key" +msgstr "" + +msgid "Generic 105-key PC" +msgstr "" + +msgid "Dell 101-key PC" +msgstr "" + +msgid "Abidjan" +msgstr "" + +msgid "Accra" +msgstr "" + +msgid "Acre" +msgstr "" + +msgid "Adak" +msgstr "" + +msgid "Addis_Ababa" +msgstr "" + +msgid "Adelaide" +msgstr "" + +msgid "Aden" +msgstr "" + +msgid "Africa" +msgstr "" + +msgid "Alaska" +msgstr "" + +msgid "Aleutian" +msgstr "" + +msgid "Algiers" +msgstr "" + +msgid "Almaty" +msgstr "" + +msgid "America" +msgstr "" + +msgid "Amman" +msgstr "" + +msgid "Amsterdam" +msgstr "" + +msgid "Anadyr" +msgstr "" + +msgid "Anchorage" +msgstr "" + +msgid "Andorra" +msgstr "" + +msgid "Anguilla" +msgstr "" + +msgid "Antananarivo" +msgstr "" + +msgid "Antarctica" +msgstr "" + +msgid "Antigua" +msgstr "" + +msgid "Apia" +msgstr "" + +msgid "Aqtau" +msgstr "" + +msgid "Aqtobe" +msgstr "" + +msgid "Araguaina" +msgstr "" + +msgid "Arctic" +msgstr "" + +msgid "Arizona" +msgstr "" + +msgid "Aruba" +msgstr "" + +msgid "Ashgabat" +msgstr "" + +msgid "Ashkhabad" +msgstr "" + +msgid "Asia" +msgstr "" + +msgid "Asmara" +msgstr "" + +msgid "Asmera" +msgstr "" + +msgid "Astrakhan" +msgstr "" + +msgid "Asuncion" +msgstr "" + +msgid "Athens" +msgstr "" + +msgid "Atikokan" +msgstr "" + +msgid "Atka" +msgstr "" + +msgid "Atlantic" +msgstr "" + +msgid "Atyrau" +msgstr "" + +msgid "Auckland" +msgstr "" + +msgid "Australia" +msgstr "" + +msgid "Azores" +msgstr "" + +msgid "Baghdad" +msgstr "" + +msgid "Bahia" +msgstr "" + +msgid "Bahia_Banderas" +msgstr "" + +msgid "Bahrain" +msgstr "" + +msgid "BajaNorte" +msgstr "" + +msgid "BajaSur" +msgstr "" + +msgid "Baku" +msgstr "" + +msgid "Bamako" +msgstr "" + +msgid "Bangkok" +msgstr "" + +msgid "Bangui" +msgstr "" + +msgid "Banjul" +msgstr "" + +msgid "Barbados" +msgstr "" + +msgid "Barnaul" +msgstr "" + +msgid "Beirut" +msgstr "" + +msgid "Belem" +msgstr "" + +msgid "Belfast" +msgstr "" + +msgid "Belgrade" +msgstr "" + +msgid "Belize" +msgstr "" + +msgid "Berlin" +msgstr "" + +msgid "Bermuda" +msgstr "" + +msgid "Beulah" +msgstr "" + +msgid "Bishkek" +msgstr "" + +msgid "Bissau" +msgstr "" + +msgid "Blanc-Sablon" +msgstr "" + +msgid "Blantyre" +msgstr "" + +msgid "Boa_Vista" +msgstr "" + +msgid "Bogota" +msgstr "" + +msgid "Boise" +msgstr "" + +msgid "Bougainville" +msgstr "" + +msgid "Bratislava" +msgstr "" + +msgid "Brazil" +msgstr "" + +msgid "Brazzaville" +msgstr "" + +msgid "Brisbane" +msgstr "" + +msgid "Broken_Hill" +msgstr "" + +msgid "Brunei" +msgstr "" + +msgid "Brussels" +msgstr "" + +msgid "Bucharest" +msgstr "" + +msgid "Budapest" +msgstr "" + +msgid "Buenos_Aires" +msgstr "" + +msgid "Bujumbura" +msgstr "" + +msgid "Busingen" +msgstr "" + +msgid "Cairo" +msgstr "" + +msgid "Calcutta" +msgstr "" + +msgid "Cambridge_Bay" +msgstr "" + +msgid "Campo_Grande" +msgstr "" + +msgid "Canada" +msgstr "" + +msgid "Canary" +msgstr "" + +msgid "Canberra" +msgstr "" + +msgid "Cancun" +msgstr "" + +msgid "Cape_Vepde" +msgstr "" + +msgid "Cape_Verde" +msgstr "" + +msgid "Caracas" +msgstr "" + +msgid "Casablanca" +msgstr "" + +msgid "Casey" +msgstr "" + +msgid "Catamarca" +msgstr "" + +msgid "Cayenne" +msgstr "" + +msgid "Cayman" +msgstr "" + +msgid "Center" +msgstr "" + +msgid "Central" +msgstr "" + +msgid "Ceuta" +msgstr "" + +msgid "Chagos" +msgstr "" + +msgid "Chatham" +msgstr "" + +msgid "Chicago" +msgstr "" + +msgid "Chihuahua" +msgstr "" + +msgid "Chile" +msgstr "" + +msgid "Chisinau" +msgstr "" + +msgid "Chita" +msgstr "" + +msgid "Choibalsan" +msgstr "" + +msgid "Chongqing" +msgstr "" + +msgid "Christmas" +msgstr "" + +msgid "Chungking" +msgstr "" + +msgid "Chuuk" +msgstr "" + +msgid "Ciudad_Juarez" +msgstr "" + +msgid "Clock" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Cocos" +msgstr "" + +msgid "Colombo" +msgstr "" + +msgid "ComodRivadavia" +msgstr "" + +msgid "Comoro" +msgstr "" + +msgid "Conakry" +msgstr "" + +msgid "Continental" +msgstr "" + +msgid "Copenhagen" +msgstr "" + +msgid "Coral_Harbour" +msgstr "" + +msgid "Cordoba" +msgstr "" + +msgid "Costa_Rica" +msgstr "" + +msgid "Creston" +msgstr "" + +msgid "Cuiaba" +msgstr "" + +msgid "Curacao" +msgstr "" + +msgid "Currie" +msgstr "" + +msgid "Dacca" +msgstr "" + +msgid "Dakar" +msgstr "" + +msgid "Damascus" +msgstr "" + +msgid "Danmarkshavn" +msgstr "" + +msgid "Dar_es_Salaam" +msgstr "" + +msgid "Darwin" +msgstr "" + +msgid "Davis" +msgstr "" + +msgid "Dawson" +msgstr "" + +msgid "Dawson_Creek" +msgstr "" + +msgid "DeNoronha" +msgstr "" + +msgid "Denver" +msgstr "" + +msgid "Detroit" +msgstr "" + +msgid "Dhaka" +msgstr "" + +msgid "Dili" +msgstr "" + +msgid "Djibouti" +msgstr "" + +msgid "Dominica" +msgstr "" + +msgid "Douala" +msgstr "" + +msgid "Dubai" +msgstr "" + +msgid "Dublin" +msgstr "" + +msgid "DumontDUrville" +msgstr "" + +msgid "Dushanbe" +msgstr "" + +msgid "ERROR" +msgstr "" + +msgid "East" +msgstr "" + +msgid "East-Indiana" +msgstr "" + +msgid "Easter" +msgstr "" + +msgid "EasterIsland" +msgstr "" + +msgid "Easterlsland" +msgstr "" + +msgid "Eastern" +msgstr "" + +msgid "Edmonton" +msgstr "" + +msgid "Efate" +msgstr "" + +msgid "Eirunepe" +msgstr "" + +msgid "El_Aaiun" +msgstr "" + +msgid "El_Salvador" +msgstr "" + +msgid "Enderbury" +msgstr "" + +msgid "Ensenada" +msgstr "" + +msgid "Eucla" +msgstr "" + +msgid "Europe" +msgstr "" + +msgid "Faeroe" +msgstr "" + +msgid "Fakaofo" +msgstr "" + +msgid "Famagusta" +msgstr "" + +msgid "Faroe" +msgstr "" + +msgid "Fiji" +msgstr "" + +msgid "Fort_Nelson" +msgstr "" + +msgid "Fort_Wayne" +msgstr "" + +msgid "Fortaleza" +msgstr "" + +msgid "Freetown" +msgstr "" + +msgid "Funafuti" +msgstr "" + +msgid "GMT-1" +msgstr "" + +msgid "GMT-3" +msgstr "" + +msgid "Gaborone" +msgstr "" + +msgid "Galapagos" +msgstr "" + +msgid "Gambier" +msgstr "" + +msgid "Gaza" +msgstr "" + +msgid "General" +msgstr "" + +msgid "Gibraltar" +msgstr "" + +msgid "Glace_Bay" +msgstr "" + +msgid "Godthab" +msgstr "" + +msgid "Goose_Bay" +msgstr "" + +msgid "Grand_Turk" +msgstr "" + +msgid "Greenwich" +msgstr "" + +msgid "Grenada" +msgstr "" + +msgid "Guadalcanal" +msgstr "" + +msgid "Guadeloupe" +msgstr "" + +msgid "Guam" +msgstr "" + +msgid "Guatemala" +msgstr "" + +msgid "Guayaquil" +msgstr "" + +msgid "Guernsey" +msgstr "" + +msgid "Guyana" +msgstr "" + +msgid "Halifax" +msgstr "" + +msgid "Harare" +msgstr "" + +msgid "Harbin" +msgstr "" + +msgid "Havana" +msgstr "" + +msgid "Hawaii" +msgstr "" + +msgid "Hebron" +msgstr "" + +msgid "Helsinki" +msgstr "" + +msgid "Hermosillo" +msgstr "" + +msgid "Ho_Chi_Minh" +msgstr "" + +msgid "Hobart" +msgstr "" + +msgid "Hong_Kong" +msgstr "" + +msgid "Honolulu" +msgstr "" + +msgid "Hovd" +msgstr "" + +msgid "Indian" +msgstr "" + +msgid "Indiana" +msgstr "" + +msgid "Indiana-Starke" +msgstr "" + +msgid "Indianapolis" +msgstr "" + +msgid "Inuvik" +msgstr "" + +msgid "Iqaluit" +msgstr "" + +msgid "Irkutsk" +msgstr "" + +msgid "Isle_of_Man" +msgstr "" + +msgid "Istanbul" +msgstr "" + +msgid "Jakarta" +msgstr "" + +msgid "Jamaica" +msgstr "" + +msgid "Jan_Mayen" +msgstr "" + +msgid "Jayapura" +msgstr "" + +msgid "Jersey" +msgstr "" + +msgid "Jerusalem" +msgstr "" + +msgid "Johannesburg" +msgstr "" + +msgid "Johnston" +msgstr "" + +msgid "Juba" +msgstr "" + +msgid "Jujuy" +msgstr "" + +msgid "Juneau" +msgstr "" + +msgid "Kabul" +msgstr "" + +msgid "Kaliningrad" +msgstr "" + +msgid "Kamchatka" +msgstr "" + +msgid "Kampala" +msgstr "" + +msgid "Kanton" +msgstr "" + +msgid "Karachi" +msgstr "" + +msgid "Kashgar" +msgstr "" + +msgid "Kathmandu" +msgstr "" + +msgid "Katmandu" +msgstr "" + +msgid "Kerguelen" +msgstr "" + +msgid "Khandyga" +msgstr "" + +msgid "Khartoum" +msgstr "" + +msgid "Kiev" +msgstr "" + +msgid "Kigali" +msgstr "" + +msgid "Kinshasa" +msgstr "" + +msgid "Kiritimati" +msgstr "" + +msgid "Kirov" +msgstr "" + +msgid "Knox" +msgstr "" + +msgid "Knox_IN" +msgstr "" + +msgid "Kolkata" +msgstr "" + +msgid "Kralendijk" +msgstr "" + +msgid "Krasnoyarsk" +msgstr "" + +msgid "Kuala_Lumpur" +msgstr "" + +msgid "Kuching" +msgstr "" + +msgid "Kuwait" +msgstr "" + +msgid "Kwajalein" +msgstr "" + +msgid "Kyiv" +msgstr "" + +msgid "LHI" +msgstr "" + +msgid "La_Paz" +msgstr "" + +msgid "La_Rioja" +msgstr "" + +msgid "Lagos" +msgstr "" + +msgid "Libreville" +msgstr "" + +msgid "Lima" +msgstr "" + +msgid "Lindeman" +msgstr "" + +msgid "Lisbon" +msgstr "" + +msgid "Ljubljana" +msgstr "" + +msgid "Lome" +msgstr "" + +msgid "London" +msgstr "" + +msgid "Longyearbyen" +msgstr "" + +msgid "Lord_Howe" +msgstr "" + +msgid "Los_Angeles" +msgstr "" + +msgid "Louisville" +msgstr "" + +msgid "Lower_Princes" +msgstr "" + +msgid "Luanda" +msgstr "" + +msgid "Lubumbashi" +msgstr "" + +msgid "Lusaka" +msgstr "" + +msgid "Luxembourg" +msgstr "" + +msgid "Macao" +msgstr "" + +msgid "Macau" +msgstr "" + +msgid "Maceio" +msgstr "" + +msgid "Macquarie" +msgstr "" + +msgid "Madeira" +msgstr "" + +msgid "Madrid" +msgstr "" + +msgid "Magadan" +msgstr "" + +msgid "Mahe" +msgstr "" + +msgid "Majuro" +msgstr "" + +msgid "Makassar" +msgstr "" + +msgid "Malabo" +msgstr "" + +msgid "Maldives" +msgstr "" + +msgid "Malta" +msgstr "" + +msgid "Managua" +msgstr "" + +msgid "Manaus" +msgstr "" + +msgid "Manila" +msgstr "" + +msgid "Maputo" +msgstr "" + +msgid "Marengo" +msgstr "" + +msgid "Mariehamn" +msgstr "" + +msgid "Marigot" +msgstr "" + +msgid "Marquesas" +msgstr "" + +msgid "Martinique" +msgstr "" + +msgid "Maseru" +msgstr "" + +msgid "Matamoros" +msgstr "" + +msgid "Mauritius" +msgstr "" + +msgid "Mawson" +msgstr "" + +msgid "Mayotte" +msgstr "" + +msgid "Mazatlan" +msgstr "" + +msgid "Mbabane" +msgstr "" + +msgid "McMurdo" +msgstr "" + +msgid "Melbourne" +msgstr "" + +msgid "Mendoza" +msgstr "" + +msgid "Menominee" +msgstr "" + +msgid "Merida" +msgstr "" + +msgid "Metlakatla" +msgstr "" + +msgid "Mexico" +msgstr "" + +msgid "Mexico_City" +msgstr "" + +msgid "Michigan" +msgstr "" + +msgid "Midway" +msgstr "" + +msgid "Minsk" +msgstr "" + +msgid "Minutes" +msgstr "" + +msgid "Miquelon" +msgstr "" + +msgid "Mogadishu" +msgstr "" + +msgid "Monaco" +msgstr "" + +msgid "Moncton" +msgstr "" + +msgid "Monrovia" +msgstr "" + +msgid "Monterrey" +msgstr "" + +msgid "Montevideo" +msgstr "" + +msgid "Monticello" +msgstr "" + +msgid "Montreal" +msgstr "" + +msgid "Montserrat" +msgstr "" + +msgid "Moscow" +msgstr "" + +msgid "Mountain" +msgstr "" + +msgid "Muscat" +msgstr "" + +msgid "NSW" +msgstr "" + +msgid "Nairobi" +msgstr "" + +msgid "Nassau" +msgstr "" + +msgid "Nauru" +msgstr "" + +msgid "Ndjamena" +msgstr "" + +msgid "New_Salem" +msgstr "" + +msgid "New_York" +msgstr "" + +msgid "Newfoundland" +msgstr "" + +msgid "Niamey" +msgstr "" + +msgid "Nicosia" +msgstr "" + +msgid "Nipigon" +msgstr "" + +msgid "Niue" +msgstr "" + +msgid "Norfolk" +msgstr "" + +msgid "Noronha" +msgstr "" + +msgid "North" +msgstr "" + +msgid "North_Dokota" +msgstr "" + +msgid "Nouakchott" +msgstr "" + +msgid "Noumea" +msgstr "" + +msgid "Novokuznetsk" +msgstr "" + +msgid "Novosibirsk" +msgstr "" + +msgid "Nuuk" +msgstr "" + +msgid "OK" +msgstr "" + +msgid "Ojinaga" +msgstr "" + +msgid "Omsk" +msgstr "" + +msgid "Oral" +msgstr "" + +msgid "Oslo" +msgstr "" + +msgid "Ouagadougou" +msgstr "" + +msgid "Pacific" +msgstr "" + +msgid "Pago_Pago" +msgstr "" + +msgid "Palau" +msgstr "" + +msgid "Palmer" +msgstr "" + +msgid "Panama" +msgstr "" + +msgid "Pangnirtung" +msgstr "" + +msgid "Paramaribo" +msgstr "" + +msgid "Paris" +msgstr "" + +msgid "Perth" +msgstr "" + +msgid "Petersburg" +msgstr "" + +msgid "Phnom_Penh" +msgstr "" + +msgid "Phoenix" +msgstr "" + +msgid "Pitcairn" +msgstr "" + +msgid "Podgorica" +msgstr "" + +msgid "Pohnpei" +msgstr "" + +msgid "Ponape" +msgstr "" + +msgid "Pontianak" +msgstr "" + +msgid "Port-au-Prince" +msgstr "" + +msgid "Port_Moresby" +msgstr "" + +msgid "Port_of_Spain" +msgstr "" + +msgid "Porto-Novo" +msgstr "" + +msgid "Porto_Acre" +msgstr "" + +msgid "Porto_Velho" +msgstr "" + +msgid "Prague" +msgstr "" + +msgid "Puerto_Rico" +msgstr "" + +msgid "Punta_Arenas" +msgstr "" + +msgid "Pyongyang" +msgstr "" + +msgid "Qatar" +msgstr "" + +msgid "Qostanay" +msgstr "" + +msgid "Queensland" +msgstr "" + +msgid "Qyzylorda" +msgstr "" + +msgid "Rainy_River" +msgstr "" + +msgid "Rangoon" +msgstr "" + +msgid "Rankin_Inlet" +msgstr "" + +msgid "Rarotonga" +msgstr "" + +msgid "Recife" +msgstr "" + +msgid "Regina" +msgstr "" + +msgid "Resolute" +msgstr "" + +msgid "Reunion" +msgstr "" + +msgid "Reykjavik" +msgstr "" + +msgid "Riga" +msgstr "" + +msgid "Rio_Branco" +msgstr "" + +msgid "Rio_Gallegos" +msgstr "" + +msgid "Riyadh" +msgstr "" + +msgid "Rome" +msgstr "" + +msgid "Rosario" +msgstr "" + +msgid "Rothera" +msgstr "" + +msgid "Saigon" +msgstr "" + +msgid "Saipan" +msgstr "" + +msgid "Sakhalin" +msgstr "" + +msgid "Salta" +msgstr "" + +msgid "Samara" +msgstr "" + +msgid "Samarkand" +msgstr "" + +msgid "Samoa" +msgstr "" + +msgid "San_Juan" +msgstr "" + +msgid "San_Luis" +msgstr "" + +msgid "San_Marino" +msgstr "" + +msgid "Santa_Isabel" +msgstr "" + +msgid "Santarem" +msgstr "" + +msgid "Santiago" +msgstr "" + +msgid "Santo_Domingo" +msgstr "" + +msgid "Sao_Paulo" +msgstr "" + +msgid "Sao_Tome" +msgstr "" + +msgid "Sarajevo" +msgstr "" + +msgid "Saratov" +msgstr "" + +msgid "Saskatchewan" +msgstr "" + +msgid "Scoresbysund" +msgstr "" + +msgid "Seoul" +msgstr "" + +msgid "Shanghai" +msgstr "" + +msgid "Shiprock" +msgstr "" + +msgid "Simferopol" +msgstr "" + +msgid "Singapore" +msgstr "" + +msgid "Sitka" +msgstr "" + +msgid "Skopje" +msgstr "" + +msgid "Sofia" +msgstr "" + +msgid "South" +msgstr "" + +msgid "South_Georgia" +msgstr "" + +msgid "South_Pole" +msgstr "" + +msgid "Srednekolymsk" +msgstr "" + +msgid "St_Barthelemy" +msgstr "" + +msgid "St_Helena" +msgstr "" + +msgid "St_Johns" +msgstr "" + +msgid "St_Kitts" +msgstr "" + +msgid "St_Lucia" +msgstr "" + +msgid "St_Thomas" +msgstr "" + +msgid "St_Vincent" +msgstr "" + +msgid "Stanley" +msgstr "" + +msgid "Stockholm" +msgstr "" + +msgid "Swift_Current" +msgstr "" + +msgid "Sydney" +msgstr "" + +msgid "Syowa" +msgstr "" + +msgid "Tahiti" +msgstr "" + +msgid "Taipei" +msgstr "" + +msgid "Tallinn" +msgstr "" + +msgid "Tarawa" +msgstr "" + +msgid "Tashkent" +msgstr "" + +msgid "Tasmania" +msgstr "" + +msgid "Tbilisi" +msgstr "" + +msgid "Tegucigalpa" +msgstr "" + +msgid "Tehran" +msgstr "" + +msgid "Tel_Aviv" +msgstr "" + +msgid "Tell_City" +msgstr "" + +msgid "Thimbu" +msgstr "" + +msgid "Thimphu" +msgstr "" + +msgid "Thule" +msgstr "" + +msgid "Thunder_Bay" +msgstr "" + +msgid "Tijuana" +msgstr "" + +msgid "Timbuktu" +msgstr "" + +msgid "Tirane" +msgstr "" + +msgid "Tiraspol" +msgstr "" + +msgid "Tokyo" +msgstr "" + +msgid "Tomsk" +msgstr "" + +msgid "Tongatapu" +msgstr "" + +msgid "Toronto" +msgstr "" + +msgid "Tortola" +msgstr "" + +msgid "Tripoli" +msgstr "" + +msgid "Troll" +msgstr "" + +msgid "Truk" +msgstr "" + +msgid "Tucuman" +msgstr "" + +msgid "Tunis" +msgstr "" + +msgid "US" +msgstr "" + +msgid "Ujung_Pandang" +msgstr "" + +msgid "Ulaanbaatar" +msgstr "" + +msgid "Ulan_Bator" +msgstr "" + +msgid "Ulyanovsk" +msgstr "" + +msgid "Universal" +msgstr "" + +msgid "Urumqi" +msgstr "" + +msgid "Ushuaia" +msgstr "" + +msgid "Ust-Nera" +msgstr "" + +msgid "Uzhgorod" +msgstr "" + +msgid "Vaduz" +msgstr "" + +msgid "Vancouver" +msgstr "" + +msgid "Vatican" +msgstr "" + +msgid "Vevay" +msgstr "" + +msgid "Victoria" +msgstr "" + +msgid "Vienna" +msgstr "" + +msgid "Vientiane" +msgstr "" + +msgid "Vilnius" +msgstr "" + +msgid "Vincennes" +msgstr "" + +msgid "Virgin" +msgstr "" + +msgid "Vladivostok" +msgstr "" + +msgid "Volgograd" +msgstr "" + +msgid "Vostok" +msgstr "" + +msgid "Wake" +msgstr "" + +msgid "Wallis" +msgstr "" + +msgid "Warsaw" +msgstr "" + +msgid "West" +msgstr "" + +msgid "Whitehorse" +msgstr "" + +msgid "Winamac" +msgstr "" + +msgid "Windhoek" +msgstr "" + +msgid "Winnipeg" +msgstr "" + +msgid "Yakutat" +msgstr "" + +msgid "Yakutsk" +msgstr "" + +msgid "Yancowinna" +msgstr "" + +msgid "Yangon" +msgstr "" + +msgid "Yap" +msgstr "" + +msgid "Yekaterinburg" +msgstr "" + +msgid "Yellowknife" +msgstr "" + +msgid "Yerevan" +msgstr "" + +msgid "Yukon" +msgstr "" + +msgid "Zagreb" +msgstr "" + +msgid "Zaporozhye" +msgstr "" + +msgid "Zulu" +msgstr "" + +msgid "Zurich" +msgstr "" \ No newline at end of file diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 33baffb..12e9805 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -1984,3 +1984,1800 @@ msgid "" msgstr "" "Позволяет загрузку системы для бездисковых и обычных рабочих станций через " "локальную сеть или Интернет (даже используя \"слабые\" каналы связи)" + +msgid "Afrikaans" +msgstr "Африканский" + +msgid "Arabic" +msgstr "Арабский" + +msgid "Assamese" +msgstr "Ассамский" + +msgid "Azerbaijani" +msgstr "Азербайджанский" + +msgid "Belarusian" +msgstr "Беларусский" + +msgid "Bulgarian" +msgstr "Болгарский" + +msgid "Bengali" +msgstr "Бенгальский" + +msgid "Bosnian" +msgstr "Боснийский" + +msgid "Catalan" +msgstr "Каталонский" + +msgid "Czech" +msgstr "Чешский" + +msgid "Danish" +msgstr "Датский" + +msgid "German" +msgstr "Немецкий" + +msgid "Greek" +msgstr "Греческий" + +msgid "English" +msgstr "Английский" + +msgid "Spanish" +msgstr "Испанский" + +msgid "Estonian" +msgstr "Эстонский" + +msgid "Finnish" +msgstr "Финский" + +msgid "French" +msgstr "Французский" + +msgid "Gujarati" +msgstr "Гуджаратский" + +msgid "Hebrew" +msgstr "Иврит" + +msgid "Hindi" +msgstr "Хинди" + +msgid "Croatian" +msgstr "Хорватский" + +msgid "Hungarian" +msgstr "Венгерский" + +msgid "Armenian" +msgstr "Армянский" + +msgid "Indonesian" +msgstr "Индонезийский" + +msgid "Icelandic" +msgstr "Исландский" + +msgid "Italian" +msgstr "Итальянский" + +msgid "Japanese" +msgstr "Японский" + +msgid "Georgian" +msgstr "Грузинский" + +msgid "Kazakh" +msgstr "Казахский" + +msgid "Kannada" +msgstr "Каннада" + +msgid "Korean" +msgstr "Корейский" + +msgid "Kashmiri" +msgstr "Кашмирский" + +msgid "Kurdish" +msgstr "Курдский" + +msgid "Kirghiz" +msgstr "Киргизский" + +msgid "Lithuanian" +msgstr "Литовский" + +msgid "Latvian" +msgstr "Латышский" + +msgid "Macedonian" +msgstr "Македонский" + +msgid "Malayalam" +msgstr "Малаялам" + +msgid "Marathi" +msgstr "Маратхи" + +msgid "Malay" +msgstr "Малайский" + +msgid "Maltese" +msgstr "Мальтийский" + +msgid "Bokmal" +msgstr "Букмол" + +msgid "Dutch" +msgstr "Нидерландский" + +msgid "Nynorsk" +msgstr "Норвежский" + +msgid "Oriya" +msgstr "Ория" + +msgid "Punjabi" +msgstr "Панджаби" + +msgid "Polish" +msgstr "Польский" + +msgid "Portuguese" +msgstr "Португальский" + +msgid "Romanian" +msgstr "Румынский" + +msgid "Russian" +msgstr "Русский" + +msgid "Sanskrit" +msgstr "Санскрит" + +msgid "Slovak" +msgstr "Словацкий" + +msgid "Slovenian" +msgstr "Словенский" + +msgid "Albanian" +msgstr "Албанский" + +msgid "Serbian" +msgstr "Сербский" + +msgid "Swedish" +msgstr "Шведский" + +msgid "Tamil" +msgstr "Тамильский" + +msgid "Telugu" +msgstr "Тулугу" + +msgid "Thai" +msgstr "Тайский" + +msgid "Turkish" +msgstr "Турецкий" + +msgid "Ukrainian" +msgstr "Украинский" + +msgid "American" +msgstr "Американский английский" + +msgid "Vietnamese" +msgstr "Вьетнамский" + +msgid "Simplified Chinese" +msgstr "Упрощённый Китайский" + +msgid "Chinese" +msgstr "Китайский" + +msgid "Generic 86-key PC" +msgstr "Обычная 86-клавишная" + +msgid "Generic 101-key PC" +msgstr "Обычная 101-клавишная" + +msgid "Generic 102-key PC" +msgstr "Обычная 102-клавишная" + +msgid "Generic 104-key PC" +msgstr "Обычная 104-клавишная" + +msgid "Generic 104-key PC with L-shaped Enter key" +msgstr "Обычная 104-клавишная (Enter в форме буквы L)" + +msgid "Generic 105-key PC" +msgstr "Обычная 105-клавишная" + +msgid "Dell 101-key PC" +msgstr "Обычная 101-клавишная" + +msgid "Abidjan" +msgstr "Абиджан" + +msgid "Accra" +msgstr "Аккра" + +msgid "Acre" +msgstr "Акр" + +msgid "Adak" +msgstr "Адак" + +msgid "Addis_Ababa" +msgstr "Аддис-Абеба" + +msgid "Adelaide" +msgstr "Аделаида" + +msgid "Aden" +msgstr "Аден" + +msgid "Africa" +msgstr "Африка" + +msgid "Alaska" +msgstr "Аляска" + +msgid "Aleutian" +msgstr "Алеутский" + +msgid "Algiers" +msgstr "Алжир" + +msgid "Almaty" +msgstr "Алматы" + +msgid "America" +msgstr "Америка" + +msgid "Amman" +msgstr "Амман" + +msgid "Amsterdam" +msgstr "Амстердам" + +msgid "Anadyr" +msgstr "Анадырь" + +msgid "Anchorage" +msgstr "Анкоридж" + +msgid "Andorra" +msgstr "Андорра" + +msgid "Anguilla" +msgstr "Ангилья" + +msgid "Antananarivo" +msgstr "Антананариву" + +msgid "Antarctica" +msgstr "Антарктида" + +msgid "Antigua" +msgstr "Антигуа" + +msgid "Apia" +msgstr "Апиа" + +msgid "Aqtau" +msgstr "Актау" + +msgid "Aqtobe" +msgstr "Актобе" + +msgid "Araguaina" +msgstr "Арагуайна" + +msgid "Arctic" +msgstr "Арктика" + +msgid "Arizona" +msgstr "Аризона" + +msgid "Aruba" +msgstr "Аруба" + +msgid "Ashgabat" +msgstr "Ашхабад" + +msgid "Ashkhabad" +msgstr "Ашхабад" + +msgid "Asia" +msgstr "Азия" + +msgid "Asmara" +msgstr "Асмэра" + +msgid "Asmera" +msgstr "Асмера" + +msgid "Astrakhan" +msgstr "Астрахань" + +msgid "Asuncion" +msgstr "Асунсьон" + +msgid "Athens" +msgstr "Афины" + +msgid "Atikokan" +msgstr "Атикокан" + +msgid "Atka" +msgstr "Атка" + +msgid "Atlantic" +msgstr "Атлантика" + +msgid "Atyrau" +msgstr "Атырау" + +msgid "Auckland" +msgstr "Окленд" + +msgid "Australia" +msgstr "Австралия" + +msgid "Azores" +msgstr "Азорские острова" + +msgid "Baghdad" +msgstr "Багдад" + +msgid "Bahia" +msgstr "Баия" + +msgid "Bahia_Banderas" +msgstr "Баия_Бандерас" + +msgid "Bahrain" +msgstr "Бахрейн" + +msgid "BajaNorte" +msgstr "БахаНорте" + +msgid "BajaSur" +msgstr "Южная Нижняя Калифорния" + +msgid "Baku" +msgstr "Баку" + +msgid "Bamako" +msgstr "Бамако" + +msgid "Bangkok" +msgstr "Бангкок" + +msgid "Bangui" +msgstr "Банги" + +msgid "Banjul" +msgstr "Банжул" + +msgid "Barbados" +msgstr "Барбадос" + +msgid "Barnaul" +msgstr "Барнаул" + +msgid "Beirut" +msgstr "Бейрут" + +msgid "Belem" +msgstr "Белен" + +msgid "Belfast" +msgstr "Белфаст" + +msgid "Belgrade" +msgstr "Белград" + +msgid "Belize" +msgstr "Белиз" + +msgid "Berlin" +msgstr "Берлин" + +msgid "Bermuda" +msgstr "Бермуды" + +msgid "Beulah" +msgstr "Беула" + +msgid "Bishkek" +msgstr "Бишкек" + +msgid "Bissau" +msgstr "Бисау" + +msgid "Blanc-Sablon" +msgstr "Блан-Саблон" + +msgid "Blantyre" +msgstr "Блантайр" + +msgid "Boa_Vista" +msgstr "Боа_Виста" + +msgid "Bogota" +msgstr "Богота" + +msgid "Boise" +msgstr "Бойсе" + +msgid "Bougainville" +msgstr "Бугенвиль" + +msgid "Bratislava" +msgstr "Братислава" + +msgid "Brazil" +msgstr "Бразилия" + +msgid "Brazzaville" +msgstr "Браззавиль" + +msgid "Brisbane" +msgstr "Брисбен" + +msgid "Broken_Hill" +msgstr "Брокен-Хилл" + +msgid "Brunei" +msgstr "Бруней" + +msgid "Brussels" +msgstr "Брюссель" + +msgid "Bucharest" +msgstr "Бухарест" + +msgid "Budapest" +msgstr "Будапешт" + +msgid "Buenos_Aires" +msgstr "Буэнос Айрес" + +msgid "Bujumbura" +msgstr "Бужумбура" + +msgid "Busingen" +msgstr "Бузинген" + +msgid "Cairo" +msgstr "Каир" + +msgid "Calcutta" +msgstr "Калькутта" + +msgid "Cambridge_Bay" +msgstr "Кембридж Бэй" + +msgid "Campo_Grande" +msgstr "Кампо_Гранде" + +msgid "Canada" +msgstr "Канада" + +msgid "Canary" +msgstr "Канари" + +msgid "Canberra" +msgstr "Канберра" + +msgid "Cancun" +msgstr "Канкун" + +msgid "Cape_Vepde" +msgstr "Кабо-Верде" + +msgid "Cape_Verde" +msgstr "Кабо-Верде" + +msgid "Caracas" +msgstr "Каракас" + +msgid "Casablanca" +msgstr "Касабланка" + +msgid "Casey" +msgstr "Кейси" + +msgid "Catamarca" +msgstr "Катамарка" + +msgid "Cayenne" +msgstr "Кайенна" + +msgid "Cayman" +msgstr "Кайман" + +msgid "Center" +msgstr "Центр" + +msgid "Central" +msgstr "Центральный" + +msgid "Ceuta" +msgstr "Сеута" + +msgid "Chagos" +msgstr "Чагос" + +msgid "Chatham" +msgstr "Чатем" + +msgid "Chicago" +msgstr "Чикаго" + +msgid "Chihuahua" +msgstr "Чихуахуа" + +msgid "Chile" +msgstr "Чили" + +msgid "Chisinau" +msgstr "Кишинев" + +msgid "Chita" +msgstr "Чита" + +msgid "Choibalsan" +msgstr "Чойбалсан" + +msgid "Chongqing" +msgstr "Чунцин" + +msgid "Christmas" +msgstr "Рождество" + +msgid "Chungking" +msgstr "Чунцин" + +msgid "Chuuk" +msgstr "Чуук" + +msgid "Ciudad_Juarez" +msgstr "Сьюдад_Хуарес" + +msgid "Clock" +msgstr "Часы" + +msgid "Close" +msgstr "Закрыть" + +msgid "Cocos" +msgstr "Кокос" + +msgid "Colombo" +msgstr "Коломбо" + +msgid "ComodRivadavia" +msgstr "Комодоро-Ривадавия" + +msgid "Comoro" +msgstr "Коморо" + +msgid "Conakry" +msgstr "Конакри" + +msgid "Continental" +msgstr "Континентальный" + +msgid "Copenhagen" +msgstr "Копенгаген" + +msgid "Coral_Harbour" +msgstr "Корал Харбор" + +msgid "Cordoba" +msgstr "Кордова" + +msgid "Costa_Rica" +msgstr "Коста_Рика" + +msgid "Creston" +msgstr "Крестон" + +msgid "Cuiaba" +msgstr "Куяба" + +msgid "Curacao" +msgstr "Кюрасао" + +msgid "Currie" +msgstr "Карри" + +msgid "Dacca" +msgstr "Дакка" + +msgid "Dakar" +msgstr "Дакар" + +msgid "Damascus" +msgstr "Дамаск" + +msgid "Danmarkshavn" +msgstr "Данмарксхавн" + +msgid "Dar_es_Salaam" +msgstr "Дар-эс-Салам" + +msgid "Darwin" +msgstr "Дарвин" + +msgid "Davis" +msgstr "Дэвис" + +msgid "Dawson" +msgstr "Доусон" + +msgid "Dawson_Creek" +msgstr "Доусон Крик" + +msgid "DeNoronha" +msgstr "Фернанду-ди-Норонья" + +msgid "Denver" +msgstr "Денвер" + +msgid "Detroit" +msgstr "Детройт" + +msgid "Dhaka" +msgstr "Дакка" + +msgid "Dili" +msgstr "Дили" + +msgid "Djibouti" +msgstr "Джибути" + +msgid "Dominica" +msgstr "Доминика" + +msgid "Douala" +msgstr "Дуала" + +msgid "Dubai" +msgstr "Дубай" + +msgid "Dublin" +msgstr "Дублин" + +msgid "DumontDUrville" +msgstr "Дюмон-д-Юрвиль" + +msgid "Dushanbe" +msgstr "Душанбе" + +msgid "ERROR" +msgstr "ОШИБКА" + +msgid "East" +msgstr "Восток" + +msgid "East-Indiana" +msgstr "Восточная Индиана" + +msgid "Easter" +msgstr "Пасха" + +msgid "EasterIsland" +msgstr "Остров Пасхи" + +msgid "Easterlsland" +msgstr "Остров Пасхи" + +msgid "Eastern" +msgstr "Восточный" + +msgid "Edmonton" +msgstr "Эдмонтон" + +msgid "Efate" +msgstr "Эфате" + +msgid "Eirunepe" +msgstr "Эйрунепе" + +msgid "El_Aaiun" +msgstr "Эль_Аайун" + +msgid "El_Salvador" +msgstr "Сальвадор" + +msgid "Enderbury" +msgstr "Эндербери" + +msgid "Ensenada" +msgstr "Энсенада" + +msgid "Eucla" +msgstr "Евкла" + +msgid "Europe" +msgstr "Европа" + +msgid "Faeroe" +msgstr "Фарерские острова" + +msgid "Fakaofo" +msgstr "Факаофо" + +msgid "Famagusta" +msgstr "Фамагуста" + +msgid "Faroe" +msgstr "Фарерские острова" + +msgid "Fiji" +msgstr "Фиджи" + +msgid "Fort_Nelson" +msgstr "Форт Нельсон" + +msgid "Fort_Wayne" +msgstr "Форт_Уэйн" + +msgid "Fortaleza" +msgstr "Форталеза" + +msgid "Freetown" +msgstr "Фритаун" + +msgid "Funafuti" +msgstr "Фунафути" + +msgid "GMT-1" +msgstr "ГМТ-1" + +msgid "GMT-3" +msgstr "ГМТ-3" + +msgid "Gaborone" +msgstr "Габороне" + +msgid "Galapagos" +msgstr "Галапагос" + +msgid "Gambier" +msgstr "Гамбье" + +msgid "Gaza" +msgstr "Газа" + +msgid "General" +msgstr "Генерал-Сантос" + +msgid "Gibraltar" +msgstr "Гибралтар" + +msgid "Glace_Bay" +msgstr "Глейс-Бей" + +msgid "Godthab" +msgstr "Годтаб" + +msgid "Goose_Bay" +msgstr "Гуз-Бей" + +msgid "Grand_Turk" +msgstr "Гранд_Турк" + +msgid "Greenwich" +msgstr "Гринвич" + +msgid "Grenada" +msgstr "Гренада" + +msgid "Guadalcanal" +msgstr "Гуадалканал" + +msgid "Guadeloupe" +msgstr "Гваделупа" + +msgid "Guam" +msgstr "Гуам" + +msgid "Guatemala" +msgstr "Гватемала" + +msgid "Guayaquil" +msgstr "Гуаякиль" + +msgid "Guernsey" +msgstr "Гернси" + +msgid "Guyana" +msgstr "Гайана" + +msgid "Halifax" +msgstr "Галифакс" + +msgid "Harare" +msgstr "Хараре" + +msgid "Harbin" +msgstr "Харбин" + +msgid "Havana" +msgstr "Гавана" + +msgid "Hawaii" +msgstr "Гавайи" + +msgid "Hebron" +msgstr "Хеврон" + +msgid "Helsinki" +msgstr "Хельсинки" + +msgid "Hermosillo" +msgstr "Эрмосильо" + +msgid "Ho_Chi_Minh" +msgstr "Хо_Чи_Мин" + +msgid "Hobart" +msgstr "Хобарт" + +msgid "Hong_Kong" +msgstr "Гонконг" + +msgid "Honolulu" +msgstr "Гонолулу" + +msgid "Hovd" +msgstr "Ховд" + +msgid "Indian" +msgstr "Индиана" + +msgid "Indiana" +msgstr "Индианан" + +msgid "Indiana-Starke" +msgstr "Индиана-Старке" + +msgid "Indianapolis" +msgstr "Индианаполис" + +msgid "Inuvik" +msgstr "Инувик" + +msgid "Iqaluit" +msgstr "Икалуит" + +msgid "Irkutsk" +msgstr "Иркутск" + +msgid "Isle_of_Man" +msgstr "Остров Мэн" + +msgid "Istanbul" +msgstr "Стамбул" + +msgid "Jakarta" +msgstr "Джакарта" + +msgid "Jamaica" +msgstr "Ямайка" + +msgid "Jan_Mayen" +msgstr "Ян_Майен" + +msgid "Jayapura" +msgstr "Джаяпура" + +msgid "Jersey" +msgstr "Джерси" + +msgid "Jerusalem" +msgstr "Иерусалим" + +msgid "Johannesburg" +msgstr "Йоханнесбург" + +msgid "Johnston" +msgstr "Джонстон" + +msgid "Juba" +msgstr "Джуба" + +msgid "Jujuy" +msgstr "Жужуй" + +msgid "Juneau" +msgstr "Джуно" + +msgid "Kabul" +msgstr "Кабул" + +msgid "Kaliningrad" +msgstr "Калининград" + +msgid "Kamchatka" +msgstr "Камчатка" + +msgid "Kampala" +msgstr "Кампала" + +msgid "Kanton" +msgstr "Кантон" + +msgid "Karachi" +msgstr "Карачи" + +msgid "Kashgar" +msgstr "Кашгар" + +msgid "Kathmandu" +msgstr "Катманду" + +msgid "Katmandu" +msgstr "Катманду" + +msgid "Kerguelen" +msgstr "Кергелен" + +msgid "Khandyga" +msgstr "Хандыга" + +msgid "Khartoum" +msgstr "Хартум" + +msgid "Kiev" +msgstr "Киев" + +msgid "Kigali" +msgstr "Кигали" + +msgid "Kinshasa" +msgstr "Киншаса" + +msgid "Kiritimati" +msgstr "Киритимати" + +msgid "Kirov" +msgstr "Киров" + +msgid "Knox" +msgstr "Ноксвилл" + +msgid "Knox_IN" +msgstr "Нокс_IN" + +msgid "Kolkata" +msgstr "Калькутта" + +msgid "Kralendijk" +msgstr "Кралендейк" + +msgid "Krasnoyarsk" +msgstr "Красноярск" + +msgid "Kuala_Lumpur" +msgstr "Куала-Лумпур" + +msgid "Kuching" +msgstr "Кучинг" + +msgid "Kuwait" +msgstr "Кувейт" + +msgid "Kwajalein" +msgstr "Кваджалейн" + +msgid "Kyiv" +msgstr "Киев" + +msgid "LHI" +msgstr "Лхи" + +msgid "La_Paz" +msgstr "Ла_Пас" + +msgid "La_Rioja" +msgstr "Риоха" + +msgid "Lagos" +msgstr "Лагос" + +msgid "Libreville" +msgstr "Либревиль" + +msgid "Lima" +msgstr "Лима" + +msgid "Lindeman" +msgstr "Линдеман" + +msgid "Lisbon" +msgstr "Лиссабон" + +msgid "Ljubljana" +msgstr "Любляна" + +msgid "Lome" +msgstr "Ломе" + +msgid "London" +msgstr "Лондон" + +msgid "Longyearbyen" +msgstr "Лонгйир" + +msgid "Lord_Howe" +msgstr "Лорд_Хау" + +msgid "Los_Angeles" +msgstr "Лос-Анджелес" + +msgid "Louisville" +msgstr "Луисвилл" + +msgid "Lower_Princes" +msgstr "Лоуэр-Принс-Куотер" + +msgid "Luanda" +msgstr "Луанда" + +msgid "Lubumbashi" +msgstr "Лубумбаши" + +msgid "Lusaka" +msgstr "Лусака" + +msgid "Luxembourg" +msgstr "Люксембург" + +msgid "Macao" +msgstr "Макао" + +msgid "Macau" +msgstr "Макао" + +msgid "Maceio" +msgstr "Масейо" + +msgid "Macquarie" +msgstr "Маккуори" + +msgid "Madeira" +msgstr "Мадейра" + +msgid "Madrid" +msgstr "Мадрид" + +msgid "Magadan" +msgstr "Магадан" + +msgid "Mahe" +msgstr "Маэ" + +msgid "Majuro" +msgstr "Маджуро" + +msgid "Makassar" +msgstr "Макассар" + +msgid "Malabo" +msgstr "Малабо" + +msgid "Maldives" +msgstr "Мальдивы" + +msgid "Malta" +msgstr "Мальта" + +msgid "Managua" +msgstr "Манагуа" + +msgid "Manaus" +msgstr "Манаус" + +msgid "Manila" +msgstr "Манила" + +msgid "Maputo" +msgstr "Мапуту" + +msgid "Marengo" +msgstr "Маренго" + +msgid "Mariehamn" +msgstr "Мариехамн" + +msgid "Marigot" +msgstr "Мариго" + +msgid "Marquesas" +msgstr "Маркизские острова" + +msgid "Martinique" +msgstr "Мартиника" + +msgid "Maseru" +msgstr "Масеру" + +msgid "Matamoros" +msgstr "Матаморос" + +msgid "Mauritius" +msgstr "Маврикий" + +msgid "Mawson" +msgstr "Моусон" + +msgid "Mayotte" +msgstr "Майотта" + +msgid "Mazatlan" +msgstr "Масатлан" + +msgid "Mbabane" +msgstr "Мбабане" + +msgid "McMurdo" +msgstr "МакМердо" + +msgid "Melbourne" +msgstr "Мельбурн" + +msgid "Mendoza" +msgstr "Мендоса" + +msgid "Menominee" +msgstr "Меномини" + +msgid "Merida" +msgstr "Мерида" + +msgid "Metlakatla" +msgstr "Метлакатла" + +msgid "Mexico" +msgstr "Мексика" + +msgid "Mexico_City" +msgstr "Мехико" + +msgid "Michigan" +msgstr "Мичиган" + +msgid "Midway" +msgstr "Мидуэй" + +msgid "Minsk" +msgstr "Минск" + +msgid "Minutes" +msgstr "Минуты" + +msgid "Miquelon" +msgstr "Микелон" + +msgid "Mogadishu" +msgstr "Могадишо" + +msgid "Monaco" +msgstr "Монако" + +msgid "Moncton" +msgstr "Монктон" + +msgid "Monrovia" +msgstr "Монровия" + +msgid "Monterrey" +msgstr "Монтеррей" + +msgid "Montevideo" +msgstr "Монтевидео" + +msgid "Monticello" +msgstr "Монтиселло" + +msgid "Montreal" +msgstr "Монреаль" + +msgid "Montserrat" +msgstr "Монтсеррат" + +msgid "Moscow" +msgstr "Москва" + +msgid "Mountain" +msgstr "Маунтин-Вью" + +msgid "Muscat" +msgstr "Мускат" + +msgid "NSW" +msgstr "Новый Южный Уэльс" + +msgid "Nairobi" +msgstr "Найроби" + +msgid "Nassau" +msgstr "Нассау" + +msgid "Nauru" +msgstr "Науру" + +msgid "Ndjamena" +msgstr "Нджамена" + +msgid "New_Salem" +msgstr "Нью-Салем" + +msgid "New_York" +msgstr "Нью-Йорк" + +msgid "Newfoundland" +msgstr "Ньюфаундленд" + +msgid "Niamey" +msgstr "Ниамей" + +msgid "Nicosia" +msgstr "Никосия" + +msgid "Nipigon" +msgstr "Нипигон" + +msgid "Niue" +msgstr "Ниуэ" + +msgid "Norfolk" +msgstr "Норфолк" + +msgid "Noronha" +msgstr "Норонья" + +msgid "North" +msgstr "Север" + +msgid "North_Dokota" +msgstr "Северная Докота" + +msgid "Nouakchott" +msgstr "Нуакшот" + +msgid "Noumea" +msgstr "Нумеа" + +msgid "Novokuznetsk" +msgstr "Новокузнецк" + +msgid "Novosibirsk" +msgstr "Новосибирск" + +msgid "Nuuk" +msgstr "Нуук" + +msgid "OK" +msgstr "OK" + +msgid "Ojinaga" +msgstr "Охинага" + +msgid "Omsk" +msgstr "Омск" + +msgid "Oral" +msgstr "Уральск" + +msgid "Oslo" +msgstr "Осло" + +msgid "Ouagadougou" +msgstr "Уагадугу" + +msgid "Pacific" +msgstr "Тихий океан" + +msgid "Pago_Pago" +msgstr "Паго_Паго" + +msgid "Palau" +msgstr "Палау" + +msgid "Palmer" +msgstr "Палмер" + +msgid "Panama" +msgstr "Панама" + +msgid "Pangnirtung" +msgstr "Пангниртунг" + +msgid "Paramaribo" +msgstr "Парамарибо" + +msgid "Paris" +msgstr "Париж" + +msgid "Perth" +msgstr "Перт" + +msgid "Petersburg" +msgstr "Петербург" + +msgid "Phnom_Penh" +msgstr "Пномпень" + +msgid "Phoenix" +msgstr "Феникс" + +msgid "Pitcairn" +msgstr "Питкэрн" + +msgid "Podgorica" +msgstr "Подгорица" + +msgid "Pohnpei" +msgstr "Понпеи" + +msgid "Ponape" +msgstr "Понапе" + +msgid "Pontianak" +msgstr "Понтианак" + +msgid "Port-au-Prince" +msgstr "Порт-о-Пренс" + +msgid "Port_Moresby" +msgstr "Порт_Морсби" + +msgid "Port_of_Spain" +msgstr "Порт-оф-Спейн" + +msgid "Porto-Novo" +msgstr "Порто-Ново" + +msgid "Porto_Acre" +msgstr "Порту_Акр" + +msgid "Porto_Velho" +msgstr "Порту-Велью" + +msgid "Prague" +msgstr "Прага" + +msgid "Puerto_Rico" +msgstr "Пуэрто-Рико" + +msgid "Punta_Arenas" +msgstr "Пунта_Аренас" + +msgid "Pyongyang" +msgstr "Пхеньян" + +msgid "Qatar" +msgstr "Катар" + +msgid "Qostanay" +msgstr "Костанай" + +msgid "Queensland" +msgstr "Квинсленд" + +msgid "Qyzylorda" +msgstr "Кызылорда" + +msgid "Rainy_River" +msgstr "Рейни-Ривер" + +msgid "Rangoon" +msgstr "Рангун" + +msgid "Rankin_Inlet" +msgstr "Ранкин-Инлет" + +msgid "Rarotonga" +msgstr "Раротонга" + +msgid "Recife" +msgstr "Ресифи" + +msgid "Regina" +msgstr "Реджайна" + +msgid "Resolute" +msgstr "Резольют" + +msgid "Reunion" +msgstr "Воссоединение" + +msgid "Reykjavik" +msgstr "Рейкьявик" + +msgid "Riga" +msgstr "Рига" + +msgid "Rio_Branco" +msgstr "Рио_Бранко" + +msgid "Rio_Gallegos" +msgstr "Рио-Гальегос" + +msgid "Riyadh" +msgstr "Эр-Рияд" + +msgid "Rome" +msgstr "Рим" + +msgid "Rosario" +msgstr "Росарио" + +msgid "Rothera" +msgstr "Ротера" + +msgid "Saigon" +msgstr "Сайгон" + +msgid "Saipan" +msgstr "Сайпан" + +msgid "Sakhalin" +msgstr "Сахалин" + +msgid "Salta" +msgstr "Сальта" + +msgid "Samara" +msgstr "Самара" + +msgid "Samarkand" +msgstr "Самарканд" + +msgid "Samoa" +msgstr "Самоа" + +msgid "San_Juan" +msgstr "Сан-Хуан" + +msgid "San_Luis" +msgstr "Сан-Луис" + +msgid "San_Marino" +msgstr "Сан Марино" + +msgid "Santa_Isabel" +msgstr "Санта_Изабель" + +msgid "Santarem" +msgstr "Сантарен" + +msgid "Santiago" +msgstr "Сантьяго" + +msgid "Santo_Domingo" +msgstr "Санто-Доминго" + +msgid "Sao_Paulo" +msgstr "Сан-Паулу" + +msgid "Sao_Tome" +msgstr "Сан-Томе" + +msgid "Sarajevo" +msgstr "Сараево" + +msgid "Saratov" +msgstr "Саратов" + +msgid "Saskatchewan" +msgstr "Саскачеван" + +msgid "Scoresbysund" +msgstr "Скорсби" + +msgid "Seoul" +msgstr "Сеул" + +msgid "Shanghai" +msgstr "Шанхай" + +msgid "Shiprock" +msgstr "Шипрок" + +msgid "Simferopol" +msgstr "Симферополь" + +msgid "Singapore" +msgstr "Сингапур" + +msgid "Sitka" +msgstr "Ситка" + +msgid "Skopje" +msgstr "Скопье" + +msgid "Sofia" +msgstr "София" + +msgid "South" +msgstr "Саутф" + +msgid "South_Georgia" +msgstr "Южная Грузия" + +msgid "South_Pole" +msgstr "Южный полюс" + +msgid "Srednekolymsk" +msgstr "Среднеколымск" + +msgid "St_Barthelemy" +msgstr "Святой Бартелеми" + +msgid "St_Helena" +msgstr "Сент-Хелина" + +msgid "St_Johns" +msgstr "Сент-Джонс" + +msgid "St_Kitts" +msgstr "Сент-Китс" + +msgid "St_Lucia" +msgstr "Святая Люсия" + +msgid "St_Thomas" +msgstr "Сент-Томас" + +msgid "St_Vincent" +msgstr "Сент-Винсент" + +msgid "Stanley" +msgstr "Стэнли" + +msgid "Stockholm" +msgstr "Стокгольм" + +msgid "Swift_Current" +msgstr "Суифт-Каррент" + +msgid "Sydney" +msgstr "Сидней" + +msgid "Syowa" +msgstr "Сёва" + +msgid "Tahiti" +msgstr "Таити" + +msgid "Taipei" +msgstr "Тайбэй" + +msgid "Tallinn" +msgstr "Таллинн" + +msgid "Tarawa" +msgstr "Тарава" + +msgid "Tashkent" +msgstr "Ташкент" + +msgid "Tasmania" +msgstr "Тасмания" + +msgid "Tbilisi" +msgstr "Тбилиси" + +msgid "Tegucigalpa" +msgstr "Тегусигальпа" + +msgid "Tehran" +msgstr "Тегеран" + +msgid "Tel_Aviv" +msgstr "Тель-Авив" + +msgid "Tell_City" +msgstr "Телл-Сити" + +msgid "Thimbu" +msgstr "Тимбу" + +msgid "Thimphu" +msgstr "Тхимпху" + +msgid "Thule" +msgstr "Туле" + +msgid "Thunder_Bay" +msgstr "Тандер-Бей" + +msgid "Tijuana" +msgstr "Тихуана" + +msgid "Timbuktu" +msgstr "Тимбукту" + +msgid "Tirane" +msgstr "Тиран" + +msgid "Tiraspol" +msgstr "Тирасполь" + +msgid "Tokyo" +msgstr "Токио" + +msgid "Tomsk" +msgstr "Томск" + +msgid "Tongatapu" +msgstr "Тонгатапу" + +msgid "Toronto" +msgstr "Торонто" + +msgid "Tortola" +msgstr "Тортола" + +msgid "Tripoli" +msgstr "Триполи" + +msgid "Troll" +msgstr "Тролль" + +msgid "Truk" +msgstr "Трук" + +msgid "Tucuman" +msgstr "Тукуман" + +msgid "Tunis" +msgstr "Тунис" + +msgid "US" +msgstr "США" + +msgid "Ujung_Pandang" +msgstr "Уджунг_Панданг" + +msgid "Ulaanbaatar" +msgstr "Улан-Батор" + +msgid "Ulan_Bator" +msgstr "Улан_Батор" + +msgid "Ulyanovsk" +msgstr "Ульяновск" + +msgid "Universal" +msgstr "Юнивёрсал-Сити" + +msgid "Urumqi" +msgstr "Урумчи" + +msgid "Ushuaia" +msgstr "Ушуая" + +msgid "Ust-Nera" +msgstr "Усть-Нера" + +msgid "Uzhgorod" +msgstr "Ужгород" + +msgid "Vaduz" +msgstr "Вадуц" + +msgid "Vancouver" +msgstr "Ванкувер" + +msgid "Vatican" +msgstr "Ватикан" + +msgid "Vevay" +msgstr "Вевей" + +msgid "Victoria" +msgstr "Виктория" + +msgid "Vienna" +msgstr "Вена" + +msgid "Vientiane" +msgstr "Вьентьян" + +msgid "Vilnius" +msgstr "Вильнюс" + +msgid "Vincennes" +msgstr "Венсен" + +msgid "Virgin" +msgstr "Виргин" + +msgid "Vladivostok" +msgstr "Владивосток" + +msgid "Volgograd" +msgstr "Волгоград" + +msgid "Vostok" +msgstr "Восток" + +msgid "Wake" +msgstr "Уэйко" + +msgid "Wallis" +msgstr "Уоллис" + +msgid "Warsaw" +msgstr "Варшава" + +msgid "West" +msgstr "Запад" + +msgid "Whitehorse" +msgstr "Уайтхорс" + +msgid "Winamac" +msgstr "Винамаке" + +msgid "Windhoek" +msgstr "Виндхук" + +msgid "Winnipeg" +msgstr "Виннипег" + +msgid "Yakutat" +msgstr "Якутат" + +msgid "Yakutsk" +msgstr "Якутск" + +msgid "Yancowinna" +msgstr "Янковина" + +msgid "Yangon" +msgstr "Янгон" + +msgid "Yap" +msgstr "Яп" + +msgid "Yekaterinburg" +msgstr "Екатеринбург" + +msgid "Yellowknife" +msgstr "Йеллоунайф" + +msgid "Yerevan" +msgstr "Ереван" + +msgid "Yukon" +msgstr "Юкон" + +msgid "Zagreb" +msgstr "Загреб" + +msgid "Zaporozhye" +msgstr "Запорожье" + +msgid "Zulu" +msgstr "Зулу" + +msgid "Zurich" +msgstr "Цюрих" \ No newline at end of file From f3d5eb5b21d5f59a979c1e40d69b33e5cb5eaac2 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 22 Jan 2026 11:50:09 +0000 Subject: [PATCH 47/48] Fixed build without timezonemap --- README.md | 69 ++++++++++++++++++++++++------------------ source/CMakeLists.txt | 15 ++------- source/ubinstall-gtk.h | 6 ++-- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index a104b78..c4ffdc0 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,48 @@ -# [UBInstall](https://ublinux.ru/) -![ubinstall-icon-gui](ublinux-ubinstall_gui.svg) ![ubinstall-icon-console](ublinux-ubinstall_console.svg) +# ubinstall-gtk -## Описание +## Description +The operating system installer (UBInstall-gtk) allows you to conveniently install the operating system. -Установщик оерационной системы UBLinux (UBInstall) позволяет в удобно установить операционную систему. +# Build +In order to build ubinstall-gtk you will need: -## Установка +- CMake +- C compiler +- GTK+ 3 & dependencies +- webkit2gtk (optional) +- timezonemap (optional) +- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings) +- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3) +- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3) -1. Скачайте репозитрий с утилитами - ``` - $ git clone http://git.ublinux.ru:3000/UBGroup/ubinstall.git - ``` -2. Перейдите в каталог ubinstall - ``` - $ cd ubinstall - ``` -3. Установите утилиту - ``` - $ make - ``` +Once you have all the necessary dependencies, you can use: +```sh +$ make +``` -## Использование +# Installation +After a successful build, just use: +```sh +$ sudo make install clean +``` -### Запуск +# Uninstallation +After a successful build, just use: +```sh +$ sudo make uninstall +``` -Запуск утилиты возможен двумя способами: -1. Терминал +## Usage - CLI версия: - ``` - $ ubinstall.cli - ``` - GTK версия - ``` - $ ubinstall.gtk - ``` +### Launch -2. Ярлык \ No newline at end of file +The utility can be launched in two ways: +1. Terminal + +``` +$ ubinstall-gtk +``` + +2. Shortcut + +![alt text](screenshot/screenshot.png) \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 3706494..5258fc5 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,11 +8,6 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) -pkg_check_modules(VTE291 REQUIRED vte-2.91) -include_directories(${VTE291_INCLUDE_DIRS}) -link_directories(${VTE291_LIBRARY_DIRS}) -add_definitions(${VTE291_CFLAGS_OTHER}) - pkg_check_modules(JSON REQUIRED json-c) include_directories(${JSON_INCLUDE_DIRS}) link_directories(${JSON_LIBRARY_DIRS}) @@ -23,22 +18,18 @@ include_directories(${PWQUALITY_INCLUDE_DIRS}) link_directories(${PWQUALITY_LIBRARY_DIRS}) add_definitions(${PWQUALITY_CFLAGS_OTHER}) -# pkg_check_modules(TIMEZONEMAP REQUIRED timezonemap) -# include_directories(${TIMEZONEMAP_INCLUDE_DIRS}) -# link_directories(${TIMEZONEMAP_LIBRARY_DIRS}) -# add_definitions(${TIMEZONEMAP_CFLAGS_OTHER}) find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) find_library(TIMEZONEMAP_LIBRARIES_FOUND timezonemap) -option(WEBKIT_FOUND "No" OFF) if(WEBKIT_LIBRARIES_FOUND) - option(WEBKIT_FOUND "Yes" ON) + add_definitions(-DWEBKIT_INCLUDE) PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0) include_directories(${WEBKIT_INCLUDE_DIRS}) link_directories(${WEBKIT_LIBRARY_DIRS}) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() + if(TIMEZONEMAP_LIBRARIES_FOUND) message("TIMEZONEMAP ENABLED") add_definitions(-DTIMEZONEMAP_INCLUDE) @@ -119,7 +110,7 @@ add_custom_target( DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} ) -add_definitions(-DVTE_INCLUDE) +# add_definitions(-DVTE_INCLUDE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ -O2 -pipe -fno-plt -fexceptions \ diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 16eee29..35857e6 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -12,7 +12,7 @@ #include #include #include -#ifdef WEBKIT_FOUND +#ifdef WEBKIT_INCLUDE #include #endif #include "ubl-strings.h" @@ -1188,9 +1188,9 @@ void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_siz gboolean on_yon_exit(GtkWidget *, GdkEvent *, main_window *widgets); void on_locale_changed(GtkWidget *, main_window *); #ifdef TIMEZONEMAP_INCLUDE -void on_region_changed(GtkComboBox *self, main_window *widgets); -#endif void on_zone_changed(GtkWidget *, main_window *widgets); +#endif +void on_region_changed(GtkComboBox *self, main_window *widgets); void on_page_cancel_clicked(GtkWidget *, main_window *widgets); int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree, char *mode, main_window *widgets); void on_process_log_view(GtkWidget *, main_window *widgets); From 6f814853a53c73d75bb708d58e21d1ea733e7d5a Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 22 Jan 2026 11:59:48 +0000 Subject: [PATCH 48/48] required timezonemap library fixed --- source/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 5258fc5..67cb78a 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -164,7 +164,6 @@ set(LIBRARIES ${TIMEZONEMAP_LIBRARIES} pthread ublsettings - timezonemap ublsettings-gtk3 ublsettingsui-gtk3 )