diff --git a/Makefile b/Makefile
index 44a203e..cb110e5 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
@@ -96,16 +96,11 @@ uninstall:
done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
- @if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \
- $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"; \
- else \
-# $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
- $(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
- fi
+ @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"
@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"
@@ -128,14 +123,8 @@ install: check uninstall
done
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
- @if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \
- install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"; \
- else \
-# 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"; \
- fi
+ @install -Dm644 "com.ublinux.${PKGNAME}.policy" "${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"
@if [[ -z "${DESTDIR}" ]]; then \
ldconfig -n ${DESTDIR}/usr/lib; \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
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-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
+
+
\ No newline at end of file
diff --git a/gresource.xml b/gresource.xml
index eaee9ad..6f162c0 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -22,21 +22,11 @@
ubinstall-gtk-layouts.glade
ubinstall-gtk-keyboard-layouts.glade
ubinstall-gtk-slider.glade
+ ubinstall-gtk-package-info.glade
ubinstall-gtk.css
-
- install_type_custom_normal.png
- install_type_data_only_normal.png
- install_type_fast_normal.png
- install_type_grub_install_normal.png
- install_type_grub_update_normal.png
- install_type_next_normal.png
- install_type_part_normal.png
- install_type_recovery_normal.png
- install_type_system_only_normal.png
-
modules.csv
kernel-list.csv
diff --git a/icons-builtin/install_type_custom_normal.png b/icons-builtin/install_type_custom_normal.png
deleted file mode 100644
index af0218a..0000000
Binary files a/icons-builtin/install_type_custom_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_data_only_normal.png b/icons-builtin/install_type_data_only_normal.png
deleted file mode 100644
index 5cef2dd..0000000
Binary files a/icons-builtin/install_type_data_only_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_fast_normal.png b/icons-builtin/install_type_fast_normal.png
deleted file mode 100644
index 11758b8..0000000
Binary files a/icons-builtin/install_type_fast_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_grub_install_normal.png b/icons-builtin/install_type_grub_install_normal.png
deleted file mode 100644
index 0e07dd2..0000000
Binary files a/icons-builtin/install_type_grub_install_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_grub_update_normal.png b/icons-builtin/install_type_grub_update_normal.png
deleted file mode 100644
index 0e07dd2..0000000
Binary files a/icons-builtin/install_type_grub_update_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_next_normal.png b/icons-builtin/install_type_next_normal.png
deleted file mode 100644
index 69a1da8..0000000
Binary files a/icons-builtin/install_type_next_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_part_normal.png b/icons-builtin/install_type_part_normal.png
deleted file mode 100644
index d09ed22..0000000
Binary files a/icons-builtin/install_type_part_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_recovery_normal.png b/icons-builtin/install_type_recovery_normal.png
deleted file mode 100644
index a8efa2e..0000000
Binary files a/icons-builtin/install_type_recovery_normal.png and /dev/null differ
diff --git a/icons-builtin/install_type_system_only_normal.png b/icons-builtin/install_type_system_only_normal.png
deleted file mode 100644
index 751a0de..0000000
Binary files a/icons-builtin/install_type_system_only_normal.png and /dev/null differ
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..f424a3a
--- /dev/null
+++ b/locale/kernel-modules_ru.po
@@ -0,0 +1,333 @@
+# 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"
+
+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 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 "Модуль UBLinux включает PostgreSQL, базу данных MariaDB и утилиты"
+
+msgid "UBLinux module include Brother printer drivers"
+msgstr "Модуль UBLinux включает драйверы принтеров Brother"
+
+msgid "UBLinux module include Canon CAPT Printer Driver"
+msgstr "Модуль UBLinux включает драйвер принтера Canon CAPT"
+
+msgid "UBLinux module include Canon UFR II LIPSLX CARPS2 printer driver"
+msgstr "Модуль UBLinux включает драйвер принтера Canon UFR II LIPSLX CARPS2"
+
+msgid "UBLinux module include Epson printer drivers"
+msgstr "Модуль UBLinux включает драйверы принтеров Epson"
+
+msgid "UBLinux module include Kyocera printer drivers"
+msgstr "Модуль UBLinux включает драйверы принтера Kyocera"
+
+msgid "UBLinux module include Lexmark drivers"
+msgstr "Модуль UBLinux включает драйверы Lexmark"
+
+msgid "UBLinux module include Pantum printer drivers"
+msgstr "Модуль UBLinux включает драйверы принтера Pantum"
+
+msgid "UBLinux module include hplip, gutenprint, foomatic"
+msgstr "В состав модулей UBLinux входят hplip, gutenprint, foomatic"
+
+msgid "UBLinux module include Ricoh drivers"
+msgstr "Модуль UBLinux включает драйверы Ricoh"
+
+msgid "UBLinux module include Samsung drivers"
+msgstr "Модуль UBlinux включает драйверы Samsung"
+
+msgid "UBLinux module include Xerox drivers"
+msgstr "Модуль UBLinux включает драйверы Xerox"
+
+msgid "UBLinux module includes education soft"
+msgstr "Модуль UBLinux включает в себя образовательное программное обеспечение"
+
+msgid "UBLinux module includes Firefox and some plugins"
+msgstr "Модуль UBLinux включает в себя Firefox и некоторые плагины"
+
+msgid "UBLinux module include Java OpenJFX 17 client application platform"
+msgstr "Модуль UBLinux включает в себя платформу клиентских приложений Java OpenJFX 17"
+
+msgid "UBLinux module includes OpenJDK Java 11 development kit"
+msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 11"
+
+msgid "UBLinux module includes OpenJDK Java 17 development kit"
+msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 17"
+
+msgid "UBLinux module includes OpenJDK Java 21 development kit"
+msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 21"
+
+msgid "UBLinux module includes OpenJDK Java 8 development kit"
+msgstr "Модуль UBLinux включает в себя OpenJDK и комплект разработки Java 8"
+
+msgid "UBLinux module includes some library 32-bit"
+msgstr "Модуль UBLinux включает в себя некоторые 32-битные библиотеки."
+
+msgid "UBLinux module include LibreOffice"
+msgstr "Модуль UBLinux включает LibreOffice"
+
+msgid "UBLinux module includes dkms additionals modules"
+msgstr "Модуль UBLinux включает дополнительные модули dkms"
+
+msgid "UBLinux module include NVIDIA 470xx driver for linux"
+msgstr "Модуль UBLinux включает драйвер NVIDIA 470xx для Linux"
+
+msgid "UBLinux module include NVIDIA 390xx driver for linux"
+msgstr "Модуль UBLinux включает драйвер NVIDIA 390xx для Linux"
+
+msgid "UBLinux module includes OnlyOffice suite"
+msgstr "Модуль UBLinux включает пакет OnlyOffice"
+
+msgid "UBLinux module include apps patch"
+msgstr "Модуль UBLinux включает патчи для приложений"
+
+msgid "UBLinux module includes podman and webmanager and utils"
+msgstr "Модуль UBLinux включает podman, webmanager и утилиты"
+
+msgid "UBLinux module include pycharm-community-edition and utilities"
+msgstr "Модуль UBLinux включает pycharm-community-edition и утилиты"
+
+msgid "UBLinux module includes QEMU, manager and utils"
+msgstr "Модуль UBLinux включает QEMU, менеджер и утилиты"
+
+msgid "UBLinux module includes R7 Office"
+msgstr "Модуль UBLinux включает R7 Office"
+
+msgid "UBLinux module includes realvnc viewer and server"
+msgstr "Модуль UBLinux включает RealVNC Viewer и сервер"
+
+msgid "UBLinux module includes rustdesk"
+msgstr "Модуль UBLinux включает RustDesk"
+
+msgid "UBLinux module includes Telegram"
+msgstr "Модуль UBLinux включает Telegram"
+
+msgid "UBLinux module include UBPile Workflow"
+msgstr "Модуль UBLinux включает UBPile Workflow"
+
+msgid "UBLinux module includes agents for Linux guest"
+msgstr "Модуль UBLinux включает агенты для гостевой системы Linux"
+
+msgid "UBLinux module includes VirtualBox and extension packs"
+msgstr "Модуль UBLinux включает VirtualBox и пакеты расширений"
+
+msgid "UBLinux module includes Web servers"
+msgstr "Модуль UBLinux включает веб-серверы"
+
+msgid "UBLinux module includes Webmin and Usermin"
+msgstr "Модуль UBLinux включает Webmin и Usermin"
+
+msgid "UBLinux module includes interactive whiteboard soft"
+msgstr "Модуль UBLinux включает программное обеспечение для интерактивной доски"
+
+msgid "UBLinux module include Winbox"
+msgstr "Модуль UBLinux включает Winbox"
+
+msgid "UBLinux module includes wine and utilities"
+msgstr "Модуль UBLinux включает Wine и утилиты"
+
+msgid "UBLinux module include Kingsoft Office (WPS Office) - an office productivity suite"
+msgstr "В модуль UBLinux входят Kingsoft Office (WPS Office) — офисный пакет для повышения производительности"
+
+msgid "UBLinux module includes Yandex Browser and some utils"
+msgstr "В модуль UBLinux входят Yandex Browser и некоторые утилиты"
+
+msgid "UBLinux module headers and scripts for building modules for the Meta UBlinux kernel, modules, headers and documentation"
+msgstr "В модуль UBLinux входят заголовочные файлы и скрипты для сборки модулей для ядра Meta UBlinux, модули, заголовочные файлы и документация"
+
+msgid "UBLinux module includes the core developer components"
+msgstr "В модуль UBLinux входят основные компоненты для разработчиков"
+
+msgid "UBLinux module includes Liquidshell basic desktop shell using QtWidgets"
+msgstr "В модуль UBLinux входит базовая оболочка рабочего стола Liquidshell с использованием QtWidgets"
+
+msgid "UBLinux module includes AMDGRU PRO driver and utilities"
+msgstr "В модуль UBLinux входят драйвер AMDGRU PRO и утилиты"
+
+msgid "UBLinux module includes anydesk"
+msgstr "В модуль UBLinux входит anydesk"
+
+msgid "UBLinux module includes Chromium-GOST and some plugins"
+msgstr "В модуль UBLinux входит Chromium-GOST и некоторые плагины"
+
+msgid "UBLinux module includes database applications"
+msgstr "В модуль UBLinux входят приложения для работы с базами данных"
+
+msgid "UBLinux module includes docker and webmanager and utils"
+msgstr "В модуль UBLinux входят Docker, WebManager и утилиты"
+
+msgid "UBLinux module include Hedgewars game similiar to Worms"
+msgstr "В модуль UBLinux входит игра Hedgewars, похожая на Worms"
+
+msgid "UBLinux module includes Gitea and MemCached"
+msgstr "В модуль UBLinux входят Gitea и MemCached"
+
+msgid "UBLinux module include Gitlab CLI tools"
+msgstr "В модуль UBLinux входят инструменты командной строки Gitlab"
+
+msgid "UBLinux module include Java OpenJFX 11 client application platform"
+msgstr "В модуль UBLinux входит платформа клиентских приложений Java OpenJFX 11"
+
+msgid "UBLinux module include Free Pascal and Lazarus GTK2"
+msgstr "В модуль UBLinux входят Free Pascal и Lazarus GTK2"
+
+msgid "UBLinux module include Free Pascal and Lazarus QT5"
+msgstr "В модуль UBLinux входят Free Pascal и Lazarus QT5"
+
+msgid "UBLinux module includes LSI MegaRaid SM, StorCLI, MegaCLI and utils"
+msgstr "В модуль UBLinux входят LSI MegaRaid SM, StorCLI, MegaCLI и утилиты"
+
+msgid "UBLinux module includes NVIDIA 340xx driver and utilities"
+msgstr "В модуль UBLinux входят драйвер и утилиты для NVIDIA 340xx"
+
+msgid "UBLinux module includes NVIDIA 390xx driver and utilities"
+msgstr "В модуль UBLinux входят драйвер и утилиты для NVIDIA 390xx"
+
+msgid "UBLinux module includes NVIDIA 470xx driver and utilities"
+msgstr "Модуль UBLinux включает драйвер и утилиты для NVIDIA 470xx"
+
+msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
+msgstr "Модуль UBLinux включает драйвер и утилиты для NVIDIA 510xx"
+
+msgid "UBLinux module includes NVIDIA 515xx driver and utilities"
+msgstr "Модуль UBLinux включает драйвер и утилиты для NVIDIA 515xx"
+
+msgid "UBLinux module includes NVIDIA Optimus"
+msgstr "Модуль UBLinux включает NVIDIA Optimus"
+
+msgid "UBLinux module includes OnlyOffice DocumentServer suite"
+msgstr "Модуль UBLinux включает пакет OnlyOffice DocumentServer"
+
+msgid "UBLinux module includes Opera and some plugins"
+msgstr "Модуль UBLinux включает Opera и некоторые плагины"
+
+msgid "UBLinux module includes patch"
+msgstr "Модуль UBLinux включает патч"
+
+msgid "UBLinux module includes QEMU headless and utils"
+msgstr "Модуль UBLinux включает QEMU headless и утилиты"
+
+msgid "UBLinux module include QT4"
+msgstr "Модуль UBLinux включает QT4"
+
+msgid "UBLinux module include rustdesk-server"
+msgstr "Модуль UBLinux включает rustdesk-server"
+
+msgid "UBLinux module include Skype"
+msgstr "Модуль UBLinux включает Skype"
+
+msgid "UBLinux module include Tor utils and browser"
+msgstr "Модуль UBLinux включает утилиты Tor и браузер"
+
+msgid "UBLinux module includes agents for Linux guest without X support"
+msgstr "Модуль UBLinux включает агенты для гостевой системы Linux без поддержки X"
+
+msgid "UBLinux module includes VirtualBox headless and extension packs"
+msgstr "Модуль UBLinux включает VirtualBox в режиме без графического интерфейса и пакеты расширений"
+
+msgid "UBLinux module includes phpvirtualbox for VirtualBox"
+msgstr "Модуль UBLinux включает phpvirtualbox для VirtualBox"
+
+msgid "UBLinux module include Vivaldi browser"
+msgstr "Модуль UBLinux включает браузер Vivaldi"
+
+msgid "UBLinux module includes VMware-Workstation 16"
+msgstr "Модуль UBLinux включает VMware-Workstation 16"
+
+msgid "UBLinux module include Wiki.js"
+msgstr "Модуль UBLinux включает Wiki.js"
+
+msgid "UBLinux module include X11 remote utils"
+msgstr "Модуль UBLinux включает удаленные утилиты X11"
+
+msgid "UBLinux module include Zoom"
+msgstr "Модуль UBLinux включает Zoom"
\ No newline at end of file
diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot
index 2d5eb73..7ba8133 100644
--- a/locale/ubinstall-gtk.pot
+++ b/locale/ubinstall-gtk.pot
@@ -262,6 +262,64 @@ msgstr ""
msgid "Mb"
msgstr ""
+#: source/ubl-strings.h:68
+msgid "Kb"
+msgstr ""
+
+msgstr "Repository"
+msgid ""
+
+msgstr "Name"
+msgid ""
+
+msgstr "Version"
+msgid ""
+
+msgstr "Description"
+msgid ""
+
+msgstr "Architecture"
+msgid ""
+
+msgstr "URL"
+msgid ""
+
+msgstr "Licenses"
+msgid ""
+
+msgstr "Groups"
+msgid ""
+
+msgstr "Provides"
+msgid ""
+
+msgstr "Depends On"
+msgid ""
+
+msgstr "Optional Deps"
+msgid ""
+
+msgstr "Conflicts With"
+msgid ""
+
+msgstr "Replaces"
+msgid ""
+
+msgstr "Download Size"
+msgid ""
+
+msgstr "Installed Size"
+msgid ""
+
+msgstr "Packager"
+msgid ""
+
+msgstr "Build Date"
+msgid ""
+
+msgstr "Validated By"
+msgid ""
+
#: source/ubl-strings.h:69
msgid "Available languages in the system:"
msgstr ""
@@ -302,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
@@ -322,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
@@ -695,6 +753,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 ""
@@ -1372,7 +1434,7 @@ msgid "Recovery section"
msgstr ""
#: source/ubl-strings.h:400
-msgid "Start installation scenario"
+msgid "Install according to the script"
msgstr ""
#: source/ubl-strings.h:401
@@ -1423,8 +1485,7 @@ msgstr ""
#: source/ubl-strings.h:413
msgid ""
-"Selecting kernels for installation in the system and selecting the default "
-"kernel. Internet access is required to install additional kernels"
+"Selecting kernels for installation in the system and selecting the default kernel. Internet access required"
msgstr ""
#: source/ubl-strings.h:414
@@ -1805,6 +1866,26 @@ msgstr ""
msgid "Interactive Knowledge Base"
msgstr ""
+#: source/ubl-strings.h:543
+msgid "Reboot"
+msgstr ""
+
+#: source/ubl-strings.h:543
+msgid "Shudown"
+msgstr ""
+
+#: source/ubl-strings.h:543
+msgid "Do not format"
+msgstr ""
+
+#: source/ubl-strings.h:543
+msgid "Format automatically"
+msgstr ""
+
+#: source/ubl-strings.h:543
+msgid "After successful installation:"
+msgstr ""
+
#: source/ubl-strings.h:544
msgid ""
"Continuously evolving and clearly describes the installation and "
@@ -1821,3 +1902,1608 @@ msgid ""
"Allows system booting for diskless and standard workstations over a local "
"network or the Internet (even over slow connection channels)."
msgstr ""
+
+msgid "About"
+msgstr ""
+
+msgid "Documentation"
+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 eef24fd..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
@@ -273,6 +273,61 @@ msgstr "Гб"
msgid "Mb"
msgstr "Мб"
+#: source/ubl-strings.h:68
+msgid "Kb"
+msgstr "Кб"
+
+msgid "Repository"
+msgstr "Репозиторий"
+
+msgid "Name"
+msgstr "Название"
+
+msgid "Version"
+msgstr "Версия"
+
+msgid "Architecture"
+msgstr "Архитектура"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Licenses"
+msgstr "Лицензии"
+
+msgid "Groups"
+msgstr "Группы"
+
+msgid "Provides"
+msgstr "Предоставляет"
+
+msgid "Depends On"
+msgstr "Зависит от"
+
+msgid "Optional Deps"
+msgstr "Доп. зависимости"
+
+msgid "Conflicts With"
+msgstr "Конфликтует с"
+
+msgid "Replaces"
+msgstr "Заменяет"
+
+msgid "Download Size"
+msgstr "Размер загрузки"
+
+msgid "Installed Size"
+msgstr "Установленный размер"
+
+msgid "Packager"
+msgstr "Сборщик"
+
+msgid "Build Date"
+msgstr "Дата сборки"
+
+msgid "Validated By"
+msgstr "Проверен"
+
#: source/ubl-strings.h:69
msgid "Available languages in the system:"
msgstr "Доступные языки в системе:"
@@ -317,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"
@@ -338,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"
@@ -475,14 +530,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 "Вы хотите прочитать документацию в Сети?"
@@ -724,6 +771,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 "уже существует. Вы уверены что хотите сохранить пользователя"
@@ -857,10 +908,6 @@ msgstr "NumLock:"
msgid "Variant"
msgstr "Вариант"
-#: source/ubl-strings.h:256 source/ubl-strings.h:312
-msgid "Name"
-msgstr "Имя"
-
#: source/ubl-strings.h:258
msgid "Options:"
msgstr "Опции:"
@@ -983,7 +1030,7 @@ msgstr "Группа"
#: source/ubl-strings.h:292
msgid "Select your language:"
-msgstr "Выберете язык:"
+msgstr "Выберите язык:"
#: source/ubl-strings.h:293
msgid "Selecting additional system kernel components"
@@ -1101,10 +1148,6 @@ msgstr "Маска:"
msgid "DNS-server:"
msgstr "DNS-сервер:"
-#: source/ubl-strings.h:323
-msgid "Version"
-msgstr "Версия"
-
#: source/ubl-strings.h:324
msgid "Unit:"
msgstr "Юнит:"
@@ -1411,8 +1454,8 @@ msgid "Recovery section"
msgstr "Восстановление"
#: source/ubl-strings.h:400
-msgid "Start installation scenario"
-msgstr "Приступить к установке по сценарию"
+msgid "Install according to the script"
+msgstr "Установка по сценарию"
#: source/ubl-strings.h:401
msgid "Source"
@@ -1464,8 +1507,7 @@ msgstr "Выбор ядра системы"
#: source/ubl-strings.h:413
msgid ""
-"Selecting kernels for installation in the system and selecting the default "
-"kernel. Internet access is required to install additional kernels"
+"Selecting kernels for installation in the system and selecting the default kernel. Internet access required"
msgstr ""
"Выбор ядер для установки в систему и выбор ядра по умолчанию. Требуется "
"доступ В Интернет."
@@ -1818,6 +1860,26 @@ msgstr ""
"Графический пакетный менеджер позволяет быстро и интуитивно понятно "
"устанавливать дополнительное ПО, драйверы для оборудования"
+#: source/ubl-strings.h:543
+msgid "Reboot"
+msgstr "Перезагрузить"
+
+#: source/ubl-strings.h:543
+msgid "Shudown"
+msgstr "Выключить"
+
+#: source/ubl-strings.h:543
+msgid "Do not format"
+msgstr "Не форматировать"
+
+#: source/ubl-strings.h:543
+msgid "Format automatically"
+msgstr "Форматировать автоматически"
+
+#: source/ubl-strings.h:543
+msgid "After successful installation:"
+msgstr "После успешной установки:"
+
#: source/ubl-strings.h:505
msgid "Corporate Services"
msgstr "Корпоративные сервисы"
@@ -1981,3 +2043,1806 @@ msgid ""
msgstr ""
"Позволяет загрузку системы для бездисковых и обычных рабочих станций через "
"локальную сеть или Интернет (даже используя \"слабые\" каналы связи)"
+
+msgid "About"
+msgstr "О программе"
+
+msgid "Documentation"
+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
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
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 5bf8753..7f7a397 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -8,27 +8,37 @@ 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})
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)
+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)
+ 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)
@@ -57,6 +67,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
@@ -68,15 +79,6 @@ set(DEPENDFILES
../groups-list.csv
../vfs-list.csv
../applications-list.csv
- ../icons-builtin/install_type_custom_normal.png
- ../icons-builtin/install_type_data_only_normal.png
- ../icons-builtin/install_type_fast_normal.png
- ../icons-builtin/install_type_grub_install_normal.png
- ../icons-builtin/install_type_grub_update_normal.png
- ../icons-builtin/install_type_next_normal.png
- ../icons-builtin/install_type_part_normal.png
- ../icons-builtin/install_type_recovery_normal.png
- ../icons-builtin/install_type_system_only_normal.png
)
file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
@@ -99,7 +101,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 \
@@ -138,6 +140,7 @@ set(SOURCE_FILES
ubinstall-gtk-language.c
ubinstall-gtk-config-hub.c
ubinstall-gtk-startup-apps.c
+ ubinstall-gtk-ui-lang.c
ubinstall-gtk.h
ubl-strings.h
)
@@ -148,6 +151,8 @@ set(LIBRARIES
${UTILS_LIBRARIES}
${VTE291_LIBRARIES}
${JSON_LIBRARIES}
+ ${PWQUALITY_LIBRARIES}
+ ${TIMEZONEMAP_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3
diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c
index b5b4a89..da26162 100644
--- a/source/ubinstall-gtk-advanced.c
+++ b/source/ubinstall-gtk-advanced.c
@@ -116,7 +116,7 @@ void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_
if (!yon_char_is_empty(part->part)) part->part_type = ADVANCED_PART_NEW;
else part->part_type = ADVANCED_PART_EXISTING;
if (section->format){
- gtk_switch_set_active(GTK_SWITCH(part->FormatSwitch),1);
+ gtk_switch_set_active(GTK_SWITCH(part->FormatCombo),1);
if (section->size){
gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),section->size);
gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),yon_get_size_get_from_letter(section->size_letter)-1);
@@ -692,8 +692,11 @@ void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *pa
} else if (self == part->EncryptionCombo||self == part->EncryptionEntry){
section->encryption = yon_char_new(gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->EncryptionCombo)));
section->encryption_password = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->EncryptionEntry)));
- } else if (self == part->FormatSwitch){
- if (gtk_switch_get_active(GTK_SWITCH(part->FormatSwitch))){
+ } else if (self == part->FormatCombo){
+ int format_active = gtk_combo_box_get_active(GTK_COMBO_BOX(part->FormatCombo));
+ if (format_active == 2){
+ section->format=2;
+ } else if (format_active == 1){
section->format=1;
} else {
section->format=0;
@@ -701,9 +704,15 @@ void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *pa
}
}
-gboolean on_format_changed(GtkWidget *self, gboolean , advanced_partition *part){
+void on_format_changed(GtkWidget *self, advanced_partition *part){
+ int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self));
+ switch (active){
+ case 0:
+ case 1: gtk_revealer_set_reveal_child(GTK_REVEALER(part->FormatRevealer),0);
+ break;
+ case 2: gtk_revealer_set_reveal_child(GTK_REVEALER(part->FormatRevealer),1);
+ }
yon_advanced_part_parameter_changed(self, part);
- return 0;
}
advanced_partition *yon_advanced_partition_new(){
@@ -714,7 +723,7 @@ advanced_partition *yon_advanced_partition_new(){
part->SystemSectionToggle = yon_gtk_builder_get_widget(builder,"SystemSectionToggle");
part->UserDataSectionToggle = yon_gtk_builder_get_widget(builder,"UserDataSectionToggle");
part->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
- part->FormatSwitch = yon_gtk_builder_get_widget(builder,"FormatSwitch");
+ part->FormatCombo = yon_gtk_builder_get_widget(builder,"FormatCombo");
part->SizeSpin = yon_gtk_builder_get_widget(builder,"SizeSpin");
part->SizeCombo = yon_gtk_builder_get_widget(builder,"SizeCombo");
part->PartLabelEntry = yon_gtk_builder_get_widget(builder,"PartLabelEntry");
@@ -728,12 +737,22 @@ advanced_partition *yon_advanced_partition_new(){
part->part = NULL;
part->device = NULL;
- yon_gtk_revealer_set_from_switch(GTK_REVEALER(part->FormatRevealer),GTK_SWITCH(part->FormatSwitch));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"K",_("Kb"));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"M",_("Mb"));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"G",_("Gb"));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"T",_("Tb"));
+ gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),0);
+
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),DO_NOT_FORMAT_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),AUTOMATIC_FORMAT_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),FORMAT_LABEL);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),0);
+
g_signal_connect(G_OBJECT(part->EncryptionButton),"clicked",G_CALLBACK(on_advanced_password_clicked),part);
g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionButton);
g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionEntry);
g_signal_connect(G_OBJECT(part->EncryptionEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
- g_signal_connect(G_OBJECT(part->FormatSwitch),"state-set",G_CALLBACK(on_format_changed),part);
+ g_signal_connect(G_OBJECT(part->FormatCombo),"changed",G_CALLBACK(on_format_changed),part);
g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
g_signal_connect(G_OBJECT(part->SizeSpin),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
g_signal_connect(G_OBJECT(part->PartLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
@@ -741,7 +760,6 @@ advanced_partition *yon_advanced_partition_new(){
g_signal_connect(G_OBJECT(part->FileSystemLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
-
yon_fs_type_setup(GTK_COMBO_BOX_TEXT(part->FileSystemTypeCombo));
g_object_set_data(G_OBJECT(part->MainBox),"advanced_partition",part);
diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c
index ff47380..2897eb3 100644
--- a/source/ubinstall-gtk-bootloader.c
+++ b/source/ubinstall-gtk-bootloader.c
@@ -7,12 +7,6 @@ int yon_bootloader_save(main_window *widgets){
} else {
yon_config_remove_by_key(GRUB_TIMEOUT_parameter);
}
- char *OS = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->BootloadDefaultOSEntry));
- if (strcmp(OS,DEFAULT_BOOTLOAD_MENU_ITEM_LABEL)){
- yon_config_register(GRUB_DEFAULT_parameter,GRUB_DEFAULT_parameter_command,OS);
- } else {
- yon_config_remove_by_key(GRUB_DEFAULT_parameter);
- }
if (gtk_switch_get_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch))){
GtkTreeIter iter;
yon_config_register(AUTOLOGINUSER_parameter,AUTOLOGINUSER_parameter_command,"yes");
@@ -164,7 +158,9 @@ 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");
textdomain("ublinux-init-grub-functions");
+
for (int i=1;iItemsListBox),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);
+ bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8");
textdomain("ublinux-init-grub-functions");
for (int i=1;i"))){
@@ -373,6 +374,32 @@ yon_menu_item *yon_menu_item_new(){
return item;
}
+char *yon_bootloader_get_os_name(char *parameter){
+ bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8");
+ textdomain("ublinux-init-grub-functions");
+ char *final_os_name = NULL;
+ int size;
+ config_str menu_entries = yon_config_load(get_menus_entry_command,&size);
+ for (int i=0;i");
+ if (!yon_char_is_empty(name)){
+ name++;
+ final_os_name = yon_char_new(name);
+ } else {
+ final_os_name = yon_char_new(_(parsed[1]));
+ }
+ }
+ yon_char_parsed_free(parsed,parsed_size);
+ }
+ yon_char_parsed_free(menu_entries,size);
+ textdomain(LocaleName);
+ return final_os_name;
+}
+
void yon_bootloader_interface_update(main_window *widgets){
char *timeout = config(GRUB_TIMEOUT_parameter);
char *admins = config(GRUB_SUPERUSERS_parameter);
@@ -423,11 +450,16 @@ void yon_bootloader_init(main_window *widgets){
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->BootloadTimerSpin),0);
}
if (!yon_char_is_empty(os)){
- gtk_entry_set_text(GTK_ENTRY(widgets->BootloadDefaultOSEntry),os);
+ char *os_name = yon_bootloader_get_os_name(os);
+ if (!yon_char_is_empty(os_name)){
+ gtk_entry_set_text(GTK_ENTRY(widgets->BootloadDefaultOSEntry),os_name);
+ free(os_name);
+ }
} else {
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-components.c b/source/ubinstall-gtk-components.c
index 2f46b4f..1bd2324 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;
}
@@ -53,7 +52,7 @@ int yon_kernel_addon_save(main_window *widgets){
int yon_os_components_save(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter;
- int size;
+ int size=0;
int overall_num=0;
config_str modules = NULL;
for(iter = list;iter;iter=iter->next){
@@ -104,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);
@@ -123,7 +122,11 @@ 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);
+ }
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,",")){
@@ -220,8 +226,15 @@ 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);
+ 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,",")){
+ 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;
}
@@ -284,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/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c
index 61415eb..3034269 100644
--- a/source/ubinstall-gtk-config-hub.c
+++ b/source/ubinstall-gtk-config-hub.c
@@ -1,7 +1,12 @@
#include "ubinstall-gtk.h"
-int yon_configuration_hub_save(main_window *){
-
+int yon_configuration_hub_save(main_window *widgets){
+ char *finish_button = (char *)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ConfigHubRebootCombo));
+ if (!yon_char_is_empty(finish_button)){
+ yon_config_register(finish_parameter,finish_parameter_command,finish_button);
+ } else {
+ yon_config_remove_by_key(finish_parameter);
+ }
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_parameter,
@@ -32,6 +37,7 @@ int yon_configuration_hub_save(main_window *){
GRUB_TIMEOUT_parameter,
GRUB_DEFAULT_parameter,
AUTOLOGINUSER_parameter,
+ finish_parameter,
NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
@@ -140,26 +146,25 @@ 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);
cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
- cur_icon->Label = gtk_label_new(name_wrapped);
+ cur_icon->Label = gtk_label_new(name);
cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
cur_icon->page = page;
GtkWidget *flow = gtk_flow_box_child_new();
gtk_style_context_add_class(gtk_widget_get_style_context(flow),"bggrey");
-
- gtk_label_set_xalign(GTK_LABEL(cur_icon->Label),0);
+ gtk_widget_set_margin_end(cur_icon->Label,5);
+ gtk_label_set_line_wrap(GTK_LABEL(cur_icon->Label),1);
+ gtk_label_set_max_width_chars(GTK_LABEL(cur_icon->Label),15);
+ gtk_label_set_xalign(GTK_LABEL(cur_icon->Label), GTK_ALIGN_FILL);
+ gtk_label_set_line_wrap_mode(GTK_LABEL(cur_icon->Label),PANGO_WRAP_WORD);
+
g_object_set_data(G_OBJECT(flow),"config_hub_icon",cur_icon);
gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox);
+ gtk_widget_set_hexpand(flow,0);
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_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,1,1,0);
gtk_flow_box_insert(target,flow,-1);
gtk_widget_show_all(flow);
- free(name_wrapped);
}
void yon_flow_box_clear(GtkFlowBox *target){
@@ -171,6 +176,18 @@ void yon_flow_box_clear(GtkFlowBox *target){
}
void yon_configuration_hub_init(main_window *widgets){
+ gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->ConfigHubRebootCombo));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ConfigHubRebootCombo),NULL,DEFAULT_LABEL);
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ConfigHubRebootCombo),"reboot",REBOOT_LABEL);
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ConfigHubRebootCombo),"shutdown",SHUTDOWN_LABEL);
+ char *finish_string = config(finish_parameter);
+ if (!yon_char_is_empty(finish_string)){
+ gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ConfigHubRebootCombo),finish_string);
+
+ } else {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ConfigHubRebootCombo),0);
+ }
+ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ConfigHubRebootCombo),0);
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubPersonalListBox));
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubSystemListBox));
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubPackagesListBox));
diff --git a/source/ubinstall-gtk-configuration-mode.c b/source/ubinstall-gtk-configuration-mode.c
index b40197e..4030c1b 100644
--- a/source/ubinstall-gtk-configuration-mode.c
+++ b/source/ubinstall-gtk-configuration-mode.c
@@ -1,5 +1,43 @@
#include "ubinstall-gtk.h"
+int yon_configuration_path_check(const char *path){
+ char *full_path = NULL;
+ int homedir_create = 0;
+ int pos = yon_char_find_last((char*)path,'/');
+ if (pos>-1){
+ char *path_copy = yon_char_new(path);
+ char *dir_path = yon_char_divide(path_copy,pos);
+ if (access(dir_path,F_OK)){
+ homedir_create = 1;
+ }
+ free(path_copy);
+ free(dir_path);
+ } else {
+ homedir_create = 1;
+
+ }
+ if (homedir_create){
+ full_path = yon_char_unite(yon_ubl_user_get_home_directory(),"/",path,NULL);
+ } else {
+ full_path = yon_char_new(path);
+ }
+ if (access(full_path,F_OK)){
+ dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
+ data->action_text = homedir_create?CREATE_CONFIG_DIALOG_LABEL_HOMEDIR:CREATE_CONFIG_DIALOG_LABEL;
+ data->title = WARNING_TITLE_LABEL;
+ if (yon_confirmation_dialog_call(NULL,data)==GTK_RESPONSE_ACCEPT){
+ yon_launch(ubconfig_file_create(full_path));
+ struct passwd *user = getpwnam(yon_ubl_root_user_get());
+ if (chown(full_path,user->pw_uid,user->pw_gid)){};
+
+ }
+ }
+ main_config.config_load_path = full_path;
+ if (!yon_char_is_empty(main_config.config_save_path)) free(main_config.config_save_path);
+ main_config.config_save_path = yon_char_new(full_path);
+ return 1;
+}
+
void configuration_mode_accept(GtkWidget *,configuration_window *window){
const char *path = gtk_entry_get_text(GTK_ENTRY(window->PathEntry));
if (yon_char_is_empty(path)){
@@ -7,38 +45,8 @@ void configuration_mode_accept(GtkWidget *,configuration_window *window){
yon_ubl_status_highlight_incorrect(window->PathEntry);
return;
}
+ yon_configuration_path_check(path);
- if (access(path,F_OK)){
- int homedir_create = 0;
- int file_create = 0;
- int pos = yon_char_find_last((char*)path,'/');
- if (pos>=-1){
- char *path_copy = yon_char_new(path);
- char *dir_path = yon_char_divide(path_copy,pos);
- if (access(dir_path,F_OK)){
- homedir_create = 1;
- }
- free(path_copy);
- free(dir_path);
- }
- dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
- data->action_text = homedir_create?CREATE_CONFIG_DIALOG_LABEL_HOMEDIR:CREATE_CONFIG_DIALOG_LABEL;
- data->title = WARNING_TITLE_LABEL;
- if (yon_confirmation_dialog_call(window->Window,data)==GTK_RESPONSE_ACCEPT){
- char *full_path = NULL;
- if (homedir_create){
- full_path = yon_char_unite(yon_ubl_user_get_home_directory(),"/",path,NULL);
- } else if (file_create){
-
- } else {
- full_path = yon_char_new(path);
- }
-
- yon_launch(ubconfig_file_create(full_path));
- } else return;
- }
- if (!yon_char_is_empty(main_config.config_save_path)) free(main_config.config_save_path);
- main_config.config_save_path = yon_char_new(path);
gtk_widget_destroy(window->Window);
}
@@ -56,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);
@@ -74,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-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 6cc2b52..1a2db87 100644
--- a/source/ubinstall-gtk-installation.c
+++ b/source/ubinstall-gtk-installation.c
@@ -1,5 +1,15 @@
#include "ubinstall-gtk.h"
+char *yon_size_get_name_from_letter(char letter){
+ switch (letter){
+ case 'K': return yon_char_new(KB_LABEL); break;
+ case 'M': return yon_char_new(MB_LABEL); break;
+ case 'G': return yon_char_new(GB_LABEL); break;
+ case 'T': return yon_char_new(TB_LABEL); break;
+ }
+ return NULL;
+}
+
int yon_install_common_save(main_window *widgets){
GtkTreeModel *model;
GtkTreeIter iter;
@@ -184,8 +194,8 @@ int yon_advanced_sections_save(dictionary *dict){
char *part = yon_char_unite(part_first,last_section?",":NULL,part_last,NULL);
yon_config_register(part_parameter,part_parameter_command,part);
- char * format_first = gtk_switch_get_active(GTK_SWITCH(first_section->FormatSwitch))?"yes":"no";
- char * format_last = last_section?gtk_switch_get_active(GTK_SWITCH(last_section->FormatSwitch))?"yes":"no":NULL;
+ char * format_first = gtk_switch_get_active(GTK_SWITCH(first_section->FormatCombo))?"yes":"no";
+ char * format_last = last_section?gtk_switch_get_active(GTK_SWITCH(last_section->FormatCombo))?"yes":"no":NULL;
char *format = yon_char_unite(format_first,part_last?",":NULL,format_last,NULL);
yon_config_register(part_format_parameter,part_format_parameter_command,format);
@@ -246,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){
@@ -283,14 +309,16 @@ void on_device_selection_changed(GtkWidget *self, main_window *widgets){
capacity_long = atol(parsed[2]);
char *temp = yon_char_from_double(yon_size_long_convert_automatic(capacity_long,&sizemod));
- capacity = yon_char_append_c(temp,sizemod);
+ char *size_str = yon_size_get_name_from_letter(sizemod);
+ capacity = yon_char_unite(temp," ", size_str,NULL);
free(temp);
}
if (parsed_size>7&&!yon_char_is_empty(parsed[7])){
char sizemod='\0';
free_space_long = capacity_long-atol(parsed[7]);
char *temp = yon_char_from_double(yon_size_long_convert_automatic(free_space_long,&sizemod));
- free_space = yon_char_append_c(temp,sizemod);
+ char *size_str = yon_size_get_name_from_letter(sizemod);
+ capacity = yon_char_unite(temp," ", size_str,NULL);
free(temp);
}
if (parsed_size>3){
@@ -306,14 +334,13 @@ 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_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);
}
}
void yon_devices_setup(main_window *widgets){
GtkTreeIter iter;
- // if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->DevicesList),&iter)) return;
gtk_list_store_clear(widgets->DevicesList);
int size;
config_str parsed = NULL;
@@ -335,12 +362,32 @@ void yon_devices_setup(main_window *widgets){
json_object_object_get_ex(device, "serial", &serial);
gtk_list_store_append(widgets->DevicesList,&iter);
- gtk_list_store_set(widgets->DevicesList,&iter,0,json_object_get_string(path),1,json_object_get_string(model),2,json_object_get_string(serial),3,json_object_get_string(size),4,json_object_get_string(vendor),6,1,-1);
+ char *size_string = yon_char_new(json_object_get_string(size));
+ char *size_str = yon_size_get_name_from_letter(size_string[strlen(size_string)-1]);
+ size_string[strlen(size_string)-1] = '\0';
+ char *size_final_string = yon_char_unite(size_string," ",size_str,NULL);
+ gtk_list_store_set(widgets->DevicesList,&iter,0,json_object_get_string(path),1,json_object_get_string(model),2,json_object_get_string(serial),3,size_final_string,4,json_object_get_string(vendor),6,1,-1);
+ free(size_string);
+ free(size_str);
+ free(size_final_string);
}
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 +396,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;
@@ -410,8 +457,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;
@@ -486,9 +533,6 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){
yon_char_parsed_free(encryptions,size);
gtk_combo_box_set_active(GTK_COMBO_BOX(partition_encryption_combo),0);
}
- char *format = config(part_format_parameter);
- if ((!yon_char_is_empty(format)&&!strcmp(format,"yes"))||!gtk_widget_get_sensitive(format_switch)){
- gtk_switch_set_active(GTK_SWITCH(format_switch),1);
if (device_label){
char *parameter = config(part_label_parameter);
if (!yon_char_is_empty(parameter)){
@@ -499,13 +543,20 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){
}
if (partition_size_spin&&partition_size_combo){
+ gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(partition_size_combo));
+
+ // gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(partition_size_combo),"K",_("Kb"));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(partition_size_combo),"M",_("Mb"));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(partition_size_combo),"G",_("Gb"));
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(partition_size_combo),"T",_("Tb"));
+ gtk_combo_box_set_active(GTK_COMBO_BOX(partition_size_combo),0);
char *parameter = config(part_size_parameter);
if (!yon_char_is_empty(parameter)){
gtk_spin_button_set_value(GTK_SPIN_BUTTON(partition_size_spin),atol(parameter));
gtk_combo_box_set_active(GTK_COMBO_BOX(partition_size_combo),yon_get_size_get_from_letter(parameter[strlen(parameter)-1])-1);
} else {
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(partition_size_spin),0);
- gtk_combo_box_set_active(GTK_COMBO_BOX(partition_size_combo),0);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(partition_size_spin),3);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(partition_size_combo),2);
}
}
if (partition_mark_entry){
@@ -538,6 +589,9 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){
gtk_entry_set_text(GTK_ENTRY(partition_encryption_entry),"");
}
}
+ char *format = config(part_format_parameter);
+ if ((!yon_char_is_empty(format)&&!strcmp(format,"yes"))||!gtk_widget_get_sensitive(format_switch)){
+ gtk_switch_set_active(GTK_SWITCH(format_switch),1);
} else if (gtk_widget_get_sensitive(format_switch)){
gtk_switch_set_active(GTK_SWITCH(format_switch),0);
}
diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c
index 4babcb8..a5ac137 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,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;
+ int size;
if (strstr(package,",")){
@@ -256,19 +284,29 @@ void on_kernel_addon_info(GtkLabel *self){
}
GtkWidget *label = NULL;
- config_str info = yon_config_load(get_package_info_command(package),&size);
+ yon_packages_info *info_struct = yon_packages_get_info_struct(YON_PACKAGES_ALL,package);
+ if (!info_struct) return;
+ char* info_string = yon_packages_get_info_string(info_struct);
+ config_str info = yon_char_parse(info_string,&size,"\n");
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);
+ 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_label_set_xalign(GTK_LABEL(label),0);
gtk_widget_show(window->Window);
}
diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c
index 556083f..9e1c7f1 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;
}
@@ -44,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);
@@ -149,6 +161,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 +169,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-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-log.c b/source/ubinstall-gtk-log.c
index 5de4a71..81de549 100644
--- a/source/ubinstall-gtk-log.c
+++ b/source/ubinstall-gtk-log.c
@@ -84,10 +84,15 @@ void on_summary_log_view(GtkWidget *,main_window *widgets){
}
void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets) {
- int size;
+ int size=0;
g_mutex_lock(&main_config.progress_mutex);
config_str text = yon_file_open(progress_path, &size);
+ if (!text||!size){
+ g_mutex_unlock(&main_config.progress_mutex);
+ return;
+ }
+
g_mutex_unlock(&main_config.progress_mutex);
if (size) {
@@ -114,5 +119,19 @@ void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonito
}
yon_char_parsed_free(text, size);
+ size=0;
+ text=NULL;
}
}
+
+gboolean yon_progress_bar_start(main_window *widgets){
+ GFile *file_desc = g_file_new_for_path(progress_path);
+ widgets->install_info_monitor = g_file_monitor_file(file_desc,G_FILE_MONITOR_NONE,NULL,NULL);
+ g_signal_connect(G_OBJECT(widgets->install_info_monitor),"changed",G_CALLBACK(yon_installation_progress_update),widgets);
+ g_object_unref(file_desc);
+ FILE *file = fopen(progress_path,"w");
+ if (file){
+ fclose(file);
+ }
+ return G_SOURCE_REMOVE;
+}
\ No newline at end of file
diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c
index 1461e9b..726bf95 100644
--- a/source/ubinstall-gtk-network.c
+++ b/source/ubinstall-gtk-network.c
@@ -44,6 +44,11 @@ void on_type_changed(GtkComboBox *self,network_info *info){
}
}
+void on_network_removed(GtkWidget *,network_info *info){
+ gtk_widget_destroy(info->MainBox);
+ free(info);
+}
+
network_info *yon_network_info_new(){
network_info *info = new(network_info);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_network_info);
@@ -77,6 +82,7 @@ network_info *yon_network_info_new(){
g_signal_connect(G_OBJECT(info->AutoGetIPSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),info->GatewayEntry);
g_signal_connect(G_OBJECT(info->AutoGetIPSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),info->MaskEntry);
g_signal_connect(G_OBJECT(info->AutoGetIPSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),info->DNSEntry);
+ g_signal_connect(G_OBJECT(info->RemoveButton),"clicked",G_CALLBACK(on_network_removed),info);
g_signal_connect(G_OBJECT(info->TypeCombo),"changed",G_CALLBACK(on_type_changed),info);
yon_gtk_revealer_set_from_switch_inversed(GTK_REVEALER(info->IpRevealer),GTK_SWITCH(info->AutoGetIPSwitch));
@@ -87,6 +93,7 @@ network_info *yon_network_info_new(){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(info->TypeCombo),iter->data,iter->data);
}
g_list_free(list);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(info->TypeCombo),0);
gtk_widget_show(info->MainBox);
return info;
@@ -286,6 +293,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;iNetworkDomainPasswordEntry),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..48d30c5 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;iPackagesTree)),&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);
diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c
index 8536df3..06e60bc 100644
--- a/source/ubinstall-gtk-page-switch.c
+++ b/source/ubinstall-gtk-page-switch.c
@@ -8,10 +8,10 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_WELCOME: return YON_PAGE_LICENCE; break;
case YON_PAGE_LICENCE: return YON_PAGE_SECTIONS; break;
case YON_PAGE_SECTIONS: return yon_sections_get_next_page(widgets); break;
- case YON_PAGE_OS_COMPONENTS: return YON_PAGE_INSTALLATION_BEGIN; break;
+ case YON_PAGE_OS_COMPONENTS: return main_config.configure_mode?YON_PAGE_CONFIG_HUB:YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
- case YON_PAGE_CONFIG_HUB: return YON_PAGE_INSTALLATION; break;
+ case YON_PAGE_CONFIG_HUB: return main_config.configure_mode? YON_PAGE_CONFIGURE_END:YON_PAGE_INSTALLATION; break;
case YON_PAGE_KERNEL: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
@@ -29,23 +29,24 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_INSTALL_SAME_PARTITION: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALL_ADVANCED: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALL_RECOVERY: return yon_recovery_get_next(widgets); break;
- case YON_PAGE_RECOVERY_GRUB_INSTALL: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break;
- case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break;
- case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break;
- case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break;
+ case YON_PAGE_RECOVERY_GRUB_INSTALL: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
+ case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
+ case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
+ case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
case YON_PAGE_RECOVERY_BEGIN: main_config.save_configured = 1; return YON_PAGE_RECOVERY_PROCESS; break;
case YON_PAGE_RECOVERY_PROCESS: return YON_PAGE_RECOVERY_COMPLETION; break;
case YON_PAGE_INSTALLATION: return YON_PAGE_COMPLETION; break;
case YON_PAGE_CONFIGURE_SAVE:
break;
+ case YON_PAGE_CONFIGURE_END:
+ gtk_main_quit();
+ exit(0);
+ break;
case YON_PAGE_COMPLETED:
case YON_PAGE_INSTALL_ERROR:
- case YON_PAGE_CONFIGURE_END:
case YON_PAGE_RECOVERY_COMPLETION:
case YON_PAGE_COMPLETION:
on_reboot_accepted(widgets);
- gtk_main_quit();
- exit(0);
break;
// default:return YON_PAGE_WELCOME;
}
@@ -57,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;
@@ -106,11 +138,6 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
gtk_widget_hide(widgets->BackButton);
gtk_widget_hide(widgets->SourceButton);
gtk_widget_show(widgets->NextButton);
- if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){
- gtk_widget_show(widgets->StartScenarioButton);
- } else {
- gtk_widget_hide(widgets->StartScenarioButton);
- }
break;
case YON_PAGE_LICENCE:
gtk_widget_show(widgets->BackButton);
@@ -143,15 +170,22 @@ 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_set_sensitive(widgets->CancelInstallButton,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);
break;
case YON_PAGE_SECTIONS:
gtk_widget_show(widgets->SourceButton);
+ 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);
+ if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))&&!main_config.configure_mode){
+ gtk_widget_show(widgets->StartScenarioButton);
+ } else {
+ gtk_widget_hide(widgets->StartScenarioButton);
+ }
break;
default:
gtk_widget_set_sensitive(widgets->BackButton,1);
@@ -385,6 +419,9 @@ 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:
+ yon_set_locales_list(widgets);
+ break;
case YON_PAGE_CONFIG_HUB:
yon_configuration_hub_init(widgets);
break;
@@ -477,38 +514,63 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets){
yon_page_update(widgets);
}
-void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
+#include
- if (main_config.install_thread){
- dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
- data->action_text=INTERRUPT_TEXT_LABEL;
- data->title=WARNING_TITLE_LABEL;
- if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
- pthread_cancel((pthread_t)main_config.install_thread);
+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: {
+ if (main_config.install_thread){
+ dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
+ data->action_text=INTERRUPT_TEXT_LABEL;
+ data->title=WARNING_TITLE_LABEL;
+ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
+ pthread_cancel(main_config.install_thread);
+ kill(main_config.install_thread,SIGKILL);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(widgets->install_info_monitor),yon_installation_progress_update,widgets);
+ g_file_monitor_cancel(widgets->install_info_monitor);
+ widgets->install_info_monitor = NULL;
+ 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.save_configured=0;
+ 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.save_configured=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){
diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c
index 1870f43..06937b4 100644
--- a/source/ubinstall-gtk-region.c
+++ b/source/ubinstall-gtk-region.c
@@ -1,4 +1,9 @@
#include "ubinstall-gtk.h"
+// #define TIMEZONEMAP_INCLUDE
+#ifdef TIMEZONEMAP_INCLUDE
+#include "timezonemap/cc-timezone-map.h"
+#include "timezonemap/tz.h"
+#endif
int yon_region_save(main_window *widgets){
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){
@@ -20,36 +25,211 @@ 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]));
+ config_str parsed = yon_timezone_get_zones_from_region(active,&size);
+ for (size_t 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);
+}
+
+ #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;
+}
+
+void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *);
+
+void yon_map_status_hide(main_window *widgets){
+ gtk_widget_hide(widgets->TimeZoneMapOverlayBox);
+}
+
+GMutex map_source_mutex;
+guint map_status_source = -1;
+
+gboolean yon_map_status_hide_timeout(main_window *widgets){
+ 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);
+ 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);
+ if (!yon_char_is_empty(icon_name)){
+ gtk_widget_show(widgets->TimeZoneMapOverlayImage);
+ GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), icon_path, 48,1,GTK_ICON_LOOKUP_FORCE_SIZE);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->TimeZoneMapOverlayImage),gtk_icon_info_load_icon(info,NULL));
+ } else {
+ gtk_widget_hide(widgets->TimeZoneMapOverlayImage);
+ }
+ g_mutex_lock(&map_source_mutex);
+ map_status_source = g_timeout_add_seconds(3,(GSourceFunc)yon_map_status_hide_timeout,widgets);
+ g_mutex_unlock(&map_source_mutex);
+}
+
+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));
+ if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){
+ char *timezone = yon_char_unite(region,"/",zone,NULL);
+ yon_map_update(widgets,timezone);
+ free(timezone);
+ }
+ // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
+}
+
+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);
+ g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_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);
+ if (!yon_char_is_empty(timezone)) free(timezone);
+
+ timezone = (char*)cc_timezone_location_get_zone(location);
+ GtkTreeIter iter;
+ for_iter(widgets->RegionTimezoneCompletionList,&iter){
+ char *render, *tz;
+ 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);
+
}
- if (size) yon_char_parsed_free(parsed,size);
- gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0);
}
- free(active);
+
+ 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);
+}
+
+#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;
+ for_iter(widgets->RegionTimezoneCompletionList, &iter){
+ char *target, *timezone;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&target,1,&timezone,-1);
+ 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));
+ yon_map_update(widgets,timezone);
+ found = 1;
+
+ }
+ }
+ if (!found){
+ g_object_set_data(G_OBJECT(widgets->RegionEntry),zone_parameter,NULL);
+ }
}
void yon_region_init(main_window *widgets){
- int size;
- config_str parsed = NULL;
- parsed = yon_dir_get_contents(zone_path,&size);
- for (int i=0;iRegionCombo),parsed[i],_(parsed[i]));
- }
- free(path);
+ 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
+ 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);
}
+ #else // if timezonemap does not installed, static image inserts
+
+ #endif
+ 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);
+ 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-saving.c b/source/ubinstall-gtk-saving.c
index 13bfc11..39d3a03 100644
--- a/source/ubinstall-gtk-saving.c
+++ b/source/ubinstall-gtk-saving.c
@@ -38,8 +38,9 @@ void on_config_local_load(GtkWidget *,main_window *widgets){
if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path);
main_config.config_load_path = yon_char_new("system");
yon_load_proceed(YON_CONFIG_LOCAL);
- // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
main_config.load_mode=YON_CONFIG_LOCAL;
+ yon_main_window_update_locale(widgets);
+ yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
}
void on_config_global_load(GtkWidget *,main_window *widgets){
@@ -50,14 +51,16 @@ void on_config_global_load(GtkWidget *,main_window *widgets){
if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path);
main_config.config_load_path = yon_char_new("global");
yon_load_proceed(YON_CONFIG_GLOBAL);
- // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
main_config.load_mode=YON_CONFIG_GLOBAL;
+ 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 *){
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);
}
void on_config_custom_load_last(GtkWidget *,main_window *){
@@ -68,6 +71,7 @@ void on_config_custom_load_last(GtkWidget *,main_window *){
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);
}
void on_config_global_local_save(GtkWidget *,main_window *widgets){
@@ -176,14 +180,7 @@ void *on_config_save(void *data){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return 0;
}
- FILE *file = fopen(progress_path,"w");
- if (file){
- fclose(file);
- }
- GFile *file_desc = g_file_new_for_path(progress_path);
- widgets->install_info_monitor = g_file_monitor_file(file_desc,G_FILE_MONITOR_NONE,NULL,NULL);
- g_signal_connect(G_OBJECT(widgets->install_info_monitor),"changed",G_CALLBACK(yon_installation_progress_update),widgets);
- g_object_unref(file_desc);
+ g_idle_add((GSourceFunc)yon_progress_bar_start,widgets);
if (!main_config.dry_run){
char *command = yon_debug_output("%s\n",save_config_command(yon_char_parsed_to_string(parameters,size," ")));
yon_char_parsed_free(parameters,size);
@@ -244,7 +241,7 @@ void *on_setup_system_configuration(void * data){
if (user_size){
int final_size;
config_str final = yon_char_parsed_merge(all_parameters,size,users,user_size,&final_size);
- yon_char_parsed_free(users,user_size);
+ // yon_char_parsed_free(users,user_size);
if (size) yon_char_parsed_free(all_parameters,size);
all_parameters = final;
size = final_size;
@@ -253,7 +250,7 @@ void *on_setup_system_configuration(void * data){
if (users){
int final_size;
config_str final = yon_char_parsed_merge(all_parameters,size,users,user_size,&final_size);
- yon_char_parsed_free(users,user_size);
+ // yon_char_parsed_free(users,user_size);
if (size) yon_char_parsed_free(all_parameters,size);
all_parameters = final;
size = final_size;
@@ -263,7 +260,7 @@ void *on_setup_system_configuration(void * data){
if (network_size){
int final_size;
config_str final = yon_char_parsed_merge(all_parameters,size,networks,network_size,&final_size);
- yon_char_parsed_free(networks,network_size);
+ // yon_char_parsed_free(networks,network_size);
if (size) yon_char_parsed_free(all_parameters,size);
all_parameters = final;
size = final_size;
@@ -295,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);
@@ -432,19 +432,20 @@ int yon_config_save(main_window *widgets){
return 1;
}
-void yon_config_restore(main_window *widgets){
- switch(main_config.load_mode){
- case YON_CONFIG_GLOBAL:
- on_config_global_load(NULL,widgets);
- break;
- case YON_CONFIG_LOCAL:
- on_config_local_load(NULL,widgets);
- break;
- case YON_CONFIG_CUSTOM:
- on_config_custom_load_last(NULL,widgets);
+void yon_config_restore(main_window *){
+ yon_load_proceed(main_config.load_mode);
+ // switch(main_config.load_mode){
+ // case YON_CONFIG_GLOBAL:
+ // on_config_global_load(NULL,widgets);
+ // break;
+ // case YON_CONFIG_LOCAL:
+ // on_config_local_load(NULL,widgets);
+ // break;
+ // case YON_CONFIG_CUSTOM:
+ // on_config_custom_load_last(NULL,widgets);
- }
- on_config_global_load(NULL,widgets);
+ // }
+ // on_config_global_load(NULL,widgets);
yon_launch("ubconfig --source system remove [autoinstall]");
- yon_config_save_simple(YON_CONFIG_LOCAL,"system");
+ // yon_config_save_simple(YON_CONFIG_LOCAL,"system");
}
\ No newline at end of file
diff --git a/source/ubinstall-gtk-source.c b/source/ubinstall-gtk-source.c
index dc4119c..17dd8b2 100644
--- a/source/ubinstall-gtk-source.c
+++ b/source/ubinstall-gtk-source.c
@@ -1,17 +1,43 @@
#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&&!element->AddButton){
+ 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 (iter->next){
+ if (element->AddButton) {
+ gtk_widget_destroy(element->AddButton);
+ element->AddButton = NULL;
+ }
+ }
+
+ if (!iter->next&&!iter->prev){
+ gtk_widget_hide(element->RemoveButton);
+ } else {
+ gtk_widget_show(element->RemoveButton);
+ }
}
}
@@ -25,22 +51,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 +99,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 +133,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 +147,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 +199,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 +210,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 +223,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-startup-apps.c b/source/ubinstall-gtk-startup-apps.c
index dc82b88..3014f1e 100644
--- a/source/ubinstall-gtk-startup-apps.c
+++ b/source/ubinstall-gtk-startup-apps.c
@@ -34,16 +34,16 @@ 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(widgets->StartupList,&iter);
+ gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
}
}
}
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")){
@@ -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,20 +165,20 @@ 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);
}
void on_startup_app_edit(GtkWidget *, main_window *widgets){
GtkTreeIter iter;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupServicesTree)),NULL,&iter)){
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupAppsTree)),NULL,&iter)){
char *app, *unit, *description;
int status;
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/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c
index 715b68e..b99a166 100644
--- a/source/ubinstall-gtk-startup-services.c
+++ b/source/ubinstall-gtk-startup-services.c
@@ -1,12 +1,19 @@
#include "ubinstall-gtk.h"
-void on_srartup_services_toggled(GtkWidget *, char *path, main_window *widgets){
+void on_srartup_services_toggled(GtkCellRenderer *self, char *path, main_window *widgets){
+ GtkWidget *tree = NULL;
+ if (self == widgets->StartupChosenCell){
+ tree = widgets->StartupServicesTree;
+ } else if (self == widgets->StartupAppsChosenCell){
+ tree = widgets->StartupAppsTree;
+ }
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(tree));
GtkTreeIter iter;
int status;
- gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->StartupList),&iter,path);
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupList),&iter,0,&status,-1);
- gtk_list_store_set(widgets->StartupList,&iter,0,!status,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,path);
+ gtk_tree_model_get(model,&iter,0,&status,-1);
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!status,-1);
}
void on_startup_services_selection_changed(GtkWidget *,main_window *widgets){
@@ -44,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
new file mode 100644
index 0000000..9ae5ced
--- /dev/null
+++ b/source/ubinstall-gtk-ui-lang.c
@@ -0,0 +1,332 @@
+#include "ubinstall-gtk.h"
+
+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)){
+ config_code = setlocale(LC_ALL,NULL);
+ }
+ GtkTreeIter itar;
+ for_iter(widgets->InstallerCountryFilter,&iter){
+ gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&itar,&iter);
+ char *target;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->InstallerCountryList),&itar,2,&target,-1);
+ if (!strcmp(config_code,target)){
+ gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&iter,&itar);
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&iter);
+ GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerCountryFilter),&iter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->CountryLanguagesTree),path,0,0,0,0);
+ gtk_tree_path_free(path);
+ break;
+ }
+ }
+
+}
+
+void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColumn*, main_window *widgets){
+ char *window_language;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&model,&iter)) return;
+ gtk_tree_model_get(model,&iter,2,&window_language,-1);
+ if (!yon_char_is_empty(window_language)){
+ char *prev_lang = config(installer_locale_parameter);
+ if (!yon_char_is_empty(prev_lang)&&!strcmp(prev_lang,window_language)) return;
+ yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)window_language);
+ }
+ char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter);
+ int size;
+ 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);
+ if (!system(command)){};
+ yon_main_window_update_locale(widgets);
+ g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
+ model = GTK_TREE_MODEL(widgets->InstallerLanguageList);
+ gtk_tree_model_get_iter_from_string(model,&iter,active_lang_id);
+ g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
+
+}
+
+void yon_startup_language_init(){
+ char *source = yon_config_get_type_path(main_config.load_mode);
+ if (!source){
+ source = main_config.custom_load_path;
+ }
+ char *command =yon_config_parameter_prepare_command(get_localisation_command,source,NULL,NULL);
+ int size;
+ config_str parsed = yon_config_load(command,&size);
+ {
+ if (size>0&&!yon_char_is_empty(parsed[0])&&strcmp(parsed[0],"(null)\n")){
+ yon_char_remove_last_symbol(parsed[0],'\n');
+ free(yon_char_divide_search(parsed[0],"=",-1));
+ yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[0]);
+ }
+ 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_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_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,""));
+
+ }
+ }
+}
+
+void yon_main_window_update_locale(main_window *widgets){
+ char *locale = config(installer_locale_parameter);
+ if (yon_char_is_empty(locale)){
+ char *sys_locale = config(lang_parameter);
+
+ if (!yon_char_is_empty(sys_locale)){
+ locale = sys_locale;
+ } else {
+ char *lang = config("LANG");
+ if (!yon_char_is_empty(lang)){
+ locale = lang;
+ }
+ }
+ }
+ 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);
+ // 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{
+ char *locale_name;
+ char *code;
+ char *localised_name;
+ char *code_full;
+} locale_struct;
+
+gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){
+ 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 yon_set_locales_list(main_window *widgets){
+ gtk_list_store_clear(widgets->InstallerLanguageList);
+ gtk_list_store_clear(widgets->InstallerCountryList);
+
+ 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*),(__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);
+ for (int i=0;iInstallerLanguageList,&iter);
+ gtk_list_store_set(widgets->InstallerLanguageList,&iter,
+ 0,lang_ab,
+ 1,_(language),
+ 2,lang_name,
+ 3,locales[i],
+ 4,language,
+ -1);
+ }
+
+ gtk_list_store_append(widgets->InstallerCountryList,&itar);
+ gtk_list_store_set(widgets->InstallerCountryList,&itar,
+ 0,lang_ab,
+ 1,_(country),
+ 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';
+ char *compare_lang_ab =yon_locale_get_parameter(compare_target,YON_LOCALE_LANG_AB);
+ temp = strstr(config_code,"_");
+ if (temp) temp[0]='\0';
+ if (!strcmp(config_code,compare_lang_ab)){
+ 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);
+ }
+ }
+ }
+ textdomain(LocaleName);
+}
+
+gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets){
+ GtkTreeIter itar;
+ GtkTreeModel *model;
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&itar)) return 0;
+ char *cur_code,*country;
+ gtk_tree_model_get(self,iter,0,&cur_code,1,&country,-1);
+ if (yon_char_is_empty(cur_code)) return 0;
+
+ char *code;
+ gtk_tree_model_get(model,&itar,0,&code,-1);
+ if (!strcmp(code,cur_code)){
+ char *config_lang = config(installer_locale_parameter);
+ if (!yon_char_is_empty(config_lang)&&!strcmp(cur_code,config_lang)){
+ if (gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),iter,&itar)){
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&itar);
+ }
+ }
+ return 1;
+ }
+ return 0;
+
+}
+
+void yon_translation_init(GtkBuilder *builder){
+
+ GSList *list = gtk_builder_get_objects(builder);
+ GSList *iter;
+ for (iter = list; iter; iter = iter->next){
+ GObject *cur_widget = NULL;
+ const char *widget_text = NULL;
+ if (GTK_IS_BUTTON(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 = G_OBJECT(iter->data);
+ widget_text = yon_char_new(gtk_label_get_label(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 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);
+
+ }
+}
+
+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){
+ 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)){
+ 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)){
+ if (gtk_label_get_use_markup(GTK_LABEL(cur_label))){
+ gtk_label_set_markup(GTK_LABEL(cur_label),_(source_label));
+ } else {
+ 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");
+ 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);
+ }
+ }
+ {
+ 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-users.c b/source/ubinstall-gtk-users.c
index 9e68138..681e23a 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(){
@@ -91,8 +91,8 @@ yon_user_struct *yon_user_struct_new(){
user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo");
user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
- yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"'\"=:\n");
- yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"'\":\n");
+ yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"[]'\"=:\n");
+ yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"[]'\":\n");
g_object_set_data(G_OBJECT(user->MainBox),"yon_user_struct",user);
@@ -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);
@@ -146,6 +149,7 @@ void yon_user_init(main_window *widgets){
char *parameter_name = yon_char_divide_search(parameter,"=",-1);
char *key = yon_config_parameter_get_key(parameter_name);
char *login = yon_config_parameter_get_key(strstr(key,"USERADD["));
+ yon_char_remove_brackets(login);
config_str parsed = yon_char_parse(parameter,&parsed_size,":");
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),login);
diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
index 4318c1f..c0fd160 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)
@@ -26,12 +51,12 @@ void on_open_documentation_confirmation(GtkWidget *self, char *link){
gtk_window_set_icon_name(GTK_WINDOW(window->Window),yon_char_append("com.ublinux.",LocaleName));
gtk_widget_show_all(window->Window);
g_signal_connect(G_OBJECT(window->CloseButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_open_browser),yon_char_new(link));
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_open_browser),yon_char_new(_(link)));
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
} else {
- yon_open_browser(self,link);
+ yon_open_browser(self,_(link));
}
}
@@ -75,67 +100,6 @@ void yon_on_about(GtkWidget *, main_window *){
//functions
-
-int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){
- textdomain(template_ui_LocaleName);
- GtkWidget *dialog = gtk_dialog_new_with_buttons(TITLE_LABEL,GTK_WINDOW(gtk_widget_get_toplevel(self)),GTK_DIALOG_USE_HEADER_BAR,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL);
- textdomain(LocaleName);
- gtk_window_set_modal(GTK_WINDOW(dialog),1);
- gtk_window_set_icon_name(GTK_WINDOW(dialog),yon_char_append("com.ublinux.",LocaleName));
- gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
- gtk_widget_set_size_request(dialog,450,-1);
- GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_dialog_get_header_bar(GTK_DIALOG(dialog))));
- GtkWidget *image_cancel = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.cancel-symbolic",GTK_ICON_SIZE_BUTTON);
- GtkWidget *image_accept = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.accept-symbolic",GTK_ICON_SIZE_BUTTON);
- gtk_button_set_image((GtkButton*)g_list_nth_data(list,0),image_cancel);
- gtk_button_set_image((GtkButton*)g_list_nth_data(list,1),image_accept);
- gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,0)),"marginright");
- gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,1)),"marginright");
-
- g_list_free(list);
- GtkWidget *header_label = gtk_label_new(yon_char_is_empty(data->title)?TITLE_LABEL:data->title);
- gtk_widget_show(header_label);
- PangoAttrList *attributes = pango_attr_list_new();
- PangoAttribute *boldAttr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
- pango_attr_list_insert(attributes, boldAttr);
- gtk_label_set_attributes(GTK_LABEL(header_label),attributes);
-
- GtkWidget *header = gtk_dialog_get_header_bar(GTK_DIALOG(dialog));
- gtk_header_bar_set_custom_title(GTK_HEADER_BAR(header),header_label);
- gtk_widget_show(header);
-
- GtkWidget *image = gtk_image_new_from_icon_name("dialog-question-symbolic",GTK_ICON_SIZE_DIALOG);
- gtk_widget_show(image);
- gtk_widget_set_margin_start(image,20);
- gtk_widget_set_margin_end(image,20);
- gtk_widget_set_margin_bottom(image,20);
- gtk_widget_set_margin_top(image,20);
-
- GtkWidget *label = gtk_label_new("");
- gtk_widget_set_margin_end(label,20);
- gtk_widget_show(label);
- gtk_label_set_line_wrap_mode(GTK_LABEL(label),PANGO_WRAP_WORD);
- gtk_label_set_line_wrap(GTK_LABEL(label),1);
- gtk_label_set_markup(GTK_LABEL(label),data->action_text);
-
- GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
- gtk_widget_show(box);
- gtk_box_pack_start(GTK_BOX(box),image,0,0,5);
- gtk_box_pack_start(GTK_BOX(box),label,0,0,5);
- gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),box,1,1,5);
-
- gtk_window_set_default_size(GTK_WINDOW(dialog),450,-1);
-
- int resp = gtk_dialog_run(GTK_DIALOG(dialog));
- if (resp == GTK_RESPONSE_ACCEPT){
- if (data->function){
- data->function(NULL,data->data);
- }
- } else resp=0;
- gtk_widget_destroy(dialog);
- return resp;
-}
-
// //functions
// void yon_encryption_type_setup(GtkComboBoxText *target){
// int size;
@@ -330,7 +294,7 @@ void config_init(){
main_config.save_done=0;
main_config.save_configured=0;
main_config.configure_mode=0;
- main_config.load_mode=YON_CONFIG_LOCAL;
+ main_config.load_mode=YON_CONFIG_GLOBAL;
main_config.log_progress_buzy=0;
main_config.log_end=0;
main_config.exit_accepted=0;
@@ -385,15 +349,23 @@ void on_gparted_update(GtkWidget *, main_window *widgets){
yon_devices_setup(widgets);
}
-void on_reboot_accepted(main_window *){
- g_mutex_lock(&main_config.install_mutex);
- if (main_config.install_thread){
- pthread_cancel((pthread_t)main_config.install_thread);
- g_mutex_unlock(&main_config.install_mutex);
- }
- main_config.exit_accepted=1;
- while(gtk_events_pending()) gtk_main_iteration();
- if (system("reboot")){};
+void on_reboot_accepted(main_window *widgets){
+ dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
+ data->action_text=WARNING_REBOOT_TEXT_LABEL;
+ data->title=WARNING_TITLE_LABEL;
+ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT){
+ g_mutex_lock(&main_config.install_mutex);
+ if (main_config.install_thread){
+ pthread_cancel((pthread_t)main_config.install_thread);
+ g_mutex_unlock(&main_config.install_mutex);
+ }
+ main_config.exit_accepted=1;
+ while(gtk_events_pending()) gtk_main_iteration();
+ if (system("reboot")){};
+
+ gtk_main_quit();
+ exit(0);
+ }
}
void on_exit_accepted(main_window *){
@@ -404,186 +376,48 @@ 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){
if (!main_config.exit_accepted||(main_config.save_done&&main_config.install_complete)){
- if (widgets){};
- dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
- data->action_text=INTERRUPT_TEXT_LABEL;
- data->title=WARNING_TITLE_LABEL;
- if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
- yon_window_config_save_instant();
+ if (!main_config.install_complete||!main_config.save_configured){
+ dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
+ data->action_text=INTERRUPT_TEXT_LABEL;
+ data->title=WARNING_TITLE_LABEL;
+ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
+ yon_window_config_save_instant();
+ on_exit_accepted(widgets);
+ gtk_main_quit();
+ return 1;
+ }
+ } else {
on_exit_accepted(widgets);
gtk_main_quit();
- return 1;
}
}
return 1;
}
-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;
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter));
- char *config_code = config(installer_lang_parameter);
- if (yon_char_is_empty(config_code)){
- config_code = setlocale(LC_ALL,NULL);
- }
- GtkTreeIter itar;
- for_iter(widgets->InstallerCountryFilter,&iter){
- gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&itar,&iter);
- char *target;
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->InstallerCountryList),&itar,2,&target,-1);
- if (!strcmp(config_code,target)){
- gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&iter,&itar);
- gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&iter);
- GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerCountryFilter),&iter);
- gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->CountryLanguagesTree),path,0,0,0,0);
- gtk_tree_path_free(path);
- break;
- }
- }
-
-}
-
-void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColumn*, main_window *widgets){
- char *window_language;
- GtkTreeIter iter;
- GtkTreeModel *model;
- if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&model,&iter)) return;
- gtk_tree_model_get(model,&iter,2,&window_language,-1);
- if (!yon_char_is_empty(window_language)){
- char *prev_lang = config(installer_lang_parameter);
- if (!yon_char_is_empty(prev_lang)&&!strcmp(prev_lang,window_language)) return;
- yon_config_register(installer_lang_parameter,installer_lang_parameter_command,(char*)window_language);
- }
- char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter);
+void yon_licence_load(main_window *widgets){
int size;
- config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_lang_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)){};
- gtk_widget_destroy(widgets->MainWindow);
- setlocale(LC_ALL, window_language);
- textdomain(LocaleName);
- g_setenv("LANGUAGE",window_language,1);
-
- 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);
- g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
- model = GTK_TREE_MODEL(widgets->InstallerLanguageList);
- gtk_tree_model_get_iter_from_string(model,&iter,active_lang_id);
- g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
-
-}
-
-typedef struct{
- char *locale_name;
- char *code;
- char *localised_name;
- 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);
-}
-
-void set_locales_list(main_window *widgets){
- gtk_list_store_clear(widgets->InstallerLanguageList);
- gtk_list_store_clear(widgets->InstallerCountryList);
-
- char *config_code = yon_char_new(config(installer_lang_parameter));
- int size;
- config_str locales = yon_locale_get_all_codes(&size);
- qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
- GtkTreeIter iter,itar;
- GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal);
- textdomain(LOCALES_DOMAIN_NAME);
- for (int i=0;iInstallerLanguageList,&iter);
- gtk_list_store_set(widgets->InstallerLanguageList,&iter,
- 0,lang_ab,
- 1,_(language),
- 2,lang_name,
- 3,locales[i],
- -1);
- }
- gtk_list_store_append(widgets->InstallerCountryList,&itar);
- gtk_list_store_set(widgets->InstallerCountryList,&itar,
- 0,lang_ab,
- 1,_(country),
- 2,code,
- 3,title,
- -1);
- if (yon_char_is_empty(config_code)){
- config_code=yon_char_new(setlocale(LC_ALL,NULL));
- }
- char *temp = strstr(config_code,".");
- if (temp) temp[0]='\0';
- if (!strcmp(config_code,locales[i])){
- g_signal_handlers_block_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets);
- 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);
- g_signal_handlers_unblock_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets);
- }
+ 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);
}
- textdomain(LocaleName);
-
-}
-
-gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets){
- GtkTreeIter itar;
- GtkTreeModel *model;
- if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&itar)) return 0;
- char *cur_code,*country;
- gtk_tree_model_get(self,iter,0,&cur_code,1,&country,-1);
- if (yon_char_is_empty(cur_code)) return 0;
-
- char *code;
- gtk_tree_model_get(model,&itar,0,&code,-1);
- if (!strcmp(code,cur_code)){
- char *config_lang = config(installer_lang_parameter);
- if (!yon_char_is_empty(config_lang)&&!strcmp(cur_code,config_lang)){
- if (gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),iter,&itar)){
- gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&itar);
- }
- }
- return 1;
- }
- return 0;
-
}
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
@@ -720,6 +554,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 +569,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"));
@@ -744,11 +580,20 @@ 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");
+ widgets->RegionEntry = yon_gtk_builder_get_widget(builder,"RegionEntry");
+ widgets->RegionTimezoneCompletionList = GTK_LIST_STORE(gtk_builder_get_object(builder,"RegionTimezoneCompletionList"));
+ widgets->RegionTimezoneCompletionFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"RegionTimezoneCompletionFilter"));
+ widgets->RegionMapOverlay = yon_gtk_builder_get_widget(builder,"RegionMapOverlay");
+ widgets->TimeZoneMapOverlayBox = yon_gtk_builder_get_widget(builder,"TimeZoneMapOverlayBox");
+ widgets->TimeZoneMapOverlayImage = yon_gtk_builder_get_widget(builder,"TimeZoneMapOverlayImage");
+ widgets->TimeZoneMapOverlayTitleLabel = yon_gtk_builder_get_widget(builder,"TimeZoneMapOverlayTitleLabel");
+ widgets->TimeZoneMapOverlayInfoLabel = yon_gtk_builder_get_widget(builder,"TimeZoneMapOverlayInfoLabel");
- // widgets->UserImage=yon_gtk_builder_get_widget(builder,"UserImage");
widgets->UserRootNameEntry=yon_gtk_builder_get_widget(builder,"UserRootNameEntry");
widgets->UserRootLoginEntry=yon_gtk_builder_get_widget(builder,"UserRootLoginEntry");
widgets->UserRootPasswordCombo=yon_gtk_builder_get_widget(builder,"UserRootPasswordCombo");
@@ -868,6 +713,7 @@ void yon_main_window_create(main_window *widgets){
widgets->PackagesChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"PackagesChosenCell"));
widgets->PackagesList = GTK_TREE_STORE(gtk_builder_get_object(builder,"Packages"));
+ widgets->ConfigHubRebootCombo = yon_gtk_builder_get_widget(builder,"ConfigHubRebootCombo");
widgets->HubPersonalListBox = yon_gtk_builder_get_widget(builder,"HubPersonalListBox");
widgets->HubSystemListBox = yon_gtk_builder_get_widget(builder,"HubSystemListBox");
widgets->HubPackagesListBox = yon_gtk_builder_get_widget(builder,"HubPackagesListBox");
@@ -886,167 +732,213 @@ 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);
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->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);
- 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->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);
- 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);
- 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->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->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);
- 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->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),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->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->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);
+ 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);
+ 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);
+ 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->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);
+ 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_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_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->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_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);
+ 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);
+
{
widgets->EnableRDPMenuItem = gtk_menu_item_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(ENABLE_RDP_LABEL);
GtkWidget *Check = gtk_check_button_new();
- gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0);
+ gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_container_add(GTK_CONTAINER(widgets->EnableRDPMenuItem),Box);
g_signal_connect(G_OBJECT(widgets->EnableRDPMenuItem),"activate",G_CALLBACK(on_rdp_toggled),widgets);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->EnableRDPMenuItem),"menuitemmiddle");
@@ -1058,8 +950,8 @@ void yon_main_window_create(main_window *widgets){
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(ENABLE_VNC_LABEL);
GtkWidget *Check = gtk_check_button_new();
- gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0);
+ gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_container_add(GTK_CONTAINER(widgets->EnableVNCMenuItem),Box);
g_signal_connect(G_OBJECT(widgets->EnableVNCMenuItem),"activate",G_CALLBACK(on_vnc_toggled),widgets);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->EnableVNCMenuItem),"menuitemmiddle");
@@ -1071,8 +963,8 @@ void yon_main_window_create(main_window *widgets){
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(CONFIGURATION_MODE_LABEL);
GtkWidget *Check = gtk_check_button_new();
- gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0);
+ gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_container_add(GTK_CONTAINER(widgets->ConfigurationModeMenuItem),Box);
g_signal_connect(G_OBJECT(widgets->ConfigurationModeMenuItem),"activate",G_CALLBACK(on_configuration_mode_switch),widgets);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->ConfigurationModeMenuItem),"menuitemmiddle");
@@ -1084,27 +976,10 @@ 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);
}
- {
- int size;
- config_str parsed = NULL;
- parsed = yon_file_open(licence_path,&size);
- if (size){
- 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);
@@ -1114,17 +989,25 @@ 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)){
+ exit (1);
+ }
+ }
if (main_config.force_ini){
- main_config.configure_mode=1;
- g_signal_handlers_block_by_func(G_OBJECT(widgets->ConfigurationModeMenuItem),G_CALLBACK(on_configuration_mode_switch),widgets);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets->ConfigurationModeMenuItem),1);
- gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0);
- g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ConfigurationModeMenuItem),G_CALLBACK(on_configuration_mode_switch),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);
+ if (yon_configuration_path_check(main_config.config_save_path)){
+ 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),1);
+ 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 {
+ exit (1);
+ }
}
- yon_locale_init();
- set_locales_list(widgets);
}
gboolean yon_maximize_start(main_window *widgets){
@@ -1145,22 +1028,32 @@ void *yon_maximize(main_window *widgets){
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
main_window *yon_main_window_complete(){
+ 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;
+ }
+ }
+ }
main_window *widgets=NULL;
- widgets = yon_remalloc(widgets,sizeof(main_window));
+ widgets = malloc(sizeof(main_window));
memset(widgets,0,sizeof(main_window));
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_set_locales_list(widgets);
+ // yon_main_window_update_locale(widgets);
+ // // yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow");
+
return widgets;
}
-int main(int argc, char *argv[]){
- __attribute__((unused)) char *locale = setlocale(LC_ALL, "");
- textdomain (LocaleName);
+int main(int argc, char *argv[]){
+ // __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8");
+ textdomain(LocaleName);
+ yon_ubl_connect_config((_template_config*)&main_config);
config_init();
config_str unfound = NULL;
int size=0;
- yon_ubl_connect_config((_template_config*)&main_config);
opterr=0;
yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS);
@@ -1188,34 +1081,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);
- if (getuid()!=0){
- yon_ubl_status_box_render(yon_char_get_localised_from_lib(ROOT_WARNING_LABEL),BACKGROUND_IMAGE_FAIL_TYPE);
+ {
+ 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;
gtk_main();
return 0;
}
\ No newline at end of file
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
index e726dc7..18a769a 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"
@@ -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)
@@ -142,6 +143,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)}}'"
@@ -227,7 +229,7 @@ layout && /description:/ {\
#define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN[admanger]']"
#define USERADD_parameter_all "AUTOINSTALL[ubconfig set [users] USERADD[*]]"
#define USERADD_parameter_search "AUTOINSTALL[ubconfig set [users] USERADD["
-#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD[", target, "]]", NULL)
+#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD['", target, "']]", NULL)
#define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[", target, "]']", NULL)
#define KERNEL_BOOT_parameter "AUTOINSTALL[ubconfig set [boot] KERNEL_BOOT]"
#define KERNEL_BOOT_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [boot] KERNEL_BOOT']"
@@ -254,10 +256,16 @@ layout && /description:/ {\
#define NETWORK_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[", target, "@connmod]']", NULL)
#define NETWORK_devdown_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[", target, "@devdown]']", NULL)
#define NETWORK(target) yon_char_unite("NETWORK[", target, "@connmod]", NULL)
-#define installer_lang_parameter "AUTOINSTALL[installer_lang]"
-#define installer_lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installer_lang]"
+#define installer_locale_parameter "AUTOINSTALL[installer_locale]"
+#define installer_locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installer_locale]"
#define source_parameter "AUTOINSTALL[source]"
#define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]"
+#define finish_parameter "AUTOINSTALL[finish]"
+#define finish_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[finish]"
+
+#define SYSTEM_LANG_parameter "AUTOINSTALL['ubconfig set [locale] LANG']"
+#define SYSTEM_LANG_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [locale] LANG']"
+#define get_localisation_command "ubconfig -ea --source global get [autoinstall] AUTOINSTALL[installer_locale] -- get [autoinstall] AUTOINSTALL['ubconfig set [locale] LANG'] -- get [locale] LANG"
#define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ", parameters, "; nice ubinstall2 --debug autoinstall", NULL)
@@ -280,9 +288,9 @@ layout && /description:/ {\
#define full_log_path "/var/log/ubinstall.log"
-#define config_get_command(target) yon_char_unite("ubconfig --source ", target, " --conarg get [autoinstall] AUTOINSTALL[*]", NULL)
+#define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL)
-#define config_get_default_command "ubconfig --source default --conarg get [autoinstall] AUTOINSTALL[*]"
+#define config_get_default_command "ubconfig -ea --conarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG"
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
@@ -293,7 +301,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"
@@ -490,8 +498,21 @@ typedef struct
GtkListStore *InstallerLanguageList;
GtkTreeModel *InstallerCountryFilter;
// GtkWidget *LanguageCombo;
+
+ GtkWidget *RegionMapBox;
+ GtkWidget *RegionMapOverlay;
+ GtkWidget *RegionMapTarget;
+ GtkWidget *TimeZoneMapOverlayBox;
+ GtkWidget *TimeZoneMapOverlayImage;
+ GtkWidget *TimeZoneMapOverlayTitleLabel;
+ GtkWidget *TimeZoneMapOverlayInfoLabel;
+ GtkWidget *RegionSensitiveSwitch;
GtkWidget *RegionCombo;
GtkWidget *ZoneCombo;
+ GtkWidget *RegionEntry;
+ GtkListStore *RegionTimezoneCompletionList;
+ GtkTreeModelFilter *RegionTimezoneCompletionFilter;
+
GtkWidget *InstallationRadio;
GtkWidget *InstallationNearRadio;
@@ -612,6 +633,7 @@ typedef struct
GtkWidget *OSFormatFSMarkEntry;
GtkWidget *OSFormatEncryptionCombo;
GtkWidget *OSFormatEncryptionEntry;
+ GtkWidget *OSFormatEncryptionButton;
GtkWidget *OSSpinner;
GtkWidget *OSOverlay;
@@ -628,11 +650,11 @@ typedef struct
GtkWidget *UserdataFormatFSMarkEntry;
GtkWidget *UserdataFormatEncryptionCombo;
GtkWidget *UserdataFormatEncryptionEntry;
+ GtkWidget *UserdataFormatEncryptionButton;
GtkTreeModel *LanguagesFilter;
GtkTreeModel *LayoutsFilter;
- GtkWidget *RegionSensitiveSwitch;
GtkWidget *HostnameSensitiveSwitch;
GtkWidget *KernelListBox;
@@ -744,6 +766,7 @@ typedef struct
GtkWidget *PackagesTree;
// Configuration hub slide section
+ GtkWidget *ConfigHubRebootCombo;
GtkWidget *HubPersonalListBox;
GtkWidget *HubSystemListBox;
GtkWidget *HubPackagesListBox;
@@ -772,7 +795,7 @@ typedef struct
GtkWidget *SystemSectionToggle;
GtkWidget *UserDataSectionToggle;
GtkWidget *RemoveButton;
- GtkWidget *FormatSwitch;
+ GtkWidget *FormatCombo;
GtkWidget *FormatRevealer;
GtkWidget *SizeSpin;
GtkWidget *SizeCombo;
@@ -1025,13 +1048,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
@@ -1042,6 +1059,7 @@ typedef struct
GtkWidget *DeviceCombo;
GtkWidget *PathButton;
GtkWidget *RemoveButton;
+ GtkWidget *AddButton;
} source_element;
@@ -1093,6 +1111,8 @@ typedef struct
GtkCellRenderer *ToggleCell;
GtkListStore *LanguagesList;
+
+ char *languages;
} language_window;
struct locales_struct
@@ -1163,6 +1183,7 @@ gboolean on_install_error(main_window *widgets);
void on_reboot_accepted(main_window *widgets);
+int yon_configuration_path_check(const char *path);
void on_keyboard_clicked(GtkWidget *, main_window *widgets);
void on_keyboard_accept(GtkWidget *self, main_window *widgets);
void on_layout_toggle(GtkCellRendererToggle *, gchar *path, ubinstall_keyboard_window *window);
@@ -1178,6 +1199,9 @@ 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_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);
@@ -1276,7 +1300,7 @@ void yon_kernel_resize(main_window *widgets);
void yon_kernel_addon_setup(main_window *widgets);
void yon_kernel_addon_resize(main_window *widgets);
void yon_startup_services_setup(main_window *widgets);
-void on_srartup_services_toggled(GtkWidget *, char *path, main_window *widgets);
+void on_srartup_services_toggled(GtkCellRenderer *, char *path, main_window *widgets);
void on_startup_service_edit(GtkWidget *, main_window *widgets);
void on_startup_service_add(GtkWidget *, main_window *widgets);
startup_service_window *yon_startup_service_window_new();
@@ -1333,16 +1357,14 @@ 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 *);
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);
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);
@@ -1367,7 +1389,7 @@ int yon_advanced_section_get_by_part(advanced_partition *part);
void yon_advanced_section_remove_by_name(char *part);
void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets);
int yon_advanced_section_append(advanced_section *section);
-gboolean on_format_changed(GtkWidget *self, gboolean state, advanced_partition *part);
+void on_format_changed(GtkWidget *self, advanced_partition *part);
int yon_layouts_get();
void on_link(GtkWidget *self, char *uri, gpointer);
void on_source_changed(GtkComboBox *self);
@@ -1448,4 +1470,28 @@ 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);
+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();
+gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets);
+void yon_update_translation(main_window *widgets);
+void yon_translation_init(GtkBuilder *builder);
+void yon_licence_load(main_window *widgets);
+void on_network_removed(GtkWidget *,network_info *info);
+char *yon_bootloader_get_os_name(char *parameter);
+gboolean on_region_refilter(GtkTreeModel* model, GtkTreeIter* iter, main_window *widgets);
+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);
+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();
+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/source/ubl-strings.h b/source/ubl-strings.h
index 2f2c879..2a9e060 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")
@@ -66,6 +62,7 @@ NULL)
#define TB_LABEL _("Tb")
#define GB_LABEL _("Gb")
#define MB_LABEL _("Mb")
+#define KB_LABEL _("Kb")
#define AVALIABLE_LANGUAGES_LABEL _("Available languages in the system:")
#define AVALIABLE_LANGUAGES_TITLE_LABEL _("Available languages in the system")
@@ -78,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")
@@ -103,6 +100,8 @@ NULL)
#define RESTART_LABEL _("Restart PC")
#define CHOOSE_LABEL _("Choose file system type for the section:")
#define SECTION_NAME_LABEL _("Section name:")
+#define DO_NOT_FORMAT_LABEL _("Do not format")
+#define AUTOMATIC_FORMAT_LABEL _("Format automatically")
#define FORMAT_LABEL _("Format")
#define INSTALL_SUCCESS_LABEL _("You have system installed on your computer.\nYou can reboot and use your new system\nor continue working in the system Live environment.")
@@ -123,13 +122,13 @@ 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")
#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.")
@@ -143,18 +142,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")
@@ -206,6 +193,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)
@@ -288,6 +278,20 @@ 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 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 REBOOT_LABEL _("Reboot")
+#define SHUTDOWN_LABEL _("Shudown")
+#define FINISH_ACTION_LABEL _("After successful installation:")
+#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")
@@ -301,7 +305,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:")
@@ -384,7 +387,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")
@@ -397,7 +399,7 @@ NULL)
// #define _LABEL _("Installation on same partition")
// #define _LABEL _("Advanced section")
// #define _LABEL _("Recovery section")
-// #define _LABEL _("Start installation scenario")
+// #define _LABEL _("Install according to the script")
// #define _LABEL _("Source")
// #define _LABEL _("Skip configuration")
@@ -410,7 +412,7 @@ NULL)
// #define _LABEL _("Configuring the system")
// #define _LABEL _("Configuring the parameters of the installed system")
// #define _LABEL _("Selecting the system kernel")
-// #define _LABEL _("Selecting kernels for installation in the system and selecting the default kernel. Internet access is required to install additional kernels")
+// #define _LABEL _("Selecting kernels for installation in the system and selecting the default kernel. Internet access required")
// #define _LABEL _("Selecting additional kernel modules from the repository via the Internet")
// #define _LABEL _("Search and select the software you need to install by package name. Internet access required")
// #define _LABEL _("Chosen packages")
@@ -430,7 +432,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")
@@ -439,6 +440,24 @@ NULL)
// #define _LABEL _("System recovery successfully completed!")
// #define _LABEL _("You can reboot the system and use the installed version or continue to work in the current system.")
// #define _LABEL _("Selecting additional system kernel components from the repository. Internet access required")
+// #define _LABEL _("Repository")
+// #define _LABEL _("Name")
+// #define _LABEL _("Version")
+// #define _LABEL _("Description")
+// #define _LABEL _("Architecture")
+// #define _LABEL _("URL")
+// #define _LABEL _("Licenses")
+// #define _LABEL _("Groups")
+// #define _LABEL _("Provides")
+// #define _LABEL _("Depends On")
+// #define _LABEL _("Optional Deps")
+// #define _LABEL _("Conflicts With")
+// #define _LABEL _("Replaces")
+// #define _LABEL _("Download Size")
+// #define _LABEL _("Installed Size")
+// #define _LABEL _("Packager")
+// #define _LABEL _("Build Date")
+// #define _LABEL _("Validated By")
#define slide_1_title _("Product ecosystem")
#define slide_1_text _("Developed by a team of professionals and successfully presented on the market.\n\
@@ -544,4 +563,4 @@ For more information, visit our website the \"Support Levels\" section.")
#define slide_21_text _("Continuously evolving and clearly describes the installation and configuration of the system, as well as the use of its features. Located at https://wiki.ublinux.com")
#define slide_22_title _("Network Boot")
-#define slide_22_text _("Allows system booting for diskless and standard workstations over a local network or the Internet (even over slow connection channels).")
\ No newline at end of file
+#define slide_22_text _("Allows system booting for diskless and standard workstations over a local network or the Internet (even over slow connection channels).")
diff --git a/ubinstall-gtk-advanced-box.glade b/ubinstall-gtk-advanced-box.glade
index 61f8d64..2969f01 100644
--- a/ubinstall-gtk-advanced-box.glade
+++ b/ubinstall-gtk-advanced-box.glade
@@ -138,7 +138,6 @@
5
@@ -148,10 +147,9 @@
-
+
+
+ False
+ Format
+
+
+ False
+ True
+ 2
+
+
False
@@ -206,33 +215,39 @@
-
- True
- True
- adjustment1
-
-
- False
- True
- 1
-
-
-
-
+
True
False
- 0
-
- - Kb
- - Mb
- - Gb
- - Tb
-
+ 5
+
+
+ True
+ True
+ adjustment1
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+
+
+ False
+ True
+ 1
+
+
False
True
- 2
+ 3
@@ -245,7 +260,7 @@
False
True
- 3
+ 4
@@ -253,39 +268,12 @@
True
True
-
- False
- True
- 4
-
-
-
-
- True
- False
- File system type:
-
False
True
5
-
-
- True
- False
- 0
-
- - Default
-
-
-
- False
- True
- 6
-
-
False
@@ -299,10 +287,10 @@
False
5
-
+
True
False
- File system label:
+ Encryption:
0
@@ -312,9 +300,13 @@
-
+
True
- True
+ False
+ 0
+
+ - Off
+
False
@@ -323,11 +315,10 @@
-
+
True
False
- Encryption:
- 0
+ Encryption password:
False
@@ -336,13 +327,39 @@
-
+
True
False
- 0
-
- - Off
-
+ 5
+
+
+ True
+ False
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+ True
+ image4
+
+
+
+ False
+ True
+ 1
+
+
False
@@ -350,52 +367,74 @@
3
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ 5
-
+
True
False
- Encryption password:
+ File system type:
False
True
- 4
+ 0
-
+
True
- False
- True
+ False
+ 0
+
+ - Default
+
False
True
- 5
+ 1
+
+
+
+
+ True
+ False
+ File system label:
+ 0
+
+
+ False
+ True
+ 2
-
+
True
- False
True
- True
- image4
-
False
True
- 6
+ 3
False
True
- 2
+ 3
@@ -418,16 +457,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
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 @@
+
+
+
+
+
+
+
+
+
+ RegionTimezoneCompletionList
+ 0
+
+
+
+ 0
+
+
+
@@ -300,6 +320,72 @@
+
+ True
+ False
+ center
+ center
+ vertical
+
+
+ 175
+ 100
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ vertical
+ 5
+
+
+ True
+ False
+ 48
+ com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ label
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ label
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
True
False
@@ -606,6 +692,7 @@
True
False
vertical
+ 5
True
@@ -646,6 +733,7 @@
@@ -802,7 +890,8 @@ agreement
@@ -878,7 +967,6 @@ agreement
-
@@ -946,7 +1034,7 @@ agreement
True
False
- 32
+ 24
com.ublinux.ubinstall-gtk.translation-symbolic
@@ -961,7 +1049,7 @@ agreement
False
Select your language:
-
+
@@ -1123,7 +1211,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.license
0
@@ -1417,7 +1505,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-common
@@ -1496,7 +1584,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-near
@@ -1575,7 +1663,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-part
@@ -1654,7 +1742,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-advanced
@@ -1733,7 +1821,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-recovery
@@ -2138,6 +2226,7 @@ agreement
True
False
vertical
+ 5
True
@@ -2158,7 +2247,7 @@ agreement
True
False
48
- /com/ublinux/images/install_type_data_only_normal.png
+ com.ublinux.libublsettingsui-gtk3.settings-symbolic
0
@@ -2241,6 +2330,41 @@ agreement
0
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ After successful installation:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
True
@@ -2289,7 +2413,7 @@ agreement
True
5
5
- 150
+ 15
False
@@ -2337,7 +2461,7 @@ agreement
True
5
5
- 150
+ 15
False
@@ -2385,7 +2509,7 @@ agreement
True
5
5
- 150
+ 15
False
@@ -3640,108 +3764,129 @@ agreement
True
False
center
- 10
+ vertical
5
-
+
True
- True
+ False
+ 5
+
+
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ Region:
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ True
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ Zone:
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ False
+ True
+
+
+ False
+ True
+ 4
+
+
False
True
- 0
+ 3
-
+
True
True
- Region:
+ entrycompletion1
False
True
- 1
+ 4
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ True
+ False
+ 0
+ none
+ 35.299999237060547
-
+
True
False
- 5
-
+
True
+ False
False
- 15
- 5
-
-
- True
- False
- True
-
-
- False
- True
- 1
-
-
-
-
- True
- False
- 0
-
-
-
-
- True
- False
- 15
- 5
-
-
- True
- False
- Zone:
-
-
- False
- True
- 0
-
-
+ vertical
-
- True
- False
- True
-
-
- False
- True
- 1
-
+
- True
- False
- 1
+ -1
-
- False
- True
- 3
-
- False
+ True
True
0
@@ -3754,12 +3899,13 @@ agreement
False
True
+ end
1
- False
+ True
True
3
@@ -4638,11 +4784,6 @@ agreement
True
False
0
-
- - Default
- - On
- - Off
-
True
@@ -5265,7 +5406,7 @@ agreement
word
- 450
+ 175
3
@@ -5541,7 +5682,7 @@ agreement
word
- 450
+ 175
3
@@ -5844,7 +5985,7 @@ agreement
True
- True
+ False
True
@@ -7372,7 +7513,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-common
0
@@ -7856,7 +7997,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-near
0
@@ -8566,7 +8707,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-part
0
@@ -9202,7 +9343,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-advanced
0
@@ -9306,6 +9447,7 @@ separately into the selected partition.
True
True
+ never
True
@@ -10276,7 +10418,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-recovery
0
@@ -10390,7 +10532,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub
@@ -10426,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
@@ -10468,7 +10610,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub-update
@@ -10546,7 +10688,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-system
@@ -10565,7 +10707,7 @@ separately into the selected partition.
True
False
- OS only
+ System restore
0
@@ -10582,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
@@ -10624,7 +10766,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-user
@@ -10643,7 +10785,7 @@ separately into the selected partition.
True
False
- User data only
+ User data restore
0
@@ -10743,7 +10885,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub
0
@@ -11155,7 +11297,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub-update
0
@@ -11243,6 +11385,7 @@ separately into the selected partition.
True
True
+ never
True
@@ -11560,7 +11703,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-system
0
@@ -11648,6 +11791,7 @@ separately into the selected partition.
True
True
+ never
True
@@ -12028,7 +12172,7 @@ separately into the selected partition.
vertical
5
-
+
True
False
5
@@ -12091,7 +12235,7 @@ separately into the selected partition.
True
False
Partition label:
- 0.30000001192092896
+ 0
False
@@ -12105,7 +12249,7 @@ separately into the selected partition.
True
- True
+ False
True
3
@@ -12140,21 +12284,23 @@ separately into the selected partition.
True
False
-
- True
- False
- 5
-
True
False
1
True
+
+
+ False
+
+
+
+
False
True
- 0
+ 1
@@ -12167,16 +12313,7 @@ separately into the selected partition.
False
True
- 1
-
-
-
-
-
-
- False
- True
- 1
+ 2
@@ -12185,9 +12322,9 @@ separately into the selected partition.
True
- True
+ False
True
- 2
+ 3
@@ -12207,6 +12344,7 @@ separately into the selected partition.
True
False
Encryption:
+ 0
False
@@ -12215,11 +12353,6 @@ separately into the selected partition.
-
- True
- False
- 5
-
True
False
@@ -12228,39 +12361,40 @@ separately into the selected partition.
- True
+ False
True
- 0
+ 1
-
+
True
False
Encryption password:
+ 0
False
True
- 1
-
-
-
-
- False
- True
- 1
+ 2
+
+ True
+ False
+ 5
+
True
True
+ False
+ ●
True
True
- 3
+ 0
@@ -12276,7 +12410,14 @@ separately into the selected partition.
False
True
- 4
+ 1
+
+
+
+
+ False
+ True
+ 5
@@ -12371,7 +12512,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-user
0
@@ -12850,7 +12991,7 @@ separately into the selected partition.
True
False
Size:
- 1
+ 0
False
@@ -12869,7 +13010,7 @@ separately into the selected partition.
True
16
PartitionSize
- 16
+ 10
True
@@ -12920,7 +13061,7 @@ separately into the selected partition.
True
- True
+ False
True
4
@@ -12942,7 +13083,7 @@ separately into the selected partition.
True
False
File system type:
- 1
+ 0
False
@@ -12951,21 +13092,21 @@ separately into the selected partition.
-
- True
- False
- 5
-
True
False
1
True
+
+
+ False
+
+
False
True
- 0
+ 1
@@ -12978,13 +13119,6 @@ separately into the selected partition.
False
True
- 1
-
-
-
-
- False
- True
3
@@ -12994,7 +13128,7 @@ separately into the selected partition.
True
- True
+ False
True
4
@@ -13016,7 +13150,7 @@ separately into the selected partition.
True
False
Encryption:
- 1
+ 0
False
@@ -13043,34 +13177,42 @@ separately into the selected partition.
1
-
-
- True
- False
- Encryption password:
False
True
- 2
+ 1
+
+
+ True
+ False
+ Encryption password:
+ 0
False
True
- 1
+ 2
+
+ True
+ False
+ 5
+
True
- True
+ False
+ False
+ *
True
True
- 4
+ 0
@@ -13086,7 +13228,14 @@ separately into the selected partition.
False
True
- 5
+ 1
+
+
+
+
+ False
+ True
+ 3
@@ -13198,6 +13347,9 @@ separately into the selected partition.
True
False
+
False
@@ -13211,6 +13363,7 @@ separately into the selected partition.
True
True
Read installation log
+ start
image16