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-icon-gui](ublinux-ubinstall_gui.svg) ![ubinstall-icon-console](ublinux-ubinstall_console.svg) +# ubinstall-gtk -## Описание +## Description +The operating system installer (UBInstall-gtk) allows you to conveniently install the operating system. -Установщик оерационной системы UBLinux (UBInstall) позволяет в удобно установить операционную систему. +# Build +In order to build ubinstall-gtk you will need: -## Установка +- CMake +- C compiler +- GTK+ 3 & dependencies +- webkit2gtk (optional) +- timezonemap (optional) +- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings) +- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3) +- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3) -1. Скачайте репозитрий с утилитами - ``` - $ git clone http://git.ublinux.ru:3000/UBGroup/ubinstall.git - ``` -2. Перейдите в каталог ubinstall - ``` - $ cd ubinstall - ``` -3. Установите утилиту - ``` - $ make - ``` +Once you have all the necessary dependencies, you can use: +```sh +$ make +``` -## Использование +# Installation +After a successful build, just use: +```sh +$ sudo make install clean +``` -### Запуск +# Uninstallation +After a successful build, just use: +```sh +$ sudo make uninstall +``` -Запуск утилиты возможен двумя способами: -1. Терминал +## Usage - CLI версия: - ``` - $ ubinstall.cli - ``` - GTK версия - ``` - $ ubinstall.gtk - ``` +### Launch -2. Ярлык \ No newline at end of file +The utility can be launched in two ways: +1. Terminal + +``` +$ ubinstall-gtk +``` + +2. Shortcut + +![alt text](screenshot/screenshot.png) \ No newline at end of file diff --git a/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 - True True @@ -148,10 +147,9 @@ - + True False - Format False @@ -159,6 +157,17 @@ 1 + + + 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 @@ + 25 True True diff --git a/ubinstall-gtk-menu.glade b/ubinstall-gtk-menu.glade index ba2ded6..0aaed23 100644 --- a/ubinstall-gtk-menu.glade +++ b/ubinstall-gtk-menu.glade @@ -3,11 +3,6 @@ - - True - False - com.ublinux.libublsettingsui-gtk3.pan-left-symbolic - 450 250 @@ -54,7 +49,6 @@ True False - none True @@ -94,11 +88,40 @@ 5 - Back True True True - image1 + + + True + False + 5 + + + True + False + com.ublinux.libublsettingsui-gtk3.pan-left-symbolic + + + False + True + 0 + + + + + True + False + Back + + + False + True + 1 + + + + - - - False - True - 3 - - - - - True - False - True - True - image2 - - - - False - True - 4 - - - - - False - True - end - 1 - - True @@ -265,7 +167,7 @@ - False + True True 2 diff --git a/ubinstall-gtk.css b/ubinstall-gtk.css index 46577de..61ab5cb 100644 --- a/ubinstall-gtk.css +++ b/ubinstall-gtk.css @@ -5,6 +5,9 @@ .noborder { border:none; } +.instant { + transition: 0; +} .borders *{ border-width:0.5px; border-style: solid; @@ -165,11 +168,13 @@ treeview row:nth-child(odd) { background-color: #000000; } treeview row:nth-child(even) { background-color: #ffffff; } .blackbg { - background-color: @theme_text_color; + background-color: @titlebar_fg_color; } .toggletabs { - background-color: @background_color; + background-color: inherit; + background-image: none; + color:@theme_text_color; border:none; border-radius:0px; transition:0; @@ -178,7 +183,9 @@ treeview row:nth-child(even) { background-color: #ffffff; } } .toggletabs:disabled { - background-color: @background_color; + background-color: inherit; + background-image: none; + color:@theme_base_color; border:none; border-radius:0px; transition:0; @@ -189,6 +196,8 @@ treeview row:nth-child(even) { background-color: #ffffff; } .toggletabs:checked:disabled { background:@theme_base_color; + background-image: none; + color:@theme_text_color; border-radius:0px; color:@theme_text_color; padding-top:7px; @@ -198,6 +207,7 @@ treeview row:nth-child(even) { background-color: #ffffff; } .toggletabs:checked:disabled>* { background:@theme_base_color; + background-image: none; color:@theme_text_color; opacity:1; } @@ -205,6 +215,8 @@ treeview row:nth-child(even) { background-color: #ffffff; } .toggletabs:checked:active:disabled { background:@theme_base_color; + background-image: none; + color:@theme_text_color; border-radius:0px; color:inherit; padding-top:7px; @@ -214,7 +226,9 @@ treeview row:nth-child(even) { background-color: #ffffff; } .toggletabs:disabled:active { - background-color: @theme_base_color; + background-color: inherit; + background-image: none; + color:@theme_bg_color; border:none; border-radius:0px; transition:0; @@ -224,7 +238,9 @@ treeview row:nth-child(even) { background-color: #ffffff; } opacity:1; } .toggletabs:active { - background-color: @theme_base_color; + background-color: @theme_fg_color; + background-image: none; + color:@theme_bg_color; border:none; border-radius:0px; transition:0; @@ -235,10 +251,11 @@ treeview row:nth-child(even) { background-color: #ffffff; } } .menubox { - background-color:@theme_text_color; + background-color:inherit; } .menubox *{ - color:@theme_base_color; + color:@theme_fg_color; + opacity:1; } .bggrey{ border-radius:5px; @@ -343,3 +360,32 @@ button { color:@theme_selected_fg_color; opacity: 1; } + +.greenBox > trough > progress{ + background-color: #99eaab; +} + +.redBox > trough > progress{ + background-color: #ea9999; +} + +.yellowBox > trough > progress{ + background-color: #f3f0ac; +} + +.timezoneoverlay * { + color:@theme_bg_color; + background-color: @theme_fg_color; +} + +.timezoneoverlay { + background-color: @theme_fg_color; + opacity:0.7; + border-radius:10px; +} + +.timezoneoverlay_hover { + background-color: @theme_fg_color; + opacity:0.3; + border-radius:10px; +} \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index ae65003..4e5e2d3 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -108,6 +108,8 @@ + + @@ -237,7 +239,7 @@ 999999 - 16 + 10 1 10 @@ -271,6 +273,24 @@ center com.ublinux.libublsettingsui-gtk3.pan-left-symbolic + + + + + + + + + + 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