From 19d8ecf7d602f473a522fb1f4b9017caa8b212e3 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 12 Jan 2026 13:08:05 +0000 Subject: [PATCH 01/92] Fixed saving and loading --- source/ubinstall-gtk-components.c | 21 +++++++++++++++++---- source/ubinstall-gtk-keyboard.c | 24 ++++++++++++++++++++++-- source/ubinstall-gtk-network.c | 5 +++++ ubinstall-gtk-network-box.glade | 11 ----------- ubinstall-gtk-os-row.glade | 1 - ubinstall-gtk.glade | 18 ++++++++++++++++-- 6 files changed, 60 insertions(+), 20 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 2f46b4f..36483b1 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -20,13 +20,12 @@ int yon_kernel_save(main_window *widgets){ } } - if (yon_char_is_empty(enabled_module)){ + if (!yon_char_is_empty(enabled_module)){ yon_config_register(KERNEL_BOOT_parameter,KERNEL_BOOT_parameter_command,enabled_module); } else { yon_config_remove_by_key(KERNEL_BOOT_parameter); } - return 1; } @@ -124,6 +123,10 @@ gboolean yon_os_component_insert(struct row_data *row_input){ main_window *widgets = row_input->widgets; 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)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); + } return G_SOURCE_REMOVE; } @@ -201,9 +204,12 @@ int yon_software_save(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList)); GList *iter; char *config_val = config(modules_extra_parameter); + if (yon_char_is_empty(config_val)){ + yon_config_register(modules_extra_parameter,modules_extra_parameter_command,""); + } for(iter = list;iter;iter=iter->next){ os_row *row = g_object_get_data(iter->data,"kernel_row"); - char *target = row->name; + char *target = row->name; int status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck)); if (status){ if (!yon_char_check_element(config_val,target,",")){ @@ -221,7 +227,14 @@ gboolean yon_software_insert(struct row_data *row_input){ main_window *widgets = row_input->widgets; gtk_list_box_insert(GTK_LIST_BOX(widgets->AdditionalComponentsList),row->row,-1); yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); + + char *modules = config(modules_extra_parameter); + if (yon_char_check_element(modules,row_input->name,",")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); + } + // gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); return G_SOURCE_REMOVE; } diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 556083f..659fa74 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -13,8 +13,15 @@ int yon_keyboard_save(main_window *widgets){ char *final = NULL; for_iter(widgets->LayoutsList, &iter){ char *target; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),&iter,0,&target,-1); - char *temp = yon_char_append_element(final,target,","); + char *code; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),&iter,0,&target,1,&code,-1); + char *temp = NULL; + if (!yon_char_is_empty(code)){ + char *tmp = yon_char_unite(target,"_",code,NULL); + temp = yon_char_append_element(final,tmp,","); + } else { + temp = yon_char_append_element(final,target,","); + } if (!yon_char_is_empty(final)) free(final); final = temp; } @@ -149,6 +156,7 @@ void on_layouts_accept(GtkWidget *self, layouts_window *window){ main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets"); gtk_list_store_clear(widgets->LayoutsList); GtkTreeIter iter; + GtkTreeIter child_iter; for_iter (window->list,&iter){ int active; char *target; @@ -156,6 +164,18 @@ void on_layouts_accept(GtkWidget *self, layouts_window *window){ if (active){ yon_layout_load(target,widgets); } + if (gtk_tree_model_iter_children(GTK_TREE_MODEL(window->list),&child_iter,&iter)){ + for (int valid2=1;valid2;valid2=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&child_iter)){ + char *code; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&child_iter,0,&target,1,&code,3,&active,-1); + if (active){ + char *full_code = yon_char_unite(target,"_",code,NULL); + yon_layout_load(full_code,widgets); + free(full_code); + } + } + + } } on_subwindow_close(self); } diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 1461e9b..9908e2c 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -286,6 +286,11 @@ int yon_network_save(main_window *widgets){ } void yon_network_init(main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->NetworkConnectionsBox)); + GList *iter; + for (iter=list;iter;iter=iter->next){ + gtk_widget_destroy(list->data); + } int size; config_str network_types = yon_resource_open_file(network_path,&size); for (int i=1;i1 - - - True - False - - - False - True - 2 - - True diff --git a/ubinstall-gtk-os-row.glade b/ubinstall-gtk-os-row.glade index 9d68dbf..16900aa 100644 --- a/ubinstall-gtk-os-row.glade +++ b/ubinstall-gtk-os-row.glade @@ -12,7 +12,6 @@ True True False - True True diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index ae65003..6ff08c1 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -12150,6 +12150,11 @@ separately into the selected partition. False 1 True + + + False + + False @@ -12255,7 +12260,9 @@ separately into the selected partition. True - True + False + False + * True @@ -12961,6 +12968,11 @@ separately into the selected partition. False 1 True + + + False + + False @@ -13065,7 +13077,9 @@ separately into the selected partition. True - True + False + False + * True -- 2.35.1 From 50aa52d4da5b09dd4f3f8cdd916718bc514445fa Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 12 Jan 2026 13:15:08 +0000 Subject: [PATCH 02/92] Fixed cancel confirmation window closing --- source/ubinstall-gtk-page-switch.c | 34 +++++++++++------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 8536df3..6479ffb 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -485,30 +485,20 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ data->title=WARNING_TITLE_LABEL; if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){ pthread_cancel((pthread_t)main_config.install_thread); + gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); + gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LicenseAgreeRadio))){ + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SECTIONS); + } else { + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_WELCOME); + } + yon_page_update(widgets); + main_config.save_done=0; + main_config.install_complete=0; + main_config.install_thread=0; } } - // gtk_widget_hide(widgets->BackButton); - // gtk_widget_hide(widgets->SourceButton); - // gtk_widget_show(widgets->NextButton); - // gtk_widget_show(widgets->StartScenarioButton); - // gtk_widget_set_sensitive(widgets->CancelInstallButton,0); - // gtk_widget_set_sensitive(widgets->BackButton,1); - // gtk_widget_set_sensitive(widgets->NextButton,1); - // gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,1); - // gtk_widget_show(widgets->NextButton); - // gtk_widget_show(widgets->BackButton); - gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); - GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); - gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LicenseAgreeRadio))){ - gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SECTIONS); - } else { - gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_WELCOME); - } - yon_page_update(widgets); - main_config.save_done=0; - main_config.install_complete=0; - main_config.install_thread=0; } void on_additional_page_clicked(GtkWidget *, main_window *widgets){ -- 2.35.1 From 6832f5f0394a62f12560b16d2cc1f5a0f03aa79b Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 12 Jan 2026 14:43:41 +0000 Subject: [PATCH 03/92] System language page save and load fixes --- source/ubinstall-gtk-language.c | 55 ++++++++++++++++++--------------- source/ubinstall-gtk.h | 2 ++ 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c index a21942d..38e752b 100644 --- a/source/ubinstall-gtk-language.c +++ b/source/ubinstall-gtk-language.c @@ -66,30 +66,27 @@ void on_locale_accept(GtkWidget *self, language_window *window){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); return; } - char *locale_str = config(locale_parameter); - GtkTreeIter iter,itar; + GtkTreeIter iter; + char *sys_locale = NULL; + for_iter(widgets->LanguageList,&iter){ + char *target; + int status; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&iter,0,&status,3,&target,-1); + if (status){ + sys_locale = target; + } + } + gtk_list_store_clear(widgets->LanguageList); int size; config_str parsed = yon_char_parse(final,&size,","); for (int i=0;iLanguageList),&itar){ - char *checktarget; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&itar,3,&checktarget,-1); - if (!strcmp(checktarget,parsed[i])){ - found = 1; - break; - } - } - if (found) continue; char *locale_str = g_hash_table_lookup(main_config.languages,parsed[i]); if (yon_char_is_empty(locale_str)) continue; int parameter_size; config_str parameter_parsed = yon_char_parse(locale_str,¶meter_size,"|"); - gtk_list_store_append(widgets->LanguageList,&iter); - gtk_list_store_set(widgets->LanguageList,&iter,1,parameter_parsed[1],2,parameter_parsed[2],3,parameter_parsed[0],-1); - } - if (yon_char_is_empty(locale_str)){ - if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LanguageList),&iter)){ + gtk_list_store_append(widgets->LanguageList,&iter); + gtk_list_store_set(widgets->LanguageList,&iter,1,parameter_parsed[1],2,parameter_parsed[2],3,parameter_parsed[0],-1); + if (!yon_char_is_empty(sys_locale)&&!strcmp(parameter_parsed[0],sys_locale)){ gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1); } } @@ -137,13 +134,8 @@ gboolean yon_locale_window_load(language_window *window){ } void *yon_locales_load_func(language_window *window){ - char *config_value = config(lang_parameter); int config_parsed_size; - config_str config_parsed = NULL; - if (config_value){ - gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),config_value); - config_parsed = yon_char_parse(config_value,&config_parsed_size,","); - } + config_str config_parsed = yon_char_parse(window->languages,&config_parsed_size,","); int size; config_str languages = yon_config_load(languages_command,&size); @@ -171,7 +163,7 @@ void *yon_locales_load_func(language_window *window){ g_thread_exit(NULL); } -language_window *yon_language_window_new(){ +language_window *yon_language_window_new(char *chosen_languages){ language_window *window = malloc(sizeof(language_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_locales_path); window->Window = yon_gtk_builder_get_widget(builder,"Window"); @@ -184,12 +176,15 @@ language_window *yon_language_window_new(){ window->LoadingSpinner = yon_gtk_builder_get_widget(builder,"LoadingSpinner"); window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleCell")); window->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList")); + window->languages = yon_char_new(chosen_languages); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window); g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(window->LanguagesTree)); + gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),chosen_languages); + gtk_overlay_add_overlay(GTK_OVERLAY(window->LoadingOverlay),window->LoadingSpinner); g_thread_new("locales-thread",(GThreadFunc)yon_locales_load_func,window); @@ -197,11 +192,21 @@ language_window *yon_language_window_new(){ } void on_language_open(GtkWidget *, main_window *widgets){ - language_window *window = yon_language_window_new(); + GtkTreeIter iter; + char *languages = NULL; + for_iter(GTK_TREE_MODEL(widgets->LanguageList),&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&iter,3,&target,-1); + char *temp = yon_char_append_element(languages,target,","); + if (!yon_char_is_empty(languages)) free(languages); + languages = temp; + } + language_window *window = yon_language_window_new(languages); g_object_set_data(G_OBJECT(window->Window),"widgets",widgets); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),ADD_LANGUAGE_TITLE_LABEL,icon_path,"LocalesWindow"); + gtk_widget_show(window->Window); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index e726dc7..dddbf33 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1093,6 +1093,8 @@ typedef struct GtkCellRenderer *ToggleCell; GtkListStore *LanguagesList; + + char *languages; } language_window; struct locales_struct -- 2.35.1 From 014baf45825d85db61dd1e53b444eaacee194ab5 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 11:55:12 +0000 Subject: [PATCH 04/92] Added user password quality check --- Makefile | 10 +++---- source/CMakeLists.txt | 6 ++++ source/ubinstall-gtk-installation.c | 15 +++++++++- source/ubinstall-gtk-page-switch.c | 13 +++++++++ source/ubinstall-gtk-users.c | 8 +++--- source/ubinstall-gtk.c | 44 ++++++++++++++++++++++++++--- source/ubinstall-gtk.h | 7 ++++- source/ubl-strings.h | 21 +------------- ubinstall-gtk.css | 12 ++++++++ 9 files changed, 101 insertions(+), 35 deletions(-) diff --git a/Makefile b/Makefile index 44a203e..8ae62b1 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,7 @@ build: depend prepare uninstall: @echo "Uninstall ..." @for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \ -# PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \ +# PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \ PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \ $(RM) "$${PATH_FILE_MO}"; \ done @@ -103,9 +103,9 @@ uninstall: $(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ fi @if [[ -z "${DESTDIR}" ]]; then \ - [[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + [[ -d "${DESTDIR}/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [[ -d "${DESTDIR}${PREFIX}/share/applications" ]] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + [[ -d "${DESTDIR}/usr/share/applications" ]] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ fi @echo "Uninstall: OK" @@ -120,7 +120,7 @@ install: check uninstall done @for SIZE in 16 32 48; do \ install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ done @for FILE_ICON in $(wildcard icons/*/*.svg); do \ SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ @@ -134,7 +134,7 @@ install: check uninstall # install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ # sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ - sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ + sed -e "s+/usr/bin+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ fi @if [[ -z "${DESTDIR}" ]]; then \ ldconfig -n ${DESTDIR}/usr/lib; \ diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 5bf8753..b017925 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -18,6 +18,11 @@ include_directories(${JSON_INCLUDE_DIRS}) link_directories(${JSON_LIBRARY_DIRS}) add_definitions(${JSON_CFLAGS_OTHER}) +pkg_check_modules(PWQUALITY REQUIRED pwquality) +include_directories(${PWQUALITY_INCLUDE_DIRS}) +link_directories(${PWQUALITY_LIBRARY_DIRS}) +add_definitions(${PWQUALITY_CFLAGS_OTHER}) + find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) option(WEBKIT_FOUND "No" OFF) @@ -148,6 +153,7 @@ set(LIBRARIES ${UTILS_LIBRARIES} ${VTE291_LIBRARIES} ${JSON_LIBRARIES} + ${PWQUALITY_LIBRARIES} pthread ublsettings ublsettings-gtk3 diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index 6cc2b52..4c3e8c9 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -341,6 +341,19 @@ void yon_devices_setup(main_window *widgets){ yon_char_parsed_free(parsed,size); } +void yon_os_password_open(GtkWidget *, main_window *widgets){ + yon_password_window *window = yon_password_open(GTK_ENTRY(widgets->OSFormatEncryptionEntry)); + yon_password_function_set(window,(double*)yon_password_check_func); + + yon_password_hash_list_set(window,NULL,NULL,0); +} + +void yon_userdata_password_open(GtkWidget *, main_window *widgets){ + yon_password_window *window = yon_password_open(GTK_ENTRY(widgets->OSFormatEncryptionEntry)); + yon_password_hash_list_set(window,NULL,NULL,0); + yon_password_function_set(window,(double*)yon_password_check_func); +} + void yon_install_init(main_window *widgets, enum YON_PAGES page){ yon_devices_setup(widgets); @@ -349,7 +362,7 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){ GtkWidget *format_switch = NULL; GtkWidget *device_label = NULL; GtkWidget *fs_type_combo = NULL; - GtkWidget *partition_size_spin = NULL; + GtkWidget *partition_size_spin = NULL; GtkWidget *partition_size_combo = NULL; GtkWidget *partition_mark_entry = NULL; GtkWidget *partition_fs_mark_entry = NULL; diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 6479ffb..cc7948f 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -498,6 +498,19 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ main_config.install_complete=0; main_config.install_thread=0; } + } else { + gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); + gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LicenseAgreeRadio))){ + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SECTIONS); + } else { + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_WELCOME); + } + yon_page_update(widgets); + main_config.save_done=0; + main_config.install_complete=0; + main_config.install_thread=0; } } diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index 9e68138..3da0add 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -70,14 +70,14 @@ void on_user_remove_clicked(GtkWidget *,yon_user_struct *user){ void yon_password_root_new(GtkWidget *, main_window *widgets){ yon_password_window *window = yon_password_open(GTK_ENTRY(widgets->UserRootPasswordEntry)); - gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo)); - gtk_widget_show(window->Window); + yon_password_function_set(window,(double*)yon_password_check_func); + yon_password_hash_list_set(window,NULL,NULL,0); } void yon_password_new(GtkWidget *, yon_user_struct *user){ yon_password_window *window = yon_password_open(GTK_ENTRY(user->PasswordEntry)); - gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo)); - gtk_widget_show(window->Window); + yon_password_function_set(window,(double*)yon_password_check_func); + yon_password_hash_list_set(window,NULL,NULL,0); } yon_user_struct *yon_user_struct_new(){ diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 4318c1f..244f342 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -1,4 +1,5 @@ #include "ubinstall-gtk.h" +#include "pwquality.h" config main_config; @@ -6,6 +7,30 @@ void yon_license_init(main_window *widgets){ gtk_widget_set_sensitive(widgets->NextButton,0); } +double yon_password_check_func(yon_password_window *window, const char *password_string){ + pwquality_settings_t *settings = pwquality_default_settings(); + int strength = pwquality_check(settings,password_string,NULL,NULL,NULL); + if (strength<5){ + strength=5; + } + double password_strength = strength/100.0; + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(window->PasswordStrengthProgress),password_strength); + if (password_strength<0.3){ + gtk_style_context_add_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"redBox"); + gtk_style_context_remove_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"greenBox"); + gtk_style_context_remove_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"yellowBox"); + } else if (password_strength<0.6) { + gtk_style_context_add_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"yellowBox"); + gtk_style_context_remove_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"redBox"); + gtk_style_context_remove_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"greenBox"); + } else { + gtk_style_context_add_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"greenBox"); + gtk_style_context_remove_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"redBox"); + gtk_style_context_remove_class(gtk_widget_get_style_context(window->PasswordStrengthProgress),"yellowBox"); + } + return password_strength; +} + void yon_open_browser(GtkWidget *, char *link){ GtkWidget *window = yon_ubl_browser_window_open(link,TITLE_LABEL); if (window) @@ -720,6 +745,7 @@ void yon_main_window_create(main_window *widgets){ widgets->OSFormatFSMarkEntry = yon_gtk_builder_get_widget(builder,"OSFormatFSMarkEntry"); widgets->OSFormatEncryptionCombo = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionCombo"); widgets->OSFormatEncryptionEntry = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionEntry"); + widgets->OSFormatEncryptionButton = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionButton"); widgets->UserdataDevicesTree = yon_gtk_builder_get_widget(builder,"UserdataDevicesTree"); widgets->UserdataSysSectionTree = yon_gtk_builder_get_widget(builder,"UserdataSysSectionTree"); @@ -734,6 +760,7 @@ void yon_main_window_create(main_window *widgets){ widgets->UserdataFormatFSMarkEntry = yon_gtk_builder_get_widget(builder,"UserdataFormatFSMarkEntry"); widgets->UserdataFormatEncryptionCombo = yon_gtk_builder_get_widget(builder,"UserdataFormatEncryptionCombo"); widgets->UserdataFormatEncryptionEntry = yon_gtk_builder_get_widget(builder,"UserdataFormatEncryptionEntry"); + widgets->UserdataFormatEncryptionButton = yon_gtk_builder_get_widget(builder,"UserdataFormatEncryptionButton"); widgets->LanguagesFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LanguagesFilter")); widgets->LayoutsFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LayoutsFilter")); @@ -904,7 +931,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->CommonGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); g_signal_connect(G_OBJECT(widgets->SameGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); g_signal_connect(G_OBJECT(widgets->NextInstallationGPartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->OSGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); g_signal_connect(G_OBJECT(widgets->UserdataGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); g_signal_connect(G_OBJECT(widgets->GrubUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); g_signal_connect(G_OBJECT(widgets->GrubInstallGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); @@ -913,7 +939,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->CommonUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); g_signal_connect(G_OBJECT(widgets->SameUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); g_signal_connect(G_OBJECT(widgets->NextInstallationUpdateGPartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->OSUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); g_signal_connect(G_OBJECT(widgets->UserdataUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); g_signal_connect(G_OBJECT(widgets->GrubUpdateUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); g_signal_connect(G_OBJECT(widgets->GrubInstallUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); @@ -947,7 +972,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->NextInstallationSysDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); @@ -979,9 +1003,19 @@ void yon_main_window_create(main_window *widgets){ yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->NextInstallationFormatRevealer),GTK_SWITCH(widgets->NextInstallationFormatSwitch)); yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->SameInstallationFormatRevealer),GTK_SWITCH(widgets->SameInstallationFormatSwitch)); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->OSRevealer),GTK_SWITCH(widgets->OSFormatSwitch)); yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->UserdataRevealer),GTK_SWITCH(widgets->UserdataFormatSwitch)); + g_signal_connect(G_OBJECT(widgets->OSGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->OSUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->OSFormatEncryptionEntry); + g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->OSFormatEncryptionButton); + g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionButton),"clicked",G_CALLBACK(yon_os_password_open),widgets); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->OSRevealer),GTK_SWITCH(widgets->OSFormatSwitch)); + + g_signal_connect(G_OBJECT(widgets->UserdataFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserdataFormatEncryptionButton); + g_signal_connect(G_OBJECT(widgets->UserdataFormatEncryptionButton),"clicked",G_CALLBACK(yon_userdata_password_open),widgets); + g_signal_connect(G_OBJECT(widgets->PacmanSoftwareAllCell),"toggled",G_CALLBACK(on_pacman_software_all_toggled),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareChosenCell),"toggled",G_CALLBACK(on_pacman_software_chosen_toggled),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"icon-press",G_CALLBACK(on_pacman_icon_press),widgets); @@ -1036,6 +1070,8 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(yon_on_about),NULL); g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); + + yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index dddbf33..8f05d2e 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -612,6 +612,7 @@ typedef struct GtkWidget *OSFormatFSMarkEntry; GtkWidget *OSFormatEncryptionCombo; GtkWidget *OSFormatEncryptionEntry; + GtkWidget *OSFormatEncryptionButton; GtkWidget *OSSpinner; GtkWidget *OSOverlay; @@ -628,6 +629,7 @@ typedef struct GtkWidget *UserdataFormatFSMarkEntry; GtkWidget *UserdataFormatEncryptionCombo; GtkWidget *UserdataFormatEncryptionEntry; + GtkWidget *UserdataFormatEncryptionButton; GtkTreeModel *LanguagesFilter; GtkTreeModel *LayoutsFilter; @@ -1450,4 +1452,7 @@ void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item); yon_menu_item *yon_menu_add_item(yon_menu_window *target_menu,const char *id, const char *name, int children); void yon_menu_ungrab(yon_menu_window *window); void on_menu_chosen(GtkWidget *, GtkListBoxRow* row, yon_menu_window *window); -gboolean yon_locale_window_load(language_window *window); \ No newline at end of file +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 diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 2f2c879..f092e64 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -4,17 +4,13 @@ #define WELCOME_BOTTOM_LABEL _("This program will ask you few questions\nand help you install system on your computer") -#define OPEN_LABEL _("Open") - #define ADDITIONAL_ARGS yon_char_unite(\ " --dry-run ",_("Dry run; Installation will not start"),"\n",\ " --ini ", _("Set ini file for configuration mode"),\ NULL) #define KEYBOARD_TITLE_LABEL _("Keyboard layout") -#define CUSTOM_CONFIG_CREATION_ERROR_LABEL _("New configuration file creation failed") -#define CANCEL_LABEL _("Cancel") #define BACK_LABEL _("Back") #define NEXT_LABEL _("Next") #define ROOT_ONLY_LABEL _("Root only") @@ -47,7 +43,7 @@ NULL) #define ACCOUNT_NAME_LABEL _("Administrator name:") #define LOGIN__LABEL _("Administrator login:") #define PASSWORD__LABEL _("Administrator password:") -#define DEFAULT_LABEL _("Default") +// #define DEFAULT_LABEL _("Default") #define SET_PASSWORD_LABEL _("Set a password") #define DO_NOT_SET_PASSWORD_LABEL _("Do no set a password") #define AUTOMATIC_LOGIN_LABEL _("Automatic login without password prompt") @@ -123,9 +119,6 @@ NULL) #define INSTALL_BEGIN_HEADER_LABEL _("Installation configuration has ended") #define INSTALL_BEGIN_LABEL _("System installation is about to begin") -#define DOCUMENTATION_LABEL _("Documentation") -#define ABOUT_LABEL _("About") - #define DOCUMENTATION_QUESTION_LABEL _("Would you like to read documentation in the Web?") #define DOCUMENTATION_HEAD_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.") #define DOCUMENTATION_CHECK_LABEL _("Always redirect to online documentation") @@ -143,18 +136,6 @@ NULL) #define ERROR_LABEL _("Error has occured while installation process") #define LOG_VIEW_LABEL _("Log exploration") - #define SAVE_LABEL _("Save") - #define LOAD_LABEL _("Load") - - -#define LOAD_GLOBAL_LABEL _("Load global configuration") -#define LOAD_LOCAL_LABEL _("Load local configuration") -#define LOAD_CUSTOM_LABEL _("Load from specific file") - -#define SAVE_ALL_LABEL _("Save configuration") -#define SAVE_GLOBAL_LABEL _("Save to global configuration") -#define SAVE_LOCAL_LABEL _("Save to local configuration") -#define SAVE_CUSTOM_LABEL _("Save to specific file") #define CONFIGURATION_TITLE_LABEL _("Configuration") #define CONFIGURATION_FINISH_HEAD_LABEL _("Installer configuration has been finished") diff --git a/ubinstall-gtk.css b/ubinstall-gtk.css index 46577de..97b25fb 100644 --- a/ubinstall-gtk.css +++ b/ubinstall-gtk.css @@ -343,3 +343,15 @@ button { color:@theme_selected_fg_color; opacity: 1; } + +.greenBox > trough > progress{ + background-color: #99eaab; +} + +.redBox > trough > progress{ + background-color: #ea9999; +} + +.yellowBox > trough > progress{ + background-color: #f3f0ac; +} \ No newline at end of file -- 2.35.1 From 56373ca63e58113581a67fed935beb29eab12d10 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 13:32:50 +0000 Subject: [PATCH 05/92] 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 -- 2.35.1 From 41c6db9582895ef60d9e330d4aeca53d1908bd7e Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 13:43:06 +0000 Subject: [PATCH 06/92] 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 -- 2.35.1 From 9c8621c29a1895c1d0303be3aa9edd673d55bcfc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 16:04:36 +0000 Subject: [PATCH 07/92] 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; -- 2.35.1 From 79603a3653220474fe990739981aff2dbfc4aac8 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 13 Jan 2026 16:33:11 +0000 Subject: [PATCH 08/92] 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 -- 2.35.1 From 4e270c6d6b8e6e7a22239cb1945024bd6f823fad Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 16:30:20 +0000 Subject: [PATCH 34/92] 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 -- 2.35.1 From f9e586ed540c2a9f848947e55a5d04ffa95c4c26 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:00:04 +0000 Subject: [PATCH 35/92] 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 -- 2.35.1 From 4513d0a30f6ee81f1eb824ddaebae8fe3222f152 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:20:36 +0000 Subject: [PATCH 36/92] 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 -- 2.35.1 From e6c8a20fc4bb1ef21f18769d7e5e2266daba31ce Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:45:53 +0000 Subject: [PATCH 37/92] 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(); } } -- 2.35.1 From accf8e7c73230775ab65d1729324d24cd7ababc0 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 17:49:32 +0000 Subject: [PATCH 38/92] 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 -- 2.35.1 From 713d48bac6cdfbc6c23c761b14dd24686b059acf Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 19 Jan 2026 18:07:00 +0000 Subject: [PATCH 39/92] 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 -- 2.35.1 From e90cf496285d842ff41a1834d74651ff1e73b999 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 11:26:03 +0000 Subject: [PATCH 40/92] 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; -- 2.35.1 From 076eef9b13cd2f5d08080d3b402fe2513643656c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 12:58:00 +0000 Subject: [PATCH 41/92] 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){ -- 2.35.1 From da8e85a0023fbe419493a520138208be4a0d0679 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 13:45:02 +0000 Subject: [PATCH 42/92] 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: - + -- 2.35.1 From bff1147a40440abac0cf4a5f50d6248cc0933fdc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 20 Jan 2026 18:19:53 +0000 Subject: [PATCH 43/92] 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 -- 2.35.1 From 2494cfee413d2051066afc50e9971ecb38d6dc3e Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 10:57:40 +0000 Subject: [PATCH 44/92] 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 + + + + -- 2.35.1 From fe10ea82e3ebad70b9bfde9940f138c05c520d77 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 11:07:03 +0000 Subject: [PATCH 45/92] 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(); -- 2.35.1 From 4aa09c6023b8bfc8aea78ec2406dbd7571540621 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 11:47:55 +0000 Subject: [PATCH 46/92] 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 @@ + + -- 2.35.1 From 5d0c7df8a4e20eb0fe4c33317cfd056c7e1d5409 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 13:49:03 +0000 Subject: [PATCH 47/92] 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; -- 2.35.1 From 25d01cea30bc89446ad3c592446bf1e6b98b16af Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 16:48:13 +0000 Subject: [PATCH 48/92] 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 -- 2.35.1 From d15d49d30cf4095dce1948d3a6d12e9b8da1290f Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 18:04:05 +0000 Subject: [PATCH 49/92] 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); -- 2.35.1 From 7b947387dd78d80982dc0405936c83c7cb371e25 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 21 Jan 2026 18:29:47 +0000 Subject: [PATCH 50/92] 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 -- 2.35.1 From f3d5eb5b21d5f59a979c1e40d69b33e5cb5eaac2 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 22 Jan 2026 11:50:09 +0000 Subject: [PATCH 51/92] 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); -- 2.35.1 From 6f814853a53c73d75bb708d58e21d1ea733e7d5a Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 22 Jan 2026 11:59:48 +0000 Subject: [PATCH 52/92] 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 ) -- 2.35.1 From 45e38176db751ee191f5bee0bf9f0d5b74e23e8c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 22 Jan 2026 18:10:59 +0000 Subject: [PATCH 53/92] WIP language translation changes --- source/ubinstall-gtk-configuration-mode.c | 3 +- source/ubinstall-gtk-saving.c | 10 +- source/ubinstall-gtk-ui-lang.c | 68 +++- source/ubinstall-gtk.c | 390 +++++++++++----------- source/ubinstall-gtk.h | 4 +- 5 files changed, 270 insertions(+), 205 deletions(-) diff --git a/source/ubinstall-gtk-configuration-mode.c b/source/ubinstall-gtk-configuration-mode.c index 79eff78..4030c1b 100644 --- a/source/ubinstall-gtk-configuration-mode.c +++ b/source/ubinstall-gtk-configuration-mode.c @@ -64,7 +64,6 @@ void on_configuration_exit(GtkWidget *,configuration_window *window){ GList *box = gtk_container_get_children(GTK_CONTAINER(widgets->ConfigurationModeMenuItem)); GList *children = gtk_container_get_children(GTK_CONTAINER(box->data)); - GtkWidget *Check = GTK_WIDGET(g_list_nth_data(children,1)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Check),0); g_list_free(box); @@ -82,7 +81,7 @@ void on_configuration_mode_switch(GtkWidget *self,main_window *widgets){ GtkWidget *Check = GTK_WIDGET(g_list_nth_data(children,1)); int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(Check)); - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(Check))){ + if (!active){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_configuration_mode); configuration_window *window = malloc(sizeof(configuration_window)); window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index a469abd..10bf6dd 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -52,18 +52,18 @@ void on_config_global_load(GtkWidget *,main_window *widgets){ main_config.config_load_path = yon_char_new("global"); yon_load_proceed(YON_CONFIG_GLOBAL); main_config.load_mode=YON_CONFIG_GLOBAL; - yon_main_window_update_locale(widgets); + // yon_main_window_update_locale(widgets); yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); } -void on_config_custom_load(GtkWidget *,main_window *widgets){ +void on_config_custom_load(GtkWidget *,main_window *){ yon_load_proceed(YON_CONFIG_CUSTOM); // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); main_config.load_mode=YON_CONFIG_CUSTOM; - yon_main_window_update_locale(widgets); + // yon_main_window_update_locale(widgets); } -void on_config_custom_load_last(GtkWidget *,main_window *widgets){ +void on_config_custom_load_last(GtkWidget *,main_window *){ yon_config_clean(); if (!yon_char_is_empty(config_get_default_command)) yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); @@ -71,7 +71,7 @@ void on_config_custom_load_last(GtkWidget *,main_window *widgets){ yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); main_config.load_mode=YON_CONFIG_CUSTOM; - yon_main_window_update_locale(widgets); + // yon_main_window_update_locale(widgets); } void on_config_global_local_save(GtkWidget *,main_window *widgets){ diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 79e0184..1a2d2c5 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -4,6 +4,11 @@ void on_locale_changed(GtkWidget *,main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model; if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)) return; + { + GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter); + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0); + gtk_tree_path_free(path); + } gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter)); char *config_code = config(installer_locale_parameter); if (yon_char_is_empty(config_code)){ @@ -69,12 +74,17 @@ void yon_startup_language_init(){ if (size>1&&!yon_char_is_empty(parsed[1])&&strcmp(parsed[1],"(null)\n")){ yon_char_remove_last_symbol(parsed[1],'\n'); free(yon_char_divide_search(parsed[1],"=",-1)); - yon_config_register(lang_parameter,lang_parameter_command,parsed[1]); + yon_char_remove_brackets(parsed[1]); + yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[1]); } if (size>2&&!yon_char_is_empty(parsed[2])&&strcmp(parsed[2],"(null)\n")){ yon_char_remove_last_symbol(parsed[2],'\n'); free(yon_char_divide_search(parsed[2],"=",-1)); - yon_config_register(SYSTEM_LANG_parameter,SYSTEM_LANG_parameter_command,parsed[2]); + yon_char_remove_brackets(parsed[2]); + yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[2]); + } else { + yon_config_register(installer_locale_parameter,installer_locale_parameter_command,setlocale(LC_ALL,"")); + } } } @@ -95,14 +105,15 @@ void yon_main_window_update_locale(main_window *widgets){ } locale = setlocale(LC_ALL,locale); - gtk_widget_destroy(widgets->MainWindow); + // gtk_widget_destroy(widgets->MainWindow); textdomain(LocaleName); g_setenv("LANGUAGE",locale,1); - - yon_main_window_create(widgets); + yon_update_translation(widgets->builder); + // yon_main_window_create(widgets); char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); yon_window_config_load(path); + } typedef struct{ @@ -172,9 +183,7 @@ void set_locales_list(main_window *widgets){ 2,code, 3,_(title), -1); - if (yon_char_is_empty(config_code)){ - config_code=yon_char_new(setlocale(LC_ALL,NULL)); - } + if (!yon_char_is_empty(config_code)){ char *temp = strstr(config_code,"."); if (temp) temp[0]='\0'; if (!strcmp(config_code,locales[i])){ @@ -182,8 +191,8 @@ void set_locales_list(main_window *widgets){ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0); gtk_tree_path_free(path); gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter); - on_locale_changed(NULL,widgets); } + } } textdomain(LocaleName); @@ -210,4 +219,45 @@ gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *w } return 0; +} + +void yon_translation_init(GtkBuilder *builder){ + + GSList *list = gtk_builder_get_objects(builder); + GSList *iter; + for (iter = list; iter; iter = iter->next){ + GtkWidget *cur_widget = NULL; + const char *widget_text = NULL; + if (GTK_IS_BUTTON(iter->data)){ + cur_widget = GTK_WIDGET(iter->data); + widget_text = yon_char_new(gtk_button_get_label(GTK_BUTTON(cur_widget))); + } else if (GTK_IS_LABEL(iter->data)){ + cur_widget = GTK_WIDGET(iter->data); + widget_text = yon_char_new(gtk_label_get_text(GTK_LABEL(cur_widget))); + } else continue; + g_object_set_data(G_OBJECT(cur_widget),"original_label",(void*)widget_text); + + } +} + +void yon_update_translation(GtkBuilder *builder){ + GSList *list = gtk_builder_get_objects(builder); + GSList *iter; + for (iter = list; iter; iter = iter->next){ + if (GTK_IS_BUTTON(iter->data)){ + GtkWidget *cur_button = GTK_WIDGET(iter->data); + char *source_label = g_object_get_data(G_OBJECT(cur_button),"original_label"); + if (!yon_char_is_empty(source_label)){ + gtk_button_set_label(GTK_BUTTON(cur_button),_(source_label)); + } + + } else if (GTK_IS_LABEL(iter->data)){ + GtkWidget *cur_label = GTK_WIDGET(iter->data); + char *source_label = g_object_get_data(G_OBJECT(cur_label),"original_label"); + if (!yon_char_is_empty(source_label)){ + gtk_label_set_text(GTK_LABEL(cur_label),_(source_label)); + } + + } + } } \ No newline at end of file diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index b8e855d..1e297e3 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -401,7 +401,9 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ void yon_main_window_create(main_window *widgets){ + __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); + yon_translation_init(builder); gtk_builder_add_callback_symbol(builder,"yon_gtk_widget_set_sensitive_from_toggle_button",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button)); gtk_builder_add_callback_symbol(builder,"on_toggle_button_switch_on",G_CALLBACK(on_toggle_button_switch_on)); // Custom widgets configuration @@ -713,164 +715,167 @@ void yon_main_window_create(main_window *widgets){ gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem); gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->AboutMenuItem); - g_signal_connect(G_OBJECT(widgets->LicenseAgreeRadio),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),widgets->NextButton); - - g_signal_connect(G_OBJECT(widgets->LoadGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); - g_signal_connect(G_OBJECT(widgets->LoadLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); - g_signal_connect(G_OBJECT(widgets->LoadExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); - - - g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets); - g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets); - - g_signal_connect(G_OBJECT(widgets->CommonGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->SameGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->NextInstallationGPartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->UserdataGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->GrubUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->GrubInstallGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->AdvancedGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - - g_signal_connect(G_OBJECT(widgets->CommonUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->SameUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->NextInstallationUpdateGPartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->UserdataUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->GrubUpdateUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->GrubInstallUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->AdvancedUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - - // g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets); - g_signal_connect(G_OBJECT(widgets->NextButton),"clicked",G_CALLBACK(on_page_next_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_prev_clicked),widgets); - - g_signal_connect(G_OBJECT(widgets->LocaleAddButton),"clicked",G_CALLBACK(on_language_open),widgets); - g_signal_connect(G_OBJECT(widgets->LocaleRemoveButton),"clicked",G_CALLBACK(on_language_remove),widgets); - g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(on_language_default_toggled),widgets); - g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets); - - g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets); - #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); - - 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); - g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_sensitive_toggled),widgets); - g_signal_connect(G_OBJECT(widgets->KeyboardLayoutMoveUpButton),"clicked",G_CALLBACK(on_layout_move_up),widgets); - g_signal_connect(G_OBJECT(widgets->KeyboardLayoutMoveDownButton),"clicked",G_CALLBACK(on_layout_move_down),widgets); - g_signal_connect(G_OBJECT(widgets->KeyboardLayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets); - g_signal_connect(G_OBJECT(widgets->KeyboardLayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets); - g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets); - - g_signal_connect(G_OBJECT(widgets->GrubInstallDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->GrubUpdateDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->NextInstallationSysDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - - - g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); - g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); - g_signal_connect(G_OBJECT(widgets->NextInstallationSizeTypeSpin),"changed",G_CALLBACK(on_partition_changed),widgets); - - g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordEntry); - g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordButton); - g_signal_connect(G_OBJECT(widgets->UserAddButton),"clicked",G_CALLBACK(on_user_add),widgets); - g_signal_connect(G_OBJECT(widgets->UserRootPasswordButton),"clicked",G_CALLBACK(yon_password_root_new),widgets); - g_signal_connect(G_OBJECT(widgets->BootloadDefaulOSButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets); - - g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets); - g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets); - - g_signal_connect(G_OBJECT(widgets->StartupServicesTree),"cursor-changed",G_CALLBACK(on_startup_services_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->StartupServicesAddButton),"clicked",G_CALLBACK(on_startup_service_add),widgets); - g_signal_connect(G_OBJECT(widgets->StartupServicesEditButton),"clicked",G_CALLBACK(on_startup_service_edit),widgets); - g_signal_connect(G_OBJECT(widgets->StartupServicesRemoveButton),"clicked",G_CALLBACK(on_startup_services_remove),widgets); - g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets); - - g_signal_connect(G_OBJECT(widgets->StartupAppsTree),"cursor-changed",G_CALLBACK(on_startup_apps_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->StartupAppsAddButton),"clicked",G_CALLBACK(on_startup_app_add),widgets); - g_signal_connect(G_OBJECT(widgets->StartupAppsEditButton),"clicked",G_CALLBACK(on_startup_app_edit),widgets); - g_signal_connect(G_OBJECT(widgets->StartupAppsRemoveButton),"clicked",G_CALLBACK(on_startup_apps_remove),widgets); - g_signal_connect(G_OBJECT(widgets->StartupAppsChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets); - - g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry); + { + g_signal_connect(G_OBJECT(widgets->LicenseAgreeRadio),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),widgets->NextButton); + + g_signal_connect(G_OBJECT(widgets->LoadGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); + g_signal_connect(G_OBJECT(widgets->LoadLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); + g_signal_connect(G_OBJECT(widgets->LoadExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); + + + g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets); + g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets); + + g_signal_connect(G_OBJECT(widgets->CommonGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->SameGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->NextInstallationGPartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->UserdataGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->GrubUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->GrubInstallGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->AdvancedGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + + g_signal_connect(G_OBJECT(widgets->CommonUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->SameUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->NextInstallationUpdateGPartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->UserdataUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->GrubUpdateUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->GrubInstallUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->AdvancedUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + + // g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets); + g_signal_connect(G_OBJECT(widgets->NextButton),"clicked",G_CALLBACK(on_page_next_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_prev_clicked),widgets); + + g_signal_connect(G_OBJECT(widgets->LocaleAddButton),"clicked",G_CALLBACK(on_language_open),widgets); + g_signal_connect(G_OBJECT(widgets->LocaleRemoveButton),"clicked",G_CALLBACK(on_language_remove),widgets); + g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(on_language_default_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets); + + g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); + #ifdef TIMEZONEMAP_INCLUDE + 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); + + 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); + g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_sensitive_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutMoveUpButton),"clicked",G_CALLBACK(on_layout_move_up),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutMoveDownButton),"clicked",G_CALLBACK(on_layout_move_down),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets); + + g_signal_connect(G_OBJECT(widgets->GrubInstallDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->GrubUpdateDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->NextInstallationSysDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + + + g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); + g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); + g_signal_connect(G_OBJECT(widgets->NextInstallationSizeTypeSpin),"changed",G_CALLBACK(on_partition_changed),widgets); + + g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordEntry); + g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordButton); + g_signal_connect(G_OBJECT(widgets->UserAddButton),"clicked",G_CALLBACK(on_user_add),widgets); + g_signal_connect(G_OBJECT(widgets->UserRootPasswordButton),"clicked",G_CALLBACK(yon_password_root_new),widgets); + g_signal_connect(G_OBJECT(widgets->BootloadDefaulOSButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets); + + g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets); + g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets); + // g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets); + + g_signal_connect(G_OBJECT(widgets->StartupServicesTree),"cursor-changed",G_CALLBACK(on_startup_services_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->StartupServicesAddButton),"clicked",G_CALLBACK(on_startup_service_add),widgets); + g_signal_connect(G_OBJECT(widgets->StartupServicesEditButton),"clicked",G_CALLBACK(on_startup_service_edit),widgets); + g_signal_connect(G_OBJECT(widgets->StartupServicesRemoveButton),"clicked",G_CALLBACK(on_startup_services_remove),widgets); + g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets); + + g_signal_connect(G_OBJECT(widgets->StartupAppsTree),"cursor-changed",G_CALLBACK(on_startup_apps_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsAddButton),"clicked",G_CALLBACK(on_startup_app_add),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsEditButton),"clicked",G_CALLBACK(on_startup_app_edit),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsRemoveButton),"clicked",G_CALLBACK(on_startup_apps_remove),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets); + + g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->NextInstallationFormatRevealer),GTK_SWITCH(widgets->NextInstallationFormatSwitch)); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->SameInstallationFormatRevealer),GTK_SWITCH(widgets->SameInstallationFormatSwitch)); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->UserdataRevealer),GTK_SWITCH(widgets->UserdataFormatSwitch)); - - g_signal_connect(G_OBJECT(widgets->OSGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); - g_signal_connect(G_OBJECT(widgets->OSUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->OSFormatEncryptionEntry); - g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->OSFormatEncryptionButton); - g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionButton),"clicked",G_CALLBACK(yon_os_password_open),widgets); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->OSRevealer),GTK_SWITCH(widgets->OSFormatSwitch)); - - g_signal_connect(G_OBJECT(widgets->UserdataFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserdataFormatEncryptionButton); - g_signal_connect(G_OBJECT(widgets->UserdataFormatEncryptionButton),"clicked",G_CALLBACK(yon_userdata_password_open),widgets); - - g_signal_connect(G_OBJECT(widgets->PacmanSoftwareAllCell),"toggled",G_CALLBACK(on_pacman_software_all_toggled),widgets); - g_signal_connect(G_OBJECT(widgets->PacmanSoftwareChosenCell),"toggled",G_CALLBACK(on_pacman_software_chosen_toggled),widgets); - g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"icon-press",G_CALLBACK(on_pacman_icon_press),widgets); - g_signal_connect(G_OBJECT(widgets->BootloadUserAddButton),"clicked",G_CALLBACK(on_bootloader_user_add),widgets); - - g_signal_connect(G_OBJECT(widgets->BootloadTimerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->BootloadTimerSpin); - g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton); - g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton); - g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree); - - g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainNameEntry); - g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainAdminEntry); - g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainPasswordEntry); - g_signal_connect(G_OBJECT(widgets->NetworkNTPServerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkNTPCombo); - g_signal_connect(G_OBJECT(widgets->NetworkNTPServerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkNTPEntry); - g_signal_connect(G_OBJECT(widgets->HostnameSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->HotnameEntry); - g_signal_connect(G_OBJECT(widgets->HostnameSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AutoHostnameCheck); - g_signal_connect(G_OBJECT(widgets->HostnameSensitiveSwitch),"state-set",G_CALLBACK(on_autohostname_sensitiveness_check),widgets); - g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(on_autohostname_check),widgets); - g_signal_connect(G_OBJECT(widgets->HotnameEntry),"changed",G_CALLBACK(on_hostname_entry_changed),widgets); - g_signal_connect(G_OBJECT(widgets->NetworkConnectionsAddButton),"clicked",G_CALLBACK(on_connection_add),widgets); - g_signal_connect(G_OBJECT(widgets->NetworkNTPCombo),"changed",G_CALLBACK(on_ntp_sync),widgets); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->AdvancedLoadTypeRevealer),GTK_SWITCH(widgets->AdvancedLoadTypeSwitch)); - yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->AdvancedSwapRevealer),GTK_SWITCH(widgets->AdvancedSwapSwitch)); - - g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSpin); - g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSizeSwitch); - - g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets); - g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets); - g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets); - g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); - g_signal_connect(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),"changed",G_CALLBACK(on_advanced_virtual_device_changed),widgets); - g_signal_connect(G_OBJECT(widgets->PackagesTree),"cursor-changed",G_CALLBACK(yon_on_packages_selected),widgets); - g_signal_connect(G_OBJECT(widgets->PackagesTree),"row-activated",G_CALLBACK(yon_on_packages_activated),widgets); - g_signal_connect(G_OBJECT(widgets->PackagesChosenCell),"toggled",G_CALLBACK(yon_on_packages_chosen),widgets); - - g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); - g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); - g_signal_connect(G_OBJECT(widgets->HubPackagesListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); - g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets); - g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets); - g_signal_connect(G_OBJECT(widgets->HubPackagesListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets); - - g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"button-release-event",G_CALLBACK(on_install_slider_prev),widgets); - g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"button-release-event",G_CALLBACK(on_install_slider_next),widgets); - g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"enter-notify-event",G_CALLBACK(on_install_slider_hover_highlight),widgets); - g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"enter-notify-event",G_CALLBACK(on_install_slider_hover_highlight),widgets); - g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"leave-notify-event",G_CALLBACK(on_install_slider_hover_highlight_end),widgets); - g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"leave-notify-event",G_CALLBACK(on_install_slider_hover_highlight_end),widgets); - - g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(yon_on_about),NULL); - g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->NextInstallationFormatRevealer),GTK_SWITCH(widgets->NextInstallationFormatSwitch)); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->SameInstallationFormatRevealer),GTK_SWITCH(widgets->SameInstallationFormatSwitch)); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->UserdataRevealer),GTK_SWITCH(widgets->UserdataFormatSwitch)); + + g_signal_connect(G_OBJECT(widgets->OSGpartedButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->OSUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); + g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->OSFormatEncryptionEntry); + g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->OSFormatEncryptionButton); + g_signal_connect(G_OBJECT(widgets->OSFormatEncryptionButton),"clicked",G_CALLBACK(yon_os_password_open),widgets); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->OSRevealer),GTK_SWITCH(widgets->OSFormatSwitch)); + + g_signal_connect(G_OBJECT(widgets->UserdataFormatEncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserdataFormatEncryptionButton); + g_signal_connect(G_OBJECT(widgets->UserdataFormatEncryptionButton),"clicked",G_CALLBACK(yon_userdata_password_open),widgets); + + g_signal_connect(G_OBJECT(widgets->PacmanSoftwareAllCell),"toggled",G_CALLBACK(on_pacman_software_all_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->PacmanSoftwareChosenCell),"toggled",G_CALLBACK(on_pacman_software_chosen_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"icon-press",G_CALLBACK(on_pacman_icon_press),widgets); + g_signal_connect(G_OBJECT(widgets->BootloadUserAddButton),"clicked",G_CALLBACK(on_bootloader_user_add),widgets); + + g_signal_connect(G_OBJECT(widgets->BootloadTimerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->BootloadTimerSpin); + g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton); + g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton); + g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree); + + g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainNameEntry); + g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainAdminEntry); + g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainPasswordEntry); + g_signal_connect(G_OBJECT(widgets->NetworkNTPServerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkNTPCombo); + g_signal_connect(G_OBJECT(widgets->NetworkNTPServerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkNTPEntry); + g_signal_connect(G_OBJECT(widgets->HostnameSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->HotnameEntry); + g_signal_connect(G_OBJECT(widgets->HostnameSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AutoHostnameCheck); + g_signal_connect(G_OBJECT(widgets->HostnameSensitiveSwitch),"state-set",G_CALLBACK(on_autohostname_sensitiveness_check),widgets); + g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(on_autohostname_check),widgets); + g_signal_connect(G_OBJECT(widgets->HotnameEntry),"changed",G_CALLBACK(on_hostname_entry_changed),widgets); + g_signal_connect(G_OBJECT(widgets->NetworkConnectionsAddButton),"clicked",G_CALLBACK(on_connection_add),widgets); + g_signal_connect(G_OBJECT(widgets->NetworkNTPCombo),"changed",G_CALLBACK(on_ntp_sync),widgets); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->AdvancedLoadTypeRevealer),GTK_SWITCH(widgets->AdvancedLoadTypeSwitch)); + yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->AdvancedSwapRevealer),GTK_SWITCH(widgets->AdvancedSwapSwitch)); + + g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSpin); + g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSizeSwitch); + + g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets); + g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets); + g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets); + g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); + g_signal_connect(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),"changed",G_CALLBACK(on_advanced_virtual_device_changed),widgets); + g_signal_connect(G_OBJECT(widgets->PackagesTree),"cursor-changed",G_CALLBACK(yon_on_packages_selected),widgets); + g_signal_connect(G_OBJECT(widgets->PackagesTree),"row-activated",G_CALLBACK(yon_on_packages_activated),widgets); + g_signal_connect(G_OBJECT(widgets->PackagesChosenCell),"toggled",G_CALLBACK(yon_on_packages_chosen),widgets); + + g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); + g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); + g_signal_connect(G_OBJECT(widgets->HubPackagesListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); + g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets); + g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets); + g_signal_connect(G_OBJECT(widgets->HubPackagesListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets); + + g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"button-release-event",G_CALLBACK(on_install_slider_prev),widgets); + g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"button-release-event",G_CALLBACK(on_install_slider_next),widgets); + g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"enter-notify-event",G_CALLBACK(on_install_slider_hover_highlight),widgets); + g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"enter-notify-event",G_CALLBACK(on_install_slider_hover_highlight),widgets); + g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"leave-notify-event",G_CALLBACK(on_install_slider_hover_highlight_end),widgets); + g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"leave-notify-event",G_CALLBACK(on_install_slider_hover_highlight_end),widgets); + + g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(yon_on_about),NULL); + g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); + } + yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); @@ -922,10 +927,6 @@ void yon_main_window_create(main_window *widgets){ if (main_config.lock_load_global == 1){ gtk_widget_set_sensitive(widgets->LoadGlobalConfigurationMenuItem,0); } - if (getuid()){ - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets->ConfigurationModeMenuItem),1); - } - gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); gtk_window_set_icon_name(GTK_WINDOW(widgets->MainWindow),icon_path); @@ -953,6 +954,13 @@ void yon_main_window_create(main_window *widgets){ } else { gtk_widget_hide(widgets->StartScenarioButton); } + if (getuid()){ + gtk_menu_item_activate(GTK_MENU_ITEM(widgets->ConfigurationModeMenuItem)); + if (yon_char_is_empty(main_config.config_save_path)){ + gtk_main_quit(); + exit (1); + } + } if (main_config.force_ini){ if (yon_configuration_path_check(main_config.config_save_path)){ GList *box = gtk_container_get_children(GTK_CONTAINER(widgets->ConfigurationModeMenuItem)); @@ -967,8 +975,6 @@ void yon_main_window_create(main_window *widgets){ exit (1); } } - yon_locale_init(); - set_locales_list(widgets); } gboolean yon_maximize_start(main_window *widgets){ @@ -989,7 +995,7 @@ void *yon_maximize(main_window *widgets){ * Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом. */ main_window *yon_main_window_complete(){ - if (main_config.force_ini){ + if (main_config.force_ini){ //Check if config path exists if (yon_configuration_path_check(main_config.config_save_path)){ { main_config.configure_mode=1; @@ -997,17 +1003,32 @@ main_window *yon_main_window_complete(){ } } main_window *widgets=NULL; - widgets = yon_remalloc(widgets,sizeof(main_window)); + widgets = malloc(sizeof(main_window)); memset(widgets,0,sizeof(main_window)); - yon_startup_language_init(); yon_main_window_create(widgets); - yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); - // yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow"); + + yon_startup_language_init(); + yon_locale_init(); + set_locales_list(widgets); + // yon_main_window_update_locale(widgets); + // // yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow"); + + + int fullscreen = 0; + char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); + if (access(path,F_OK)){ + fullscreen = 1; + g_thread_new("fullscreen",(GThreadFunc)yon_maximize,widgets); + + } + yon_window_config_load(path); + yon_window_config_add_instant_parameter("fullscreen","window",&fullscreen,YON_TYPE_BOOLEAN); + yon_main_window_update_locale(widgets); return widgets; } int main(int argc, char *argv[]){ - __attribute__((unused)) char *locale = setlocale(LC_ALL, ""); + // __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); textdomain(LocaleName); yon_ubl_connect_config((_template_config*)&main_config); config_init(); @@ -1040,31 +1061,24 @@ int main(int argc, char *argv[]){ } gtk_init(&argc,&argv); main_window *widgets = NULL; - if (widgets){}; - int fullscreen = 0; - widgets = yon_main_window_complete(); - GtkWidget *root_button = yon_root_button_new(argv,argc); - gtk_style_context_add_class(gtk_widget_get_style_context(root_button),"menuitemtop"); - - gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),root_button); - - yon_root_button_init(root_button,GTK_WINDOW(widgets->MainWindow)); - on_config_global_load(NULL,widgets); - char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); - if (access(path,F_OK)){ - fullscreen = 1; - g_thread_new("fullscreen",(GThreadFunc)yon_maximize,widgets); - - } - yon_window_config_load(path); - yon_window_config_add_instant_parameter("fullscreen","window",&fullscreen,YON_TYPE_BOOLEAN); - main_config.launch_arguments=yon_char_parsed_copy(argv,argc); - main_config.launch_size=argc; GtkCssProvider *css=gtk_css_provider_new(); gtk_css_provider_load_from_resource(css,CssPath); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); + { + widgets = yon_main_window_complete(); + GtkWidget *root_button = yon_root_button_new(argv,argc); + gtk_style_context_add_class(gtk_widget_get_style_context(root_button),"menuitemtop"); + gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),root_button); + + yon_root_button_init(root_button,GTK_WINDOW(widgets->MainWindow)); + + on_config_global_load(NULL,widgets); + } + + main_config.launch_arguments=yon_char_parsed_copy(argv,argc); + main_config.launch_size=argc; if (getuid()!=0){ yon_ubl_status_box_render(yon_char_get_localised_from_lib(ROOT_WARNING_LABEL),BACKGROUND_IMAGE_FAIL_TYPE); } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 35857e6..5f244ba 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1468,4 +1468,6 @@ 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(); -gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets); \ No newline at end of file +gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets); +void yon_update_translation(GtkBuilder *builder); +void yon_translation_init(GtkBuilder *builder); \ No newline at end of file -- 2.35.1 From 914862a3a315b1d9b1d6ec57e93172e3328a522c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 23 Jan 2026 10:04:16 +0000 Subject: [PATCH 54/92] Increased configuration hub's label right margins --- source/ubinstall-gtk-config-hub.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c index 0edfcb5..40dea24 100644 --- a/source/ubinstall-gtk-config-hub.c +++ b/source/ubinstall-gtk-config-hub.c @@ -147,6 +147,7 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum cur_icon->page = page; GtkWidget *flow = gtk_flow_box_child_new(); gtk_style_context_add_class(gtk_widget_get_style_context(flow),"bggrey"); + gtk_widget_set_margin_end(cur_icon->Label,5); gtk_label_set_xalign(GTK_LABEL(cur_icon->Label),0); g_object_set_data(G_OBJECT(flow),"config_hub_icon",cur_icon); -- 2.35.1 From 843d32092729e93e7c261941bebf1afd37180d99 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 23 Jan 2026 10:08:25 +0000 Subject: [PATCH 55/92] Style fixes --- ubinstall-gtk.glade | 1 + 1 file changed, 1 insertion(+) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 587d466..1b7b8cb 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -608,6 +608,7 @@ True False vertical + 5 True -- 2.35.1 From b01b16881f73cb0c9abdc8437037bc4f80baa231 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 23 Jan 2026 10:15:08 +0000 Subject: [PATCH 56/92] Fixed installer translations search --- source/ubinstall-gtk-ui-lang.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 1a2d2c5..0333a4f 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -131,12 +131,18 @@ int yon_char_parsed_compare(const void *a, const void *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; + char *target; + char *loc_target; + gtk_tree_model_get(model, iter, 1,&target, 4, &loc_target,-1); + char *string_utf = g_utf8_casefold(key,-1); + char *target_utf = g_utf8_casefold(target,-1); + char *loc_target_utf = g_utf8_casefold(loc_target,-1); + + char *string_normalized = g_utf8_strdown(g_utf8_normalize(string_utf,-1,G_NORMALIZE_DEFAULT),-1); + char *target_normalized = g_utf8_strdown(g_utf8_normalize(target_utf,-1,G_NORMALIZE_DEFAULT),-1); + char *loc_target_normalized = g_utf8_strdown(g_utf8_normalize(loc_target_utf,-1,G_NORMALIZE_DEFAULT),-1); + + return !(g_str_has_prefix(target_normalized,string_normalized) || g_str_has_prefix(loc_target_normalized,string_normalized)); } void set_locales_list(main_window *widgets){ -- 2.35.1 From 44680cfe5917702c4ddd7c246bee3630b3f402d9 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 23 Jan 2026 17:07:30 +0000 Subject: [PATCH 57/92] New application language switching applied --- source/ubinstall-gtk-bootloader.c | 1 + source/ubinstall-gtk-keyboard.c | 5 +++ source/ubinstall-gtk-network.c | 9 +++++ source/ubinstall-gtk-packages.c | 1 + source/ubinstall-gtk-page-switch.c | 3 +- source/ubinstall-gtk-region.c | 9 ++++- source/ubinstall-gtk-saving.c | 2 +- source/ubinstall-gtk-startup-apps.c | 4 +- source/ubinstall-gtk-startup-services.c | 4 +- source/ubinstall-gtk-ui-lang.c | 49 +++++++++++++++++-------- source/ubinstall-gtk-users.c | 3 ++ source/ubinstall-gtk.c | 30 +++++++-------- source/ubinstall-gtk.h | 7 ++-- source/ubl-strings.h | 6 +-- ubinstall-gtk.glade | 5 --- 15 files changed, 89 insertions(+), 49 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index 65f7229..b1f10c5 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -435,6 +435,7 @@ void yon_bootloader_init(main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(widgets->BootloadDefaultOSEntry),DEFAULT_BOOTLOAD_MENU_ITEM_LABEL); } if (!yon_char_is_empty(autologin)&&(!strcmp(autologin,"yes")||!strcmp(autologin,"enable"))){ + gtk_list_store_clear(widgets->BootloadUsersList); gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1); int admins_size; config_str admins_parsed = yon_char_parse(admins,&admins_size,","); diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 659fa74..9e1c7f1 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -51,6 +51,11 @@ void yon_keyboard_init(main_window *widgets){ g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo)); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); + + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo),NULL,DEFAULT_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo),NULL,ON_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo),NULL,OFF_LABEL); int size; gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo),DEFAULT_LABEL); config_str models = yon_config_load(get_keyboard_models_command,&size); diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 9908e2c..75ea523 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -322,6 +322,15 @@ void yon_network_init(main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(widgets->NetworkDomainPasswordEntry),domain_password); } } + { + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo)); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo),NULL,DEFAULT_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo),NULL,"DHCP"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo),NULL,"NTP (ntp.org)"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo),NULL,"NTP (vniiftri.ru)"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo),NULL,MANUAL_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->NetworkNTPCombo),NULL,DO_NOT_CONFIGURE_LABEL); + } if (!yon_char_is_empty(ntp)){ gtk_switch_set_active(GTK_SWITCH(widgets->NetworkNTPServerSwitch),1); gtk_widget_set_sensitive(widgets->NetworkNTPEntry,0); diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index 0ac87d0..18cff6b 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -53,6 +53,7 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite } void yon_packages_tab_init(main_window *widgets){ + gtk_tree_store_clear(widgets->PackagesList); int size; config_str packages = yon_resource_open_file(groups_list_path,&size); for (int i=1;iSourceButton); + gtk_widget_show(widgets->BackButton); gtk_widget_set_sensitive(widgets->BackButton,1); gtk_widget_set_sensitive(widgets->NextButton,1); gtk_widget_set_sensitive(widgets->CancelInstallButton,1); @@ -418,7 +419,7 @@ enum YON_PAGES yon_recovery_get_next(main_window *widgets){ void yon_page_init(main_window *widgets, enum YON_PAGES page){ switch(page){ case YON_PAGE_WELCOME: - set_locales_list(widgets); + yon_set_locales_list(widgets); break; case YON_PAGE_CONFIG_HUB: yon_configuration_hub_init(widgets); diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index cbb8b4c..92d2d26 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -28,8 +28,11 @@ void on_zone_changed(GtkWidget *, main_window *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); + if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){ + char *timezone = yon_char_unite(region,"/",zone,NULL); + cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); + free(timezone); + } g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); } #endif @@ -65,6 +68,8 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind #endif void yon_region_init(main_window *widgets){ + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo)); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); #ifdef TIMEZONEMAP_INCLUDE yon_debug_output("%s\n","TIMEZONEMAP enabled"); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox)); diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index 10bf6dd..aa13879 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -52,7 +52,7 @@ void on_config_global_load(GtkWidget *,main_window *widgets){ main_config.config_load_path = yon_char_new("global"); yon_load_proceed(YON_CONFIG_GLOBAL); main_config.load_mode=YON_CONFIG_GLOBAL; - // yon_main_window_update_locale(widgets); + yon_main_window_update_locale(widgets); yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); } diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c index 3ae0a4a..3014f1e 100644 --- a/source/ubinstall-gtk-startup-apps.c +++ b/source/ubinstall-gtk-startup-apps.c @@ -43,7 +43,7 @@ void on_startup_apps_remove(GtkWidget *self,main_window *widgets){ void yon_startup_apps_setup(main_window *widgets){ GtkTreeIter iter; - if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->StartupAppsList),&iter)){ + gtk_list_store_clear(widgets->StartupAppsList); int size; config_str apps = yon_resource_open_file(apps_list_path,&size); for (int i=1;iStartupAppsList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(_(parsed[2]),""),-1); } } - } + char *startup = config(SERVICES_ENABLE_parameter); if (!yon_char_is_empty(startup)){ if (!strcmp(startup,"auto")){ diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 4bfb3ca..b99a166 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -51,7 +51,7 @@ void on_startup_services_remove(GtkWidget *self,main_window *widgets){ void yon_startup_services_setup(main_window *widgets){ GtkTreeIter iter; - if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->StartupList),&iter)){ + gtk_list_store_clear(widgets->StartupList); int size; config_str services = yon_resource_open_file(services_list_path,&size); for (int i=1;iStartupList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(_(parsed[2]),""),-1); } } - } + char *startup = config(SERVICES_ENABLE_parameter); if (!yon_char_is_empty(startup)){ if (!strcmp(startup,"auto")){ diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 0333a4f..a14c223 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -4,11 +4,11 @@ void on_locale_changed(GtkWidget *,main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model; if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)) return; - { - GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter); - gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0); - gtk_tree_path_free(path); - } + // { + // GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter); + // gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0); + // gtk_tree_path_free(path); + // } gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter)); char *config_code = config(installer_locale_parameter); if (yon_char_is_empty(config_code)){ @@ -47,7 +47,6 @@ void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColum config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_locale_parameter,NULL); char *command_parameters = yon_char_parsed_to_string(parameters,size," "); char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets); if (!system(command)){}; yon_main_window_update_locale(widgets); g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets); @@ -104,11 +103,12 @@ void yon_main_window_update_locale(main_window *widgets){ } } locale = setlocale(LC_ALL,locale); + yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)locale); // gtk_widget_destroy(widgets->MainWindow); textdomain(LocaleName); g_setenv("LANGUAGE",locale,1); - yon_update_translation(widgets->builder); + yon_update_translation(widgets); // yon_main_window_create(widgets); char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); @@ -145,7 +145,7 @@ gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, Gt return !(g_str_has_prefix(target_normalized,string_normalized) || g_str_has_prefix(loc_target_normalized,string_normalized)); } -void set_locales_list(main_window *widgets){ +void yon_set_locales_list(main_window *widgets){ gtk_list_store_clear(widgets->InstallerLanguageList); gtk_list_store_clear(widgets->InstallerCountryList); @@ -189,14 +189,20 @@ void set_locales_list(main_window *widgets){ 2,code, 3,_(title), -1); + } + for_iter (GTK_TREE_MODEL(widgets->InstallerLanguageList), &iter){ + char *compare_target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter, 3, &compare_target, -1); if (!yon_char_is_empty(config_code)){ char *temp = strstr(config_code,"."); if (temp) temp[0]='\0'; - if (!strcmp(config_code,locales[i])){ + if (!strcmp(config_code,compare_target)){ + gtk_widget_realize(widgets->LanguagesTree); GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter); gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0); gtk_tree_path_free(path); gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter); + on_locale_changed(NULL,widgets); } } } @@ -232,25 +238,31 @@ void yon_translation_init(GtkBuilder *builder){ GSList *list = gtk_builder_get_objects(builder); GSList *iter; for (iter = list; iter; iter = iter->next){ - GtkWidget *cur_widget = NULL; + GObject *cur_widget = NULL; const char *widget_text = NULL; if (GTK_IS_BUTTON(iter->data)){ - cur_widget = GTK_WIDGET(iter->data); + cur_widget = G_OBJECT(iter->data); widget_text = yon_char_new(gtk_button_get_label(GTK_BUTTON(cur_widget))); } else if (GTK_IS_LABEL(iter->data)){ - cur_widget = GTK_WIDGET(iter->data); + cur_widget = G_OBJECT(iter->data); widget_text = yon_char_new(gtk_label_get_text(GTK_LABEL(cur_widget))); + } else if (GTK_IS_TREE_VIEW_COLUMN(iter->data)){ + cur_widget = G_OBJECT(iter->data); + widget_text = yon_char_new(gtk_tree_view_column_get_title(GTK_TREE_VIEW_COLUMN(cur_widget))); } else continue; g_object_set_data(G_OBJECT(cur_widget),"original_label",(void*)widget_text); } } -void yon_update_translation(GtkBuilder *builder){ +void yon_update_translation(main_window *widgets){ + GtkBuilder *builder = widgets->builder; GSList *list = gtk_builder_get_objects(builder); GSList *iter; for (iter = list; iter; iter = iter->next){ - if (GTK_IS_BUTTON(iter->data)){ + if (iter->data == widgets->LicenceLabel){ + yon_licence_load(widgets); + } else if (GTK_IS_BUTTON(iter->data)){ GtkWidget *cur_button = GTK_WIDGET(iter->data); char *source_label = g_object_get_data(G_OBJECT(cur_button),"original_label"); if (!yon_char_is_empty(source_label)){ @@ -263,7 +275,14 @@ void yon_update_translation(GtkBuilder *builder){ if (!yon_char_is_empty(source_label)){ gtk_label_set_text(GTK_LABEL(cur_label),_(source_label)); } - + } else if (GTK_IS_TREE_VIEW_COLUMN(iter->data)){ + GObject *cur_column = G_OBJECT(iter->data); + char *source_label = g_object_get_data(G_OBJECT(cur_column),"original_label"); + if (!yon_char_is_empty(source_label)){ + gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(cur_column),_(source_label)); + } + } else if (iter->data == widgets->LanguagesTree){ + yon_set_locales_list(widgets); } } } \ No newline at end of file diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index 850f300..681e23a 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -106,6 +106,9 @@ yon_user_struct *yon_user_struct_new(){ } void yon_user_init(main_window *widgets){ + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo)); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,DEFAULT_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,SET_PASSWORD_LABEL); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserRootPasswordEntry)); char *root_password = config(root_password_parameter); char *autologin = config(autologin_parameter); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 1e297e3..ab48f19 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -399,6 +399,20 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ return 1; } +void yon_licence_load(main_window *widgets){ + int size; + config_str parsed = NULL; + parsed = yon_file_open(licence_path,&size); + if (size){ + bind_textdomain_codeset("ublinux-init-eula","UTF-8"); + textdomain("ublinux-init-eula"); + char *licence = yon_char_parsed_to_string(parsed,size,""); + gtk_label_set_text(GTK_LABEL(widgets->LicenceLabel),_(licence)); + free(licence); + yon_char_parsed_free(parsed,size); + textdomain(LocaleName); + } +} void yon_main_window_create(main_window *widgets){ __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); @@ -931,20 +945,6 @@ void yon_main_window_create(main_window *widgets){ gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); gtk_window_set_icon_name(GTK_WINDOW(widgets->MainWindow),icon_path); } - { - int size; - config_str parsed = NULL; - parsed = yon_file_open(licence_path,&size); - if (size){ - bind_textdomain_codeset("ublinux-init-eula","UTF-8"); - textdomain("ublinux-init-eula"); - char *licence = yon_char_parsed_to_string(parsed,size,""); - gtk_label_set_text(GTK_LABEL(widgets->LicenceLabel),_(licence)); - free(licence); - yon_char_parsed_free(parsed,size); - textdomain(LocaleName); - } - } gtk_builder_connect_signals(builder,NULL); if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){ gtk_widget_show(widgets->StartScenarioButton); @@ -1009,7 +1009,7 @@ main_window *yon_main_window_complete(){ yon_startup_language_init(); yon_locale_init(); - set_locales_list(widgets); + // yon_set_locales_list(widgets); // yon_main_window_update_locale(widgets); // // yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow"); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 5f244ba..5908614 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1350,7 +1350,7 @@ source_element *yon_source_element_new(); void on_rdp_toggled(GtkWidget *self, main_window *); void on_vnc_toggled(GtkWidget *self, main_window *widgets); void yon_main_window_create(main_window *widgets); -void set_locales_list(main_window *widgets); +void yon_set_locales_list(main_window *widgets); void on_installer_language_changed(GtkWidget *self, GtkTreePath *, GtkTreeViewColumn *, main_window *widgets); gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets); int yon_char_parsed_compare(const void *a, const void *b); @@ -1469,5 +1469,6 @@ gboolean yon_progress_bar_start(main_window *widgets); void *yon_progress_file_buzyfy(void*); void yon_startup_language_init(); gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets); -void yon_update_translation(GtkBuilder *builder); -void yon_translation_init(GtkBuilder *builder); \ No newline at end of file +void yon_update_translation(main_window *widgets); +void yon_translation_init(GtkBuilder *builder); +void yon_licence_load(main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 0b67ee3..3b214dd 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -272,6 +272,9 @@ NULL) #define GROUP_LABEL _("Group:") #define APP_TABLE_LABEL _("Application") #define GROUP_TABLE_LABEL _("Group") +#define ON_LABEL _("On") +#define OFF_LABEL _("Off") +#define DO_NOT_CONFIGURE_LABEL _("Do not configure") // #define _LABEL _("Select your language:") // #define _LABEL _("Selecting additional system kernel components") @@ -285,7 +288,6 @@ NULL) // #define _LABEL _("File system type:") // #define _LABEL _("File system label:") // #define _LABEL _("Encryption:") -// #define _LABEL _("Off") // #define _LABEL _("Encryption password:") // #define _LABEL _("User name:") // #define _LABEL _("User password:") @@ -368,7 +370,6 @@ NULL) // #define _LABEL _("Domain administrator:") // #define _LABEL _("NTP Server:") // #define _LABEL _("Manual") -// #define _LABEL _("Do not configure") // #define _LABEL _("auto") // #define _LABEL _("Net interfaces") // #define _LABEL _("Installation process") @@ -414,7 +415,6 @@ NULL) // #define _LABEL _("Selecting software packages to install from the repository. Internet access is required") // #define _LABEL _("Selecting software modules to install from the repository. Internet access is required") // #define _LABEL _("Language") -// #define _LABEL _("On") // #define _LABEL _("Selecting the software group to install from the repository. Internet access is required") // #define _LABEL _("Recovery configuration has ended") // #define _LABEL _("System recovery is about to begin") diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 1b7b8cb..7791b7e 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -4668,11 +4668,6 @@ agreement True False 0 - - Default - On - Off - True -- 2.35.1 From 4b5fdc1f83dfed75ca6b3d5887c7b813603ca72d Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 23 Jan 2026 12:27:35 +0000 Subject: [PATCH 58/92] WIP localisation --- locale/kernel-modules.pot | 327 +++++++++++++++++++++++++++ locale/kernel-modules_ru.po | 424 ++++++++++++++++++++++++++++++++++++ modules-list.csv | 208 ++++++++++++++++++ 3 files changed, 959 insertions(+) create mode 100644 locale/kernel-modules.pot create mode 100644 locale/kernel-modules_ru.po create mode 100644 modules-list.csv diff --git a/locale/kernel-modules.pot b/locale/kernel-modules.pot new file mode 100644 index 0000000..be6e661 --- /dev/null +++ b/locale/kernel-modules.pot @@ -0,0 +1,327 @@ + +msgid "UBLinux module the kernel and modules" +msgstr "" + +msgid "UBLinux module headers and scripts for building modules" +msgstr "" + +msgid "UBLinux module documentation for the UBLinux kernel" +msgstr "" + +msgid "UBLinux module firmwares" +msgstr "" + +msgid "UBLinux module includes the core developer components" +msgstr "" + +msgid "UBLinux module includes basic components Xorg" +msgstr "" + +msgid "UBLinux module includes basic fonts" +msgstr "" + +msgid "UBLinux module includes graphics accelerators" +msgstr "" + +msgid "UBLinux module includes GTK libs" +msgstr "" + +msgid "UBLinux module includes Qt5 and Qt6 libs" +msgstr "" + +msgid "UBLinux module includes QT5 libs" +msgstr "" + +msgid "UBLinux module includes QT6 libs" +msgstr "" + +msgid "UBLinux module includes Xfce applications" +msgstr "" + +msgid "UBLinux module includes KDE Plasma applications" +msgstr "" + +msgid "UBLinux module includes GNOME next generation desktop shell" +msgstr "" + +msgid "UBLinux module includes MATE desktop shell" +msgstr "" + +msgid "UBLinux module includes Pantheon desktop shell" +msgstr "" + +msgid "UBLinux module includes GTK applications" +msgstr "" + +msgid "UBLinux module includes QT applications" +msgstr "" + +msgid "UBLinux module includes GTK and icons themes" +msgstr "" + +msgid "UBLinux module includes Lightdm display manager" +msgstr "" + +msgid "UBLinux module includes multimedia applications" +msgstr "" + +msgid "UBLinux module include system utilites" +msgstr "" + +msgid "UBLinux module include AnyDesk" +msgstr "" + +msgid "UBLinux module include desktop backgrounds" +msgstr "" + +msgid "UBLinux module include blender and utilities" +msgstr "" + +msgid "UBLinux module includes Chromium and some plugins" +msgstr "" + +msgid "UBLinux module includes postgresql, mariadb database and utilities" +msgstr "" + +msgid "UBLinux module includes docker and webmanager and utils" +msgstr "" + +msgid "UBLinux module include Brother printer drivers" +msgstr "" + +msgid "UBLinux module include Canon CAPT Printer Driver" +msgstr "" + +msgid "UBLinux module include Canon UFR II LIPSLX CARPS2 printer driver" +msgstr "" + +msgid "UBLinux module include Epson printer drivers" +msgstr "" + +msgid "UBLinux module include Kyocera printer drivers" +msgstr "" + +msgid "UBLinux module include Lexmark drivers" +msgstr "" + +msgid "UBLinux module include Pantum printer drivers" +msgstr "" + +msgid "UBLinux module include hplip, gutenprint, foomatic" +msgstr "" + +msgid "UBLinux module include Ricoh drivers" +msgstr "" + +msgid "UBLinux module include Samsung drivers" +msgstr "" + +msgid "UBLinux module include Xerox drivers" +msgstr "" + +msgid "UBLinux module includes education soft" +msgstr "" + +msgid "UBLinux module includes Firefox and some plugins" +msgstr "" + +msgid "UBLinux module include Java OpenJFX 17 client application platform" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 11 development kit" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 17 development kit" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 21 development kit" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 8 development kit" +msgstr "" + +msgid "UBLinux module includes some library 32-bit" +msgstr "" + +msgid "UBLinux module include LibreOffice" +msgstr "" + +msgid "UBLinux module includes dkms additionals modules" +msgstr "" + +msgid "UBLinux module include NVIDIA 470xx driver for linux" +msgstr "" + +msgid "UBLinux module include NVIDIA 390xx driver for linux" +msgstr "" + +msgid "UBLinux module includes OnlyOffice suite" +msgstr "" + +msgid "UBLinux module include apps patch" +msgstr "" + +msgid "UBLinux module includes podman and webmanager and utils" +msgstr "" + +msgid "UBLinux module include pycharm-community-edition and utilities" +msgstr "" + +msgid "UBLinux module includes QEMU, manager and utils" +msgstr "" + +msgid "UBLinux module includes R7 Office" +msgstr "" + +msgid "UBLinux module includes realvnc viewer and server" +msgstr "" + +msgid "UBLinux module includes rustdesk" +msgstr "" + +msgid "UBLinux module includes Telegram" +msgstr "" + +msgid "UBLinux module include UBPile Workflow" +msgstr "" + +msgid "UBLinux module includes agents for Linux guest" +msgstr "" + +msgid "UBLinux module includes VirtualBox and extension packs" +msgstr "" + +msgid "UBLinux module includes Web servers" +msgstr "" + +msgid "UBLinux module includes Webmin and Usermin" +msgstr "" + +msgid "UBLinux module includes interactive whiteboard soft" +msgstr "" + +msgid "UBLinux module include Winbox" +msgstr "" + +msgid "UBLinux module includes wine and utilities" +msgstr "" + +msgid "UBLinux module include Kingsoft Office (WPS Office) - an office productivity suite" +msgstr "" + +msgid "UBLinux module includes Yandex Browser and some utils" +msgstr "" + +msgid "UBLinux module the kernel and modules" +msgstr "" + +msgid "UBLinux module headers and scripts for building modules for the Meta UBlinux kernel, modules, headers and documentation" +msgstr "" + +msgid "UBLinux module includes the core developer components" +msgstr "" + +msgid "UBLinux module includes Liquidshell basic desktop shell using QtWidgets" +msgstr "" + +msgid "UBLinux module includes AMDGRU PRO driver and utilities" +msgstr "" + +msgid "UBLinux module includes anydesk" +msgstr "" + +msgid "UBLinux module includes Chromium-GOST and some plugins" +msgstr "" + +msgid "UBLinux module includes database applications" +msgstr "" + +msgid "UBLinux module includes docker and webmanager and utils" +msgstr "" + +msgid "UBLinux module include Hedgewars game similiar to Worms" +msgstr "" + +msgid "UBLinux module includes Gitea and MemCached" +msgstr "" + +msgid "UBLinux module include Gitlab CLI tools" +msgstr "" + +msgid "UBLinux module include Java OpenJFX 11 client application platform" +msgstr "" + +msgid "UBLinux module include Free Pascal and Lazarus GTK2" +msgstr "" + +msgid "UBLinux module include Free Pascal and Lazarus QT5" +msgstr "" + +msgid "UBLinux module includes LSI MegaRaid SM, StorCLI, MegaCLI and utils" +msgstr "" + +msgid "UBLinux module includes NVIDIA 340xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 390xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 470xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 510xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 515xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA Optimus" +msgstr "" + +msgid "UBLinux module includes OnlyOffice DocumentServer suite" +msgstr "" + +msgid "UBLinux module includes Opera and some plugins" +msgstr "" + +msgid "UBLinux module includes patch" +msgstr "" + +msgid "UBLinux module includes QEMU headless and utils" +msgstr "" + +msgid "UBLinux module include QT4" +msgstr "" + +msgid "UBLinux module include rustdesk-server" +msgstr "" + +msgid "UBLinux module include Skype" +msgstr "" + +msgid "UBLinux module include Tor utils and browser" +msgstr "" + +msgid "UBLinux module includes agents for Linux guest without X support" +msgstr "" + +msgid "UBLinux module includes VirtualBox headless and extension packs" +msgstr "" + +msgid "UBLinux module includes phpvirtualbox for VirtualBox" +msgstr "" + +msgid "UBLinux module include Vivaldi browser" +msgstr "" + +msgid "UBLinux module includes VMware-Workstation 16" +msgstr "" + +msgid "UBLinux module include Wiki.js" +msgstr "" + +msgid "UBLinux module include X11 remote utils" +msgstr "" + +msgid "UBLinux module include Zoom" +msgstr "" diff --git a/locale/kernel-modules_ru.po b/locale/kernel-modules_ru.po new file mode 100644 index 0000000..9a38cb2 --- /dev/null +++ b/locale/kernel-modules_ru.po @@ -0,0 +1,424 @@ +# Language translations for ubinstal package. +# Copyright (C) 2022, UBTech LLC +# This file is distributed under the same license as the ubinstal package. +# UBLinux Team , 2022 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ubinstal 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-22 16:12+0600\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +UBLinux module the kernel and modules" +msgstr "Модуль UBLinux: ядро ​​и модули" + +msgid "UBLinux module headers and scripts for building modules" +msgstr "Заголовочные файлы и скрипты для сборки модулей UBLinux" + +msgid "UBLinux module documentation for the UBLinux kernel" +msgstr "Документация по модулю UBLinux для ядра UBLinux" + +msgid "UBLinux module firmwares" +msgstr "Прошивки модуля UBLinux" + +msgid "UBLinux module includes the core developer components" +msgstr "Модуль UBLinux включает основные компоненты для разработчиков" + +msgid "UBLinux module includes basic components Xorg" +msgstr "Модуль UBLinux включает базовые компоненты Xorg" + +msgid "UBLinux module includes basic fonts" +msgstr "Модуль UBLinux включает базовые шрифты" + +msgid "UBLinux module includes graphics accelerators" +msgstr "Модуль UBLinux включает графические ускорители" + +msgid "UBLinux module includes GTK libs" +msgstr "Модуль UBLinux включает библиотеки GTK" + +msgid "UBLinux module includes Qt5 and Qt6 libs" +msgstr "Модуль UBLinux включает библиотеки Qt5 и Qt6" + +msgid "UBLinux module includes QT5 libs" +msgstr "Модуль UBLinux включает библиотеки QT5" + +msgid "UBLinux module includes QT6 libs" +msgstr "Модуль UBLinux включает библиотеки QT6" + +msgid "UBLinux module includes Xfce applications" +msgstr "Модуль UBLinux включает приложения Xfce" + +msgid "UBLinux module includes KDE Plasma applications" +msgstr "Модуль UBLinux включает приложения KDE Plasma" + +msgid "UBLinux module includes GNOME next generation desktop shell" +msgstr "Модуль UBLinux включает оболочку рабочего стола GNOME следующего поколения" + +msgid "UBLinux module includes MATE desktop shell" +msgstr "Модуль UBLinux включает оболочку рабочего стола MATE" + +msgid "UBLinux module includes Pantheon desktop shell" +msgstr "Модуль UBLinux включает оболочку рабочего стола Pantheon" + +msgid "UBLinux module includes GTK applications" +msgstr "Модуль UBLinux включает приложения GTK" + +msgid "UBLinux module includes QT applications" +msgstr "Модуль UBLinux включает приложения QT" + +msgid "UBLinux module includes GTK and icons themes" +msgstr "Модуль UBLinux включает темы GTK и значков" + +msgid "UBLinux module includes Lightdm display manager" +msgstr "Модуль UBLinux включает Менеджер дисплея Lightdm" + +msgid "UBLinux module includes multimedia applications" +msgstr "Модуль UBLinux включает мультимедийные приложения" + +msgid "UBLinux module include system utilites" +msgstr "Модуль UBLinux включает системные утилиты" + +msgid "UBLinux module include AnyDesk" +msgstr "Модуль UBLinux включает AnyDesk" + +msgid "UBLinux module include desktop backgrounds" +msgstr "Модуль UBLinux включает фоновые изображения рабочего стола" + +msgid "UBLinux module include blender and utilities" +msgstr "Модуль UBLinux включает Blender и утилиты" + +msgid "UBLinux module includes Chromium and some plugins" +msgstr "Модуль UBLinux включает Chromium и некоторые плагины" + +msgid "UBLinux module includes postgresql, mariadb database and utilities" +msgstr "" + +msgid "UBLinux module includes docker and webmanager and utils" +msgstr "" + +msgid "UBLinux module include Brother printer drivers" +msgstr "" + +msgid "UBLinux module include Canon CAPT Printer Driver" +msgstr "" + +msgid "UBLinux module include Canon UFR II LIPSLX CARPS2 printer driver" +msgstr "" + +msgid "UBLinux module include Epson printer drivers" +msgstr "" + +msgid "UBLinux module include Kyocera printer drivers" +msgstr "" + +msgid "UBLinux module include Lexmark drivers" +msgstr "" + +msgid "UBLinux module include Pantum printer drivers" +msgstr "" + +msgid "UBLinux module include hplip, gutenprint, foomatic" +msgstr "" + +msgid "UBLinux module include Ricoh drivers" +msgstr "" + +msgid "UBLinux module include Samsung drivers" +msgstr "" + +msgid "UBLinux module include Xerox drivers" +msgstr "" + +msgid "UBLinux module includes education soft" +msgstr "" + +msgid "UBLinux module includes Firefox and some plugins" +msgstr "" + +msgid "UBLinux module include Java OpenJFX 17 client application platform" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 11 development kit" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 17 development kit" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 21 development kit" +msgstr "" + +msgid "UBLinux module includes OpenJDK Java 8 development kit" +msgstr "" + +msgid "UBLinux module includes some library 32-bit" +msgstr "" + +msgid "UBLinux module include LibreOffice" +msgstr "" + +msgid "UBLinux module includes dkms additionals modules" +msgstr "" + +msgid "UBLinux module include NVIDIA 470xx driver for linux" +msgstr "" + +msgid "UBLinux module include NVIDIA 390xx driver for linux" +msgstr "" + +msgid "UBLinux module includes OnlyOffice suite" +msgstr "" + +msgid "UBLinux module include apps patch" +msgstr "" + +msgid "UBLinux module includes podman and webmanager and utils" +msgstr "" + +msgid "UBLinux module include pycharm-community-edition and utilities" +msgstr "" + +msgid "UBLinux module includes QEMU, manager and utils" +msgstr "" + +msgid "UBLinux module includes R7 Office" +msgstr "" + +msgid "UBLinux module includes realvnc viewer and server" +msgstr "" + +msgid "UBLinux module includes rustdesk" +msgstr "" + +msgid "UBLinux module includes Telegram" +msgstr "" + +msgid "UBLinux module include UBPile Workflow" +msgstr "" + +msgid "UBLinux module includes agents for Linux guest" +msgstr "" + +msgid "UBLinux module includes VirtualBox and extension packs" +msgstr "" + +msgid "UBLinux module includes Web servers" +msgstr "" + +msgid "UBLinux module includes Webmin and Usermin" +msgstr "" + +msgid "UBLinux module includes interactive whiteboard soft" +msgstr "" + +msgid "UBLinux module include Winbox" +msgstr "" + +msgid "UBLinux module includes wine and utilities" +msgstr "" + +msgid "UBLinux module include Kingsoft Office (WPS Office) - an office productivity suite" +msgstr "" + +msgid "UBLinux module includes Yandex Browser and some utils" +msgstr "" + +msgid "UBLinux module the kernel and modules" +msgstr "" + +msgid "UBLinux module headers and scripts for building modules for the Meta UBlinux kernel, modules, headers and documentation" +msgstr "" + +msgid "UBLinux module includes the core developer components" +msgstr "" + +msgid "UBLinux module includes Liquidshell basic desktop shell using QtWidgets" +msgstr "" + +msgid "UBLinux module includes AMDGRU PRO driver and utilities" +msgstr "" + +msgid "UBLinux module includes anydesk" +msgstr "" + +msgid "UBLinux module includes Chromium-GOST and some plugins" +msgstr "" + +msgid "UBLinux module includes database applications" +msgstr "" + +msgid "UBLinux module includes docker and webmanager and utils" +msgstr "" + +msgid "UBLinux module include Hedgewars game similiar to Worms" +msgstr "" + +msgid "UBLinux module includes Gitea and MemCached" +msgstr "" + +msgid "UBLinux module include Gitlab CLI tools" +msgstr "" + +msgid "UBLinux module include Java OpenJFX 11 client application platform" +msgstr "" + +msgid "UBLinux module include Free Pascal and Lazarus GTK2" +msgstr "" + +msgid "UBLinux module include Free Pascal and Lazarus QT5" +msgstr "" + +msgid "UBLinux module includes LSI MegaRaid SM, StorCLI, MegaCLI and utils" +msgstr "" + +msgid "UBLinux module includes NVIDIA 340xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 390xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 470xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 510xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA 515xx driver and utilities" +msgstr "" + +msgid "UBLinux module includes NVIDIA Optimus" +msgstr "" + +msgid "UBLinux module includes OnlyOffice DocumentServer suite" +msgstr "" + +msgid "UBLinux module includes Opera and some plugins" +msgstr "" + +msgid "UBLinux module includes patch" +msgstr "" + +msgid "UBLinux module includes QEMU headless and utils" +msgstr "" + +msgid "UBLinux module include QT4" +msgstr "" + +msgid "UBLinux module include rustdesk-server" +msgstr "" + +msgid "UBLinux module include Skype" +msgstr "" + +msgid "UBLinux module include Tor utils and browser" +msgstr "" + +msgid "UBLinux module includes agents for Linux guest without X support" +msgstr "" + +msgid "UBLinux module includes VirtualBox headless and extension packs" +msgstr "" + +msgid "UBLinux module includes phpvirtualbox for VirtualBox" +msgstr "" + +msgid "UBLinux module include Vivaldi browser" +msgstr "" + +msgid "UBLinux module includes VMware-Workstation 16" +msgstr "" + +msgid "UBLinux module include Wiki.js" +msgstr "" + +msgid "UBLinux module include X11 remote utils" +msgstr "" + +msgid "UBLinux module include Zoommsgid "" +msgstr "" + + +Модуль UBLinux включает PostgreSQL, базу данных MariaDB и утилиты +Модуль UBLinux включает Docker, WebManager и утилиты +Модуль UBLinux включает драйверы принтеров Brother +Модуль UBLinux включает драйвер принтера Canon CAPT +Модуль UBLinux включает драйвер принтера Canon UFR II LIPSLX CARPS2 +Модуль UBLinux включает драйверы принтеров Epson +Модуль UBLinux включает драйверы принтеров Kyocera +Модуль UBLinux включает драйверы Lexmark +Модуль UBLinux включает драйверы принтеров Pantum +Модуль UBLinux включает hplip, gutenprint, foomatic +Модуль UBLinux включает драйверы Ricoh +Модуль UBLinux включает драйверы Samsung +Модуль UBLinux включает Xerox драйверы +Модуль UBLinux включает образовательное программное обеспечение +Модуль UBLinux включает Firefox и некоторые плагины +Модуль UBLinux включает платформу клиентских приложений Java OpenJFX 17 +Модуль UBLinux включает комплект разработки OpenJDK Java 11 +Модуль UBLinux включает комплект разработки OpenJDK Java 17 +Модуль UBLinux включает комплект разработки OpenJDK Java 21 +Модуль UBLinux включает комплект разработки OpenJDK Java 8 +Модуль UBLinux включает некоторые 32-битные библиотеки +Модуль UBLinux включает LibreOffice +Модуль UBLinux включает дополнительные модули dkms +Модуль UBLinux включает драйвер NVIDIA 470xx для Linux +Модуль UBLinux включает драйвер NVIDIA 390xx для Linux +Модуль UBLinux включает пакет OnlyOffice +Модуль UBLinux включает патчи для приложений +Модуль UBLinux включает podman и webmanager и утилиты +Модуль UBLinux включает pycharm-community-edition и утилиты +Модуль UBLinux включает QEMU, менеджер и утилиты +Модуль UBLinux включает R7 Office +Модуль UBLinux включает средство просмотра и сервер RealVNC +Модуль UBLinux включает RustDesk +Модуль UBLinux включает Telegram +Модуль UBLinux включает UBPile Workflow +Модуль UBLinux включает агенты для гостевой системы Linux +Модуль UBLinux включает VirtualBox и пакеты расширений +Модуль UBLinux включает веб-серверы +Модуль UBLinux включает Webmin и Usermin +Модуль UBLinux включает интерактивную доску +Модуль UBLinux включает Winbox +Модуль UBLinux включает Wine и утилиты +Модуль UBLinux включает Kingsoft Office (WPS Office) — офисный пакет +Модуль UBLinux включает Yandex Browser и некоторые утилиты +Модуль UBLinux включает ядро ​​и модули +Модуль UBLinux включает заголовочные файлы и скрипты для сборки модулей для ядра Meta UBlinux, модули, заголовочные файлы и документацию +Модуль UBLinux включает основные компоненты для разработчиков +Модуль UBLinux включает базовую оболочку рабочего стола Liquidshell с использованием QtWidgets +Модуль UBLinux включает драйвер AMDGRU PRO и утилиты +Модуль UBLinux включает anydesk +Модуль UBLinux включает Chromium-GOST и некоторые плагины +Модуль UBLinux включает приложения для работы с базами данных +Модуль UBLinux включает docker, webmanager и утилиты +Модуль UBLinux включает игру Hedgewars, похожую на Worms +Модуль UBLinux включает Gitea и MemCached +Модуль UBLinux включает инструменты командной строки Gitlab +Модуль UBLinux включает платформу клиентских приложений Java OpenJFX 11 +Модуль UBLinux включает Free Pascal и Lazarus GTK2 +Модуль UBLinux включает Free Pascal и Lazarus QT5 +Модуль UBLinux включает LSI MegaRaid SM, StorCLI, MegaCLI и утилиты +Модуль UBLinux включает драйвер NVIDIA 340xx и утилиты +Модуль UBLinux включает драйвер NVIDIA 390xx и утилиты +Модуль UBLinux включает NVIDIA Драйвер и утилиты для NVIDIA 470xx +Модуль UBLinux включает драйвер и утилиты для NVIDIA 510xx +Модуль UBLinux включает драйвер и утилиты для NVIDIA 515xx +Модуль UBLinux включает NVIDIA Optimus +Модуль UBLinux включает пакет OnlyOffice DocumentServer +Модуль UBLinux включает Opera и некоторые плагины +Модуль UBLinux включает патч +Модуль UBLinux включает QEMU headless и утилиты +Модуль UBLinux включает QT4 +Модуль UBLinux включает rustdesk-server +Модуль UBLinux включает Skype +Модуль UBLinux включает утилиты и браузер Tor +Модуль UBLinux включает агенты для гостевой системы Linux без поддержки X +Модуль UBLinux включает VirtualBox headless и пакеты расширений +Модуль UBLinux включает phpvirtualbox f \ No newline at end of file diff --git a/modules-list.csv b/modules-list.csv new file mode 100644 index 0000000..c09728f --- /dev/null +++ b/modules-list.csv @@ -0,0 +1,208 @@ +OS_VERSION_ID;PACKAGE_UBM;NAME_UBM;TAG_UBM;DESCRIPTION_UBM +2405;ubm-001-linux515;001-linux515-*-*-*.ubm;base;UBLinux module the kernel and modules +2405;ubm-001-linux61;001-linux61-*-*-*.ubm;base;UBLinux module the kernel and modules +2405;ubm-001-linux66;001-linux66-*-*-*.ubm;base;UBLinux module the kernel and modules +2405;ubm-002-linux515-headers;002-linux515-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules +2405;ubm-002-linux61-headers;002-linux61-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules +2405;ubm-002-linux66-headers;002-linux66-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules +2405;ubm-003-linux515-docs;003-linux515-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2405;ubm-003-linux61-docs;003-linux61-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2405;ubm-003-linux66-docs;003-linux66-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2405;ubm-004-linux-firmware;004-linux-firmware-*-*-*.ubm;base;UBLinux module firmwares +2405;ubm-010-core;010-core-*-*-*.ubm;base;UBLinux module includes the core developer components +2405;ubm-010-core-devel;010-core-devel-*-*-*.ubm;base;UBLinux module includes the core developer components +2405;ubm-020-xorg-base;020-xorg-base-*-*-*.ubm;base;UBLinux module includes basic components Xorg +2405;ubm-021-xorg-fonts;021-xorg-fonts-*-*-*.ubm;base;UBLinux module includes basic fonts +2405;ubm-025-xorg-gl;025-xorg-gl-*-*-*.ubm;base;UBLinux module includes graphics accelerators +2405;ubm-030-xorg-gtk;030-xorg-gtk-*-*-*.ubm;base;UBLinux module includes GTK libs +2405;ubm-035-xorg-qt;035-xorg-qt-*-*-*.ubm;base;UBLinux module includes Qt5 and Qt6 libs +2405;ubm-036-xorg-qt5;036-xorg-qt5-*-*-*.ubm;base;UBLinux module includes QT5 libs +2405;ubm-037-xorg-qt6;037-xorg-qt6-*-*-*.ubm;base;UBLinux module includes QT6 libs +2405;ubm-040-xorg-xfce;040-xorg-xfce-*-*-*.ubm;base;UBLinux module includes Xfce applications +2405;ubm-041-xorg-plasma;041-xorg-plasma-*-*-*.ubm;base;UBLinux module includes KDE Plasma applications +2405;ubm-042-xorg-gnome;042-xorg-gnome-*-*-*.ubm;base;UBLinux module includes GNOME next generation desktop shell +2405;ubm-043-xorg-mate;043-xorg-mate-*-*-*.ubm;base;UBLinux module includes MATE desktop shell +2405;ubm-045-xorg-pantheon;045-xorg-pantheon-*-*-*.ubm;base;UBLinux module includes Pantheon desktop shell +2405;ubm-050-xorg-gtk-app;050-xorg-gtk-app-*-*-*.ubm;base;UBLinux module includes GTK applications +2405;ubm-055-xorg-qt-app;055-xorg-qt-app-*-*-*.ubm;base;UBLinux module includes QT applications +2405;ubm-060-xorg-theme;060-xorg-theme-*-*-*.ubm;base;UBLinux module includes GTK and icons themes +2405;ubm-070-dm-lightdm;070-dm-lightdm-*-*-*.ubm;base;UBLinux module includes Lightdm display manager +2405;ubm-080-multimedia;080-multimedia-*-*-*.ubm;base;UBLinux module includes multimedia applications +2405;ubm-100-ublinux;100-ublinux-*-*-*.ubm;base;UBLinux module include system utilites +2405;ubm-anydesk;anydesk-*-*-*.ubm;extra;UBLinux module include AnyDesk +2405;ubm-backgrounds;backgrounds-*-*-*.ubm;extra;UBLinux module include desktop backgrounds +2405;ubm-blender;blender-*-*-*.ubm;extra;UBLinux module include blender and utilities +2405;ubm-chromium;chromium-*-*-*.ubm;extra;UBLinux module includes Chromium and some plugins +2405;ubm-chromium-gost;chromium-gost-*-*-*.ubm;extra;UBLinux module includes Chromium and some plugins +2405;ubm-database;database-*-*-*.ubm;extra;UBLinux module includes postgresql, mariadb database and utilities +2405;ubm-docker;docker-*-*-*.ubm;extra;UBLinux module includes docker and webmanager and utils +2405;ubm-drv-brother;drv-brother-*-*-*.ubm;extra;UBLinux module include Brother printer drivers +2405;ubm-drv-canon-capt;drv-canon-capt-*-*-*.ubm;extra;UBLinux module include Canon CAPT Printer Driver +2405;ubm-drv-canon-ufrii;drv-canon-ufrii-*-*-*.ubm;extra;UBLinux module include Canon UFR II LIPSLX CARPS2 printer driver +2405;ubm-drv-epson;drv-epson-*-*-*.ubm;extra;UBLinux module include Epson printer drivers +2405;ubm-drv-kyocera;drv-kyocera-*-*-*.ubm;extra;UBLinux module include Kyocera printer drivers +2405;ubm-drv-lexmark;drv-lexmark-*-*-*.ubm;extra;UBLinux module include Lexmark drivers +2405;ubm-drv-pantum;drv-pantum-*-*-*.ubm;extra;UBLinux module include Pantum printer drivers +2405;ubm-drv-printer;drv-printer-*-*-*.ubm;extra;UBLinux module include hplip, gutenprint, foomatic +2405;ubm-drv-ricoh;drv-ricoh-*-*-*.ubm;extra;UBLinux module include Ricoh drivers +2405;ubm-drv-samsung;drv-samsung-*-*-*.ubm;extra;UBLinux module include Samsung drivers +2405;ubm-drv-xerox;drv-xerox-*-*-*.ubm;extra;UBLinux module include Xerox drivers +2405;ubm-education;education-*-*-*.ubm;extra;UBLinux module includes education soft +2405;ubm-firefox;firefox-*-*-*.ubm;extra;UBLinux module includes Firefox and some plugins +2405;ubm-java17-openjfx;java17-openjfx-*-*-*.ubm;extra;UBLinux module include Java OpenJFX 17 client application platform +2405;ubm-jdk11;jdk11-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 11 development kit +2405;ubm-jdk17;jdk17-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 17 development kit +2405;ubm-jdk21;jdk21-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 21 development kit +2405;ubm-jdk8;jdk8-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 8 development kit +2405;ubm-lib32;lib32-*-*-*.ubm;extra;UBLinux module includes some library 32-bit +2405;ubm-libreoffice;libreoffice-*-*-*.ubm;extra;UBLinux module include LibreOffice +2405;ubm-linux515-dkms;linux515-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2405;ubm-linux515-nvidia;linux515-nvidia-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2405;ubm-linux515-nvidia-390xx;linux515-nvidia-390xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 390xx driver for linux +2405;ubm-linux515-nvidia-470xx;linux515-nvidia-470xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2405;ubm-linux61-dkms;linux61-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2405;ubm-linux61-nvidia;linux61-nvidia-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2405;ubm-linux61-nvidia-390xx;linux61-nvidia-390xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 390xx driver for linux +2405;ubm-linux61-nvidia-470xx;linux61-nvidia-470xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2405;ubm-linux61-r8168-8136;linux61-r8168-8136-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2405;ubm-linux66-dkms;linux66-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2405;ubm-onlyoffice;onlyoffice-*-*-*.ubm;extra;UBLinux module includes OnlyOffice suite +2405;ubm-patch;patch-*-*-*.ubm;extra;UBLinux module include apps patch +2405;ubm-podman;podman-*-*-*.ubm;extra;UBLinux module includes podman and webmanager and utils +2405;ubm-pycharm;pycharm-*-*-*.ubm;extra;UBLinux module include pycharm-community-edition and utilities +2405;ubm-qaratms-ru;qaratms-ru-*-*-*.ubm;extra;UBLinux module include pycharm-community-edition and utilities +2405;ubm-qemu;qemu-*-*-*.ubm;extra;UBLinux module includes QEMU, manager and utils +2405;ubm-r7-office;r7-office-*-*-*.ubm;extra;UBLinux module includes R7 Office +2405;ubm-realvnc;realvnc-*-*-*.ubm;extra;UBLinux module includes realvnc viewer and server +2405;ubm-rustdesk;rustdesk-*-*-*.ubm;extra;UBLinux module includes rustdesk +2405;ubm-rustdesk-server;rustdesk-server-*-*-*.ubm;extra;UBLinux module includes rustdesk +2405;ubm-telegram;telegram-*-*-*.ubm;extra;UBLinux module includes Telegram +2405;ubm-ubpile-workflow;ubpile-workflow-*-*-*.ubm;extra;UBLinux module include UBPile Workflow +2405;ubm-virtual-guest;virtual-guest-*-*-*.ubm;extra;UBLinux module includes agents for Linux guest +2405;ubm-virtualbox-host;virtualbox-host-*-*-*.ubm;extra;UBLinux module includes VirtualBox and extension packs +2405;ubm-web;web-*-*-*.ubm;extra;UBLinux module includes Web servers +2405;ubm-webmin;webmin-*-*-*.ubm;extra;UBLinux module includes Webmin and Usermin +2405;ubm-whiteboard;whiteboard-*-*-*.ubm;extra;UBLinux module includes interactive whiteboard soft +2405;ubm-winbox;winbox-*-*-*.ubm;extra;UBLinux module include Winbox +2405;ubm-wine;wine-*-*-*.ubm;extra;UBLinux module includes wine and utilities +2405;ubm-wps-office;wps-office-*-*-*.ubm;extra;UBLinux module include Kingsoft Office (WPS Office) - an office productivity suite +2405;ubm-yandex-browser;yandex-browser-*-*-*.ubm;extra;UBLinux module includes Yandex Browser and some utils +2204;ubm-001-linux;001-linux-*-*-*.ubm;base;UBLinux module the kernel and modules +2204;ubm-001-linux515;001-linux515-*-*-*.ubm;base;UBLinux module the kernel and modules +2204;ubm-001-linux61;001-linux61-*-*-*.ubm;base;UBLinux module the kernel and modules +2204;ubm-001-linux66;001-linux66-*-*-*.ubm;base;UBLinux module the kernel and modules +2204;ubm-002-linux-headers;002-linux-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules for the Meta UBlinux kernel, modules, headers and documentation +2204;ubm-002-linux515-headers;002-linux515-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules +2204;ubm-002-linux61-headers;002-linux61-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules +2204;ubm-002-linux66-headers;002-linux66-headers-*-*-*.ubm;base;UBLinux module headers and scripts for building modules +2204;ubm-003-linux-docs;003-linux-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2204;ubm-003-linux515-docs;003-linux515-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2204;ubm-003-linux61-docs;003-linux61-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2204;ubm-003-linux66-docs;003-linux66-docs-*-*-*.ubm;base;UBLinux module documentation for the UBLinux kernel +2204;ubm-004-linux-firmware;004-linux-firmware-*-*-*.ubm;base;UBLinux module firmwares +2204;ubm-010-core;010-core-*-*-*.ubm;base;UBLinux module includes the core developer components +2204;ubm-010-core-devel;010-core-devel-*-*-*.ubm;base;UBLinux module includes the core developer components +2204;ubm-020-xorg-base;020-xorg-base-*-*-*.ubm;base;UBLinux module includes basic components Xorg +2204;ubm-021-xorg-fonts;021-xorg-fonts-*-*-*.ubm;base;UBLinux module includes basic fonts +2204;ubm-025-xorg-gl;025-xorg-gl-*-*-*.ubm;base;UBLinux module includes graphics accelerators +2204;ubm-030-xorg-gtk;030-xorg-gtk-*-*-*.ubm;base;UBLinux module includes GTK libs +2204;ubm-035-xorg-qt5;035-xorg-qt5-*-*-*.ubm;base;UBLinux module includes QT5 libs +2204;ubm-036-xorg-qt6;036-xorg-qt6-*-*-*.ubm;base;UBLinux module includes QT6 libs +2204;ubm-040-xorg-xfce;040-xorg-xfce-*-*-*.ubm;base;UBLinux module includes Xfce applications +2204;ubm-041-xorg-plasma;041-xorg-plasma-*-*-*.ubm;base;UBLinux module includes KDE Plasma applications +2204;ubm-042-xorg-gnome;042-xorg-gnome-*-*-*.ubm;base;UBLinux module includes GNOME next generation desktop shell +2204;ubm-043-xorg-mate;043-xorg-mate-*-*-*.ubm;base;UBLinux module includes MATE desktop shell +2204;ubm-045-xorg-pantheon;045-xorg-pantheon-*-*-*.ubm;base;UBLinux module includes Pantheon desktop shell +2204;ubm-049-xorg-liquidshell;049-xorg-liquidshell-*-*-*.ubm;base;UBLinux module includes Liquidshell basic desktop shell using QtWidgets +2204;ubm-050-xorg-gtk-app;050-xorg-gtk-app-*-*-*.ubm;base;UBLinux module includes GTK applications +2204;ubm-055-xorg-qt-app;055-xorg-qt-app-*-*-*.ubm;base;UBLinux module includes QT applications +2204;ubm-060-xorg-theme;060-xorg-theme-*-*-*.ubm;base;UBLinux module includes GTK and icons themes +2204;ubm-070-dm-lightdm;070-dm-lightdm-*-*-*.ubm;base;UBLinux module includes Lightdm display manager +2204;ubm-080-multimedia;080-multimedia-*-*-*.ubm;base;UBLinux module includes multimedia applications +2204;ubm-100-ublinux;100-ublinux-*-*-*.ubm;base;UBLinux module include system utilites +2204;ubm-amdgpu-pro;amdgpu-pro-*-*-*.ubm;extra;UBLinux module includes AMDGRU PRO driver and utilities +2204;ubm-anydesk;anydesk-*-*-*.ubm;extra;UBLinux module includes anydesk +2204;ubm-backgrounds;backgrounds-*-*-*.ubm;extra;UBLinux module include desktop backgrounds +2204;ubm-blender;blender-*-*-*.ubm;extra;UBLinux module includes wine and utilities +2204;ubm-chromium;chromium-*-*-*.ubm;extra;UBLinux module includes Chromium-GOST and some plugins +2204;ubm-chromium-gost;chromium-gost-*-*-*.ubm;extra;UBLinux module includes Chromium-GOST and some plugins +2204;ubm-database;database-*-*-*.ubm;extra;UBLinux module includes database applications +2204;ubm-docker;docker-*-*-*.ubm;extra;UBLinux module includes docker and webmanager and utils +2204;ubm-drv-brother;drv-brother-*-*-*.ubm;extra;UBLinux module include Brother printer drivers +2204;ubm-drv-canon-capt;drv-canon-capt-*-*-*.ubm;extra;UBLinux module include Canon CAPT Printer Driver +2204;ubm-drv-canon-ufrii;drv-canon-ufrii-*-*-*.ubm;extra;UBLinux module include Canon UFR II LIPSLX CARPS2 printer driver +2204;ubm-drv-epson;drv-epson-*-*-*.ubm;extra;UBLinux module include Epson printer drivers +2204;ubm-drv-kyocera;drv-kyocera-*-*-*.ubm;extra;UBLinux module include Kyocera printer drivers +2204;ubm-drv-lexmark;drv-lexmark-*-*-*.ubm;extra;UBLinux module include Lexmark drivers +2204;ubm-drv-pantum;drv-pantum-*-*-*.ubm;extra;UBLinux module include Pantum printer drivers +2204;ubm-drv-printer;drv-printer-*-*-*.ubm;extra;UBLinux module include hplip, gutenprint, foomatic +2204;ubm-drv-ricoh;drv-ricoh-*-*-*.ubm;extra;UBLinux module include Ricoh drivers +2204;ubm-drv-samsung;drv-samsung-*-*-*.ubm;extra;UBLinux module include Samsung drivers +2204;ubm-drv-xerox;drv-xerox-*-*-*.ubm;extra;UBLinux module include Xerox drivers +2204;ubm-firefox;firefox-*-*-*.ubm;extra;UBLinux module includes Firefox and some plugins +2204;ubm-gambas3;gambas3-*-*-*.ubm;extra;UBLinux module includes Gambas3 and components +2204;ubm-game-hedgewars;game-hedgewars-*-*-*.ubm;extra;UBLinux module include Hedgewars game similiar to Worms +2204;ubm-game-warfork;game-warfork-*-*-*.ubm;extra;UBLinux module include Hedgewars game similiar to Worms +2204;ubm-gitea;gitea-*-*-*.ubm;extra;UBLinux module includes Gitea and MemCached +2204;ubm-gitlab;gitlab-*-*-*.ubm;extra;UBLinux module include Gitlab CLI tools +2204;ubm-gitlab-cli;gitlab-cli-*-*-*.ubm;extra;UBLinux module include Gitlab CLI tools +2204;ubm-java11-openjfx;java11-openjfx-*-*-*.ubm;extra;UBLinux module include Java OpenJFX 11 client application platform +2204;ubm-java17-openjfx;java17-openjfx-*-*-*.ubm;extra;UBLinux module include Java OpenJFX 17 client application platform +2204;ubm-jdk11;jdk11-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 11 development kit +2204;ubm-jdk17;jdk17-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 17 development kit +2204;ubm-jdk8;jdk8-*-*-*.ubm;extra;UBLinux module includes OpenJDK Java 8 development kit +2204;ubm-lazarus-gtk2;lazarus-gtk2-*-*-*.ubm;extra;UBLinux module include Free Pascal and Lazarus GTK2 +2204;ubm-lazarus-qt5;lazarus-qt5-*-*-*.ubm;extra;UBLinux module include Free Pascal and Lazarus QT5 +2204;ubm-lib32;lib32-*-*-*.ubm;extra;UBLinux module includes some library 32-bit +2204;ubm-libreoffice;libreoffice-*-*-*.ubm;extra;UBLinux module includes rustdesk +2204;ubm-linux-dkms;linux-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2204;ubm-linux515-dkms;linux515-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2204;ubm-linux515-nvidia;linux515-nvidia-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2204;ubm-linux515-nvidia-390xx;linux515-nvidia-390xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 390xx driver for linux +2204;ubm-linux515-nvidia-470xx;linux515-nvidia-470xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2204;ubm-linux61-dkms;linux61-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2204;ubm-linux61-nvidia;linux61-nvidia-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2204;ubm-linux61-nvidia-390xx;linux61-nvidia-390xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 390xx driver for linux +2204;ubm-linux61-nvidia-470xx;linux61-nvidia-470xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2204;ubm-linux66-dkms;linux66-dkms-*-*-*.ubm;extra;UBLinux module includes dkms additionals modules +2204;ubm-linux66-nvidia;linux66-nvidia-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2204;ubm-linux66-nvidia-390xx;linux66-nvidia-390xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 390xx driver for linux +2204;ubm-linux66-nvidia-470xx;linux66-nvidia-470xx-*-*-*.ubm;extra;UBLinux module include NVIDIA 470xx driver for linux +2204;ubm-lsi-megaraid;lsi-megaraid-*-*-*.ubm;extra;UBLinux module includes LSI MegaRaid SM, StorCLI, MegaCLI and utils +2204;ubm-nvidia-340;nvidia-340-*-*-*.ubm;extra;UBLinux module includes NVIDIA 340xx driver and utilities +2204;ubm-nvidia-390;nvidia-390-*-*-*.ubm;extra;UBLinux module includes NVIDIA 390xx driver and utilities +2204;ubm-nvidia-470;nvidia-470-*-*-*.ubm;extra;UBLinux module includes NVIDIA 470xx driver and utilities +2204;ubm-nvidia-510;nvidia-510-*-*-*.ubm;extra;UBLinux module includes NVIDIA 510xx driver and utilities +2204;ubm-nvidia-515;nvidia-515-*-*-*.ubm;extra;UBLinux module includes NVIDIA 515xx driver and utilities +2204;ubm-nvidia-optimus;nvidia-optimus-*-*-*.ubm;extra;UBLinux module includes NVIDIA Optimus +2204;ubm-onlyoffice;onlyoffice-*-*-*.ubm;extra;UBLinux module includes OnlyOffice DocumentServer suite +2204;ubm-onlyoffice-documentserver;onlyoffice-documentserver-*-*-*.ubm;extra;UBLinux module includes OnlyOffice DocumentServer suite +2204;ubm-opera;opera-*-*-*.ubm;extra;UBLinux module includes Opera and some plugins +2204;ubm-patch;patch-*-*-*.ubm;extra;UBLinux module includes patch +2204;ubm-podman;podman-*-*-*.ubm;extra;UBLinux module includes podman and webmanager and utils +2204;ubm-qemu;qemu-*-*-*.ubm;extra;UBLinux module includes QEMU headless and utils +2204;ubm-qemu-headless;qemu-headless-*-*-*.ubm;extra;UBLinux module includes QEMU headless and utils +2204;ubm-qt4;qt4-*-*-*.ubm;extra;UBLinux module include QT4 +2204;ubm-realvnc;realvnc-*-*-*.ubm;extra;UBLinux module includes realvnc viewer and server +2204;ubm-rustdesk;rustdesk-*-*-*.ubm;extra;UBLinux module include rustdesk-server +2204;ubm-rustdesk-server;rustdesk-server-*-*-*.ubm;extra;UBLinux module include rustdesk-server +2204;ubm-skype;skype-*-*-*.ubm;extra;UBLinux module include Skype +2204;ubm-telegram;telegram-*-*-*.ubm;extra;UBLinux module includes Telegram +2204;ubm-tor;tor-*-*-*.ubm;extra;UBLinux module include Tor utils and browser +2204;ubm-ubpile-workflow;ubpile-workflow-*-*-*.ubm;extra;UBLinux module include UBPile Workflow +2204;ubm-virtual-guest;virtual-guest-*-*-*.ubm;extra;UBLinux module includes agents for Linux guest without X support +2204;ubm-virtual-guest-nox;virtual-guest-nox-*-*-*.ubm;extra;UBLinux module includes agents for Linux guest without X support +2204;ubm-virtualbox-host;virtualbox-host-*-*-*.ubm;extra;UBLinux module includes VirtualBox headless and extension packs +2204;ubm-virtualbox-host-headless;virtualbox-host-headless-*-*-*.ubm;extra;UBLinux module includes VirtualBox headless and extension packs +2204;ubm-virtualbox-web;virtualbox-web-*-*-*.ubm;extra;UBLinux module includes phpvirtualbox for VirtualBox +2204;ubm-vivaldi;vivaldi-*-*-*.ubm;extra;UBLinux module include Vivaldi browser +2204;ubm-vmware-workstation16;vmware-workstation16-*-*-*.ubm;extra;UBLinux module includes VMware-Workstation 16 +2204;ubm-web;web-*-*-*.ubm;extra;UBLinux module includes Webmin and Usermin +2204;ubm-webmin;webmin-*-*-*.ubm;extra;UBLinux module includes Webmin and Usermin +2204;ubm-wiki-js;wiki-js-*-*-*.ubm;extra;UBLinux module include Wiki.js +2204;ubm-winbox;winbox-*-*-*.ubm;extra;UBLinux module include Winbox +2204;ubm-wine;wine-*-*-*.ubm;extra;UBLinux module includes wine and utilities +2204;ubm-wps-office;wps-office-*-*-*.ubm;extra;UBLinux module include Kingsoft Office (WPS Office) - an office productivity suite +2204;ubm-xremote;xremote-*-*-*.ubm;extra;UBLinux module include X11 remote utils +2204;ubm-yandex-browser;yandex-browser-*-*-*.ubm;extra;UBLinux module includes Yandex Browser and some utils +2204;ubm-zoom;zoom-*-*-*.ubm;extra;UBLinux module include Zoom \ No newline at end of file -- 2.35.1 From 6df0f48cae6a2c2f45a67065da35aa62f530ceac Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 23 Jan 2026 12:28:05 +0000 Subject: [PATCH 59/92] Crash fixes --- source/ubinstall-gtk-packages.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index 18cff6b..48d30c5 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -119,7 +119,7 @@ void yon_packages_tab_init(main_window *widgets){ void yon_on_packages_selected(GtkWidget *, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model; - gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->PackagesTree)),&model,&iter); + if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->PackagesTree)),&model,&iter)) return; GtkTreeIter cur_parent, cur_iter; int status; gtk_tree_model_get(model,&iter,3,&status,-1); -- 2.35.1 From b417380170a906e9c9703e7e89cc15762cc17cbc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 26 Jan 2026 10:40:00 +0600 Subject: [PATCH 60/92] Localisation; Fixed os components descrption wrapping --- locale/kernel-modules_ru.po | 253 ++++++++++-------------------- source/ubinstall-gtk-components.c | 18 +-- ubinstall-gtk-os-row.glade | 1 + 3 files changed, 91 insertions(+), 181 deletions(-) diff --git a/locale/kernel-modules_ru.po b/locale/kernel-modules_ru.po index 9a38cb2..f424a3a 100644 --- a/locale/kernel-modules_ru.po +++ b/locale/kernel-modules_ru.po @@ -17,9 +17,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -UBLinux module the kernel and modules" -msgstr "Модуль UBLinux: ядро ​​и модули" - msgid "UBLinux module headers and scripts for building modules" msgstr "Заголовочные файлы и скрипты для сборки модулей UBLinux" @@ -29,9 +26,6 @@ msgstr "Документация по модулю UBLinux для ядра UBLin msgid "UBLinux module firmwares" msgstr "Прошивки модуля UBLinux" -msgid "UBLinux module includes the core developer components" -msgstr "Модуль UBLinux включает основные компоненты для разработчиков" - msgid "UBLinux module includes basic components Xorg" msgstr "Модуль UBLinux включает базовые компоненты Xorg" @@ -99,326 +93,241 @@ msgid "UBLinux module includes Chromium and some plugins" msgstr "Модуль UBLinux включает Chromium и некоторые плагины" msgid "UBLinux module includes postgresql, mariadb database and utilities" -msgstr "" - -msgid "UBLinux module includes docker and webmanager and utils" -msgstr "" +msgstr "Модуль UBLinux включает PostgreSQL, базу данных MariaDB и утилиты" msgid "UBLinux module include Brother printer drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы принтеров Brother" msgid "UBLinux module include Canon CAPT Printer Driver" -msgstr "" +msgstr "Модуль UBLinux включает драйвер принтера Canon CAPT" msgid "UBLinux module include Canon UFR II LIPSLX CARPS2 printer driver" -msgstr "" +msgstr "Модуль UBLinux включает драйвер принтера Canon UFR II LIPSLX CARPS2" msgid "UBLinux module include Epson printer drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы принтеров Epson" msgid "UBLinux module include Kyocera printer drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы принтера Kyocera" msgid "UBLinux module include Lexmark drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы Lexmark" msgid "UBLinux module include Pantum printer drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы принтера Pantum" msgid "UBLinux module include hplip, gutenprint, foomatic" -msgstr "" +msgstr "В состав модулей UBLinux входят hplip, gutenprint, foomatic" msgid "UBLinux module include Ricoh drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы Ricoh" msgid "UBLinux module include Samsung drivers" -msgstr "" +msgstr "Модуль UBlinux включает драйверы Samsung" msgid "UBLinux module include Xerox drivers" -msgstr "" +msgstr "Модуль UBLinux включает драйверы Xerox" msgid "UBLinux module includes education soft" -msgstr "" +msgstr "Модуль UBLinux включает в себя образовательное программное обеспечение" msgid "UBLinux module includes Firefox and some plugins" -msgstr "" +msgstr "Модуль UBLinux включает в себя Firefox и некоторые плагины" msgid "UBLinux module include Java OpenJFX 17 client application platform" -msgstr "" +msgstr "Модуль UBLinux включает в себя платформу клиентских приложений Java OpenJFX 17" msgid "UBLinux module includes OpenJDK Java 11 development kit" -msgstr "" +msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 11" msgid "UBLinux module includes OpenJDK Java 17 development kit" -msgstr "" +msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 17" msgid "UBLinux module includes OpenJDK Java 21 development kit" -msgstr "" +msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 21" msgid "UBLinux module includes OpenJDK Java 8 development kit" -msgstr "" +msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 8" msgid "UBLinux module includes some library 32-bit" -msgstr "" +msgstr "Модуль UBLinux включает в себя некоторые 32-битные библиотеки." msgid "UBLinux module include LibreOffice" -msgstr "" +msgstr "Модуль UBLinux включает LibreOffice" msgid "UBLinux module includes dkms additionals modules" -msgstr "" +msgstr "Модуль UBLinux включает дополнительные модули dkms" msgid "UBLinux module include NVIDIA 470xx driver for linux" -msgstr "" +msgstr "Модуль UBLinux включает драйвер NVIDIA 470xx для Linux" msgid "UBLinux module include NVIDIA 390xx driver for linux" -msgstr "" +msgstr "Модуль UBLinux включает драйвер NVIDIA 390xx для Linux" msgid "UBLinux module includes OnlyOffice suite" -msgstr "" +msgstr "Модуль UBLinux включает пакет OnlyOffice" msgid "UBLinux module include apps patch" -msgstr "" +msgstr "Модуль UBLinux включает патчи для приложений" msgid "UBLinux module includes podman and webmanager and utils" -msgstr "" +msgstr "Модуль UBLinux включает podman, webmanager и утилиты" msgid "UBLinux module include pycharm-community-edition and utilities" -msgstr "" +msgstr "Модуль UBLinux включает pycharm-community-edition и утилиты" msgid "UBLinux module includes QEMU, manager and utils" -msgstr "" +msgstr "Модуль UBLinux включает QEMU, менеджер и утилиты" msgid "UBLinux module includes R7 Office" -msgstr "" +msgstr "Модуль UBLinux включает R7 Office" msgid "UBLinux module includes realvnc viewer and server" -msgstr "" +msgstr "Модуль UBLinux включает RealVNC Viewer и сервер" msgid "UBLinux module includes rustdesk" -msgstr "" +msgstr "Модуль UBLinux включает RustDesk" msgid "UBLinux module includes Telegram" -msgstr "" +msgstr "Модуль UBLinux включает Telegram" msgid "UBLinux module include UBPile Workflow" -msgstr "" +msgstr "Модуль UBLinux включает UBPile Workflow" msgid "UBLinux module includes agents for Linux guest" -msgstr "" +msgstr "Модуль UBLinux включает агенты для гостевой системы Linux" msgid "UBLinux module includes VirtualBox and extension packs" -msgstr "" +msgstr "Модуль UBLinux включает VirtualBox и пакеты расширений" msgid "UBLinux module includes Web servers" -msgstr "" +msgstr "Модуль UBLinux включает веб-серверы" msgid "UBLinux module includes Webmin and Usermin" -msgstr "" +msgstr "Модуль UBLinux включает Webmin и Usermin" msgid "UBLinux module includes interactive whiteboard soft" -msgstr "" +msgstr "Модуль UBLinux включает программное обеспечение для интерактивной доски" msgid "UBLinux module include Winbox" -msgstr "" +msgstr "Модуль UBLinux включает Winbox" msgid "UBLinux module includes wine and utilities" -msgstr "" +msgstr "Модуль UBLinux включает Wine и утилиты" msgid "UBLinux module include Kingsoft Office (WPS Office) - an office productivity suite" -msgstr "" +msgstr "В модуль UBLinux входят Kingsoft Office (WPS Office) — офисный пакет для повышения производительности" msgid "UBLinux module includes Yandex Browser and some utils" -msgstr "" - -msgid "UBLinux module the kernel and modules" -msgstr "" +msgstr "В модуль UBLinux входят Yandex Browser и некоторые утилиты" msgid "UBLinux module headers and scripts for building modules for the Meta UBlinux kernel, modules, headers and documentation" -msgstr "" +msgstr "В модуль UBLinux входят заголовочные файлы и скрипты для сборки модулей для ядра Meta UBlinux, модули, заголовочные файлы и документация" msgid "UBLinux module includes the core developer components" -msgstr "" +msgstr "В модуль UBLinux входят основные компоненты для разработчиков" msgid "UBLinux module includes Liquidshell basic desktop shell using QtWidgets" -msgstr "" +msgstr "В модуль UBLinux входит базовая оболочка рабочего стола Liquidshell с использованием QtWidgets" msgid "UBLinux module includes AMDGRU PRO driver and utilities" -msgstr "" +msgstr "В модуль UBLinux входят драйвер AMDGRU PRO и утилиты" msgid "UBLinux module includes anydesk" -msgstr "" +msgstr "В модуль UBLinux входит anydesk" msgid "UBLinux module includes Chromium-GOST and some plugins" -msgstr "" +msgstr "В модуль UBLinux входит Chromium-GOST и некоторые плагины" msgid "UBLinux module includes database applications" -msgstr "" +msgstr "В модуль UBLinux входят приложения для работы с базами данных" msgid "UBLinux module includes docker and webmanager and utils" -msgstr "" +msgstr "В модуль UBLinux входят Docker, WebManager и утилиты" msgid "UBLinux module include Hedgewars game similiar to Worms" -msgstr "" +msgstr "В модуль UBLinux входит игра Hedgewars, похожая на Worms" msgid "UBLinux module includes Gitea and MemCached" -msgstr "" +msgstr "В модуль UBLinux входят Gitea и MemCached" msgid "UBLinux module include Gitlab CLI tools" -msgstr "" +msgstr "В модуль UBLinux входят инструменты командной строки Gitlab" msgid "UBLinux module include Java OpenJFX 11 client application platform" -msgstr "" +msgstr "В модуль UBLinux входит платформа клиентских приложений Java OpenJFX 11" msgid "UBLinux module include Free Pascal and Lazarus GTK2" -msgstr "" +msgstr "В модуль UBLinux входят Free Pascal и Lazarus GTK2" msgid "UBLinux module include Free Pascal and Lazarus QT5" -msgstr "" +msgstr "В модуль UBLinux входят Free Pascal и Lazarus QT5" msgid "UBLinux module includes LSI MegaRaid SM, StorCLI, MegaCLI and utils" -msgstr "" +msgstr "В модуль UBLinux входят LSI MegaRaid SM, StorCLI, MegaCLI и утилиты" msgid "UBLinux module includes NVIDIA 340xx driver and utilities" -msgstr "" +msgstr "В модуль UBLinux входят драйвер и утилиты для NVIDIA 340xx" msgid "UBLinux module includes NVIDIA 390xx driver and utilities" -msgstr "" +msgstr "В модуль UBLinux входят драйвер и утилиты для NVIDIA 390xx" msgid "UBLinux module includes NVIDIA 470xx driver and utilities" -msgstr "" +msgstr "Модуль UBLinux включает драйвер и утилиты для NVIDIA 470xx" msgid "UBLinux module includes NVIDIA 510xx driver and utilities" -msgstr "" +msgstr "Модуль UBLinux включает драйвер и утилиты для NVIDIA 510xx" msgid "UBLinux module includes NVIDIA 515xx driver and utilities" -msgstr "" +msgstr "Модуль UBLinux включает драйвер и утилиты для NVIDIA 515xx" msgid "UBLinux module includes NVIDIA Optimus" -msgstr "" +msgstr "Модуль UBLinux включает NVIDIA Optimus" msgid "UBLinux module includes OnlyOffice DocumentServer suite" -msgstr "" +msgstr "Модуль UBLinux включает пакет OnlyOffice DocumentServer" msgid "UBLinux module includes Opera and some plugins" -msgstr "" +msgstr "Модуль UBLinux включает Opera и некоторые плагины" msgid "UBLinux module includes patch" -msgstr "" +msgstr "Модуль UBLinux включает патч" msgid "UBLinux module includes QEMU headless and utils" -msgstr "" +msgstr "Модуль UBLinux включает QEMU headless и утилиты" msgid "UBLinux module include QT4" -msgstr "" +msgstr "Модуль UBLinux включает QT4" msgid "UBLinux module include rustdesk-server" -msgstr "" +msgstr "Модуль UBLinux включает rustdesk-server" msgid "UBLinux module include Skype" -msgstr "" +msgstr "Модуль UBLinux включает Skype" msgid "UBLinux module include Tor utils and browser" -msgstr "" +msgstr "Модуль UBLinux включает утилиты Tor и браузер" msgid "UBLinux module includes agents for Linux guest without X support" -msgstr "" +msgstr "Модуль UBLinux включает агенты для гостевой системы Linux без поддержки X" msgid "UBLinux module includes VirtualBox headless and extension packs" -msgstr "" +msgstr "Модуль UBLinux включает VirtualBox в режиме без графического интерфейса и пакеты расширений" msgid "UBLinux module includes phpvirtualbox for VirtualBox" -msgstr "" +msgstr "Модуль UBLinux включает phpvirtualbox для VirtualBox" msgid "UBLinux module include Vivaldi browser" -msgstr "" +msgstr "Модуль UBLinux включает браузер Vivaldi" msgid "UBLinux module includes VMware-Workstation 16" -msgstr "" +msgstr "Модуль UBLinux включает VMware-Workstation 16" msgid "UBLinux module include Wiki.js" -msgstr "" +msgstr "Модуль UBLinux включает Wiki.js" msgid "UBLinux module include X11 remote utils" -msgstr "" - -msgid "UBLinux module include Zoommsgid "" -msgstr "" - +msgstr "Модуль UBLinux включает удаленные утилиты X11" -Модуль UBLinux включает PostgreSQL, базу данных MariaDB и утилиты -Модуль UBLinux включает Docker, WebManager и утилиты -Модуль UBLinux включает драйверы принтеров Brother -Модуль UBLinux включает драйвер принтера Canon CAPT -Модуль UBLinux включает драйвер принтера Canon UFR II LIPSLX CARPS2 -Модуль UBLinux включает драйверы принтеров Epson -Модуль UBLinux включает драйверы принтеров Kyocera -Модуль UBLinux включает драйверы Lexmark -Модуль UBLinux включает драйверы принтеров Pantum -Модуль UBLinux включает hplip, gutenprint, foomatic -Модуль UBLinux включает драйверы Ricoh -Модуль UBLinux включает драйверы Samsung -Модуль UBLinux включает Xerox драйверы -Модуль UBLinux включает образовательное программное обеспечение -Модуль UBLinux включает Firefox и некоторые плагины -Модуль UBLinux включает платформу клиентских приложений Java OpenJFX 17 -Модуль UBLinux включает комплект разработки OpenJDK Java 11 -Модуль UBLinux включает комплект разработки OpenJDK Java 17 -Модуль UBLinux включает комплект разработки OpenJDK Java 21 -Модуль UBLinux включает комплект разработки OpenJDK Java 8 -Модуль UBLinux включает некоторые 32-битные библиотеки -Модуль UBLinux включает LibreOffice -Модуль UBLinux включает дополнительные модули dkms -Модуль UBLinux включает драйвер NVIDIA 470xx для Linux -Модуль UBLinux включает драйвер NVIDIA 390xx для Linux -Модуль UBLinux включает пакет OnlyOffice -Модуль UBLinux включает патчи для приложений -Модуль UBLinux включает podman и webmanager и утилиты -Модуль UBLinux включает pycharm-community-edition и утилиты -Модуль UBLinux включает QEMU, менеджер и утилиты -Модуль UBLinux включает R7 Office -Модуль UBLinux включает средство просмотра и сервер RealVNC -Модуль UBLinux включает RustDesk -Модуль UBLinux включает Telegram -Модуль UBLinux включает UBPile Workflow -Модуль UBLinux включает агенты для гостевой системы Linux -Модуль UBLinux включает VirtualBox и пакеты расширений -Модуль UBLinux включает веб-серверы -Модуль UBLinux включает Webmin и Usermin -Модуль UBLinux включает интерактивную доску -Модуль UBLinux включает Winbox -Модуль UBLinux включает Wine и утилиты -Модуль UBLinux включает Kingsoft Office (WPS Office) — офисный пакет -Модуль UBLinux включает Yandex Browser и некоторые утилиты -Модуль UBLinux включает ядро ​​и модули -Модуль UBLinux включает заголовочные файлы и скрипты для сборки модулей для ядра Meta UBlinux, модули, заголовочные файлы и документацию -Модуль UBLinux включает основные компоненты для разработчиков -Модуль UBLinux включает базовую оболочку рабочего стола Liquidshell с использованием QtWidgets -Модуль UBLinux включает драйвер AMDGRU PRO и утилиты -Модуль UBLinux включает anydesk -Модуль UBLinux включает Chromium-GOST и некоторые плагины -Модуль UBLinux включает приложения для работы с базами данных -Модуль UBLinux включает docker, webmanager и утилиты -Модуль UBLinux включает игру Hedgewars, похожую на Worms -Модуль UBLinux включает Gitea и MemCached -Модуль UBLinux включает инструменты командной строки Gitlab -Модуль UBLinux включает платформу клиентских приложений Java OpenJFX 11 -Модуль UBLinux включает Free Pascal и Lazarus GTK2 -Модуль UBLinux включает Free Pascal и Lazarus QT5 -Модуль UBLinux включает LSI MegaRaid SM, StorCLI, MegaCLI и утилиты -Модуль UBLinux включает драйвер NVIDIA 340xx и утилиты -Модуль UBLinux включает драйвер NVIDIA 390xx и утилиты -Модуль UBLinux включает NVIDIA Драйвер и утилиты для NVIDIA 470xx -Модуль UBLinux включает драйвер и утилиты для NVIDIA 510xx -Модуль UBLinux включает драйвер и утилиты для NVIDIA 515xx -Модуль UBLinux включает NVIDIA Optimus -Модуль UBLinux включает пакет OnlyOffice DocumentServer -Модуль UBLinux включает Opera и некоторые плагины -Модуль UBLinux включает патч -Модуль UBLinux включает QEMU headless и утилиты -Модуль UBLinux включает QT4 -Модуль UBLinux включает rustdesk-server -Модуль UBLinux включает Skype -Модуль UBLinux включает утилиты и браузер Tor -Модуль UBLinux включает агенты для гостевой системы Linux без поддержки X -Модуль UBLinux включает VirtualBox headless и пакеты расширений -Модуль UBLinux включает phpvirtualbox f \ No newline at end of file +msgid "UBLinux module include Zoom" +msgstr "Модуль UBLinux включает Zoom" \ No newline at end of file diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 0f6034d..1bd2324 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -103,12 +103,12 @@ void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *d row->name = yon_char_new(name); char *description_full = yon_char_new(description); - if (strlen(description)>100){ - guint size; - config_str description_wrapped = yon_char_wrap_to_lines(description,3,&size); - description_full = yon_char_parsed_to_string(description_wrapped,size,"\n"); - yon_char_parsed_free(description_wrapped,size); - } + // if (strlen(description)>100){ + // guint size; + // config_str description_wrapped = yon_char_wrap_to_lines(description,2,&size); + // description_full = yon_char_parsed_to_string(description_wrapped,size,"\n"); + // yon_char_parsed_free(description_wrapped,size); + // } gtk_label_set_label(GTK_LABEL(row->NameLabel),name); gtk_label_set_label(GTK_LABEL(row->VersionLabel),version); gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full); @@ -122,7 +122,7 @@ gboolean yon_os_component_insert(struct row_data *row_input){ main_window *widgets = row_input->widgets; 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); + 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)||yon_char_check_element(modules,row_input->name,",")||!strcmp(modules,"auto")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); @@ -226,7 +226,7 @@ gboolean yon_software_insert(struct row_data *row_input){ main_window *widgets = row_input->widgets; gtk_list_box_insert(GTK_LIST_BOX(widgets->AdditionalComponentsList),row->row,-1); - yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description); + yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,_(row_input->description)); char *modules = config(modules_extra_parameter); if (yon_char_check_element(modules,row_input->name,",")){ @@ -297,7 +297,7 @@ void yon_pacman_init(main_window *widgets){ char *version = yon_packages_get_version(YON_PACKAGES_SYNC,parsed[i]); GtkTreeIter iter; gtk_list_store_append(widgets->PacmanSoftwareChosenList,&iter); - gtk_list_store_set(widgets->PacmanSoftwareChosenList,&iter,0,1,1,parsed[i],2,version,3,description,-1); + gtk_list_store_set(widgets->PacmanSoftwareChosenList,&iter,0,1,1,parsed[i],2,version,3,_(description),-1); } yon_char_parsed_free(parsed,size); } \ No newline at end of file diff --git a/ubinstall-gtk-os-row.glade b/ubinstall-gtk-os-row.glade index 16900aa..e1f0660 100644 --- a/ubinstall-gtk-os-row.glade +++ b/ubinstall-gtk-os-row.glade @@ -80,6 +80,7 @@ False 2 Description + True 0 0 -- 2.35.1 From ddc1d99e51bf2fe12999be2bd6d7bd3871b44327 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 26 Jan 2026 13:54:39 +0600 Subject: [PATCH 61/92] Replaced Cancel button with Exit button at finish pages --- source/ubinstall-gtk-kernel.c | 2 +- source/ubinstall-gtk-page-switch.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index f199159..ce8c726 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -292,7 +292,7 @@ void on_kernel_addon_info(GtkLabel *self){ yon_char_remove_last_symbol(info[i],'\n'); GtkTreeIter iter; int parsed_size; - config_str parsed = yon_char_parse(info[i],&parsed_size,":"); + config_str parsed = yon_char_parse(info[i],&parsed_size," : "); gtk_list_store_append(element->InfoList,&iter); gtk_list_store_set(element->InfoList,&iter,0,parsed[0],1,parsed[1],-1); diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 601f9bf..e4dbb44 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -171,7 +171,8 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ case YON_PAGE_COMPLETION: gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL); gtk_widget_set_sensitive(widgets->BackButton,0); - gtk_widget_set_sensitive(widgets->CancelInstallButton,0); + gtk_widget_set_sensitive(widgets->CancelInstallButton,1); + gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); gtk_widget_set_sensitive(widgets->NextButton,1); break; case YON_PAGE_SECTIONS: @@ -519,6 +520,11 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ enum YON_PAGES cur_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); switch (cur_page){ case YON_PAGE_CONFIGURE_END: + case YON_PAGE_COMPLETED: + case YON_PAGE_RECOVERY_COMPLETION: + case YON_PAGE_INSTALL_ERROR: + case YON_PAGE_CONFIGURE_SAVE: + case YON_PAGE_COMPLETION: gtk_main_quit(); break; default: { -- 2.35.1 From 96e677ba1505a927411d2b6a7582c4fe570dac7c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 26 Jan 2026 14:31:00 +0600 Subject: [PATCH 62/92] Fixed start without root --- source/ubinstall-gtk.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index ab48f19..2cd813d 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -891,6 +891,20 @@ void yon_main_window_create(main_window *widgets){ yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); + int fullscreen = 0; + char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); + if (access(path,F_OK)){ + fullscreen = 1; + g_thread_new("fullscreen",(GThreadFunc)yon_maximize,widgets); + + } + yon_window_config_load(path); + yon_window_config_add_instant_parameter("fullscreen","window",&fullscreen,YON_TYPE_BOOLEAN); + + yon_startup_language_init(); + yon_locale_init(); + yon_main_window_update_locale(widgets); + yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); @@ -1007,23 +1021,10 @@ main_window *yon_main_window_complete(){ memset(widgets,0,sizeof(main_window)); yon_main_window_create(widgets); - yon_startup_language_init(); - yon_locale_init(); // yon_set_locales_list(widgets); // yon_main_window_update_locale(widgets); // // yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow"); - - int fullscreen = 0; - char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); - if (access(path,F_OK)){ - fullscreen = 1; - g_thread_new("fullscreen",(GThreadFunc)yon_maximize,widgets); - - } - yon_window_config_load(path); - yon_window_config_add_instant_parameter("fullscreen","window",&fullscreen,YON_TYPE_BOOLEAN); - yon_main_window_update_locale(widgets); return widgets; } @@ -1079,9 +1080,6 @@ int main(int argc, char *argv[]){ main_config.launch_arguments=yon_char_parsed_copy(argv,argc); main_config.launch_size=argc; - if (getuid()!=0){ - yon_ubl_status_box_render(yon_char_get_localised_from_lib(ROOT_WARNING_LABEL),BACKGROUND_IMAGE_FAIL_TYPE); - } gtk_main(); return 0; } \ No newline at end of file -- 2.35.1 From 2e04f34506c978540fa17796534d7903573b7282 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 26 Jan 2026 15:04:52 +0600 Subject: [PATCH 63/92] Back button hidden at finish pages --- source/ubinstall-gtk-page-switch.c | 2 +- source/ubinstall-gtk.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index e4dbb44..0887f18 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -170,7 +170,7 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ case YON_PAGE_CONFIGURE_SAVE: case YON_PAGE_COMPLETION: gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL); - gtk_widget_set_sensitive(widgets->BackButton,0); + gtk_widget_hide(widgets->BackButton); gtk_widget_set_sensitive(widgets->CancelInstallButton,1); gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); gtk_widget_set_sensitive(widgets->NextButton,1); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 2cd813d..c729aff 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -971,7 +971,6 @@ void yon_main_window_create(main_window *widgets){ if (getuid()){ gtk_menu_item_activate(GTK_MENU_ITEM(widgets->ConfigurationModeMenuItem)); if (yon_char_is_empty(main_config.config_save_path)){ - gtk_main_quit(); exit (1); } } @@ -985,7 +984,6 @@ void yon_main_window_create(main_window *widgets){ yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(widgets->StatusBox),"config_mode",CONFIGURATION_MODE_STATUS_LABEL,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(widgets->StatusBox2),"config_mede",CONFIG_PATH_LABEL(main_config.config_save_path),BACKGROUND_IMAGE_INFO_TYPE); } else { - gtk_main_quit(); exit (1); } } -- 2.35.1 From 1fc4df6625e272c4423d24f73e5bebcc2d7469b9 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 26 Jan 2026 17:27:19 +0600 Subject: [PATCH 64/92] Localisation Fixes --- locale/ubinstall-gtk.pot | 6 +++++ locale/ubinstall-gtk_ru.po | 14 +++++------ source/ubinstall-gtk-ui-lang.c | 45 ++++++++++++++++++++++++++++++++++ source/ubinstall-gtk.c | 3 +++ source/ubl-strings.h | 8 ++++++ 5 files changed, 68 insertions(+), 8 deletions(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index cf10456..0bfce82 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -1825,6 +1825,12 @@ msgid "" "network or the Internet (even over slow connection channels)." msgstr "" +msgid "About" +msgstr "" + +msgid "Documentation" +msgstr "" + msgid "Generic 86-key PC" msgstr "" diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 12e9805..11cf630 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -475,14 +475,6 @@ msgstr "Настройка установщика завершена" msgid "System installation is about to begin" msgstr "Начало установки системы" -#: source/ubl-strings.h:128 -msgid "Documentation" -msgstr "Справка" - -#: source/ubl-strings.h:129 -msgid "About" -msgstr "О программе" - #: source/ubl-strings.h:131 msgid "Would you like to read documentation in the Web?" msgstr "Вы хотите прочитать документацию в Сети?" @@ -1985,6 +1977,12 @@ msgstr "" "Позволяет загрузку системы для бездисковых и обычных рабочих станций через " "локальную сеть или Интернет (даже используя \"слабые\" каналы связи)" +msgid "About" +msgstr "О программе" + +msgid "Documentation" +msgstr "Справка" + msgid "Afrikaans" msgstr "Африканский" diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index a14c223..ff5332a 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -249,6 +249,17 @@ void yon_translation_init(GtkBuilder *builder){ } else if (GTK_IS_TREE_VIEW_COLUMN(iter->data)){ cur_widget = G_OBJECT(iter->data); widget_text = yon_char_new(gtk_tree_view_column_get_title(GTK_TREE_VIEW_COLUMN(cur_widget))); + } else if (GTK_IS_MENU_ITEM(iter->data)){ + cur_widget = G_OBJECT(iter->data); + GList *list = gtk_container_get_children(GTK_CONTAINER(cur_widget)); + if (list) { + GtkWidget *widget = list->data; + g_list_free(list); + if (GTK_IS_BOX(widget)){ + continue; + } + } + widget_text = yon_char_new(gtk_menu_item_get_label(GTK_MENU_ITEM(cur_widget))); } else continue; g_object_set_data(G_OBJECT(cur_widget),"original_label",(void*)widget_text); @@ -258,6 +269,8 @@ void yon_translation_init(GtkBuilder *builder){ void yon_update_translation(main_window *widgets){ GtkBuilder *builder = widgets->builder; GSList *list = gtk_builder_get_objects(builder); + list = g_slist_append(list,widgets->DocumentationMenuItem); + list = g_slist_append(list,widgets->AboutMenuItem); GSList *iter; for (iter = list; iter; iter = iter->next){ if (iter->data == widgets->LicenceLabel){ @@ -275,6 +288,14 @@ void yon_update_translation(main_window *widgets){ if (!yon_char_is_empty(source_label)){ gtk_label_set_text(GTK_LABEL(cur_label),_(source_label)); } + + } else if (GTK_IS_MENU_ITEM(iter->data)){ + GtkWidget *cur_menu_item = GTK_WIDGET(iter->data); + char *source_label = g_object_get_data(G_OBJECT(cur_menu_item),"original_label"); + if (!yon_char_is_empty(source_label)){ + gtk_menu_item_set_label(GTK_MENU_ITEM(cur_menu_item),_(source_label)); + } + } else if (GTK_IS_TREE_VIEW_COLUMN(iter->data)){ GObject *cur_column = G_OBJECT(iter->data); char *source_label = g_object_get_data(G_OBJECT(cur_column),"original_label"); @@ -285,4 +306,28 @@ void yon_update_translation(main_window *widgets){ yon_set_locales_list(widgets); } } + { + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DocumentationMenuItem)); + GList *container = gtk_container_get_children(list->data); + + GObject *cur_button = G_OBJECT(container->next->data); + char *source_label = g_object_get_data(G_OBJECT(widgets->DocumentationMenuItem),"original_label"); + if (!yon_char_is_empty(source_label)){ + gtk_label_set_text(GTK_LABEL(cur_button),_(source_label)); + } + g_list_free(list); + g_list_free(container); + } + { + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AboutMenuItem)); + GList *container = gtk_container_get_children(list->data); + + GObject *cur_button = G_OBJECT(container->next->data); + char *source_label = g_object_get_data(G_OBJECT(widgets->AboutMenuItem),"original_label"); + if (!yon_char_is_empty(source_label)){ + gtk_label_set_text(GTK_LABEL(cur_button),_(source_label)); + } + g_list_free(list); + g_list_free(container); + } } \ No newline at end of file diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index c729aff..f655afe 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -724,6 +724,9 @@ void yon_main_window_create(main_window *widgets){ } g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets); GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2"); + + g_object_set_data(G_OBJECT(widgets->DocumentationMenuItem),"original_label",yon_char_new(DOCUMENTATION_LABEL)); + g_object_set_data(G_OBJECT(widgets->AboutMenuItem),"original_label",yon_char_new(ABOUT_LABEL)); gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle"); gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop"); gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 3b214dd..5da39e2 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -123,6 +123,9 @@ NULL) #define DOCUMENTATION_HEAD_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.") #define DOCUMENTATION_CHECK_LABEL _("Always redirect to online documentation") #define OPEN_DOCUMENTATION_LABEL _("Open documentation") +#define ABOUT_LABEL yon_char_get_localised_from_lib("About") +#define DOCUMENTATION_LABEL yon_char_get_localised_from_lib("Documentation") + #define INSTALLATION_ERROR _("Installation error") #define ATTENTION_NEXT_LABEL _("Attention! The system will be installed on the selected partition with OS already installed. All user data will be saved.") @@ -276,6 +279,11 @@ NULL) #define OFF_LABEL _("Off") #define DO_NOT_CONFIGURE_LABEL _("Do not configure") +#define LOAD_CUSTOM_LABEL yon_char_get_localised_from_lib("Load from specific file") +#define LOAD_LOCAL_LABEL yon_char_get_localised_from_lib("Load local configuration") +#define LOAD_GLOBAL_LABEL yon_char_get_localised_from_lib("Load global configuration") +#define LOAD_LABEL yon_char_get_localised_from_lib("Load") + // #define _LABEL _("Select your language:") // #define _LABEL _("Selecting additional system kernel components") // #define _LABEL _("Package:") -- 2.35.1 From 3e3e48efc71545511012b505f7403306f25e56a0 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 28 Jan 2026 10:25:52 +0600 Subject: [PATCH 65/92] Package info window changes --- source/ubinstall-gtk-kernel.c | 4 ++-- ubinstall-gtk-package-info.glade | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index ce8c726..16f2e0c 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -299,10 +299,10 @@ void on_kernel_addon_info(GtkLabel *self){ } } else { label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); - yon_gtk_label_set_font(GTK_LABEL(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_label_set_xalign(GTK_LABEL(label),0); } gtk_widget_show(window->Window); } diff --git a/ubinstall-gtk-package-info.glade b/ubinstall-gtk-package-info.glade index 4d537d2..31f424e 100644 --- a/ubinstall-gtk-package-info.glade +++ b/ubinstall-gtk-package-info.glade @@ -27,7 +27,7 @@ InfoList False False - vertical + both none @@ -48,7 +48,10 @@ column - + + word + 150 + 1 -- 2.35.1 From 270544aeba2c7007b0be9ae4de5b5b92a186acf4 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 28 Jan 2026 11:57:11 +0600 Subject: [PATCH 66/92] Style change --- ubinstall-gtk.glade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 7791b7e..e968790 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -5290,7 +5290,7 @@ agreement word - 450 + 175 3 -- 2.35.1 From bf8d42340b86abb964361eb1ad6e7214a9f105a6 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 28 Jan 2026 13:50:39 +0600 Subject: [PATCH 67/92] Fixed log button size --- ubinstall-gtk.glade | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index e968790..719155f 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -13231,6 +13231,9 @@ separately into the selected partition. True False + False @@ -13244,6 +13247,7 @@ separately into the selected partition. True True Read installation log + start image16 + True False @@ -3698,99 +3764,77 @@ agreement True False center + vertical 5 - - - True - True - - - False - True - 0 - - - - - True - Region: - - - False - True - 1 - - + True False 5 - + True - False - 15 - 5 - - - True - False - True - - - False - True - 1 - - + True - True - False + False + True 0 - + True - False - 15 - 5 - - - False - Zone: - - - False - True - 0 - - - - - True - False - True - - - False - True - 1 - - + True + Region: - True - False + False + True 1 + + + True + False + True + + + False + True + 2 + + + + + True + False + Zone: + + + False + True + 3 + + + + + True + False + True + + + False + True + 4 + + False True - 2 + 3 @@ -3802,7 +3846,7 @@ agreement False True - 3 + 4 @@ -3821,13 +3865,22 @@ agreement none 35.299999237060547 - + True - False False - vertical - + + True + False + False + vertical + + + + + + -1 + -- 2.35.1 From 2ebdf0456efdb791ff1a7833d3d5d7a5cdbe8ede Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 5 Feb 2026 14:21:41 +0600 Subject: [PATCH 90/92] Fixed userdata only installatin page widgets assignment --- source/ubinstall-gtk-installation.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index 06ebbfd..cf7b069 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -318,8 +318,8 @@ void on_device_selection_changed(GtkWidget *self, main_window *widgets){ yon_char_parsed_free(parsed,parsed_size); } } - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin),0.0); - gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin)),0.0); + // gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin),0.0); + // gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin)),0.0); } } @@ -441,8 +441,8 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_RECOVERY_USRDATA_ONLY: device_tree = widgets->UserdataDevicesTree; partition_tree = widgets->UserdataSysSectionTree; - format_switch = widgets->OSFormatSwitch; - partition_size_spin = widgets->UserdataFormatSwitch; + format_switch = widgets->UserdataFormatSwitch; + partition_size_spin = widgets->UserdataFormatSizeSpin; partition_size_combo = widgets->UserdataFormatSizeCombo; partition_mark_entry = widgets->UserdataFormatPartitionEntry; fs_type_combo = widgets->UserdataFilesystemTypeCombo; -- 2.35.1 From b9ea1beef6955f0aa38595b6319a4ba33dfa64a4 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 5 Feb 2026 18:44:58 +0600 Subject: [PATCH 91/92] Region changes --- locale/ubinstall-gtk.pot | 6 +-- locale/ubinstall-gtk_ru.po | 12 ++--- source/ubinstall-gtk-decorations.c | 74 +++++++++++++++++++++++++++++ source/ubinstall-gtk-installation.c | 18 ++++++- source/ubinstall-gtk-region.c | 68 ++++++++++++++++---------- source/ubinstall-gtk-ui-lang.c | 9 +--- source/ubinstall-gtk.c | 3 ++ source/ubinstall-gtk.h | 6 +-- source/ubl-strings.h | 10 ++-- ubinstall-gtk.glade | 10 ++-- 10 files changed, 159 insertions(+), 57 deletions(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index c244c5a..7ba8133 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -360,7 +360,7 @@ msgid "GRUB install" msgstr "" #: source/ubl-strings.h:81 -msgid "Install the GRUB bootloader" +msgid "Installing the GRUB bootloader into the MBR or EFI partition" msgstr "" #: source/ubl-strings.h:82 @@ -380,11 +380,11 @@ msgid "Installing OS components and user data on different disk partitions" msgstr "" #: source/ubl-strings.h:86 -msgid "OS only" +msgid "System restore" msgstr "" #: source/ubl-strings.h:87 -msgid "Installing only OS components without user data" +msgid "Restore missing or corrupted system files. Users data is not affected" msgstr "" #: source/ubl-strings.h:88 diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 67445d7..d2bb0f5 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -372,8 +372,8 @@ msgid "GRUB install" msgstr "Установка GRUB" #: source/ubl-strings.h:81 -msgid "Install the GRUB bootloader" -msgstr "Установить загрузчик GRUB" +msgid "Installing the GRUB bootloader into the MBR or EFI partition" +msgstr "Установка загрузчика GRUB в MBR или EFI-партицию" #: source/ubl-strings.h:82 msgid "GRUB update" @@ -393,12 +393,12 @@ msgstr "" "Установка компонентов ОС и пользовательских данных на разные разделы диска" #: source/ubl-strings.h:86 -msgid "OS only" -msgstr "Только ОС" +msgid "System restore" +msgstr "Восстановление системы" #: source/ubl-strings.h:87 -msgid "Installing only OS components without user data" -msgstr "Установка только компоненов ОС без пользовательских данных" +msgid "Restore missing or corrupted system files. Users data is not affected" +msgstr "Восстановление отсутствующих или поврежденных системных файлов. Данные пользователей не затрагиваются" #: source/ubl-strings.h:88 msgid "User data only" diff --git a/source/ubinstall-gtk-decorations.c b/source/ubinstall-gtk-decorations.c index e83c4ec..4fd5410 100644 --- a/source/ubinstall-gtk-decorations.c +++ b/source/ubinstall-gtk-decorations.c @@ -153,3 +153,77 @@ gboolean on_install_slider_slide(main_window *widgets){ } return G_SOURCE_REMOVE; } + +// void yon_resize_images_update(main_window *widgets){ +// enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); +// gtk_widget_hide(widgets->BootloaderImage); +// gtk_widget_hide(widgets->RegionImage); +// gtk_widget_hide(widgets->KeyboardImage); +// gtk_widget_hide(widgets->UserImage); +// gtk_widget_hide(widgets->StartupImage); +// gtk_widget_hide(widgets->NetworkImage); + +// switch(page){ +// case YON_PAGE_BOOTLOADER: +// gtk_widget_show(widgets->BootloaderImage); +// break; +// case YON_PAGE_REGION: +// gtk_widget_show(widgets->RegionImage); +// break; +// case YON_PAGE_KEYBOARD: +// gtk_widget_show(widgets->KeyboardImage); +// break; +// case YON_PAGE_USERS: +// gtk_widget_show(widgets->UserImage); +// break; +// case YON_PAGE_STARTUP: +// gtk_widget_show(widgets->StartupImage); +// break; +// case YON_PAGE_NETWORK: +// gtk_widget_show(widgets->NetworkImage); +// break; +// case YON_PAGE_INSTALLATION: +// gtk_widget_show(widgets->SlidesImage); +// g_timeout_add(7000,on_image_slide,widgets); + +// break; +// default: +// break; +// } +// } + +// void on_region_resized(GtkWidget *,main_window *widgets){ +// enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); +// GtkImage *target = NULL; +// GdkPixbuf *pixbuf = NULL; +// target = GTK_IMAGE(widgets->RegionImage); +// pixbuf = widgets->region_original; +// if (target){ +// yon_image_resize_from_container(target,pixbuf); +// } +// } + +// int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled){ +// int width = gtk_widget_get_allocated_width((gtk_widget_get_parent(GTK_WIDGET(target)))); +// int height = gtk_widget_get_allocated_height((gtk_widget_get_parent(GTK_WIDGET(target)))); + +// int newImgWidthDef = (width <= 217) ? width : width - 30; +// int newImgHeightDef = (height <= 120) ? height : height - 80; + +// int originalWidth = gdk_pixbuf_get_width(pixbuf_unscaled); +// int originalHeight = gdk_pixbuf_get_height(pixbuf_unscaled); +// int newImgHeight = (int)(originalHeight / ((double) originalWidth / newImgWidthDef)); + +// if (newImgHeight > newImgHeightDef) { +// newImgHeight = newImgHeightDef; +// newImgWidthDef = (int)(originalWidth / ((double) originalHeight / newImgHeight)); +// } +// int newImageWidth = (int)(originalWidth / ((double) originalHeight / newImgHeight)); + +// GdkPixbuf *scaledPixBuf = gdk_pixbuf_scale_simple(pixbuf_unscaled, newImageWidth, newImgHeight, GDK_INTERP_BILINEAR); +// gtk_image_set_from_pixbuf(target, scaledPixBuf); + +// g_object_unref(scaledPixBuf); + +// return 1; +// } \ No newline at end of file diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index cf7b069..1a2db87 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -256,6 +256,22 @@ void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_but } } } +// char *parameter = config(part_size_parameter); +// if (!yon_char_is_empty(parameter)){ +// GtkAdjustment *adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->OSFormatSizeSpin)); +// gtk_adjustment_set_value(adj,atol(parameter)); +// g_signal_handlers_block_by_func(G_OBJECT(widgets->NextInstallationSizeTypeSpin),G_CALLBACK(on_partition_changed),widgets); +// g_signal_handlers_block_by_func(G_OBJECT(widgets->OSFormatSizeCombo),G_CALLBACK(on_partition_changed),widgets); +// g_signal_handlers_block_by_func(G_OBJECT(widgets->UserdataFormatSizeCombo),G_CALLBACK(on_partition_changed),widgets); + +// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->OSFormatSizeCombo),yon_get_size_get_from_letter(parameter[strlen(parameter)-1])-1); +// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserdataFormatSizeCombo),yon_get_size_get_from_letter(parameter[strlen(parameter)-1])-1); +// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NextInstallationSizeTypeSpin),yon_get_size_get_from_letter(parameter[strlen(parameter)-1])-1); + +// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NextInstallationSizeTypeSpin),G_CALLBACK(on_partition_changed),widgets); +// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OSFormatSizeCombo),G_CALLBACK(on_partition_changed),widgets); +// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserdataFormatSizeCombo),G_CALLBACK(on_partition_changed),widgets); +// } void on_partition_changed(GtkWidget *self, main_window *widgets){ if (self==widgets->NextInstallationSysSectionTree||self == widgets->NextInstallationSizeTypeSpin){ @@ -319,7 +335,7 @@ void on_device_selection_changed(GtkWidget *self, main_window *widgets){ } } // gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin),0.0); - // gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin)),0.0); + gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin)),0.0); } } diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 7a5e19c..eded13f 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -40,18 +40,37 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ } #ifdef TIMEZONEMAP_INCLUDE + +gboolean on_map_box_ckicked_skip(){ + return 0; +} + void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *); void yon_map_status_hide(main_window *widgets){ gtk_widget_hide(widgets->TimeZoneMapOverlayBox); } -void yon_map_status_hide_timeout(main_window *widgets){ - g_idle_add_once((GSourceOnceFunc)yon_map_status_hide,widgets); +GMutex map_source_mutex; +guint map_status_source = -1; +gboolean yon_map_status_hide_timeout(main_window *widgets){ + printf("hide\n"); + g_mutex_lock(&map_source_mutex); + map_status_source=-1; + g_mutex_unlock(&map_source_mutex); + g_idle_add_once((GSourceOnceFunc)yon_map_status_hide,widgets); + return G_SOURCE_REMOVE; } void yon_map_status_show(main_window *widgets, char *icon_name, char *title, char *title_info){ + g_mutex_lock(&map_source_mutex); + if (map_status_source!=(guint)-1){ + g_source_remove(map_status_source); + printf("remove\n"); + map_status_source=(guint)-1; + } + g_mutex_unlock(&map_source_mutex); gtk_widget_show(widgets->TimeZoneMapOverlayBox); gtk_label_set_text(GTK_LABEL(widgets->TimeZoneMapOverlayTitleLabel),title); gtk_label_set_text(GTK_LABEL(widgets->TimeZoneMapOverlayInfoLabel),title_info); @@ -62,7 +81,10 @@ void yon_map_status_show(main_window *widgets, char *icon_name, char *title, cha } else { gtk_widget_hide(widgets->TimeZoneMapOverlayImage); } - g_timeout_add_seconds_once(5,(GSourceOnceFunc)yon_map_status_hide_timeout,widgets); + g_mutex_lock(&map_source_mutex); + map_status_source = g_timeout_add_seconds(3,(GSourceFunc)yon_map_status_hide_timeout,widgets); + printf("%d\n",map_status_source); + g_mutex_unlock(&map_source_mutex); } void on_zone_changed(GtkWidget *, main_window *widgets){ @@ -96,11 +118,12 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&render,1,&tz,-1); if (!strcmp(timezone,tz)){ gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),render); + char *utc = yon_timezone_get_utc(tz); + yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL(utc),render); } } - yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL,MAP_INFO_LABEL); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); } @@ -128,9 +151,11 @@ void on_region_entry_changed(GtkWidget *, main_window *widgets){ } void yon_region_init(main_window *widgets){ + yon_timezone_init(); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); - #ifdef TIMEZONEMAP_INCLUDE + #ifdef TIMEZONEMAP_INCLUDE // insert timezonemap's interactive map GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox)); if (list){ GList *iter; @@ -147,28 +172,19 @@ void yon_region_init(main_window *widgets){ if (!yon_char_is_empty(config_param)){ cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),config_param); } + #else // if timezonemap does not installed, static image inserts + #endif - int size; - config_str parsed = NULL; - parsed = yon_dir_get_contents(zone_path,&size); - for (int i=0;iRegionCombo),parsed[i],_(parsed[i])); - char *active = yon_char_append("/usr/share/zoneinfo/",parsed[i]); - int zone_size; - config_str zone_parsed = yon_file_ls(active,&zone_size); - GtkTreeIter iter; - for (int j=0;jRegionTimezoneCompletionList,&iter); - gtk_list_store_set(widgets->RegionTimezoneCompletionList,&iter,0,zone_name,1,zone_string,-1); - } - } - free(path); - } + size_t size; + GtkTreeIter iter; + config_str parsed = yon_timezone_get_all(&size); + for (size_t i=0;iRegionTimezoneCompletionList,&iter); + gtk_list_store_set(widgets->RegionTimezoneCompletionList,&iter,0,zone_name,1,parsed[i],-1); + // gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets)) } while(gtk_events_pending()) gtk_main_iteration(); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->RegionCombo),0); diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 6ae89c3..9ae5ced 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -123,13 +123,6 @@ typedef struct{ char *code_full; } locale_struct; -int yon_char_parsed_compare(const void *a, const void *b){ - const config_str str_a = (const config_str)a; - const config_str str_b = (const config_str)b; - - return strcmp(*str_a,*str_b); -} - gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){ char *target; char *loc_target; @@ -152,7 +145,7 @@ void yon_set_locales_list(main_window *widgets){ char *config_code = yon_char_new(config(installer_locale_parameter)); int size; config_str locales = yon_locale_get_all_codes(&size); - qsort(locales,size,sizeof(char*),yon_char_parsed_compare); + qsort(locales,size,sizeof(char*),(__compar_fn_t)yon_char_parsed_compare); GtkTreeIter iter,itar; GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal); textdomain(LOCALES_DOMAIN_NAME); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 1f480d8..a7d4d63 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -786,6 +786,7 @@ void yon_main_window_create(main_window *widgets){ 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->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionEntry); + g_signal_connect(G_OBJECT(widgets->RegionMapBox),"button-press-event",G_CALLBACK(on_map_box_ckicked_skip),NULL); 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); @@ -806,6 +807,8 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); g_signal_connect(G_OBJECT(widgets->NextInstallationSizeTypeSpin),"changed",G_CALLBACK(on_partition_changed),widgets); + g_signal_connect(G_OBJECT(widgets->OSFormatSizeCombo),"changed",G_CALLBACK(on_partition_changed),widgets); + g_signal_connect(G_OBJECT(widgets->UserdataFormatSizeCombo),"changed",G_CALLBACK(on_partition_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordEntry); g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordButton); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index cb5dcfb..c24250c 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1365,7 +1365,6 @@ void yon_main_window_create(main_window *widgets); void yon_set_locales_list(main_window *widgets); void on_installer_language_changed(GtkWidget *self, GtkTreePath *, GtkTreeViewColumn *, main_window *widgets); gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets); -int yon_char_parsed_compare(const void *a, const void *b); gboolean yon_os_component_insert(struct row_data *row_input); void *yon_os_components_setup(main_window *widgets); gboolean yon_spinner_switch_off(GtkSpinner *target); @@ -1490,5 +1489,6 @@ gboolean on_region_refilter(GtkTreeModel* model, GtkTreeIter* iter, main_window void on_region_entry_changed(GtkWidget *, main_window *widgets); char *yon_size_get_name_from_letter(char letter); void yon_map_status_hide(main_window *widgets); -void yon_map_status_hide_timeout(main_window *widgets); -void yon_map_status_show(main_window *widgets, char *icon_name, char *title, char *title_info); \ No newline at end of file +gboolean yon_map_status_hide_timeout(main_window *widgets); +void yon_map_status_show(main_window *widgets, char *icon_name, char *title, char *title_info); +gboolean on_map_box_ckicked_skip(); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index ebb84f5..2a9e060 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -75,13 +75,13 @@ NULL) #define ADVANCED_INSTALLATION_LABEL _("Installing OS files, user data on different partitions, creating RAID, etc.") #define ADVANCED_INSTALLATION_ATTENTION_LABEL _("Attention! The selected system components will be installed\nseparately into the selected partition.") #define GRUB_INSTALL_HEAD_LABEL _("GRUB install") -#define GRUB_INSTALL_LABEL _("Install the GRUB bootloader") +#define GRUB_INSTALL_LABEL _("Installing the GRUB bootloader into the MBR or EFI partition") #define GRUB_UPDATE_HEAD_LABEL _("GRUB update") #define GRUN_UPDATE_LABEL _("Update (reinstall) the GRUB bootloader") #define SEPARATE_INSTALL_HEAD_LABEL _("Separate installation") #define SEPARATE_INSTALL_LABEL _("Installing OS components and user data on different disk partitions") -#define OS_ONLY_HEAD_LABEL _("OS only") -#define OS_ONLY_LABEL _("Installing only OS components without user data") +#define OS_ONLY_HEAD_LABEL _("System restore") +#define OS_ONLY_LABEL _("Restore missing or corrupted system files. Users data is not affected") #define USER_DATA_HEAD_LABEL _("User data only") #define USER_DATA_LABEL _("Installing only user data without OS components") @@ -290,8 +290,8 @@ NULL) #define REBOOT_LABEL _("Reboot") #define SHUTDOWN_LABEL _("Shudown") #define FINISH_ACTION_LABEL _("After successful installation:") -#define MAP_TITLE_LABEL _("Feasf") -#define MAP_INFO_LABEL _("Geasfa") +#define MAP_TITLE_LABEL(utc) yon_char_unite(_("UTC"),utc,NULL) +#define MAP_INFO_LABEL(tz_location) yon_char_unite(_("Geasfa"),tz_location,NULL) // #define _LABEL _("Select your language:") // #define _LABEL _("Selecting additional system kernel components") diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 9edae9f..4e5e2d3 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -277,7 +277,7 @@ - + @@ -10568,7 +10568,7 @@ separately into the selected partition. True False - Install the GRUB bootloader + Installing the GRUB bootloader into the MBR or EFI partition 0 @@ -10707,7 +10707,7 @@ separately into the selected partition. True False - OS only + System restore 0 @@ -10724,7 +10724,7 @@ separately into the selected partition. True False - Installing only OS components without user data + Restore missing or corrupted system files. Users data is not affected 0 @@ -10785,7 +10785,7 @@ separately into the selected partition. True False - User data only + User data restore 0 -- 2.35.1 From fc6090a9b623c4a5ba22af1f9eba2558780bb214 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 6 Feb 2026 18:34:06 +0600 Subject: [PATCH 92/92] WIP region map updating changes --- locale/ubinstall-gtk_ru.po | 4 +- source/ubinstall-gtk-region.c | 81 ++++++++++++++++++++++++++--------- source/ubinstall-gtk.c | 3 ++ source/ubinstall-gtk.h | 5 ++- ubinstall-gtk.css | 6 +++ 5 files changed, 76 insertions(+), 23 deletions(-) diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index d2bb0f5..a5743d3 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -1,6 +1,6 @@ -# Language translations for ubinstal package. +# Language translations for ubinstall-gtk package. # Copyright (C) 2022, UBTech LLC -# This file is distributed under the same license as the ubinstal package. +# This file is distributed under the same license as the ubinstall-gtk package. # UBLinux Team , 2022 # #, fuzzy diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index eded13f..06937b4 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -25,22 +25,28 @@ int yon_region_save(main_window *widgets){ 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); - int size; + size_t size; gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo)); - if (yon_file_is_directory(active)){ - config_str parsed = yon_file_ls(active,&size); - for (int i=0;iZoneCombo),parsed[i],_(parsed[i])); - } - if (size) yon_char_parsed_free(parsed,size); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); + config_str parsed = yon_timezone_get_zones_from_region(active,&size); + for (size_t i=0;iZoneCombo),parsed[i],_(parsed[i])); } - free(active); + if (size) yon_char_parsed_free(parsed,size); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); } #ifdef TIMEZONEMAP_INCLUDE +gboolean on_time_zone_status_hover(GtkWidget *, GdkEvent *, main_window *widgets){ + gtk_style_context_add_class(gtk_widget_get_style_context(widgets->TimeZoneMapOverlayBox),"timezoneoverlay_hover"); + return 0; +} + +gboolean on_time_zone_status_hover_end(GtkWidget *, GdkEvent *, main_window *widgets){ + gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->TimeZoneMapOverlayBox),"timezoneoverlay_hover"); + return 0; +} + gboolean on_map_box_ckicked_skip(){ return 0; } @@ -55,7 +61,6 @@ GMutex map_source_mutex; guint map_status_source = -1; gboolean yon_map_status_hide_timeout(main_window *widgets){ - printf("hide\n"); g_mutex_lock(&map_source_mutex); map_status_source=-1; g_mutex_unlock(&map_source_mutex); @@ -67,7 +72,6 @@ void yon_map_status_show(main_window *widgets, char *icon_name, char *title, cha g_mutex_lock(&map_source_mutex); if (map_status_source!=(guint)-1){ g_source_remove(map_status_source); - printf("remove\n"); map_status_source=(guint)-1; } g_mutex_unlock(&map_source_mutex); @@ -83,7 +87,6 @@ void yon_map_status_show(main_window *widgets, char *icon_name, char *title, cha } g_mutex_lock(&map_source_mutex); map_status_source = g_timeout_add_seconds(3,(GSourceFunc)yon_map_status_hide_timeout,widgets); - printf("%d\n",map_status_source); g_mutex_unlock(&map_source_mutex); } @@ -94,7 +97,7 @@ void on_zone_changed(GtkWidget *, main_window *widgets){ const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){ char *timezone = yon_char_unite(region,"/",zone,NULL); - cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); + yon_map_update(widgets,timezone); free(timezone); } // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); @@ -130,6 +133,33 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind #endif +void yon_map_update(main_window *widgets, const char *timezone){ + #ifdef TIMEZONEMAP_INCLUDE + g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); + #endif + g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); + textdomain(timezone_locale_name); + char *region = yon_timezone_get_zone(timezone); + char *country = yon_timezone_get_country(timezone); + char *city = yon_timezone_get_city(timezone); + char *zone_name = yon_char_unite(_(city),", ", _(country),NULL); + textdomain(LocaleName); + gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),zone_name); + + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),region); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),city); + #ifdef TIMEZONEMAP_INCLUDE + cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); + #endif + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); + #ifdef TIMEZONEMAP_INCLUDE + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + #endif + textdomain(LocaleName); +} + void on_region_entry_changed(GtkWidget *, main_window *widgets){ GtkTreeIter iter; int found = 0; @@ -139,10 +169,9 @@ void on_region_entry_changed(GtkWidget *, main_window *widgets){ char *target_entry = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->RegionEntry)); if (!strcmp(target,target_entry)){ g_object_set_data(G_OBJECT(widgets->RegionEntry),zone_parameter,yon_char_new(timezone)); - #ifdef TIMEZONEMAP_INCLUDE - cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); - #endif + yon_map_update(widgets,timezone); found = 1; + } } if (!found){ @@ -152,7 +181,6 @@ void on_region_entry_changed(GtkWidget *, main_window *widgets){ void yon_region_init(main_window *widgets){ yon_timezone_init(); - gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); #ifdef TIMEZONEMAP_INCLUDE // insert timezonemap's interactive map @@ -178,17 +206,30 @@ void yon_region_init(main_window *widgets){ size_t size; GtkTreeIter iter; config_str parsed = yon_timezone_get_all(&size); + bind_textdomain_codeset(timezone_locale_name,"UTF-8"); + textdomain(timezone_locale_name); + GHashTable *timezones_list = g_hash_table_new(g_str_hash,g_str_equal); for (size_t i=0;iRegionTimezoneCompletionList,&iter); gtk_list_store_set(widgets->RegionTimezoneCompletionList,&iter,0,zone_name,1,parsed[i],-1); - // gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets)) + g_hash_table_add(timezones_list,zone); } + yon_char_parsed_free(parsed,size); + + size_t zones_size; + parsed = (config_str)g_hash_table_get_keys_as_array(timezones_list,(guint*)&zones_size); + qsort(parsed,zones_size,sizeof(char*),(__compar_fn_t)yon_char_parsed_compare); + for (size_t i=0;iRegionCombo),parsed[i],_(parsed[i])); + } + yon_char_parsed_free(parsed,zones_size); + textdomain(LocaleName); while(gtk_events_pending()) gtk_main_iteration(); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->RegionCombo),0); - yon_char_parsed_free(parsed,size); char *zone = yon_char_new(config(zone_parameter)); if (!yon_char_is_empty(zone)){ diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index a7d4d63..c0fd160 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -780,6 +780,8 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); #ifdef TIMEZONEMAP_INCLUDE g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(on_zone_changed),widgets); + g_signal_connect(G_OBJECT(widgets->TimeZoneMapOverlayBox),"enter-notify-event",G_CALLBACK(on_time_zone_status_hover),widgets); + g_signal_connect(G_OBJECT(widgets->TimeZoneMapOverlayBox),"leave-notify-event",G_CALLBACK(on_time_zone_status_hover_end),widgets); #endif g_signal_connect(G_OBJECT(widgets->RegionEntry),"changed",G_CALLBACK(on_region_entry_changed),widgets); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); @@ -927,6 +929,7 @@ void yon_main_window_create(main_window *widgets){ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL); gtk_overlay_add_overlay(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox); + gtk_overlay_set_overlay_pass_through(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox,1); gtk_widget_hide(widgets->TimeZoneMapOverlayBox); { diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index c24250c..18a769a 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1491,4 +1491,7 @@ char *yon_size_get_name_from_letter(char letter); void yon_map_status_hide(main_window *widgets); gboolean yon_map_status_hide_timeout(main_window *widgets); void yon_map_status_show(main_window *widgets, char *icon_name, char *title, char *title_info); -gboolean on_map_box_ckicked_skip(); \ No newline at end of file +gboolean on_map_box_ckicked_skip(); +gboolean on_time_zone_status_hover(GtkWidget *, GdkEvent *, main_window *widgets); +gboolean on_time_zone_status_hover_end(GtkWidget *, GdkEvent *, main_window *widgets); +void yon_map_update(main_window *widgets, const char *timezone); \ No newline at end of file diff --git a/ubinstall-gtk.css b/ubinstall-gtk.css index ad241fa..61ab5cb 100644 --- a/ubinstall-gtk.css +++ b/ubinstall-gtk.css @@ -382,4 +382,10 @@ button { background-color: @theme_fg_color; opacity:0.7; border-radius:10px; +} + +.timezoneoverlay_hover { + background-color: @theme_fg_color; + opacity:0.3; + border-radius:10px; } \ No newline at end of file -- 2.35.1