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