diff --git a/Makefile b/Makefile
index 8ae62b1..cb110e5 100644
--- a/Makefile
+++ b/Makefile
@@ -96,12 +96,7 @@ 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}/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \
@@ -120,7 +115,7 @@ install: check uninstall
done
@for SIZE in 16 32 48; do \
install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
- rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
+ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done
@for FILE_ICON in $(wildcard icons/*/*.svg); do \
SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
@@ -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+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
- fi
+ @install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"
+ @sed -e "s+/usr/bin+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"
@if [[ -z "${DESTDIR}" ]]; then \
ldconfig -n ${DESTDIR}/usr/lib; \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
diff --git a/README.md b/README.md
index a104b78..c4ffdc0 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,48 @@
-# [UBInstall](https://ublinux.ru/)
- 
+# ubinstall-gtk
-## Описание
+## Description
+The operating system installer (UBInstall-gtk) allows you to conveniently install the operating system.
-Установщик оерационной системы UBLinux (UBInstall) позволяет в удобно установить операционную систему.
+# Build
+In order to build ubinstall-gtk you will need:
-## Установка
+- CMake
+- C compiler
+- GTK+ 3 & dependencies
+- webkit2gtk (optional)
+- timezonemap (optional)
+- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings)
+- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3)
+- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3)
-1. Скачайте репозитрий с утилитами
- ```
- $ git clone http://git.ublinux.ru:3000/UBGroup/ubinstall.git
- ```
-2. Перейдите в каталог ubinstall
- ```
- $ cd ubinstall
- ```
-3. Установите утилиту
- ```
- $ make
- ```
+Once you have all the necessary dependencies, you can use:
+```sh
+$ make
+```
-## Использование
+# Installation
+After a successful build, just use:
+```sh
+$ sudo make install clean
+```
-### Запуск
+# Uninstallation
+After a successful build, just use:
+```sh
+$ sudo make uninstall
+```
-Запуск утилиты возможен двумя способами:
-1. Терминал
+## Usage
- CLI версия:
- ```
- $ ubinstall.cli
- ```
- GTK версия
- ```
- $ ubinstall.gtk
- ```
+### Launch
-2. Ярлык
\ No newline at end of file
+The utility can be launched in two ways:
+1. Terminal
+
+```
+$ ubinstall-gtk
+```
+
+2. Shortcut
+
+
\ No newline at end of file
diff --git a/gresource.xml b/gresource.xml
index eaee9ad..4c2b01f 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -22,6 +22,7 @@
ubinstall-gtk-layouts.glade
ubinstall-gtk-keyboard-layouts.glade
ubinstall-gtk-slider.glade
+ ubinstall-gtk-package-info.glade
ubinstall-gtk.css
diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot
index 2d5eb73..cf10456 100644
--- a/locale/ubinstall-gtk.pot
+++ b/locale/ubinstall-gtk.pot
@@ -695,6 +695,10 @@ msgstr ""
msgid "Remove service"
msgstr ""
+#: source/ubl-strings.h:209
+msgid "Add application"
+msgstr ""
+
#: source/ubl-strings.h:209
msgid "is already exists. Do you really want to save user"
msgstr ""
@@ -1372,7 +1376,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 +1427,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
@@ -1821,3 +1824,1602 @@ msgid ""
"Allows system booting for diskless and standard workstations over a local "
"network or the Internet (even over slow connection channels)."
msgstr ""
+
+msgid "Generic 86-key PC"
+msgstr ""
+
+msgid "Generic 101-key PC"
+msgstr ""
+
+msgid "Generic 102-key PC"
+msgstr ""
+
+msgid "Generic 104-key PC"
+msgstr ""
+
+msgid "Generic 104-key PC with L-shaped Enter key"
+msgstr ""
+
+msgid "Generic 105-key PC"
+msgstr ""
+
+msgid "Dell 101-key PC"
+msgstr ""
+
+msgid "Abidjan"
+msgstr ""
+
+msgid "Accra"
+msgstr ""
+
+msgid "Acre"
+msgstr ""
+
+msgid "Adak"
+msgstr ""
+
+msgid "Addis_Ababa"
+msgstr ""
+
+msgid "Adelaide"
+msgstr ""
+
+msgid "Aden"
+msgstr ""
+
+msgid "Africa"
+msgstr ""
+
+msgid "Alaska"
+msgstr ""
+
+msgid "Aleutian"
+msgstr ""
+
+msgid "Algiers"
+msgstr ""
+
+msgid "Almaty"
+msgstr ""
+
+msgid "America"
+msgstr ""
+
+msgid "Amman"
+msgstr ""
+
+msgid "Amsterdam"
+msgstr ""
+
+msgid "Anadyr"
+msgstr ""
+
+msgid "Anchorage"
+msgstr ""
+
+msgid "Andorra"
+msgstr ""
+
+msgid "Anguilla"
+msgstr ""
+
+msgid "Antananarivo"
+msgstr ""
+
+msgid "Antarctica"
+msgstr ""
+
+msgid "Antigua"
+msgstr ""
+
+msgid "Apia"
+msgstr ""
+
+msgid "Aqtau"
+msgstr ""
+
+msgid "Aqtobe"
+msgstr ""
+
+msgid "Araguaina"
+msgstr ""
+
+msgid "Arctic"
+msgstr ""
+
+msgid "Arizona"
+msgstr ""
+
+msgid "Aruba"
+msgstr ""
+
+msgid "Ashgabat"
+msgstr ""
+
+msgid "Ashkhabad"
+msgstr ""
+
+msgid "Asia"
+msgstr ""
+
+msgid "Asmara"
+msgstr ""
+
+msgid "Asmera"
+msgstr ""
+
+msgid "Astrakhan"
+msgstr ""
+
+msgid "Asuncion"
+msgstr ""
+
+msgid "Athens"
+msgstr ""
+
+msgid "Atikokan"
+msgstr ""
+
+msgid "Atka"
+msgstr ""
+
+msgid "Atlantic"
+msgstr ""
+
+msgid "Atyrau"
+msgstr ""
+
+msgid "Auckland"
+msgstr ""
+
+msgid "Australia"
+msgstr ""
+
+msgid "Azores"
+msgstr ""
+
+msgid "Baghdad"
+msgstr ""
+
+msgid "Bahia"
+msgstr ""
+
+msgid "Bahia_Banderas"
+msgstr ""
+
+msgid "Bahrain"
+msgstr ""
+
+msgid "BajaNorte"
+msgstr ""
+
+msgid "BajaSur"
+msgstr ""
+
+msgid "Baku"
+msgstr ""
+
+msgid "Bamako"
+msgstr ""
+
+msgid "Bangkok"
+msgstr ""
+
+msgid "Bangui"
+msgstr ""
+
+msgid "Banjul"
+msgstr ""
+
+msgid "Barbados"
+msgstr ""
+
+msgid "Barnaul"
+msgstr ""
+
+msgid "Beirut"
+msgstr ""
+
+msgid "Belem"
+msgstr ""
+
+msgid "Belfast"
+msgstr ""
+
+msgid "Belgrade"
+msgstr ""
+
+msgid "Belize"
+msgstr ""
+
+msgid "Berlin"
+msgstr ""
+
+msgid "Bermuda"
+msgstr ""
+
+msgid "Beulah"
+msgstr ""
+
+msgid "Bishkek"
+msgstr ""
+
+msgid "Bissau"
+msgstr ""
+
+msgid "Blanc-Sablon"
+msgstr ""
+
+msgid "Blantyre"
+msgstr ""
+
+msgid "Boa_Vista"
+msgstr ""
+
+msgid "Bogota"
+msgstr ""
+
+msgid "Boise"
+msgstr ""
+
+msgid "Bougainville"
+msgstr ""
+
+msgid "Bratislava"
+msgstr ""
+
+msgid "Brazil"
+msgstr ""
+
+msgid "Brazzaville"
+msgstr ""
+
+msgid "Brisbane"
+msgstr ""
+
+msgid "Broken_Hill"
+msgstr ""
+
+msgid "Brunei"
+msgstr ""
+
+msgid "Brussels"
+msgstr ""
+
+msgid "Bucharest"
+msgstr ""
+
+msgid "Budapest"
+msgstr ""
+
+msgid "Buenos_Aires"
+msgstr ""
+
+msgid "Bujumbura"
+msgstr ""
+
+msgid "Busingen"
+msgstr ""
+
+msgid "Cairo"
+msgstr ""
+
+msgid "Calcutta"
+msgstr ""
+
+msgid "Cambridge_Bay"
+msgstr ""
+
+msgid "Campo_Grande"
+msgstr ""
+
+msgid "Canada"
+msgstr ""
+
+msgid "Canary"
+msgstr ""
+
+msgid "Canberra"
+msgstr ""
+
+msgid "Cancun"
+msgstr ""
+
+msgid "Cape_Vepde"
+msgstr ""
+
+msgid "Cape_Verde"
+msgstr ""
+
+msgid "Caracas"
+msgstr ""
+
+msgid "Casablanca"
+msgstr ""
+
+msgid "Casey"
+msgstr ""
+
+msgid "Catamarca"
+msgstr ""
+
+msgid "Cayenne"
+msgstr ""
+
+msgid "Cayman"
+msgstr ""
+
+msgid "Center"
+msgstr ""
+
+msgid "Central"
+msgstr ""
+
+msgid "Ceuta"
+msgstr ""
+
+msgid "Chagos"
+msgstr ""
+
+msgid "Chatham"
+msgstr ""
+
+msgid "Chicago"
+msgstr ""
+
+msgid "Chihuahua"
+msgstr ""
+
+msgid "Chile"
+msgstr ""
+
+msgid "Chisinau"
+msgstr ""
+
+msgid "Chita"
+msgstr ""
+
+msgid "Choibalsan"
+msgstr ""
+
+msgid "Chongqing"
+msgstr ""
+
+msgid "Christmas"
+msgstr ""
+
+msgid "Chungking"
+msgstr ""
+
+msgid "Chuuk"
+msgstr ""
+
+msgid "Ciudad_Juarez"
+msgstr ""
+
+msgid "Clock"
+msgstr ""
+
+msgid "Close"
+msgstr ""
+
+msgid "Cocos"
+msgstr ""
+
+msgid "Colombo"
+msgstr ""
+
+msgid "ComodRivadavia"
+msgstr ""
+
+msgid "Comoro"
+msgstr ""
+
+msgid "Conakry"
+msgstr ""
+
+msgid "Continental"
+msgstr ""
+
+msgid "Copenhagen"
+msgstr ""
+
+msgid "Coral_Harbour"
+msgstr ""
+
+msgid "Cordoba"
+msgstr ""
+
+msgid "Costa_Rica"
+msgstr ""
+
+msgid "Creston"
+msgstr ""
+
+msgid "Cuiaba"
+msgstr ""
+
+msgid "Curacao"
+msgstr ""
+
+msgid "Currie"
+msgstr ""
+
+msgid "Dacca"
+msgstr ""
+
+msgid "Dakar"
+msgstr ""
+
+msgid "Damascus"
+msgstr ""
+
+msgid "Danmarkshavn"
+msgstr ""
+
+msgid "Dar_es_Salaam"
+msgstr ""
+
+msgid "Darwin"
+msgstr ""
+
+msgid "Davis"
+msgstr ""
+
+msgid "Dawson"
+msgstr ""
+
+msgid "Dawson_Creek"
+msgstr ""
+
+msgid "DeNoronha"
+msgstr ""
+
+msgid "Denver"
+msgstr ""
+
+msgid "Detroit"
+msgstr ""
+
+msgid "Dhaka"
+msgstr ""
+
+msgid "Dili"
+msgstr ""
+
+msgid "Djibouti"
+msgstr ""
+
+msgid "Dominica"
+msgstr ""
+
+msgid "Douala"
+msgstr ""
+
+msgid "Dubai"
+msgstr ""
+
+msgid "Dublin"
+msgstr ""
+
+msgid "DumontDUrville"
+msgstr ""
+
+msgid "Dushanbe"
+msgstr ""
+
+msgid "ERROR"
+msgstr ""
+
+msgid "East"
+msgstr ""
+
+msgid "East-Indiana"
+msgstr ""
+
+msgid "Easter"
+msgstr ""
+
+msgid "EasterIsland"
+msgstr ""
+
+msgid "Easterlsland"
+msgstr ""
+
+msgid "Eastern"
+msgstr ""
+
+msgid "Edmonton"
+msgstr ""
+
+msgid "Efate"
+msgstr ""
+
+msgid "Eirunepe"
+msgstr ""
+
+msgid "El_Aaiun"
+msgstr ""
+
+msgid "El_Salvador"
+msgstr ""
+
+msgid "Enderbury"
+msgstr ""
+
+msgid "Ensenada"
+msgstr ""
+
+msgid "Eucla"
+msgstr ""
+
+msgid "Europe"
+msgstr ""
+
+msgid "Faeroe"
+msgstr ""
+
+msgid "Fakaofo"
+msgstr ""
+
+msgid "Famagusta"
+msgstr ""
+
+msgid "Faroe"
+msgstr ""
+
+msgid "Fiji"
+msgstr ""
+
+msgid "Fort_Nelson"
+msgstr ""
+
+msgid "Fort_Wayne"
+msgstr ""
+
+msgid "Fortaleza"
+msgstr ""
+
+msgid "Freetown"
+msgstr ""
+
+msgid "Funafuti"
+msgstr ""
+
+msgid "GMT-1"
+msgstr ""
+
+msgid "GMT-3"
+msgstr ""
+
+msgid "Gaborone"
+msgstr ""
+
+msgid "Galapagos"
+msgstr ""
+
+msgid "Gambier"
+msgstr ""
+
+msgid "Gaza"
+msgstr ""
+
+msgid "General"
+msgstr ""
+
+msgid "Gibraltar"
+msgstr ""
+
+msgid "Glace_Bay"
+msgstr ""
+
+msgid "Godthab"
+msgstr ""
+
+msgid "Goose_Bay"
+msgstr ""
+
+msgid "Grand_Turk"
+msgstr ""
+
+msgid "Greenwich"
+msgstr ""
+
+msgid "Grenada"
+msgstr ""
+
+msgid "Guadalcanal"
+msgstr ""
+
+msgid "Guadeloupe"
+msgstr ""
+
+msgid "Guam"
+msgstr ""
+
+msgid "Guatemala"
+msgstr ""
+
+msgid "Guayaquil"
+msgstr ""
+
+msgid "Guernsey"
+msgstr ""
+
+msgid "Guyana"
+msgstr ""
+
+msgid "Halifax"
+msgstr ""
+
+msgid "Harare"
+msgstr ""
+
+msgid "Harbin"
+msgstr ""
+
+msgid "Havana"
+msgstr ""
+
+msgid "Hawaii"
+msgstr ""
+
+msgid "Hebron"
+msgstr ""
+
+msgid "Helsinki"
+msgstr ""
+
+msgid "Hermosillo"
+msgstr ""
+
+msgid "Ho_Chi_Minh"
+msgstr ""
+
+msgid "Hobart"
+msgstr ""
+
+msgid "Hong_Kong"
+msgstr ""
+
+msgid "Honolulu"
+msgstr ""
+
+msgid "Hovd"
+msgstr ""
+
+msgid "Indian"
+msgstr ""
+
+msgid "Indiana"
+msgstr ""
+
+msgid "Indiana-Starke"
+msgstr ""
+
+msgid "Indianapolis"
+msgstr ""
+
+msgid "Inuvik"
+msgstr ""
+
+msgid "Iqaluit"
+msgstr ""
+
+msgid "Irkutsk"
+msgstr ""
+
+msgid "Isle_of_Man"
+msgstr ""
+
+msgid "Istanbul"
+msgstr ""
+
+msgid "Jakarta"
+msgstr ""
+
+msgid "Jamaica"
+msgstr ""
+
+msgid "Jan_Mayen"
+msgstr ""
+
+msgid "Jayapura"
+msgstr ""
+
+msgid "Jersey"
+msgstr ""
+
+msgid "Jerusalem"
+msgstr ""
+
+msgid "Johannesburg"
+msgstr ""
+
+msgid "Johnston"
+msgstr ""
+
+msgid "Juba"
+msgstr ""
+
+msgid "Jujuy"
+msgstr ""
+
+msgid "Juneau"
+msgstr ""
+
+msgid "Kabul"
+msgstr ""
+
+msgid "Kaliningrad"
+msgstr ""
+
+msgid "Kamchatka"
+msgstr ""
+
+msgid "Kampala"
+msgstr ""
+
+msgid "Kanton"
+msgstr ""
+
+msgid "Karachi"
+msgstr ""
+
+msgid "Kashgar"
+msgstr ""
+
+msgid "Kathmandu"
+msgstr ""
+
+msgid "Katmandu"
+msgstr ""
+
+msgid "Kerguelen"
+msgstr ""
+
+msgid "Khandyga"
+msgstr ""
+
+msgid "Khartoum"
+msgstr ""
+
+msgid "Kiev"
+msgstr ""
+
+msgid "Kigali"
+msgstr ""
+
+msgid "Kinshasa"
+msgstr ""
+
+msgid "Kiritimati"
+msgstr ""
+
+msgid "Kirov"
+msgstr ""
+
+msgid "Knox"
+msgstr ""
+
+msgid "Knox_IN"
+msgstr ""
+
+msgid "Kolkata"
+msgstr ""
+
+msgid "Kralendijk"
+msgstr ""
+
+msgid "Krasnoyarsk"
+msgstr ""
+
+msgid "Kuala_Lumpur"
+msgstr ""
+
+msgid "Kuching"
+msgstr ""
+
+msgid "Kuwait"
+msgstr ""
+
+msgid "Kwajalein"
+msgstr ""
+
+msgid "Kyiv"
+msgstr ""
+
+msgid "LHI"
+msgstr ""
+
+msgid "La_Paz"
+msgstr ""
+
+msgid "La_Rioja"
+msgstr ""
+
+msgid "Lagos"
+msgstr ""
+
+msgid "Libreville"
+msgstr ""
+
+msgid "Lima"
+msgstr ""
+
+msgid "Lindeman"
+msgstr ""
+
+msgid "Lisbon"
+msgstr ""
+
+msgid "Ljubljana"
+msgstr ""
+
+msgid "Lome"
+msgstr ""
+
+msgid "London"
+msgstr ""
+
+msgid "Longyearbyen"
+msgstr ""
+
+msgid "Lord_Howe"
+msgstr ""
+
+msgid "Los_Angeles"
+msgstr ""
+
+msgid "Louisville"
+msgstr ""
+
+msgid "Lower_Princes"
+msgstr ""
+
+msgid "Luanda"
+msgstr ""
+
+msgid "Lubumbashi"
+msgstr ""
+
+msgid "Lusaka"
+msgstr ""
+
+msgid "Luxembourg"
+msgstr ""
+
+msgid "Macao"
+msgstr ""
+
+msgid "Macau"
+msgstr ""
+
+msgid "Maceio"
+msgstr ""
+
+msgid "Macquarie"
+msgstr ""
+
+msgid "Madeira"
+msgstr ""
+
+msgid "Madrid"
+msgstr ""
+
+msgid "Magadan"
+msgstr ""
+
+msgid "Mahe"
+msgstr ""
+
+msgid "Majuro"
+msgstr ""
+
+msgid "Makassar"
+msgstr ""
+
+msgid "Malabo"
+msgstr ""
+
+msgid "Maldives"
+msgstr ""
+
+msgid "Malta"
+msgstr ""
+
+msgid "Managua"
+msgstr ""
+
+msgid "Manaus"
+msgstr ""
+
+msgid "Manila"
+msgstr ""
+
+msgid "Maputo"
+msgstr ""
+
+msgid "Marengo"
+msgstr ""
+
+msgid "Mariehamn"
+msgstr ""
+
+msgid "Marigot"
+msgstr ""
+
+msgid "Marquesas"
+msgstr ""
+
+msgid "Martinique"
+msgstr ""
+
+msgid "Maseru"
+msgstr ""
+
+msgid "Matamoros"
+msgstr ""
+
+msgid "Mauritius"
+msgstr ""
+
+msgid "Mawson"
+msgstr ""
+
+msgid "Mayotte"
+msgstr ""
+
+msgid "Mazatlan"
+msgstr ""
+
+msgid "Mbabane"
+msgstr ""
+
+msgid "McMurdo"
+msgstr ""
+
+msgid "Melbourne"
+msgstr ""
+
+msgid "Mendoza"
+msgstr ""
+
+msgid "Menominee"
+msgstr ""
+
+msgid "Merida"
+msgstr ""
+
+msgid "Metlakatla"
+msgstr ""
+
+msgid "Mexico"
+msgstr ""
+
+msgid "Mexico_City"
+msgstr ""
+
+msgid "Michigan"
+msgstr ""
+
+msgid "Midway"
+msgstr ""
+
+msgid "Minsk"
+msgstr ""
+
+msgid "Minutes"
+msgstr ""
+
+msgid "Miquelon"
+msgstr ""
+
+msgid "Mogadishu"
+msgstr ""
+
+msgid "Monaco"
+msgstr ""
+
+msgid "Moncton"
+msgstr ""
+
+msgid "Monrovia"
+msgstr ""
+
+msgid "Monterrey"
+msgstr ""
+
+msgid "Montevideo"
+msgstr ""
+
+msgid "Monticello"
+msgstr ""
+
+msgid "Montreal"
+msgstr ""
+
+msgid "Montserrat"
+msgstr ""
+
+msgid "Moscow"
+msgstr ""
+
+msgid "Mountain"
+msgstr ""
+
+msgid "Muscat"
+msgstr ""
+
+msgid "NSW"
+msgstr ""
+
+msgid "Nairobi"
+msgstr ""
+
+msgid "Nassau"
+msgstr ""
+
+msgid "Nauru"
+msgstr ""
+
+msgid "Ndjamena"
+msgstr ""
+
+msgid "New_Salem"
+msgstr ""
+
+msgid "New_York"
+msgstr ""
+
+msgid "Newfoundland"
+msgstr ""
+
+msgid "Niamey"
+msgstr ""
+
+msgid "Nicosia"
+msgstr ""
+
+msgid "Nipigon"
+msgstr ""
+
+msgid "Niue"
+msgstr ""
+
+msgid "Norfolk"
+msgstr ""
+
+msgid "Noronha"
+msgstr ""
+
+msgid "North"
+msgstr ""
+
+msgid "North_Dokota"
+msgstr ""
+
+msgid "Nouakchott"
+msgstr ""
+
+msgid "Noumea"
+msgstr ""
+
+msgid "Novokuznetsk"
+msgstr ""
+
+msgid "Novosibirsk"
+msgstr ""
+
+msgid "Nuuk"
+msgstr ""
+
+msgid "OK"
+msgstr ""
+
+msgid "Ojinaga"
+msgstr ""
+
+msgid "Omsk"
+msgstr ""
+
+msgid "Oral"
+msgstr ""
+
+msgid "Oslo"
+msgstr ""
+
+msgid "Ouagadougou"
+msgstr ""
+
+msgid "Pacific"
+msgstr ""
+
+msgid "Pago_Pago"
+msgstr ""
+
+msgid "Palau"
+msgstr ""
+
+msgid "Palmer"
+msgstr ""
+
+msgid "Panama"
+msgstr ""
+
+msgid "Pangnirtung"
+msgstr ""
+
+msgid "Paramaribo"
+msgstr ""
+
+msgid "Paris"
+msgstr ""
+
+msgid "Perth"
+msgstr ""
+
+msgid "Petersburg"
+msgstr ""
+
+msgid "Phnom_Penh"
+msgstr ""
+
+msgid "Phoenix"
+msgstr ""
+
+msgid "Pitcairn"
+msgstr ""
+
+msgid "Podgorica"
+msgstr ""
+
+msgid "Pohnpei"
+msgstr ""
+
+msgid "Ponape"
+msgstr ""
+
+msgid "Pontianak"
+msgstr ""
+
+msgid "Port-au-Prince"
+msgstr ""
+
+msgid "Port_Moresby"
+msgstr ""
+
+msgid "Port_of_Spain"
+msgstr ""
+
+msgid "Porto-Novo"
+msgstr ""
+
+msgid "Porto_Acre"
+msgstr ""
+
+msgid "Porto_Velho"
+msgstr ""
+
+msgid "Prague"
+msgstr ""
+
+msgid "Puerto_Rico"
+msgstr ""
+
+msgid "Punta_Arenas"
+msgstr ""
+
+msgid "Pyongyang"
+msgstr ""
+
+msgid "Qatar"
+msgstr ""
+
+msgid "Qostanay"
+msgstr ""
+
+msgid "Queensland"
+msgstr ""
+
+msgid "Qyzylorda"
+msgstr ""
+
+msgid "Rainy_River"
+msgstr ""
+
+msgid "Rangoon"
+msgstr ""
+
+msgid "Rankin_Inlet"
+msgstr ""
+
+msgid "Rarotonga"
+msgstr ""
+
+msgid "Recife"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
+msgid "Resolute"
+msgstr ""
+
+msgid "Reunion"
+msgstr ""
+
+msgid "Reykjavik"
+msgstr ""
+
+msgid "Riga"
+msgstr ""
+
+msgid "Rio_Branco"
+msgstr ""
+
+msgid "Rio_Gallegos"
+msgstr ""
+
+msgid "Riyadh"
+msgstr ""
+
+msgid "Rome"
+msgstr ""
+
+msgid "Rosario"
+msgstr ""
+
+msgid "Rothera"
+msgstr ""
+
+msgid "Saigon"
+msgstr ""
+
+msgid "Saipan"
+msgstr ""
+
+msgid "Sakhalin"
+msgstr ""
+
+msgid "Salta"
+msgstr ""
+
+msgid "Samara"
+msgstr ""
+
+msgid "Samarkand"
+msgstr ""
+
+msgid "Samoa"
+msgstr ""
+
+msgid "San_Juan"
+msgstr ""
+
+msgid "San_Luis"
+msgstr ""
+
+msgid "San_Marino"
+msgstr ""
+
+msgid "Santa_Isabel"
+msgstr ""
+
+msgid "Santarem"
+msgstr ""
+
+msgid "Santiago"
+msgstr ""
+
+msgid "Santo_Domingo"
+msgstr ""
+
+msgid "Sao_Paulo"
+msgstr ""
+
+msgid "Sao_Tome"
+msgstr ""
+
+msgid "Sarajevo"
+msgstr ""
+
+msgid "Saratov"
+msgstr ""
+
+msgid "Saskatchewan"
+msgstr ""
+
+msgid "Scoresbysund"
+msgstr ""
+
+msgid "Seoul"
+msgstr ""
+
+msgid "Shanghai"
+msgstr ""
+
+msgid "Shiprock"
+msgstr ""
+
+msgid "Simferopol"
+msgstr ""
+
+msgid "Singapore"
+msgstr ""
+
+msgid "Sitka"
+msgstr ""
+
+msgid "Skopje"
+msgstr ""
+
+msgid "Sofia"
+msgstr ""
+
+msgid "South"
+msgstr ""
+
+msgid "South_Georgia"
+msgstr ""
+
+msgid "South_Pole"
+msgstr ""
+
+msgid "Srednekolymsk"
+msgstr ""
+
+msgid "St_Barthelemy"
+msgstr ""
+
+msgid "St_Helena"
+msgstr ""
+
+msgid "St_Johns"
+msgstr ""
+
+msgid "St_Kitts"
+msgstr ""
+
+msgid "St_Lucia"
+msgstr ""
+
+msgid "St_Thomas"
+msgstr ""
+
+msgid "St_Vincent"
+msgstr ""
+
+msgid "Stanley"
+msgstr ""
+
+msgid "Stockholm"
+msgstr ""
+
+msgid "Swift_Current"
+msgstr ""
+
+msgid "Sydney"
+msgstr ""
+
+msgid "Syowa"
+msgstr ""
+
+msgid "Tahiti"
+msgstr ""
+
+msgid "Taipei"
+msgstr ""
+
+msgid "Tallinn"
+msgstr ""
+
+msgid "Tarawa"
+msgstr ""
+
+msgid "Tashkent"
+msgstr ""
+
+msgid "Tasmania"
+msgstr ""
+
+msgid "Tbilisi"
+msgstr ""
+
+msgid "Tegucigalpa"
+msgstr ""
+
+msgid "Tehran"
+msgstr ""
+
+msgid "Tel_Aviv"
+msgstr ""
+
+msgid "Tell_City"
+msgstr ""
+
+msgid "Thimbu"
+msgstr ""
+
+msgid "Thimphu"
+msgstr ""
+
+msgid "Thule"
+msgstr ""
+
+msgid "Thunder_Bay"
+msgstr ""
+
+msgid "Tijuana"
+msgstr ""
+
+msgid "Timbuktu"
+msgstr ""
+
+msgid "Tirane"
+msgstr ""
+
+msgid "Tiraspol"
+msgstr ""
+
+msgid "Tokyo"
+msgstr ""
+
+msgid "Tomsk"
+msgstr ""
+
+msgid "Tongatapu"
+msgstr ""
+
+msgid "Toronto"
+msgstr ""
+
+msgid "Tortola"
+msgstr ""
+
+msgid "Tripoli"
+msgstr ""
+
+msgid "Troll"
+msgstr ""
+
+msgid "Truk"
+msgstr ""
+
+msgid "Tucuman"
+msgstr ""
+
+msgid "Tunis"
+msgstr ""
+
+msgid "US"
+msgstr ""
+
+msgid "Ujung_Pandang"
+msgstr ""
+
+msgid "Ulaanbaatar"
+msgstr ""
+
+msgid "Ulan_Bator"
+msgstr ""
+
+msgid "Ulyanovsk"
+msgstr ""
+
+msgid "Universal"
+msgstr ""
+
+msgid "Urumqi"
+msgstr ""
+
+msgid "Ushuaia"
+msgstr ""
+
+msgid "Ust-Nera"
+msgstr ""
+
+msgid "Uzhgorod"
+msgstr ""
+
+msgid "Vaduz"
+msgstr ""
+
+msgid "Vancouver"
+msgstr ""
+
+msgid "Vatican"
+msgstr ""
+
+msgid "Vevay"
+msgstr ""
+
+msgid "Victoria"
+msgstr ""
+
+msgid "Vienna"
+msgstr ""
+
+msgid "Vientiane"
+msgstr ""
+
+msgid "Vilnius"
+msgstr ""
+
+msgid "Vincennes"
+msgstr ""
+
+msgid "Virgin"
+msgstr ""
+
+msgid "Vladivostok"
+msgstr ""
+
+msgid "Volgograd"
+msgstr ""
+
+msgid "Vostok"
+msgstr ""
+
+msgid "Wake"
+msgstr ""
+
+msgid "Wallis"
+msgstr ""
+
+msgid "Warsaw"
+msgstr ""
+
+msgid "West"
+msgstr ""
+
+msgid "Whitehorse"
+msgstr ""
+
+msgid "Winamac"
+msgstr ""
+
+msgid "Windhoek"
+msgstr ""
+
+msgid "Winnipeg"
+msgstr ""
+
+msgid "Yakutat"
+msgstr ""
+
+msgid "Yakutsk"
+msgstr ""
+
+msgid "Yancowinna"
+msgstr ""
+
+msgid "Yangon"
+msgstr ""
+
+msgid "Yap"
+msgstr ""
+
+msgid "Yekaterinburg"
+msgstr ""
+
+msgid "Yellowknife"
+msgstr ""
+
+msgid "Yerevan"
+msgstr ""
+
+msgid "Yukon"
+msgstr ""
+
+msgid "Zagreb"
+msgstr ""
+
+msgid "Zaporozhye"
+msgstr ""
+
+msgid "Zulu"
+msgstr ""
+
+msgid "Zurich"
+msgstr ""
\ No newline at end of file
diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po
index eef24fd..12e9805 100644
--- a/locale/ubinstall-gtk_ru.po
+++ b/locale/ubinstall-gtk_ru.po
@@ -724,6 +724,10 @@ msgstr "Изменить службу"
msgid "Remove service"
msgstr "Удалить службу"
+#: source/ubl-strings.h:209
+msgid "Add application"
+msgstr "Добавить приложение"
+
#: source/ubl-strings.h:209
msgid "is already exists. Do you really want to save user"
msgstr "уже существует. Вы уверены что хотите сохранить пользователя"
@@ -983,7 +987,7 @@ msgstr "Группа"
#: source/ubl-strings.h:292
msgid "Select your language:"
-msgstr "Выберете язык:"
+msgstr "Выберите язык:"
#: source/ubl-strings.h:293
msgid "Selecting additional system kernel components"
@@ -1411,8 +1415,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 +1468,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 ""
"Выбор ядер для установки в систему и выбор ядра по умолчанию. Требуется "
"доступ В Интернет."
@@ -1981,3 +1984,1800 @@ msgid ""
msgstr ""
"Позволяет загрузку системы для бездисковых и обычных рабочих станций через "
"локальную сеть или Интернет (даже используя \"слабые\" каналы связи)"
+
+msgid "Afrikaans"
+msgstr "Африканский"
+
+msgid "Arabic"
+msgstr "Арабский"
+
+msgid "Assamese"
+msgstr "Ассамский"
+
+msgid "Azerbaijani"
+msgstr "Азербайджанский"
+
+msgid "Belarusian"
+msgstr "Беларусский"
+
+msgid "Bulgarian"
+msgstr "Болгарский"
+
+msgid "Bengali"
+msgstr "Бенгальский"
+
+msgid "Bosnian"
+msgstr "Боснийский"
+
+msgid "Catalan"
+msgstr "Каталонский"
+
+msgid "Czech"
+msgstr "Чешский"
+
+msgid "Danish"
+msgstr "Датский"
+
+msgid "German"
+msgstr "Немецкий"
+
+msgid "Greek"
+msgstr "Греческий"
+
+msgid "English"
+msgstr "Английский"
+
+msgid "Spanish"
+msgstr "Испанский"
+
+msgid "Estonian"
+msgstr "Эстонский"
+
+msgid "Finnish"
+msgstr "Финский"
+
+msgid "French"
+msgstr "Французский"
+
+msgid "Gujarati"
+msgstr "Гуджаратский"
+
+msgid "Hebrew"
+msgstr "Иврит"
+
+msgid "Hindi"
+msgstr "Хинди"
+
+msgid "Croatian"
+msgstr "Хорватский"
+
+msgid "Hungarian"
+msgstr "Венгерский"
+
+msgid "Armenian"
+msgstr "Армянский"
+
+msgid "Indonesian"
+msgstr "Индонезийский"
+
+msgid "Icelandic"
+msgstr "Исландский"
+
+msgid "Italian"
+msgstr "Итальянский"
+
+msgid "Japanese"
+msgstr "Японский"
+
+msgid "Georgian"
+msgstr "Грузинский"
+
+msgid "Kazakh"
+msgstr "Казахский"
+
+msgid "Kannada"
+msgstr "Каннада"
+
+msgid "Korean"
+msgstr "Корейский"
+
+msgid "Kashmiri"
+msgstr "Кашмирский"
+
+msgid "Kurdish"
+msgstr "Курдский"
+
+msgid "Kirghiz"
+msgstr "Киргизский"
+
+msgid "Lithuanian"
+msgstr "Литовский"
+
+msgid "Latvian"
+msgstr "Латышский"
+
+msgid "Macedonian"
+msgstr "Македонский"
+
+msgid "Malayalam"
+msgstr "Малаялам"
+
+msgid "Marathi"
+msgstr "Маратхи"
+
+msgid "Malay"
+msgstr "Малайский"
+
+msgid "Maltese"
+msgstr "Мальтийский"
+
+msgid "Bokmal"
+msgstr "Букмол"
+
+msgid "Dutch"
+msgstr "Нидерландский"
+
+msgid "Nynorsk"
+msgstr "Норвежский"
+
+msgid "Oriya"
+msgstr "Ория"
+
+msgid "Punjabi"
+msgstr "Панджаби"
+
+msgid "Polish"
+msgstr "Польский"
+
+msgid "Portuguese"
+msgstr "Португальский"
+
+msgid "Romanian"
+msgstr "Румынский"
+
+msgid "Russian"
+msgstr "Русский"
+
+msgid "Sanskrit"
+msgstr "Санскрит"
+
+msgid "Slovak"
+msgstr "Словацкий"
+
+msgid "Slovenian"
+msgstr "Словенский"
+
+msgid "Albanian"
+msgstr "Албанский"
+
+msgid "Serbian"
+msgstr "Сербский"
+
+msgid "Swedish"
+msgstr "Шведский"
+
+msgid "Tamil"
+msgstr "Тамильский"
+
+msgid "Telugu"
+msgstr "Тулугу"
+
+msgid "Thai"
+msgstr "Тайский"
+
+msgid "Turkish"
+msgstr "Турецкий"
+
+msgid "Ukrainian"
+msgstr "Украинский"
+
+msgid "American"
+msgstr "Американский английский"
+
+msgid "Vietnamese"
+msgstr "Вьетнамский"
+
+msgid "Simplified Chinese"
+msgstr "Упрощённый Китайский"
+
+msgid "Chinese"
+msgstr "Китайский"
+
+msgid "Generic 86-key PC"
+msgstr "Обычная 86-клавишная"
+
+msgid "Generic 101-key PC"
+msgstr "Обычная 101-клавишная"
+
+msgid "Generic 102-key PC"
+msgstr "Обычная 102-клавишная"
+
+msgid "Generic 104-key PC"
+msgstr "Обычная 104-клавишная"
+
+msgid "Generic 104-key PC with L-shaped Enter key"
+msgstr "Обычная 104-клавишная (Enter в форме буквы L)"
+
+msgid "Generic 105-key PC"
+msgstr "Обычная 105-клавишная"
+
+msgid "Dell 101-key PC"
+msgstr "Обычная 101-клавишная"
+
+msgid "Abidjan"
+msgstr "Абиджан"
+
+msgid "Accra"
+msgstr "Аккра"
+
+msgid "Acre"
+msgstr "Акр"
+
+msgid "Adak"
+msgstr "Адак"
+
+msgid "Addis_Ababa"
+msgstr "Аддис-Абеба"
+
+msgid "Adelaide"
+msgstr "Аделаида"
+
+msgid "Aden"
+msgstr "Аден"
+
+msgid "Africa"
+msgstr "Африка"
+
+msgid "Alaska"
+msgstr "Аляска"
+
+msgid "Aleutian"
+msgstr "Алеутский"
+
+msgid "Algiers"
+msgstr "Алжир"
+
+msgid "Almaty"
+msgstr "Алматы"
+
+msgid "America"
+msgstr "Америка"
+
+msgid "Amman"
+msgstr "Амман"
+
+msgid "Amsterdam"
+msgstr "Амстердам"
+
+msgid "Anadyr"
+msgstr "Анадырь"
+
+msgid "Anchorage"
+msgstr "Анкоридж"
+
+msgid "Andorra"
+msgstr "Андорра"
+
+msgid "Anguilla"
+msgstr "Ангилья"
+
+msgid "Antananarivo"
+msgstr "Антананариву"
+
+msgid "Antarctica"
+msgstr "Антарктида"
+
+msgid "Antigua"
+msgstr "Антигуа"
+
+msgid "Apia"
+msgstr "Апиа"
+
+msgid "Aqtau"
+msgstr "Актау"
+
+msgid "Aqtobe"
+msgstr "Актобе"
+
+msgid "Araguaina"
+msgstr "Арагуайна"
+
+msgid "Arctic"
+msgstr "Арктика"
+
+msgid "Arizona"
+msgstr "Аризона"
+
+msgid "Aruba"
+msgstr "Аруба"
+
+msgid "Ashgabat"
+msgstr "Ашхабад"
+
+msgid "Ashkhabad"
+msgstr "Ашхабад"
+
+msgid "Asia"
+msgstr "Азия"
+
+msgid "Asmara"
+msgstr "Асмэра"
+
+msgid "Asmera"
+msgstr "Асмера"
+
+msgid "Astrakhan"
+msgstr "Астрахань"
+
+msgid "Asuncion"
+msgstr "Асунсьон"
+
+msgid "Athens"
+msgstr "Афины"
+
+msgid "Atikokan"
+msgstr "Атикокан"
+
+msgid "Atka"
+msgstr "Атка"
+
+msgid "Atlantic"
+msgstr "Атлантика"
+
+msgid "Atyrau"
+msgstr "Атырау"
+
+msgid "Auckland"
+msgstr "Окленд"
+
+msgid "Australia"
+msgstr "Австралия"
+
+msgid "Azores"
+msgstr "Азорские острова"
+
+msgid "Baghdad"
+msgstr "Багдад"
+
+msgid "Bahia"
+msgstr "Баия"
+
+msgid "Bahia_Banderas"
+msgstr "Баия_Бандерас"
+
+msgid "Bahrain"
+msgstr "Бахрейн"
+
+msgid "BajaNorte"
+msgstr "БахаНорте"
+
+msgid "BajaSur"
+msgstr "Южная Нижняя Калифорния"
+
+msgid "Baku"
+msgstr "Баку"
+
+msgid "Bamako"
+msgstr "Бамако"
+
+msgid "Bangkok"
+msgstr "Бангкок"
+
+msgid "Bangui"
+msgstr "Банги"
+
+msgid "Banjul"
+msgstr "Банжул"
+
+msgid "Barbados"
+msgstr "Барбадос"
+
+msgid "Barnaul"
+msgstr "Барнаул"
+
+msgid "Beirut"
+msgstr "Бейрут"
+
+msgid "Belem"
+msgstr "Белен"
+
+msgid "Belfast"
+msgstr "Белфаст"
+
+msgid "Belgrade"
+msgstr "Белград"
+
+msgid "Belize"
+msgstr "Белиз"
+
+msgid "Berlin"
+msgstr "Берлин"
+
+msgid "Bermuda"
+msgstr "Бермуды"
+
+msgid "Beulah"
+msgstr "Беула"
+
+msgid "Bishkek"
+msgstr "Бишкек"
+
+msgid "Bissau"
+msgstr "Бисау"
+
+msgid "Blanc-Sablon"
+msgstr "Блан-Саблон"
+
+msgid "Blantyre"
+msgstr "Блантайр"
+
+msgid "Boa_Vista"
+msgstr "Боа_Виста"
+
+msgid "Bogota"
+msgstr "Богота"
+
+msgid "Boise"
+msgstr "Бойсе"
+
+msgid "Bougainville"
+msgstr "Бугенвиль"
+
+msgid "Bratislava"
+msgstr "Братислава"
+
+msgid "Brazil"
+msgstr "Бразилия"
+
+msgid "Brazzaville"
+msgstr "Браззавиль"
+
+msgid "Brisbane"
+msgstr "Брисбен"
+
+msgid "Broken_Hill"
+msgstr "Брокен-Хилл"
+
+msgid "Brunei"
+msgstr "Бруней"
+
+msgid "Brussels"
+msgstr "Брюссель"
+
+msgid "Bucharest"
+msgstr "Бухарест"
+
+msgid "Budapest"
+msgstr "Будапешт"
+
+msgid "Buenos_Aires"
+msgstr "Буэнос Айрес"
+
+msgid "Bujumbura"
+msgstr "Бужумбура"
+
+msgid "Busingen"
+msgstr "Бузинген"
+
+msgid "Cairo"
+msgstr "Каир"
+
+msgid "Calcutta"
+msgstr "Калькутта"
+
+msgid "Cambridge_Bay"
+msgstr "Кембридж Бэй"
+
+msgid "Campo_Grande"
+msgstr "Кампо_Гранде"
+
+msgid "Canada"
+msgstr "Канада"
+
+msgid "Canary"
+msgstr "Канари"
+
+msgid "Canberra"
+msgstr "Канберра"
+
+msgid "Cancun"
+msgstr "Канкун"
+
+msgid "Cape_Vepde"
+msgstr "Кабо-Верде"
+
+msgid "Cape_Verde"
+msgstr "Кабо-Верде"
+
+msgid "Caracas"
+msgstr "Каракас"
+
+msgid "Casablanca"
+msgstr "Касабланка"
+
+msgid "Casey"
+msgstr "Кейси"
+
+msgid "Catamarca"
+msgstr "Катамарка"
+
+msgid "Cayenne"
+msgstr "Кайенна"
+
+msgid "Cayman"
+msgstr "Кайман"
+
+msgid "Center"
+msgstr "Центр"
+
+msgid "Central"
+msgstr "Центральный"
+
+msgid "Ceuta"
+msgstr "Сеута"
+
+msgid "Chagos"
+msgstr "Чагос"
+
+msgid "Chatham"
+msgstr "Чатем"
+
+msgid "Chicago"
+msgstr "Чикаго"
+
+msgid "Chihuahua"
+msgstr "Чихуахуа"
+
+msgid "Chile"
+msgstr "Чили"
+
+msgid "Chisinau"
+msgstr "Кишинев"
+
+msgid "Chita"
+msgstr "Чита"
+
+msgid "Choibalsan"
+msgstr "Чойбалсан"
+
+msgid "Chongqing"
+msgstr "Чунцин"
+
+msgid "Christmas"
+msgstr "Рождество"
+
+msgid "Chungking"
+msgstr "Чунцин"
+
+msgid "Chuuk"
+msgstr "Чуук"
+
+msgid "Ciudad_Juarez"
+msgstr "Сьюдад_Хуарес"
+
+msgid "Clock"
+msgstr "Часы"
+
+msgid "Close"
+msgstr "Закрыть"
+
+msgid "Cocos"
+msgstr "Кокос"
+
+msgid "Colombo"
+msgstr "Коломбо"
+
+msgid "ComodRivadavia"
+msgstr "Комодоро-Ривадавия"
+
+msgid "Comoro"
+msgstr "Коморо"
+
+msgid "Conakry"
+msgstr "Конакри"
+
+msgid "Continental"
+msgstr "Континентальный"
+
+msgid "Copenhagen"
+msgstr "Копенгаген"
+
+msgid "Coral_Harbour"
+msgstr "Корал Харбор"
+
+msgid "Cordoba"
+msgstr "Кордова"
+
+msgid "Costa_Rica"
+msgstr "Коста_Рика"
+
+msgid "Creston"
+msgstr "Крестон"
+
+msgid "Cuiaba"
+msgstr "Куяба"
+
+msgid "Curacao"
+msgstr "Кюрасао"
+
+msgid "Currie"
+msgstr "Карри"
+
+msgid "Dacca"
+msgstr "Дакка"
+
+msgid "Dakar"
+msgstr "Дакар"
+
+msgid "Damascus"
+msgstr "Дамаск"
+
+msgid "Danmarkshavn"
+msgstr "Данмарксхавн"
+
+msgid "Dar_es_Salaam"
+msgstr "Дар-эс-Салам"
+
+msgid "Darwin"
+msgstr "Дарвин"
+
+msgid "Davis"
+msgstr "Дэвис"
+
+msgid "Dawson"
+msgstr "Доусон"
+
+msgid "Dawson_Creek"
+msgstr "Доусон Крик"
+
+msgid "DeNoronha"
+msgstr "Фернанду-ди-Норонья"
+
+msgid "Denver"
+msgstr "Денвер"
+
+msgid "Detroit"
+msgstr "Детройт"
+
+msgid "Dhaka"
+msgstr "Дакка"
+
+msgid "Dili"
+msgstr "Дили"
+
+msgid "Djibouti"
+msgstr "Джибути"
+
+msgid "Dominica"
+msgstr "Доминика"
+
+msgid "Douala"
+msgstr "Дуала"
+
+msgid "Dubai"
+msgstr "Дубай"
+
+msgid "Dublin"
+msgstr "Дублин"
+
+msgid "DumontDUrville"
+msgstr "Дюмон-д-Юрвиль"
+
+msgid "Dushanbe"
+msgstr "Душанбе"
+
+msgid "ERROR"
+msgstr "ОШИБКА"
+
+msgid "East"
+msgstr "Восток"
+
+msgid "East-Indiana"
+msgstr "Восточная Индиана"
+
+msgid "Easter"
+msgstr "Пасха"
+
+msgid "EasterIsland"
+msgstr "Остров Пасхи"
+
+msgid "Easterlsland"
+msgstr "Остров Пасхи"
+
+msgid "Eastern"
+msgstr "Восточный"
+
+msgid "Edmonton"
+msgstr "Эдмонтон"
+
+msgid "Efate"
+msgstr "Эфате"
+
+msgid "Eirunepe"
+msgstr "Эйрунепе"
+
+msgid "El_Aaiun"
+msgstr "Эль_Аайун"
+
+msgid "El_Salvador"
+msgstr "Сальвадор"
+
+msgid "Enderbury"
+msgstr "Эндербери"
+
+msgid "Ensenada"
+msgstr "Энсенада"
+
+msgid "Eucla"
+msgstr "Евкла"
+
+msgid "Europe"
+msgstr "Европа"
+
+msgid "Faeroe"
+msgstr "Фарерские острова"
+
+msgid "Fakaofo"
+msgstr "Факаофо"
+
+msgid "Famagusta"
+msgstr "Фамагуста"
+
+msgid "Faroe"
+msgstr "Фарерские острова"
+
+msgid "Fiji"
+msgstr "Фиджи"
+
+msgid "Fort_Nelson"
+msgstr "Форт Нельсон"
+
+msgid "Fort_Wayne"
+msgstr "Форт_Уэйн"
+
+msgid "Fortaleza"
+msgstr "Форталеза"
+
+msgid "Freetown"
+msgstr "Фритаун"
+
+msgid "Funafuti"
+msgstr "Фунафути"
+
+msgid "GMT-1"
+msgstr "ГМТ-1"
+
+msgid "GMT-3"
+msgstr "ГМТ-3"
+
+msgid "Gaborone"
+msgstr "Габороне"
+
+msgid "Galapagos"
+msgstr "Галапагос"
+
+msgid "Gambier"
+msgstr "Гамбье"
+
+msgid "Gaza"
+msgstr "Газа"
+
+msgid "General"
+msgstr "Генерал-Сантос"
+
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+msgid "Glace_Bay"
+msgstr "Глейс-Бей"
+
+msgid "Godthab"
+msgstr "Годтаб"
+
+msgid "Goose_Bay"
+msgstr "Гуз-Бей"
+
+msgid "Grand_Turk"
+msgstr "Гранд_Турк"
+
+msgid "Greenwich"
+msgstr "Гринвич"
+
+msgid "Grenada"
+msgstr "Гренада"
+
+msgid "Guadalcanal"
+msgstr "Гуадалканал"
+
+msgid "Guadeloupe"
+msgstr "Гваделупа"
+
+msgid "Guam"
+msgstr "Гуам"
+
+msgid "Guatemala"
+msgstr "Гватемала"
+
+msgid "Guayaquil"
+msgstr "Гуаякиль"
+
+msgid "Guernsey"
+msgstr "Гернси"
+
+msgid "Guyana"
+msgstr "Гайана"
+
+msgid "Halifax"
+msgstr "Галифакс"
+
+msgid "Harare"
+msgstr "Хараре"
+
+msgid "Harbin"
+msgstr "Харбин"
+
+msgid "Havana"
+msgstr "Гавана"
+
+msgid "Hawaii"
+msgstr "Гавайи"
+
+msgid "Hebron"
+msgstr "Хеврон"
+
+msgid "Helsinki"
+msgstr "Хельсинки"
+
+msgid "Hermosillo"
+msgstr "Эрмосильо"
+
+msgid "Ho_Chi_Minh"
+msgstr "Хо_Чи_Мин"
+
+msgid "Hobart"
+msgstr "Хобарт"
+
+msgid "Hong_Kong"
+msgstr "Гонконг"
+
+msgid "Honolulu"
+msgstr "Гонолулу"
+
+msgid "Hovd"
+msgstr "Ховд"
+
+msgid "Indian"
+msgstr "Индиана"
+
+msgid "Indiana"
+msgstr "Индианан"
+
+msgid "Indiana-Starke"
+msgstr "Индиана-Старке"
+
+msgid "Indianapolis"
+msgstr "Индианаполис"
+
+msgid "Inuvik"
+msgstr "Инувик"
+
+msgid "Iqaluit"
+msgstr "Икалуит"
+
+msgid "Irkutsk"
+msgstr "Иркутск"
+
+msgid "Isle_of_Man"
+msgstr "Остров Мэн"
+
+msgid "Istanbul"
+msgstr "Стамбул"
+
+msgid "Jakarta"
+msgstr "Джакарта"
+
+msgid "Jamaica"
+msgstr "Ямайка"
+
+msgid "Jan_Mayen"
+msgstr "Ян_Майен"
+
+msgid "Jayapura"
+msgstr "Джаяпура"
+
+msgid "Jersey"
+msgstr "Джерси"
+
+msgid "Jerusalem"
+msgstr "Иерусалим"
+
+msgid "Johannesburg"
+msgstr "Йоханнесбург"
+
+msgid "Johnston"
+msgstr "Джонстон"
+
+msgid "Juba"
+msgstr "Джуба"
+
+msgid "Jujuy"
+msgstr "Жужуй"
+
+msgid "Juneau"
+msgstr "Джуно"
+
+msgid "Kabul"
+msgstr "Кабул"
+
+msgid "Kaliningrad"
+msgstr "Калининград"
+
+msgid "Kamchatka"
+msgstr "Камчатка"
+
+msgid "Kampala"
+msgstr "Кампала"
+
+msgid "Kanton"
+msgstr "Кантон"
+
+msgid "Karachi"
+msgstr "Карачи"
+
+msgid "Kashgar"
+msgstr "Кашгар"
+
+msgid "Kathmandu"
+msgstr "Катманду"
+
+msgid "Katmandu"
+msgstr "Катманду"
+
+msgid "Kerguelen"
+msgstr "Кергелен"
+
+msgid "Khandyga"
+msgstr "Хандыга"
+
+msgid "Khartoum"
+msgstr "Хартум"
+
+msgid "Kiev"
+msgstr "Киев"
+
+msgid "Kigali"
+msgstr "Кигали"
+
+msgid "Kinshasa"
+msgstr "Киншаса"
+
+msgid "Kiritimati"
+msgstr "Киритимати"
+
+msgid "Kirov"
+msgstr "Киров"
+
+msgid "Knox"
+msgstr "Ноксвилл"
+
+msgid "Knox_IN"
+msgstr "Нокс_IN"
+
+msgid "Kolkata"
+msgstr "Калькутта"
+
+msgid "Kralendijk"
+msgstr "Кралендейк"
+
+msgid "Krasnoyarsk"
+msgstr "Красноярск"
+
+msgid "Kuala_Lumpur"
+msgstr "Куала-Лумпур"
+
+msgid "Kuching"
+msgstr "Кучинг"
+
+msgid "Kuwait"
+msgstr "Кувейт"
+
+msgid "Kwajalein"
+msgstr "Кваджалейн"
+
+msgid "Kyiv"
+msgstr "Киев"
+
+msgid "LHI"
+msgstr "Лхи"
+
+msgid "La_Paz"
+msgstr "Ла_Пас"
+
+msgid "La_Rioja"
+msgstr "Риоха"
+
+msgid "Lagos"
+msgstr "Лагос"
+
+msgid "Libreville"
+msgstr "Либревиль"
+
+msgid "Lima"
+msgstr "Лима"
+
+msgid "Lindeman"
+msgstr "Линдеман"
+
+msgid "Lisbon"
+msgstr "Лиссабон"
+
+msgid "Ljubljana"
+msgstr "Любляна"
+
+msgid "Lome"
+msgstr "Ломе"
+
+msgid "London"
+msgstr "Лондон"
+
+msgid "Longyearbyen"
+msgstr "Лонгйир"
+
+msgid "Lord_Howe"
+msgstr "Лорд_Хау"
+
+msgid "Los_Angeles"
+msgstr "Лос-Анджелес"
+
+msgid "Louisville"
+msgstr "Луисвилл"
+
+msgid "Lower_Princes"
+msgstr "Лоуэр-Принс-Куотер"
+
+msgid "Luanda"
+msgstr "Луанда"
+
+msgid "Lubumbashi"
+msgstr "Лубумбаши"
+
+msgid "Lusaka"
+msgstr "Лусака"
+
+msgid "Luxembourg"
+msgstr "Люксембург"
+
+msgid "Macao"
+msgstr "Макао"
+
+msgid "Macau"
+msgstr "Макао"
+
+msgid "Maceio"
+msgstr "Масейо"
+
+msgid "Macquarie"
+msgstr "Маккуори"
+
+msgid "Madeira"
+msgstr "Мадейра"
+
+msgid "Madrid"
+msgstr "Мадрид"
+
+msgid "Magadan"
+msgstr "Магадан"
+
+msgid "Mahe"
+msgstr "Маэ"
+
+msgid "Majuro"
+msgstr "Маджуро"
+
+msgid "Makassar"
+msgstr "Макассар"
+
+msgid "Malabo"
+msgstr "Малабо"
+
+msgid "Maldives"
+msgstr "Мальдивы"
+
+msgid "Malta"
+msgstr "Мальта"
+
+msgid "Managua"
+msgstr "Манагуа"
+
+msgid "Manaus"
+msgstr "Манаус"
+
+msgid "Manila"
+msgstr "Манила"
+
+msgid "Maputo"
+msgstr "Мапуту"
+
+msgid "Marengo"
+msgstr "Маренго"
+
+msgid "Mariehamn"
+msgstr "Мариехамн"
+
+msgid "Marigot"
+msgstr "Мариго"
+
+msgid "Marquesas"
+msgstr "Маркизские острова"
+
+msgid "Martinique"
+msgstr "Мартиника"
+
+msgid "Maseru"
+msgstr "Масеру"
+
+msgid "Matamoros"
+msgstr "Матаморос"
+
+msgid "Mauritius"
+msgstr "Маврикий"
+
+msgid "Mawson"
+msgstr "Моусон"
+
+msgid "Mayotte"
+msgstr "Майотта"
+
+msgid "Mazatlan"
+msgstr "Масатлан"
+
+msgid "Mbabane"
+msgstr "Мбабане"
+
+msgid "McMurdo"
+msgstr "МакМердо"
+
+msgid "Melbourne"
+msgstr "Мельбурн"
+
+msgid "Mendoza"
+msgstr "Мендоса"
+
+msgid "Menominee"
+msgstr "Меномини"
+
+msgid "Merida"
+msgstr "Мерида"
+
+msgid "Metlakatla"
+msgstr "Метлакатла"
+
+msgid "Mexico"
+msgstr "Мексика"
+
+msgid "Mexico_City"
+msgstr "Мехико"
+
+msgid "Michigan"
+msgstr "Мичиган"
+
+msgid "Midway"
+msgstr "Мидуэй"
+
+msgid "Minsk"
+msgstr "Минск"
+
+msgid "Minutes"
+msgstr "Минуты"
+
+msgid "Miquelon"
+msgstr "Микелон"
+
+msgid "Mogadishu"
+msgstr "Могадишо"
+
+msgid "Monaco"
+msgstr "Монако"
+
+msgid "Moncton"
+msgstr "Монктон"
+
+msgid "Monrovia"
+msgstr "Монровия"
+
+msgid "Monterrey"
+msgstr "Монтеррей"
+
+msgid "Montevideo"
+msgstr "Монтевидео"
+
+msgid "Monticello"
+msgstr "Монтиселло"
+
+msgid "Montreal"
+msgstr "Монреаль"
+
+msgid "Montserrat"
+msgstr "Монтсеррат"
+
+msgid "Moscow"
+msgstr "Москва"
+
+msgid "Mountain"
+msgstr "Маунтин-Вью"
+
+msgid "Muscat"
+msgstr "Мускат"
+
+msgid "NSW"
+msgstr "Новый Южный Уэльс"
+
+msgid "Nairobi"
+msgstr "Найроби"
+
+msgid "Nassau"
+msgstr "Нассау"
+
+msgid "Nauru"
+msgstr "Науру"
+
+msgid "Ndjamena"
+msgstr "Нджамена"
+
+msgid "New_Salem"
+msgstr "Нью-Салем"
+
+msgid "New_York"
+msgstr "Нью-Йорк"
+
+msgid "Newfoundland"
+msgstr "Ньюфаундленд"
+
+msgid "Niamey"
+msgstr "Ниамей"
+
+msgid "Nicosia"
+msgstr "Никосия"
+
+msgid "Nipigon"
+msgstr "Нипигон"
+
+msgid "Niue"
+msgstr "Ниуэ"
+
+msgid "Norfolk"
+msgstr "Норфолк"
+
+msgid "Noronha"
+msgstr "Норонья"
+
+msgid "North"
+msgstr "Север"
+
+msgid "North_Dokota"
+msgstr "Северная Докота"
+
+msgid "Nouakchott"
+msgstr "Нуакшот"
+
+msgid "Noumea"
+msgstr "Нумеа"
+
+msgid "Novokuznetsk"
+msgstr "Новокузнецк"
+
+msgid "Novosibirsk"
+msgstr "Новосибирск"
+
+msgid "Nuuk"
+msgstr "Нуук"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Ojinaga"
+msgstr "Охинага"
+
+msgid "Omsk"
+msgstr "Омск"
+
+msgid "Oral"
+msgstr "Уральск"
+
+msgid "Oslo"
+msgstr "Осло"
+
+msgid "Ouagadougou"
+msgstr "Уагадугу"
+
+msgid "Pacific"
+msgstr "Тихий океан"
+
+msgid "Pago_Pago"
+msgstr "Паго_Паго"
+
+msgid "Palau"
+msgstr "Палау"
+
+msgid "Palmer"
+msgstr "Палмер"
+
+msgid "Panama"
+msgstr "Панама"
+
+msgid "Pangnirtung"
+msgstr "Пангниртунг"
+
+msgid "Paramaribo"
+msgstr "Парамарибо"
+
+msgid "Paris"
+msgstr "Париж"
+
+msgid "Perth"
+msgstr "Перт"
+
+msgid "Petersburg"
+msgstr "Петербург"
+
+msgid "Phnom_Penh"
+msgstr "Пномпень"
+
+msgid "Phoenix"
+msgstr "Феникс"
+
+msgid "Pitcairn"
+msgstr "Питкэрн"
+
+msgid "Podgorica"
+msgstr "Подгорица"
+
+msgid "Pohnpei"
+msgstr "Понпеи"
+
+msgid "Ponape"
+msgstr "Понапе"
+
+msgid "Pontianak"
+msgstr "Понтианак"
+
+msgid "Port-au-Prince"
+msgstr "Порт-о-Пренс"
+
+msgid "Port_Moresby"
+msgstr "Порт_Морсби"
+
+msgid "Port_of_Spain"
+msgstr "Порт-оф-Спейн"
+
+msgid "Porto-Novo"
+msgstr "Порто-Ново"
+
+msgid "Porto_Acre"
+msgstr "Порту_Акр"
+
+msgid "Porto_Velho"
+msgstr "Порту-Велью"
+
+msgid "Prague"
+msgstr "Прага"
+
+msgid "Puerto_Rico"
+msgstr "Пуэрто-Рико"
+
+msgid "Punta_Arenas"
+msgstr "Пунта_Аренас"
+
+msgid "Pyongyang"
+msgstr "Пхеньян"
+
+msgid "Qatar"
+msgstr "Катар"
+
+msgid "Qostanay"
+msgstr "Костанай"
+
+msgid "Queensland"
+msgstr "Квинсленд"
+
+msgid "Qyzylorda"
+msgstr "Кызылорда"
+
+msgid "Rainy_River"
+msgstr "Рейни-Ривер"
+
+msgid "Rangoon"
+msgstr "Рангун"
+
+msgid "Rankin_Inlet"
+msgstr "Ранкин-Инлет"
+
+msgid "Rarotonga"
+msgstr "Раротонга"
+
+msgid "Recife"
+msgstr "Ресифи"
+
+msgid "Regina"
+msgstr "Реджайна"
+
+msgid "Resolute"
+msgstr "Резольют"
+
+msgid "Reunion"
+msgstr "Воссоединение"
+
+msgid "Reykjavik"
+msgstr "Рейкьявик"
+
+msgid "Riga"
+msgstr "Рига"
+
+msgid "Rio_Branco"
+msgstr "Рио_Бранко"
+
+msgid "Rio_Gallegos"
+msgstr "Рио-Гальегос"
+
+msgid "Riyadh"
+msgstr "Эр-Рияд"
+
+msgid "Rome"
+msgstr "Рим"
+
+msgid "Rosario"
+msgstr "Росарио"
+
+msgid "Rothera"
+msgstr "Ротера"
+
+msgid "Saigon"
+msgstr "Сайгон"
+
+msgid "Saipan"
+msgstr "Сайпан"
+
+msgid "Sakhalin"
+msgstr "Сахалин"
+
+msgid "Salta"
+msgstr "Сальта"
+
+msgid "Samara"
+msgstr "Самара"
+
+msgid "Samarkand"
+msgstr "Самарканд"
+
+msgid "Samoa"
+msgstr "Самоа"
+
+msgid "San_Juan"
+msgstr "Сан-Хуан"
+
+msgid "San_Luis"
+msgstr "Сан-Луис"
+
+msgid "San_Marino"
+msgstr "Сан Марино"
+
+msgid "Santa_Isabel"
+msgstr "Санта_Изабель"
+
+msgid "Santarem"
+msgstr "Сантарен"
+
+msgid "Santiago"
+msgstr "Сантьяго"
+
+msgid "Santo_Domingo"
+msgstr "Санто-Доминго"
+
+msgid "Sao_Paulo"
+msgstr "Сан-Паулу"
+
+msgid "Sao_Tome"
+msgstr "Сан-Томе"
+
+msgid "Sarajevo"
+msgstr "Сараево"
+
+msgid "Saratov"
+msgstr "Саратов"
+
+msgid "Saskatchewan"
+msgstr "Саскачеван"
+
+msgid "Scoresbysund"
+msgstr "Скорсби"
+
+msgid "Seoul"
+msgstr "Сеул"
+
+msgid "Shanghai"
+msgstr "Шанхай"
+
+msgid "Shiprock"
+msgstr "Шипрок"
+
+msgid "Simferopol"
+msgstr "Симферополь"
+
+msgid "Singapore"
+msgstr "Сингапур"
+
+msgid "Sitka"
+msgstr "Ситка"
+
+msgid "Skopje"
+msgstr "Скопье"
+
+msgid "Sofia"
+msgstr "София"
+
+msgid "South"
+msgstr "Саутф"
+
+msgid "South_Georgia"
+msgstr "Южная Грузия"
+
+msgid "South_Pole"
+msgstr "Южный полюс"
+
+msgid "Srednekolymsk"
+msgstr "Среднеколымск"
+
+msgid "St_Barthelemy"
+msgstr "Святой Бартелеми"
+
+msgid "St_Helena"
+msgstr "Сент-Хелина"
+
+msgid "St_Johns"
+msgstr "Сент-Джонс"
+
+msgid "St_Kitts"
+msgstr "Сент-Китс"
+
+msgid "St_Lucia"
+msgstr "Святая Люсия"
+
+msgid "St_Thomas"
+msgstr "Сент-Томас"
+
+msgid "St_Vincent"
+msgstr "Сент-Винсент"
+
+msgid "Stanley"
+msgstr "Стэнли"
+
+msgid "Stockholm"
+msgstr "Стокгольм"
+
+msgid "Swift_Current"
+msgstr "Суифт-Каррент"
+
+msgid "Sydney"
+msgstr "Сидней"
+
+msgid "Syowa"
+msgstr "Сёва"
+
+msgid "Tahiti"
+msgstr "Таити"
+
+msgid "Taipei"
+msgstr "Тайбэй"
+
+msgid "Tallinn"
+msgstr "Таллинн"
+
+msgid "Tarawa"
+msgstr "Тарава"
+
+msgid "Tashkent"
+msgstr "Ташкент"
+
+msgid "Tasmania"
+msgstr "Тасмания"
+
+msgid "Tbilisi"
+msgstr "Тбилиси"
+
+msgid "Tegucigalpa"
+msgstr "Тегусигальпа"
+
+msgid "Tehran"
+msgstr "Тегеран"
+
+msgid "Tel_Aviv"
+msgstr "Тель-Авив"
+
+msgid "Tell_City"
+msgstr "Телл-Сити"
+
+msgid "Thimbu"
+msgstr "Тимбу"
+
+msgid "Thimphu"
+msgstr "Тхимпху"
+
+msgid "Thule"
+msgstr "Туле"
+
+msgid "Thunder_Bay"
+msgstr "Тандер-Бей"
+
+msgid "Tijuana"
+msgstr "Тихуана"
+
+msgid "Timbuktu"
+msgstr "Тимбукту"
+
+msgid "Tirane"
+msgstr "Тиран"
+
+msgid "Tiraspol"
+msgstr "Тирасполь"
+
+msgid "Tokyo"
+msgstr "Токио"
+
+msgid "Tomsk"
+msgstr "Томск"
+
+msgid "Tongatapu"
+msgstr "Тонгатапу"
+
+msgid "Toronto"
+msgstr "Торонто"
+
+msgid "Tortola"
+msgstr "Тортола"
+
+msgid "Tripoli"
+msgstr "Триполи"
+
+msgid "Troll"
+msgstr "Тролль"
+
+msgid "Truk"
+msgstr "Трук"
+
+msgid "Tucuman"
+msgstr "Тукуман"
+
+msgid "Tunis"
+msgstr "Тунис"
+
+msgid "US"
+msgstr "США"
+
+msgid "Ujung_Pandang"
+msgstr "Уджунг_Панданг"
+
+msgid "Ulaanbaatar"
+msgstr "Улан-Батор"
+
+msgid "Ulan_Bator"
+msgstr "Улан_Батор"
+
+msgid "Ulyanovsk"
+msgstr "Ульяновск"
+
+msgid "Universal"
+msgstr "Юнивёрсал-Сити"
+
+msgid "Urumqi"
+msgstr "Урумчи"
+
+msgid "Ushuaia"
+msgstr "Ушуая"
+
+msgid "Ust-Nera"
+msgstr "Усть-Нера"
+
+msgid "Uzhgorod"
+msgstr "Ужгород"
+
+msgid "Vaduz"
+msgstr "Вадуц"
+
+msgid "Vancouver"
+msgstr "Ванкувер"
+
+msgid "Vatican"
+msgstr "Ватикан"
+
+msgid "Vevay"
+msgstr "Вевей"
+
+msgid "Victoria"
+msgstr "Виктория"
+
+msgid "Vienna"
+msgstr "Вена"
+
+msgid "Vientiane"
+msgstr "Вьентьян"
+
+msgid "Vilnius"
+msgstr "Вильнюс"
+
+msgid "Vincennes"
+msgstr "Венсен"
+
+msgid "Virgin"
+msgstr "Виргин"
+
+msgid "Vladivostok"
+msgstr "Владивосток"
+
+msgid "Volgograd"
+msgstr "Волгоград"
+
+msgid "Vostok"
+msgstr "Восток"
+
+msgid "Wake"
+msgstr "Уэйко"
+
+msgid "Wallis"
+msgstr "Уоллис"
+
+msgid "Warsaw"
+msgstr "Варшава"
+
+msgid "West"
+msgstr "Запад"
+
+msgid "Whitehorse"
+msgstr "Уайтхорс"
+
+msgid "Winamac"
+msgstr "Винамаке"
+
+msgid "Windhoek"
+msgstr "Виндхук"
+
+msgid "Winnipeg"
+msgstr "Виннипег"
+
+msgid "Yakutat"
+msgstr "Якутат"
+
+msgid "Yakutsk"
+msgstr "Якутск"
+
+msgid "Yancowinna"
+msgstr "Янковина"
+
+msgid "Yangon"
+msgstr "Янгон"
+
+msgid "Yap"
+msgstr "Яп"
+
+msgid "Yekaterinburg"
+msgstr "Екатеринбург"
+
+msgid "Yellowknife"
+msgstr "Йеллоунайф"
+
+msgid "Yerevan"
+msgstr "Ереван"
+
+msgid "Yukon"
+msgstr "Юкон"
+
+msgid "Zagreb"
+msgstr "Загреб"
+
+msgid "Zaporozhye"
+msgstr "Запорожье"
+
+msgid "Zulu"
+msgstr "Зулу"
+
+msgid "Zurich"
+msgstr "Цюрих"
\ No newline at end of file
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index b017925..67cb78a 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -8,11 +8,6 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
-pkg_check_modules(VTE291 REQUIRED vte-2.91)
-include_directories(${VTE291_INCLUDE_DIRS})
-link_directories(${VTE291_LIBRARY_DIRS})
-add_definitions(${VTE291_CFLAGS_OTHER})
-
pkg_check_modules(JSON REQUIRED json-c)
include_directories(${JSON_INCLUDE_DIRS})
link_directories(${JSON_LIBRARY_DIRS})
@@ -23,17 +18,27 @@ 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)
@@ -62,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
@@ -104,7 +110,7 @@ add_custom_target(
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)
-add_definitions(-DVTE_INCLUDE)
+# add_definitions(-DVTE_INCLUDE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \
@@ -143,6 +149,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
)
@@ -154,6 +161,7 @@ set(LIBRARIES
${VTE291_LIBRARIES}
${JSON_LIBRARIES}
${PWQUALITY_LIBRARIES}
+ ${TIMEZONEMAP_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3
diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c
index ff47380..65f7229 100644
--- a/source/ubinstall-gtk-bootloader.c
+++ b/source/ubinstall-gtk-bootloader.c
@@ -164,7 +164,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"))){
diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c
index 36483b1..0f6034d 100644
--- a/source/ubinstall-gtk-components.c
+++ b/source/ubinstall-gtk-components.c
@@ -52,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){
@@ -124,7 +124,7 @@ gboolean yon_os_component_insert(struct row_data *row_input){
gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1);
yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description);
char *modules = config(modules_parameter);
- if (yon_char_is_empty(modules)){
+ if (yon_char_is_empty(modules)||yon_char_check_element(modules,row_input->name,",")||!strcmp(modules,"auto")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1);
}
return G_SOURCE_REMOVE;
diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c
index 61415eb..0edfcb5 100644
--- a/source/ubinstall-gtk-config-hub.c
+++ b/source/ubinstall-gtk-config-hub.c
@@ -140,7 +140,7 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE);
- char *name_wrapped = yon_char_wrap_to_length_str(name,10);
+ char *name_wrapped = yon_char_wrap_to_length_str(name,30);
cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
cur_icon->Label = gtk_label_new(name_wrapped);
cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
@@ -153,10 +153,6 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum
gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox);
gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0);
gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0);
- gtk_widget_set_margin_bottom(cur_icon->MainBox,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_flow_box_insert(target,flow,-1);
gtk_widget_show_all(flow);
free(name_wrapped);
diff --git a/source/ubinstall-gtk-configuration-mode.c b/source/ubinstall-gtk-configuration-mode.c
index b40197e..79eff78 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);
}
diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c
index 4babcb8..f199159 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,",")){
@@ -258,17 +286,24 @@ void on_kernel_addon_info(GtkLabel *self){
GtkWidget *label = NULL;
config_str info = yon_config_load(get_package_info_command(package),&size);
if (size!=-1){
- char *final_text = yon_char_parsed_to_string(info,size,"");
- label = gtk_label_new(final_text);
- gtk_widget_show(label);
- gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0);
- free(final_text);
+ info_element *element = yon_package_info_element_new();
+ gtk_box_pack_start(GTK_BOX(window->MainBox),element->MainBox,1,1,0);
+ for (int i=0;iInfoList,&iter);
+ gtk_list_store_set(element->InfoList,&iter,0,parsed[0],1,parsed[1],-1);
+
+ }
} else {
label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL);
+ yon_gtk_label_set_font(GTK_LABEL(label));
gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0);
- }
gtk_label_set_xalign(GTK_LABEL(label),0);
+ }
gtk_widget_show(window->Window);
}
diff --git a/source/ubinstall-gtk-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-page-switch.c b/source/ubinstall-gtk-page-switch.c
index cc7948f..053c0d8 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);
@@ -152,6 +179,11 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
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))){
+ gtk_widget_show(widgets->StartScenarioButton);
+ } else {
+ gtk_widget_hide(widgets->StartScenarioButton);
+ }
break;
default:
gtk_widget_set_sensitive(widgets->BackButton,1);
@@ -385,6 +417,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:
+ set_locales_list(widgets);
+ break;
case YON_PAGE_CONFIG_HUB:
yon_configuration_hub_init(widgets);
break;
@@ -477,40 +512,57 @@ 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);
- 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);
+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:
+ 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_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_WELCOME);
+ 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;
}
- yon_page_update(widgets);
- main_config.save_done=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.install_thread=0;
}
}
diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c
index 1870f43..cbb8b4c 100644
--- a/source/ubinstall-gtk-region.c
+++ b/source/ubinstall-gtk-region.c
@@ -1,4 +1,7 @@
#include "ubinstall-gtk.h"
+ #ifdef TIMEZONEMAP_INCLUDE
+#include "timezonemap/cc-timezone-map.h"
+#endif
int yon_region_save(main_window *widgets){
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){
@@ -18,6 +21,19 @@ int yon_region_save(main_window *widgets){
return 1;
}
+ #ifdef TIMEZONEMAP_INCLUDE
+void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *);
+void on_zone_changed(GtkWidget *, main_window *widgets){
+ g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
+
+ const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
+ const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
+ char *timezone = yon_char_unite(region,"/",zone,NULL);
+ cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone);
+ g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
+}
+ #endif
+
void on_region_changed(GtkComboBox *self, main_window *widgets){
char *active = (char*)gtk_combo_box_get_active_id(self);
active = yon_char_append("/usr/share/zoneinfo/",active);
@@ -34,7 +50,41 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
free(active);
}
+ #ifdef TIMEZONEMAP_INCLUDE
+void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){
+ if (!location) return;
+ g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
+ char *zone = yon_char_new(cc_timezone_location_get_zone(location));
+ char *timezone = yon_char_divide_search(zone,"/",-1);
+ gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone);
+ while(gtk_events_pending()) gtk_main_iteration();
+ gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone);
+ g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
+
+}
+#endif
+
void yon_region_init(main_window *widgets){
+ #ifdef TIMEZONEMAP_INCLUDE
+ yon_debug_output("%s\n","TIMEZONEMAP enabled");
+ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox));
+ if (list){
+ GList *iter;
+ for (iter = list; iter; iter=iter->next){
+ gtk_widget_destroy(iter->data);
+ }
+ g_list_free(list);
+ }
+ widgets->RegionMapTarget = GTK_WIDGET(cc_timezone_map_new());
+ gtk_box_pack_start(GTK_BOX(widgets->RegionMapBox),GTK_WIDGET(widgets->RegionMapTarget),1,1,0);
+ g_signal_connect(G_OBJECT(widgets->RegionMapTarget),"location-changed",G_CALLBACK(on_map_selection_changed),widgets);
+ gtk_widget_show(GTK_WIDGET(widgets->RegionMapTarget));
+ char *config_param = config(zone_parameter);
+ if (!yon_char_is_empty(config_param)){
+ cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),config_param);
+ // cc_timezone_map_set_location(CC_TIMEZONE_MAP(widgets->RegionMapTarget),lon, lat);
+ }
+ #endif
int size;
config_str parsed = NULL;
parsed = yon_dir_get_contents(zone_path,&size);
diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c
index 13bfc11..a469abd 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,17 +51,19 @@ 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 *){
+void on_config_custom_load(GtkWidget *,main_window *widgets){
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 *){
+void on_config_custom_load_last(GtkWidget *,main_window *widgets){
yon_config_clean();
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
@@ -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);
@@ -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..3ae0a4a 100644
--- a/source/ubinstall-gtk-startup-apps.c
+++ b/source/ubinstall-gtk-startup-apps.c
@@ -34,9 +34,9 @@ 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);
}
}
}
@@ -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..4bfb3ca 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){
diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c
new file mode 100644
index 0000000..79e0184
--- /dev/null
+++ b/source/ubinstall-gtk-ui-lang.c
@@ -0,0 +1,213 @@
+#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;
+ 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);
+ g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets);
+ if (!system(command)){};
+ yon_main_window_update_locale(widgets);
+ g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
+ 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_config_register(lang_parameter,lang_parameter_command,parsed[1]);
+ }
+ if (size>2&&!yon_char_is_empty(parsed[2])&&strcmp(parsed[2],"(null)\n")){
+ yon_char_remove_last_symbol(parsed[2],'\n');
+ free(yon_char_divide_search(parsed[2],"=",-1));
+ yon_config_register(SYSTEM_LANG_parameter,SYSTEM_LANG_parameter_command,parsed[2]);
+ }
+ }
+}
+
+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);
+
+ gtk_widget_destroy(widgets->MainWindow);
+ textdomain(LocaleName);
+ g_setenv("LANGUAGE",locale,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);
+}
+
+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);
+}
+
+gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){
+ char *language, *language_localised;
+ gtk_tree_model_get(model,iter,1,&language,4,&language_localised,-1);
+ if (strstr(language,key)||strstr(language_localised,key)){
+ return 0;
+ }
+ return 1;
+}
+
+void set_locales_list(main_window *widgets){
+ gtk_list_store_clear(widgets->InstallerLanguageList);
+ gtk_list_store_clear(widgets->InstallerCountryList);
+
+ char *config_code = yon_char_new(config(installer_locale_parameter));
+ int size;
+ config_str locales = yon_locale_get_all_codes(&size);
+ qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
+ 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);
+ 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])){
+ 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;
+
+}
\ No newline at end of file
diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c
index 3da0add..850f300 100644
--- a/source/ubinstall-gtk-users.c
+++ b/source/ubinstall-gtk-users.c
@@ -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);
@@ -146,6 +146,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 244f342..b8e855d 100644
--- a/source/ubinstall-gtk.c
+++ b/source/ubinstall-gtk.c
@@ -100,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;
@@ -355,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;
@@ -410,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 *){
@@ -429,183 +376,29 @@ 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);
- 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);
- }
- }
- 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){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
@@ -771,6 +564,8 @@ void yon_main_window_create(main_window *widgets){
widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter"));
widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList"));
// widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
+ widgets->RegionMapBox=yon_gtk_builder_get_widget(builder,"RegionMapBox");
+ widgets->RegionMapTarget=NULL;
widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo");
widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch");
@@ -954,9 +749,13 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets);
+ #ifdef TIMEZONEMAP_INCLUDE
g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(on_zone_changed),widgets);
+ #endif
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo);
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo);
+ g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionMapBox);
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);
@@ -987,17 +786,18 @@ void yon_main_window_create(main_window *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->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);
@@ -1076,6 +876,8 @@ void yon_main_window_create(main_window *widgets){
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL);
+ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL);
+
{
widgets->EnableRDPMenuItem = gtk_menu_item_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
@@ -1133,6 +935,7 @@ void yon_main_window_create(main_window *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));
@@ -1151,13 +954,18 @@ void yon_main_window_create(main_window *widgets){
gtk_widget_hide(widgets->StartScenarioButton);
}
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 {
+ gtk_main_quit();
+ exit (1);
+ }
}
yon_locale_init();
set_locales_list(widgets);
@@ -1181,22 +989,30 @@ void *yon_maximize(main_window *widgets){
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
main_window *yon_main_window_complete(){
+ if (main_config.force_ini){
+ 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));
memset(widgets,0,sizeof(main_window));
+ yon_startup_language_init();
yon_main_window_create(widgets);
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
// yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow");
return widgets;
}
-int main(int argc, char *argv[]){
+int main(int argc, char *argv[]){
__attribute__((unused)) char *locale = setlocale(LC_ALL, "");
- textdomain (LocaleName);
+ 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);
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
index 8f05d2e..35857e6 100755
--- a/source/ubinstall-gtk.h
+++ b/source/ubinstall-gtk.h
@@ -12,7 +12,7 @@
#include
#include
#include
-#ifdef WEBKIT_FOUND
+#ifdef WEBKIT_INCLUDE
#include
#endif
#include "ubl-strings.h"
@@ -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,11 +256,15 @@ 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 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)
#define set_user_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ", parameters, ";nice ubinstall2 autoconfig", NULL)
@@ -280,9 +286,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 +299,7 @@ layout && /description:/ {\
#define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\""
-#define get_package_info_command(target) yon_char_append("pacman -Si ", target)
+#define get_package_info_command(target) yon_char_unite("pacman -Si ", target,"| sed 's/ */ /g'",NULL)
#define layouts_command "sed -En '/^! layout$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
#define layouts_variant_command "sed -En '/^! variant$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+([^ :]+):[[:blank:]]+(.*)/\\2|\\1|\\3/p' /usr/share/X11/xkb/rules/evdev.lst"
@@ -490,6 +496,10 @@ typedef struct
GtkListStore *InstallerLanguageList;
GtkTreeModel *InstallerCountryFilter;
// GtkWidget *LanguageCombo;
+
+ GtkWidget *RegionMapBox;
+ GtkWidget *RegionMapTarget;
+ GtkWidget *RegionSensitiveSwitch;
GtkWidget *RegionCombo;
GtkWidget *ZoneCombo;
@@ -634,7 +644,6 @@ typedef struct
GtkTreeModel *LanguagesFilter;
GtkTreeModel *LayoutsFilter;
- GtkWidget *RegionSensitiveSwitch;
GtkWidget *HostnameSensitiveSwitch;
GtkWidget *KernelListBox;
@@ -1027,13 +1036,7 @@ typedef struct
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *AutoSwitch;
- GtkWidget *TypeCombo;
- GtkWidget *PathEntry;
- GtkWidget *DeviceCombo;
- GtkWidget *PathButton;
- GtkWidget *AddButton;
GtkWidget *AddBox;
- dictionary *sources;
} source_window;
typedef struct
@@ -1044,6 +1047,7 @@ typedef struct
GtkWidget *DeviceCombo;
GtkWidget *PathButton;
GtkWidget *RemoveButton;
+ GtkWidget *AddButton;
} source_element;
@@ -1167,6 +1171,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);
@@ -1182,6 +1187,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);
@@ -1280,7 +1288,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();
@@ -1337,7 +1345,6 @@ void on_source_accept(GtkWidget *, source_window *window);
void on_source_choose(GtkWidget *self);
void on_source_remove(GtkWidget *, source_element *element);
void on_source_add(GtkWidget *, source_window *window);
-void yon_source_update(source_window *window);
void yon_source_element_add(char *key, void *, source_window *window);
source_element *yon_source_element_new();
void on_rdp_toggled(GtkWidget *self, main_window *);
@@ -1455,4 +1462,10 @@ void on_menu_chosen(GtkWidget *, GtkListBoxRow* row, yon_menu_window *window);
gboolean yon_locale_window_load(language_window *window);
void yon_os_password_open(GtkWidget *, main_window *widgets);
void yon_userdata_password_open(GtkWidget *, main_window *widgets);
-double yon_password_check_func(yon_password_window *window, const char *password_string);
\ No newline at end of file
+double yon_password_check_func(yon_password_window *window, const char *password_string);
+void yon_source_update(source_window *window);
+void yon_main_window_update_locale(main_window *widgets);
+gboolean yon_progress_bar_start(main_window *widgets);
+void *yon_progress_file_buzyfy(void*);
+void yon_startup_language_init();
+gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets);
\ No newline at end of file
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index f092e64..0b67ee3 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -187,6 +187,9 @@ NULL)
#define SERVICE_ADD_TITLE_LABEL _("Add service")
#define SERVICE_EDIT_TITLE_LABEL _("Edit service")
#define SERVICE_REMOVE_TITLE_LABEL _("Remove service")
+#define APPLICATIONS_ADD_TITLE_LABEL _("Add application")
+#define APPLICATIONS_EDIT_TITLE_LABEL _("Edit application")
+#define APPLICATIONS_REMOVE_TITLE_LABEL _("Remove application")
#define BOOTLOADER_USER_EXIST_LABEL(target) yon_char_unite(_("User")," ", target," ", _("is already exists. Do you really want to save user")," ",target,"?",NULL)
#define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL)
@@ -378,7 +381,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")
@@ -391,7 +394,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")
diff --git a/ubinstall-gtk-advanced-box.glade b/ubinstall-gtk-advanced-box.glade
index 61f8d64..3ab7989 100644
--- a/ubinstall-gtk-advanced-box.glade
+++ b/ubinstall-gtk-advanced-box.glade
@@ -206,33 +206,45 @@
-
-
- False
- True
- 1
-
-
-
-
@@ -245,7 +257,7 @@
False
True
- 3
+ 4
@@ -253,39 +265,12 @@
True
True
-
- False
- True
- 4
-
-
-
-
- True
- False
- File system type:
-
False
True
5
-
-
- True
- False
- 0
-
- - Default
-
-
-
- False
- True
- 6
-
-
False
@@ -299,10 +284,10 @@
False
5
-
+
True
False
- File system label:
+ Encryption:
0
@@ -312,9 +297,13 @@
-
+
True
- True
+ False
+ 0
+
+ - Off
+
False
@@ -323,11 +312,10 @@
-
+
True
False
- Encryption:
- 0
+ Encryption password:
False
@@ -336,13 +324,39 @@
-
+
True
False
- 0
-
- - Off
-
+ 5
+
+
+ True
+ False
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+ True
+ image4
+
+
+
+ False
+ True
+ 1
+
+
False
@@ -350,52 +364,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 +454,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 @@
@@ -802,7 +805,8 @@ agreement
@@ -878,7 +882,6 @@ agreement
-
@@ -946,7 +949,7 @@ agreement
True
False
- 32
+ 24
com.ublinux.ubinstall-gtk.translation-symbolic
@@ -961,7 +964,7 @@ agreement
False
Select your language:
-
+
@@ -1123,7 +1126,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.license
0
@@ -1417,7 +1420,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-common
@@ -1496,7 +1499,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-near
@@ -1575,7 +1578,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-part
@@ -1654,7 +1657,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-advanced
@@ -1733,7 +1736,7 @@ agreement
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-recovery
@@ -2158,7 +2161,7 @@ agreement
True
False
48
- /com/ublinux/images/install_type_data_only_normal.png
+ com.ublinux.libublsettingsui-gtk3.settings-symbolic
0
@@ -3640,7 +3643,6 @@ agreement
True
False
center
- 10
5
@@ -3743,6 +3745,32 @@ agreement
False
True
+ end
+ 0
+
+
+
+
+ True
+ False
+ 0
+ none
+ 35.299999237060547
+
+
+ True
+ False
+ False
+ vertical
+
+
+
+
+
+
+
+ True
+ True
0
@@ -3754,12 +3782,13 @@ agreement
False
True
+ end
1
- False
+ True
True
3
@@ -7372,7 +7401,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-common
0
@@ -7856,7 +7885,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-near
0
@@ -8566,7 +8595,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-part
0
@@ -9202,7 +9231,7 @@ or continue working in the system Live environment.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-advanced
0
@@ -9306,6 +9335,7 @@ separately into the selected partition.
True
True
+ never
True
@@ -10276,7 +10306,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-recovery
0
@@ -10390,7 +10420,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub
@@ -10468,7 +10498,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub-update
@@ -10546,7 +10576,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-system
@@ -10624,7 +10654,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-user
@@ -10743,7 +10773,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub
0
@@ -11155,7 +11185,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-grub-update
0
@@ -11243,6 +11273,7 @@ separately into the selected partition.
True
True
+ never
True
@@ -11560,7 +11591,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-system
0
@@ -11648,6 +11679,7 @@ separately into the selected partition.
True
True
+ never
True
@@ -12028,7 +12060,7 @@ separately into the selected partition.
vertical
5
-
+
True
False
5
@@ -12091,7 +12123,7 @@ separately into the selected partition.
True
False
Partition label:
- 0.30000001192092896
+ 0
False
@@ -12105,7 +12137,7 @@ separately into the selected partition.
True
- True
+ False
True
3
@@ -12140,11 +12172,6 @@ separately into the selected partition.
True
False
-
- True
- False
- 5
-
True
False
@@ -12156,10 +12183,12 @@ separately into the selected partition.
+
+
False
True
- 0
+ 1
@@ -12172,16 +12201,7 @@ separately into the selected partition.
False
True
- 1
-
-
-
-
-
-
- False
- True
- 1
+ 2
@@ -12190,9 +12210,9 @@ separately into the selected partition.
True
- True
+ False
True
- 2
+ 3
@@ -12212,6 +12232,7 @@ separately into the selected partition.
True
False
Encryption:
+ 0
False
@@ -12220,11 +12241,6 @@ separately into the selected partition.
-
- True
- False
- 5
-
True
False
@@ -12233,41 +12249,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
@@ -12283,7 +12298,14 @@ separately into the selected partition.
False
True
- 4
+ 1
+
+
+
+
+ False
+ True
+ 5
@@ -12378,7 +12400,7 @@ separately into the selected partition.
True
False
- 64
+ 48
com.ublinux.ubinstall-gtk.install-user
0
@@ -12857,7 +12879,7 @@ separately into the selected partition.
True
False
Size:
- 1
+ 0
False
@@ -12927,7 +12949,7 @@ separately into the selected partition.
True
- True
+ False
True
4
@@ -12949,7 +12971,7 @@ separately into the selected partition.
True
False
File system type:
- 1
+ 0
False
@@ -12958,11 +12980,6 @@ separately into the selected partition.
-
- True
- False
- 5
-
True
False
@@ -12977,7 +12994,7 @@ separately into the selected partition.
False
True
- 0
+ 1
@@ -12990,13 +13007,6 @@ separately into the selected partition.
False
True
- 1
-
-
-
-
- False
- True
3
@@ -13006,7 +13016,7 @@ separately into the selected partition.
True
- True
+ False
True
4
@@ -13028,7 +13038,7 @@ separately into the selected partition.
True
False
Encryption:
- 1
+ 0
False
@@ -13055,26 +13065,32 @@ 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
False
@@ -13084,7 +13100,7 @@ separately into the selected partition.
True
True
- 4
+ 0
@@ -13100,7 +13116,14 @@ separately into the selected partition.
False
True
- 5
+ 1
+
+
+
+
+ False
+ True
+ 3
@@ -13386,7 +13409,7 @@ separately into the selected partition.
- Start installation scenario
+ Install according to the script
True
True
image27
@@ -13394,6 +13417,7 @@ separately into the selected partition.
False
True
+ end
0
@@ -13520,6 +13544,27 @@ separately into the selected partition.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -13532,17 +13577,18 @@ separately into the selected partition.
-
-
-
-
-
+
+
-
+
-
-
+
+
+
+
+
+