diff --git a/gresource.xml b/gresource.xml
index 022eda4..8cfa3cf 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -56,7 +56,6 @@
kernel-list-addon.csv
services-list.csv
network-list.csv
- languages.csv
filesystems-format-list.csv
\ No newline at end of file
diff --git a/languages.csv b/languages.csv
deleted file mode 100644
index 7e96286..0000000
--- a/languages.csv
+++ /dev/null
@@ -1,66 +0,0 @@
-LANG;LANG_NAME
-af_ZA.UTF-8;Afrikaans
-ar_AE.UTF-8;Arabic
-as_IN.UTF-8;Assamese
-az_AZ.UTF-8;Azerbaijani
-be_BY.UTF-8;Belarusian
-bg_BG.UTF-8;Bulgarian
-bn_IN.UTF-8;Bengali
-bs_BA.UTF-8;Bosnian
-ca_ES.UTF-8;Catalan
-cs_CZ.UTF-8;Czech
-da_DK.UTF-8;Danish
-de_DE.UTF-8;German
-el_GR.UTF-8;Greek
-en_GB.UTF-8;English
-es_ES.UTF-8;Spanish
-et_EE.UTF-8;Estonian
-fi_FI.UTF-8;Finnish
-fr_FR.UTF-8;French
-gu_IN.UTF-8;Gujarati
-he_IL.UTF-8;Hebrew
-hi_IN.UTF-8;Hindi
-hr_HR.UTF-8;Croatian
-hu_HU.UTF-8;Hungarian
-hy_AM.UTF-8;Armenian
-id_ID.UTF-8;Indonesian
-is_IS.UTF-8;Icelandic
-it_IT.UTF-8;Italian
-ja_JP.UTF-8;Japanese
-ka_GE.UTF-8;Georgian
-kk_KZ.UTF-8;Kazakh
-kn_IN.UTF-8;Kannada
-ko_KR.UTF-8;Korean
-ks_IN.UTF-8;Kashmiri
-ku_TR.UTF-8;Kurdish
-ky_KG.UTF-8;Kirghiz
-lt_LT.UTF-8;Lithuanian
-lv_LV.UTF-8;Latvian
-mk_MK.UTF-8;Macedonian
-ml_IN.UTF-8;Malayalam
-mr_IN.UTF-8;Marathi
-ms_MY.UTF-8;Malay
-mt_MT.UTF-8;Maltese
-nb_NO.UTF-8;Bokmal
-nl_NL.UTF-8;Dutch
-nn_NO.UTF-8;Nynorsk
-or_IN.UTF-8;Oriya
-pa_IN.UTF-8;Punjabi
-pl_PL.UTF-8;Polish
-pt_PT.UTF-8;Portuguese
-ro_RO.UTF-8;Romanian
-ru_RU.UTF-8;Russian
-sa_IN.UTF-8;Sanskrit
-sk_SK.UTF-8;Slovak
-sl_SI.UTF-8;Slovenian
-sq_AL.UTF-8;Albanian
-sr_ME.UTF-8;Serbian
-sr_RS.UTF-8;Serbian
-sv_SE.UTF-8;Swedish
-ta_IN.UTF-8;Tamil
-te_IN.UTF-8;Telugu
-th_TH.UTF-8;Thai
-tr_TR.UTF-8;Turkish
-uk_UA.UTF-8;Ukrainian
-vi_VN.UTF-8;Vietnamese
-zh_CN.UTF-8;Simplified Chinese
\ No newline at end of file
diff --git a/locale/locales.pot b/locale/locales.pot
deleted file mode 100644
index f3ed5d1..0000000
--- a/locale/locales.pot
+++ /dev/null
@@ -1,515 +0,0 @@
-#: ./locales.csv:1
-msgid "Afrikaans, South Africa"
-msgstr ""
-
-#: ./locales.csv:2
-msgid "Arabic, United Arab Emirates"
-msgstr ""
-
-#: ./locales.csv:3
-msgid "Arabic, Bahrain"
-msgstr ""
-
-#: ./locales.csv:4
-msgid "Arabic, Algeria"
-msgstr ""
-
-#: ./locales.csv:5
-msgid "Arabic, Egypt"
-msgstr ""
-
-#: ./locales.csv:6
-msgid "Arabic, Iraq"
-msgstr ""
-
-#: ./locales.csv:7
-msgid "Arabic, Jordan"
-msgstr ""
-
-#: ./locales.csv:8
-msgid "Arabic, Kuwait"
-msgstr ""
-
-#: ./locales.csv:9
-msgid "Arabic, Libya"
-msgstr ""
-
-#: ./locales.csv:10
-msgid "Arabic, Morocco"
-msgstr ""
-
-#: ./locales.csv:11
-msgid "Arabic, Oman"
-msgstr ""
-
-#: ./locales.csv:12
-msgid "Arabic, Qatar"
-msgstr ""
-
-#: ./locales.csv:13
-msgid "Arabic, Saudi Arabia"
-msgstr ""
-
-#: ./locales.csv:14
-msgid "Arabic, Tunisia"
-msgstr ""
-
-#: ./locales.csv:15
-msgid "Arabic, Yemen"
-msgstr ""
-
-#: ./locales.csv:16
-msgid "Assamese, India"
-msgstr ""
-
-#: ./locales.csv:17
-msgid "Azerbaijani, Azerbaijan"
-msgstr ""
-
-#: ./locales.csv:18
-msgid "Belarusian, Belarus"
-msgstr ""
-
-#: ./locales.csv:19
-msgid "Bulgarian, Bulgaria"
-msgstr ""
-
-#: ./locales.csv:20
-msgid "Bengali, India"
-msgstr ""
-
-#: ./locales.csv:21
-msgid "Bosnian, Bosnia and Herzegovina"
-msgstr ""
-
-#: ./locales.csv:22
-msgid "Catalan, Spain"
-msgstr ""
-
-#: ./locales.csv:23
-msgid "Czech, Czech Republic"
-msgstr ""
-
-#: ./locales.csv:24
-msgid "Danish, Denmark"
-msgstr ""
-
-#: ./locales.csv:25
-msgid "German, Austria"
-msgstr ""
-
-#: ./locales.csv:26
-msgid "German, Belgium"
-msgstr ""
-
-#: ./locales.csv:27
-msgid "German, Switzerland"
-msgstr ""
-
-#: ./locales.csv:28
-msgid "German, Germany"
-msgstr ""
-
-#: ./locales.csv:29
-msgid "German, Liechtenstein"
-msgstr ""
-
-#: ./locales.csv:30
-msgid "German, Luxembourg"
-msgstr ""
-
-#: ./locales.csv:31
-msgid "Greek, Cyprus"
-msgstr ""
-
-#: ./locales.csv:32
-msgid "Greek, Greece"
-msgstr ""
-
-#: ./locales.csv:33
-msgid "English, Australia"
-msgstr ""
-
-#: ./locales.csv:34
-msgid "English, Botswana"
-msgstr ""
-
-#: ./locales.csv:35
-msgid "English, Canada"
-msgstr ""
-
-#: ./locales.csv:36
-msgid "English, United Kingdom"
-msgstr ""
-
-#: ./locales.csv:37
-msgid "English, Hong Kong SAR China"
-msgstr ""
-
-#: ./locales.csv:38
-msgid "English, Ireland"
-msgstr ""
-
-#: ./locales.csv:39
-msgid "English, India"
-msgstr ""
-
-#: ./locales.csv:40
-msgid "English, Malta"
-msgstr ""
-
-#: ./locales.csv:41
-msgid "English, New Zealand"
-msgstr ""
-
-#: ./locales.csv:42
-msgid "English, Philippines"
-msgstr ""
-
-#: ./locales.csv:43
-msgid "English, Singapore"
-msgstr ""
-
-#: ./locales.csv:44
-msgid "English, U.S.A."
-msgstr ""
-
-#: ./locales.csv:45
-msgid "English, Zimbabwe"
-msgstr ""
-
-#: ./locales.csv:46
-msgid "Spanish, Argentina"
-msgstr ""
-
-#: ./locales.csv:47
-msgid "Spanish, Bolivia"
-msgstr ""
-
-#: ./locales.csv:48
-msgid "Spanish, Chile"
-msgstr ""
-
-#: ./locales.csv:49
-msgid "Spanish, Colombia"
-msgstr ""
-
-#: ./locales.csv:50
-msgid "Spanish, Costa Rica"
-msgstr ""
-
-#: ./locales.csv:51
-msgid "Spanish, Dominican Republic"
-msgstr ""
-
-#: ./locales.csv:52
-msgid "Spanish, Ecuador"
-msgstr ""
-
-#: ./locales.csv:53
-msgid "Spanish, Spain"
-msgstr ""
-
-#: ./locales.csv:54
-msgid "Spanish, Guatemala"
-msgstr ""
-
-#: ./locales.csv:55
-msgid "Spanish, Honduras"
-msgstr ""
-
-#: ./locales.csv:56
-msgid "Spanish, Mexico"
-msgstr ""
-
-#: ./locales.csv:57
-msgid "Spanish, Nicaragua"
-msgstr ""
-
-#: ./locales.csv:58
-msgid "Spanish, Panama"
-msgstr ""
-
-#: ./locales.csv:59
-msgid "Spanish, Peru"
-msgstr ""
-
-#: ./locales.csv:60
-msgid "Spanish, Puerto Rico"
-msgstr ""
-
-#: ./locales.csv:61
-msgid "Spanish, Paraguay"
-msgstr ""
-
-#: ./locales.csv:62
-msgid "Spanish, El Salvador"
-msgstr ""
-
-#: ./locales.csv:63
-msgid "Spanish, U.S.A."
-msgstr ""
-
-#: ./locales.csv:64
-msgid "Spanish, Uruguay"
-msgstr ""
-
-#: ./locales.csv:65
-msgid "Spanish, Venezuela"
-msgstr ""
-
-#: ./locales.csv:66
-msgid "Estonian, Estonia"
-msgstr ""
-
-#: ./locales.csv:67
-msgid "Finnish, Finland"
-msgstr ""
-
-#: ./locales.csv:68
-msgid "French, Belgium"
-msgstr ""
-
-#: ./locales.csv:69
-msgid "French, Canada"
-msgstr ""
-
-#: ./locales.csv:70
-msgid "French, Switzerland"
-msgstr ""
-
-#: ./locales.csv:71
-msgid "French, France"
-msgstr ""
-
-#: ./locales.csv:72
-msgid "French, Luxembourg"
-msgstr ""
-
-#: ./locales.csv:73
-msgid "Gujarati, India"
-msgstr ""
-
-#: ./locales.csv:74
-msgid "Hebrew, Israel"
-msgstr ""
-
-#: ./locales.csv:75
-msgid "Hindi, India"
-msgstr ""
-
-#: ./locales.csv:76
-msgid "Croatian, Croatia"
-msgstr ""
-
-#: ./locales.csv:77
-msgid "Hungarian, Hungary"
-msgstr ""
-
-#: ./locales.csv:78
-msgid "Armenian, Armenia"
-msgstr ""
-
-#: ./locales.csv:79
-msgid "Indonesian, Indonesia"
-msgstr ""
-
-#: ./locales.csv:80
-msgid "Icelandic, Iceland"
-msgstr ""
-
-#: ./locales.csv:81
-msgid "Italian, Switzerla"
-msgstr ""
-
-#: ./locales.csv:82
-msgid "Italian, Italy"
-msgstr ""
-
-#: ./locales.csv:83
-msgid "Japanese, Japan"
-msgstr ""
-
-#: ./locales.csv:84
-msgid "Georgian, Georgia"
-msgstr ""
-
-#: ./locales.csv:85
-msgid "Kazakh, Kazakhstan"
-msgstr ""
-
-#: ./locales.csv:86
-msgid "Kannada, India"
-msgstr ""
-
-#: ./locales.csv:87
-msgid "Korean, Korea"
-msgstr ""
-
-#: ./locales.csv:88
-msgid "Kashmiri, India"
-msgstr ""
-
-#: ./locales.csv:89
-msgid "Kurdish, Turkey"
-msgstr ""
-
-#: ./locales.csv:90
-msgid "Kurdish (Sorani), Turkey"
-msgstr ""
-
-#: ./locales.csv:91
-msgid "Kirghiz, Kyrgyzstan"
-msgstr ""
-
-#: ./locales.csv:92
-msgid "Lithuanian, Lithuania"
-msgstr ""
-
-#: ./locales.csv:93
-msgid "Latvian, Latvia"
-msgstr ""
-
-#: ./locales.csv:94
-msgid "Macedonian, Macedonia"
-msgstr ""
-
-#: ./locales.csv:95
-msgid "Malayalam, India"
-msgstr ""
-
-#: ./locales.csv:96
-msgid "Marathi, India"
-msgstr ""
-
-#: ./locales.csv:97
-msgid "Malay, Malaysia"
-msgstr ""
-
-#: ./locales.csv:98
-msgid "Maltese, Malta"
-msgstr ""
-
-#: ./locales.csv:99
-msgid "Bokmal, Norway"
-msgstr ""
-
-#: ./locales.csv:100
-msgid "Dutch, Belgium"
-msgstr ""
-
-#: ./locales.csv:101
-msgid "Dutch, Netherlands"
-msgstr ""
-
-#: ./locales.csv:102
-msgid "Nynorsk, Norway"
-msgstr ""
-
-#: ./locales.csv:103
-msgid "Oriya, India"
-msgstr ""
-
-#: ./locales.csv:104
-msgid "Punjabi, India"
-msgstr ""
-
-#: ./locales.csv:105
-msgid "Polish, Poland"
-msgstr ""
-
-#: ./locales.csv:106
-msgid "Portuguese, Brazil"
-msgstr ""
-
-#: ./locales.csv:107
-msgid "Portuguese, Portugal"
-msgstr ""
-
-#: ./locales.csv:108
-msgid "Romanian, Romania"
-msgstr ""
-
-#: ./locales.csv:109
-msgid "Russian, Russia"
-msgstr ""
-
-#: ./locales.csv:110
-msgid "Russian, Ukraine"
-msgstr ""
-
-#: ./locales.csv:111
-msgid "Sanskrit, India"
-msgstr ""
-
-#: ./locales.csv:112
-msgid "Slovak, Slovakia"
-msgstr ""
-
-#: ./locales.csv:113
-msgid "Slovenian, Slovenia"
-msgstr ""
-
-#: ./locales.csv:114
-msgid "Albanian, Albania"
-msgstr ""
-
-#: ./locales.csv:115
-msgid "Serbian, Montenegro"
-msgstr ""
-
-#: ./locales.csv:116
-msgid "Serbian, Montenegro (Latin)"
-msgstr ""
-
-#: ./locales.csv:117
-msgid "Serbian, Serbia"
-msgstr ""
-
-#: ./locales.csv:118
-msgid "Serbian, Serbia (Latin)"
-msgstr ""
-
-#: ./locales.csv:119
-msgid "Swedish, Sweden"
-msgstr ""
-
-#: ./locales.csv:120
-msgid "Tamil, India"
-msgstr ""
-
-#: ./locales.csv:121
-msgid "Telugu, India"
-msgstr ""
-
-#: ./locales.csv:122
-msgid "Thai, Thailand"
-msgstr ""
-
-#: ./locales.csv:123
-msgid "Turkish, Turkey"
-msgstr ""
-
-#: ./locales.csv:124
-msgid "Ukrainian, Ukraine"
-msgstr ""
-
-#: ./locales.csv:125
-msgid "Vietnamese, Vietnam"
-msgstr ""
-
-#: ./locales.csv:126
-msgid "Simplified Chinese, China"
-msgstr ""
-
-#: ./locales.csv:127
-msgid "Traditional Chinese, Hong Kong SAR China"
-msgstr ""
-
-#: ./locales.csv:128
-msgid "Chinese, Singapore"
-msgstr ""
-
-#: ./locales.csv:129
-msgid "Traditional Chinese, Taiwan"
-msgstr ""
diff --git a/locale/locales_ru.po b/locale/locales_ru.po
deleted file mode 100644
index 34a7601..0000000
--- a/locale/locales_ru.po
+++ /dev/null
@@ -1,534 +0,0 @@
-# Language translations for ubinstal package.
-# Copyright (C) 2022, UBTech LLC
-# This file is distributed under the same license as the ubinstal package.
-# UBLinux Team , 2022
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ubinstal 1.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-22 16:12+0600\n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ./locales.csv:1
-msgid "Afrikaans, South Africa"
-msgstr "Африкаанс, Южная Африка"
-
-#: ./locales.csv:2
-msgid "Arabic, United Arab Emirates"
-msgstr "Арабский, Объединенные Арабские Эмираты"
-
-#: ./locales.csv:3
-msgid "Arabic, Bahrain"
-msgstr "Арабский, Бахрейн"
-
-#: ./locales.csv:4
-msgid "Arabic, Algeria"
-msgstr "Арабский, Алжир"
-
-#: ./locales.csv:5
-msgid "Arabic, Egypt"
-msgstr "Арабский, Египет"
-
-#: ./locales.csv:6
-msgid "Arabic, Iraq"
-msgstr "Арабский, Ирак"
-
-#: ./locales.csv:7
-msgid "Arabic, Jordan"
-msgstr "Арабский, Иордания"
-
-#: ./locales.csv:8
-msgid "Arabic, Kuwait"
-msgstr "Арабский, Кувейт"
-
-#: ./locales.csv:9
-msgid "Arabic, Libya"
-msgstr "Арабский, Ливия"
-
-#: ./locales.csv:10
-msgid "Arabic, Morocco"
-msgstr "Арабский, Марокко"
-
-#: ./locales.csv:11
-msgid "Arabic, Oman"
-msgstr "Арабский, Оман"
-
-#: ./locales.csv:12
-msgid "Arabic, Qatar"
-msgstr "Арабский, Катар"
-
-#: ./locales.csv:13
-msgid "Arabic, Saudi Arabia"
-msgstr "Арабский, Саудовская Аравия"
-
-#: ./locales.csv:14
-msgid "Arabic, Tunisia"
-msgstr "Арабский, Тунис"
-
-#: ./locales.csv:15
-msgid "Arabic, Yemen"
-msgstr "Арабский, Йемен"
-
-#: ./locales.csv:16
-msgid "Assamese, India"
-msgstr "Ассамский, Индия"
-
-#: ./locales.csv:17
-msgid "Azerbaijani, Azerbaijan"
-msgstr "Азербайджанский, Азербайджан"
-
-#: ./locales.csv:18
-msgid "Belarusian, Belarus"
-msgstr "Белорусский, Беларусь"
-
-#: ./locales.csv:19
-msgid "Bulgarian, Bulgaria"
-msgstr "Болгарский, Болгария"
-
-#: ./locales.csv:20
-msgid "Bengali, India"
-msgstr "Бенгальский, Индия"
-
-#: ./locales.csv:21
-msgid "Bosnian, Bosnia and Herzegovina"
-msgstr "Боснийский, Босния и Герцеговина"
-
-#: ./locales.csv:22
-msgid "Catalan, Spain"
-msgstr "Каталанский, Испания"
-
-#: ./locales.csv:23
-msgid "Czech, Czech Republic"
-msgstr "Чешский, Чехия"
-
-#: ./locales.csv:24
-msgid "Danish, Denmark"
-msgstr "Датский, Дания"
-
-#: ./locales.csv:25
-msgid "German, Austria"
-msgstr "Немецкий, Австрия"
-
-#: ./locales.csv:26
-msgid "German, Belgium"
-msgstr "Немецкий, Бельгия"
-
-#: ./locales.csv:27
-msgid "German, Switzerland"
-msgstr "Немецкий, Швейцария"
-
-#: ./locales.csv:28
-msgid "German, Germany"
-msgstr "Немецкий, Германия"
-
-#: ./locales.csv:29
-msgid "German, Liechtenstein"
-msgstr "Немецкий, Лихтенштейн"
-
-#: ./locales.csv:30
-msgid "German, Luxembourg"
-msgstr "Немецкий, Люксембург"
-
-#: ./locales.csv:31
-msgid "Greek, Cyprus"
-msgstr "Греческий, Кипр"
-
-#: ./locales.csv:32
-msgid "Greek, Greece"
-msgstr "Греческий, Греция"
-
-#: ./locales.csv:33
-msgid "English, Australia"
-msgstr "Английский, Австралия"
-
-#: ./locales.csv:34
-msgid "English, Botswana"
-msgstr "Английский, Ботсвана"
-
-#: ./locales.csv:35
-msgid "English, Canada"
-msgstr "Английский, Канада"
-
-#: ./locales.csv:36
-msgid "English, United Kingdom"
-msgstr "Английский, Великобритания"
-
-#: ./locales.csv:37
-msgid "English, Hong Kong SAR China"
-msgstr "Английский, Гонконг (САР Китай)"
-
-#: ./locales.csv:38
-msgid "English, Ireland"
-msgstr "Английский, Ирландия"
-
-#: ./locales.csv:39
-msgid "English, India"
-msgstr "Английский, Индия"
-
-#: ./locales.csv:40
-msgid "English, Malta"
-msgstr "Английский, Мальта"
-
-#: ./locales.csv:41
-msgid "English, New Zealand"
-msgstr "Английский, Новая Зеландия"
-
-#: ./locales.csv:42
-msgid "English, Philippines"
-msgstr "Английский, Филиппины"
-
-#: ./locales.csv:43
-msgid "English, Singapore"
-msgstr "Английский, Сингапур"
-
-#: ./locales.csv:44
-msgid "English, U.S.A."
-msgstr "Английский, США"
-
-#: ./locales.csv:45
-msgid "English, Zimbabwe"
-msgstr "Английский, Зимбабве"
-
-#: ./locales.csv:46
-msgid "Spanish, Argentina"
-msgstr "Испанский, Аргентина"
-
-#: ./locales.csv:47
-msgid "Spanish, Bolivia"
-msgstr "Испанский, Боливия"
-
-#: ./locales.csv:48
-msgid "Spanish, Chile"
-msgstr "Испанский, Чили"
-
-#: ./locales.csv:49
-msgid "Spanish, Colombia"
-msgstr "Испанский, Колумбия"
-
-#: ./locales.csv:50
-msgid "Spanish, Costa Rica"
-msgstr "Испанский, Коста-Рика"
-
-#: ./locales.csv:51
-msgid "Spanish, Dominican Republic"
-msgstr "Испанский, Доминиканская Республика"
-
-#: ./locales.csv:52
-msgid "Spanish, Ecuador"
-msgstr "Испанский, Эквадор"
-
-#: ./locales.csv:53
-msgid "Spanish, Spain"
-msgstr "Испанский, Испания"
-
-#: ./locales.csv:54
-msgid "Spanish, Guatemala"
-msgstr "Испанский, Гватемала"
-
-#: ./locales.csv:55
-msgid "Spanish, Honduras"
-msgstr "Испанский, Гондурас"
-
-#: ./locales.csv:56
-msgid "Spanish, Mexico"
-msgstr "Испанский, Мексика"
-
-#: ./locales.csv:57
-msgid "Spanish, Nicaragua"
-msgstr "Испанский, Никарагуа"
-
-#: ./locales.csv:58
-msgid "Spanish, Panama"
-msgstr "Испанский, Панама"
-
-#: ./locales.csv:59
-msgid "Spanish, Peru"
-msgstr "Испанский, Перу"
-
-#: ./locales.csv:60
-msgid "Spanish, Puerto Rico"
-msgstr "Испанский, Пуэрто-Рико"
-
-#: ./locales.csv:61
-msgid "Spanish, Paraguay"
-msgstr "Испанский, Парагвай"
-
-#: ./locales.csv:62
-msgid "Spanish, El Salvador"
-msgstr "Испанский, Сальвадор"
-
-#: ./locales.csv:63
-msgid "Spanish, U.S.A."
-msgstr "Испанский, США"
-
-#: ./locales.csv:64
-msgid "Spanish, Uruguay"
-msgstr "Испанский, Уругвай"
-
-#: ./locales.csv:65
-msgid "Spanish, Venezuela"
-msgstr "Испанский, Венесуэла"
-
-#: ./locales.csv:66
-msgid "Estonian, Estonia"
-msgstr "Эстонский, Эстония"
-
-#: ./locales.csv:67
-msgid "Finnish, Finland"
-msgstr "Финский, Финляндия"
-
-#: ./locales.csv:68
-msgid "French, Belgium"
-msgstr "Французский, Бельгия"
-
-#: ./locales.csv:69
-msgid "French, Canada"
-msgstr "Французский, Канада"
-
-#: ./locales.csv:70
-msgid "French, Switzerland"
-msgstr "Французский, Швейцария"
-
-#: ./locales.csv:71
-msgid "French, France"
-msgstr "Французский, Франция"
-
-#: ./locales.csv:72
-msgid "French, Luxembourg"
-msgstr "Французский, Люксембург"
-
-#: ./locales.csv:73
-msgid "Gujarati, India"
-msgstr "Гуджарати, Индия"
-
-#: ./locales.csv:74
-msgid "Hebrew, Israel"
-msgstr "Иврит, Израиль"
-
-#: ./locales.csv:75
-msgid "Hindi, India"
-msgstr "Хинди, Индия"
-
-#: ./locales.csv:76
-msgid "Croatian, Croatia"
-msgstr "Хорватский, Хорватия"
-
-#: ./locales.csv:77
-msgid "Hungarian, Hungary"
-msgstr "Венгерский, Венгрия"
-
-#: ./locales.csv:78
-msgid "Armenian, Armenia"
-msgstr "Армянский, Армения"
-
-#: ./locales.csv:79
-msgid "Indonesian, Indonesia"
-msgstr "Индонезийский, Индонезия"
-
-#: ./locales.csv:80
-msgid "Icelandic, Iceland"
-msgstr "Исландский, Исландия"
-
-#: ./locales.csv:81
-msgid "Italian, Switzerla"
-msgstr "Итальянский, Швейцария"
-
-#: ./locales.csv:82
-msgid "Italian, Italy"
-msgstr "Итальянский, Италия"
-
-#: ./locales.csv:83
-msgid "Japanese, Japan"
-msgstr "Японский, Япония"
-
-#: ./locales.csv:84
-msgid "Georgian, Georgia"
-msgstr "Грузинский, Грузия"
-
-#: ./locales.csv:85
-msgid "Kazakh, Kazakhstan"
-msgstr "Казахский, Казахстан"
-
-#: ./locales.csv:86
-msgid "Kannada, India"
-msgstr "Каннада, Индия"
-
-#: ./locales.csv:87
-msgid "Korean, Korea"
-msgstr "Корейский, Корея"
-
-#: ./locales.csv:88
-msgid "Kashmiri, India"
-msgstr "Кашмири, Индия"
-
-#: ./locales.csv:89
-msgid "Kurdish, Turkey"
-msgstr "Курдский, Турция"
-
-#: ./locales.csv:90
-msgid "Kurdish (Sorani), Turkey"
-msgstr "Курдский (Сорани), Турция"
-
-#: ./locales.csv:91
-msgid "Kirghiz, Kyrgyzstan"
-msgstr "Киргизский, Киргизия"
-
-#: ./locales.csv:92
-msgid "Lithuanian, Lithuania"
-msgstr "Литовский, Литва"
-
-#: ./locales.csv:93
-msgid "Latvian, Latvia"
-msgstr "Латышский, Латвия"
-
-#: ./locales.csv:94
-msgid "Macedonian, Macedonia"
-msgstr "Македонский, Македония"
-
-#: ./locales.csv:95
-msgid "Malayalam, India"
-msgstr "Малаялам, Индия"
-
-#: ./locales.csv:96
-msgid "Marathi, India"
-msgstr "Маратхи, Индия"
-
-#: ./locales.csv:97
-msgid "Malay, Malaysia"
-msgstr "Малайский, Малайзия"
-
-#: ./locales.csv:98
-msgid "Maltese, Malta"
-msgstr "Мальтийский, Мальта"
-
-#: ./locales.csv:99
-msgid "Bokmal, Norway"
-msgstr "Букмол, Норвегия"
-
-#: ./locales.csv:100
-msgid "Dutch, Belgium"
-msgstr "Нидерландский, Бельгия"
-
-#: ./locales.csv:101
-msgid "Dutch, Netherlands"
-msgstr "Нидерландский, Нидерланды"
-
-#: ./locales.csv:102
-msgid "Nynorsk, Norway"
-msgstr "Нюнорск, Норвегия"
-
-#: ./locales.csv:103
-msgid "Oriya, India"
-msgstr "Ория, Индия"
-
-#: ./locales.csv:104
-msgid "Punjabi, India"
-msgstr "Пенджаби, Индия"
-
-#: ./locales.csv:105
-msgid "Polish, Poland"
-msgstr "Польский, Польша"
-
-#: ./locales.csv:106
-msgid "Portuguese, Brazil"
-msgstr "Португальский, Бразилия"
-
-#: ./locales.csv:107
-msgid "Portuguese, Portugal"
-msgstr "Португальский, Португалия"
-
-#: ./locales.csv:108
-msgid "Romanian, Romania"
-msgstr "Румынский, Румыния"
-
-#: ./locales.csv:109
-msgid "Russian, Russia"
-msgstr "Русский, Россия"
-
-#: ./locales.csv:110
-msgid "Russian, Ukraine"
-msgstr "Русский, Украина"
-
-#: ./locales.csv:111
-msgid "Sanskrit, India"
-msgstr "Санскрит, Индия"
-
-#: ./locales.csv:112
-msgid "Slovak, Slovakia"
-msgstr "Словацкий, Словакия"
-
-#: ./locales.csv:113
-msgid "Slovenian, Slovenia"
-msgstr "Словенский, Словения"
-
-#: ./locales.csv:114
-msgid "Albanian, Albania"
-msgstr "Албанский, Албания"
-
-#: ./locales.csv:115
-msgid "Serbian, Montenegro"
-msgstr "Сербский, Черногория"
-
-#: ./locales.csv:116
-msgid "Serbian, Montenegro (Latin)"
-msgstr "Сербский, Черногория (Латиница)"
-
-#: ./locales.csv:117
-msgid "Serbian, Serbia"
-msgstr "Сербский, Сербия"
-
-#: ./locales.csv:118
-msgid "Serbian, Serbia (Latin)"
-msgstr "Сербский, Сербия (Латиница)"
-
-#: ./locales.csv:119
-msgid "Swedish, Sweden"
-msgstr "Шведский, Швеция"
-
-#: ./locales.csv:120
-msgid "Tamil, India"
-msgstr "Тамильский, Индия"
-
-#: ./locales.csv:121
-msgid "Telugu, India"
-msgstr "Телугу, Индия"
-
-#: ./locales.csv:122
-msgid "Thai, Thailand"
-msgstr "Тайский, Таиланд"
-
-#: ./locales.csv:123
-msgid "Turkish, Turkey"
-msgstr "Турецкий, Турция"
-
-#: ./locales.csv:124
-msgid "Ukrainian, Ukraine"
-msgstr "Украинский, Украина"
-
-#: ./locales.csv:125
-msgid "Vietnamese, Vietnam"
-msgstr "Вьетнамский, Вьетнам"
-
-#: ./locales.csv:126
-msgid "Simplified Chinese, China"
-msgstr "Упрощенный китайский, Китай"
-
-#: ./locales.csv:127
-msgid "Traditional Chinese, Hong Kong SAR China"
-msgstr "Традиционный китайский, Гонконг (САР Китай)"
-
-#: ./locales.csv:128
-msgid "Chinese, Singapore"
-msgstr "Китайский, Сингапур"
-
-#: ./locales.csv:129
-msgid "Traditional Chinese, Taiwan"
-msgstr "Традиционный китайский, Тайвань"
diff --git a/locales.csv b/locales.csv
deleted file mode 100644
index 1d8d0ca..0000000
--- a/locales.csv
+++ /dev/null
@@ -1,130 +0,0 @@
-LANG_GROUP;LANG;LANG_NAME
-af;af_ZA.UTF-8;Afrikaans, South Africa
-ar;ar_AE.UTF-8;Arabic, United Arab Emirates
-ar;ar_BH.UTF-8;Arabic, Bahrain
-ar;ar_DZ.UTF-8;Arabic, Algeria
-ar;ar_EG.UTF-8;Arabic, Egypt
-ar;ar_IQ.UTF-8;Arabic, Iraq
-ar;ar_JO.UTF-8;Arabic, Jordan
-ar;ar_KW.UTF-8;Arabic, Kuwait
-ar;ar_LY.UTF-8;Arabic, Libya
-ar;ar_MA.UTF-8;Arabic, Morocco
-ar;ar_OM.UTF-8;Arabic, Oman
-ar;ar_QA.UTF-8;Arabic, Qatar
-ar;ar_SA.UTF-8;Arabic, Saudi Arabia
-ar;ar_TN.UTF-8;Arabic, Tunisia
-ar;ar_YE.UTF-8;Arabic, Yemen
-as;as_IN.UTF-8;Assamese, India
-az;az_AZ.UTF-8;Azerbaijani, Azerbaijan
-be;be_BY.UTF-8;Belarusian, Belarus
-bg;bg_BG.UTF-8;Bulgarian, Bulgaria
-bn;bn_IN.UTF-8;Bengali, India
-bs;bs_BA.UTF-8;Bosnian, Bosnia and Herzegovina
-ca;ca_ES.UTF-8;Catalan, Spain
-cs;cs_CZ.UTF-8;Czech, Czech Republic
-da;da_DK.UTF-8;Danish, Denmark
-de;de_AT.UTF-8;German, Austria
-de;de_BE.UTF-8;German, Belgium
-de;de_CH.UTF-8;German, Switzerland
-de;de_DE.UTF-8;German, Germany
-de;de_LI.UTF-8;German, Liechtenstein
-de;de_LU.UTF-8;German, Luxembourg
-el;el_CY.UTF-8;Greek, Cyprus
-el;el_GR.UTF-8;Greek, Greece
-en;en_AU.UTF-8;English, Australia
-en;en_BW.UTF-8;English, Botswana
-en;en_CA.UTF-8;English, Canada
-en;en_GB.UTF-8;English, United Kingdom
-en;en_HK.UTF-8;English, Hong Kong SAR China
-en;en_IE.UTF-8;English, Ireland
-en;en_IN.UTF-8;English, India
-en;en_MT.UTF-8;English, Malta
-en;en_NZ.UTF-8;English, New Zealand
-en;en_PH.UTF-8;English, Philippines
-en;en_SG.UTF-8;English, Singapore
-en;en_US.UTF-8;English, U.S.A.
-en;en_ZW.UTF-8;English, Zimbabwe
-es;es_AR.UTF-8;Spanish, Argentina
-es;es_BO.UTF-8;Spanish, Bolivia
-es;es_CL.UTF-8;Spanish, Chile
-es;es_CO.UTF-8;Spanish, Colombia
-es;es_CR.UTF-8;Spanish, Costa Rica
-es;es_DO.UTF-8;Spanish, Dominican Republic
-es;es_EC.UTF-8;Spanish, Ecuador
-es;es_ES.UTF-8;Spanish, Spain
-es;es_GT.UTF-8;Spanish, Guatemala
-es;es_HN.UTF-8;Spanish, Honduras
-es;es_MX.UTF-8;Spanish, Mexico
-es;es_NI.UTF-8;Spanish, Nicaragua
-es;es_PA.UTF-8;Spanish, Panama
-es;es_PE.UTF-8;Spanish, Peru
-es;es_PR.UTF-8;Spanish, Puerto Rico
-es;es_PY.UTF-8;Spanish, Paraguay
-es;es_SV.UTF-8;Spanish, El Salvador
-es;es_US.UTF-8;Spanish, U.S.A.
-es;es_UY.UTF-8;Spanish, Uruguay
-es;es_VE.UTF-8;Spanish, Venezuela
-et;et_EE.UTF-8;Estonian, Estonia
-fi;fi_FI.UTF-8;Finnish, Finland
-fr;fr_BE.UTF-8;French, Belgium
-fr;fr_CA.UTF-8;French, Canada
-fr;fr_CH.UTF-8;French, Switzerland
-fr;fr_FR.UTF-8;French, France
-fr;fr_LU.UTF-8;French, Luxembourg
-gu;gu_IN.UTF-8;Gujarati, India
-he;he_IL.UTF-8;Hebrew, Israel
-hi;hi_IN.UTF-8;Hindi, India
-hr;hr_HR.UTF-8;Croatian, Croatia
-hu;hu_HU.UTF-8;Hungarian, Hungary
-hy;hy_AM.UTF-8;Armenian, Armenia
-id;id_ID.UTF-8;Indonesian, Indonesia
-is;is_IS.UTF-8;Icelandic, Iceland
-it;it_CH.UTF-8;Italian, Switzerland
-it;it_IT.UTF-8;Italian, Italy
-ja;ja_JP.UTF-8;Japanese, Japan
-ka;ka_GE.UTF-8;Georgian, Georgia
-kk;kk_KZ.UTF-8;Kazakh, Kazakhstan
-kn;kn_IN.UTF-8;Kannada, India
-ko;ko_KR.UTF-8;Korean, Korea
-ks;ks_IN.UTF-8;Kashmiri, India
-ku;ku_TR.UTF-8;Kurdish, Turkey
-ku;ku_TR.UTF-8@sorani;Kurdish (Sorani), Turkey
-ky;ky_KG.UTF-8;Kirghiz, Kyrgyzstan
-lt;lt_LT.UTF-8;Lithuanian, Lithuania
-lv;lv_LV.UTF-8;Latvian, Latvia
-mk;mk_MK.UTF-8;Macedonian, Macedonia
-ml;ml_IN.UTF-8;Malayalam, India
-mr;mr_IN.UTF-8;Marathi, India
-ms;ms_MY.UTF-8;Malay, Malaysia
-mt;mt_MT.UTF-8;Maltese, Malta
-nb;nb_NO.UTF-8;Bokmal, Norway
-nl;nl_BE.UTF-8;Dutch, Belgium
-nl;nl_NL.UTF-8;Dutch, Netherlands
-nn;nn_NO.UTF-8;Nynorsk, Norway
-or;or_IN.UTF-8;Oriya, India
-pa;pa_IN.UTF-8;Punjabi, India
-pl;pl_PL.UTF-8;Polish, Poland
-pt;pt_BR.UTF-8;Portuguese, Brazil
-pt;pt_PT.UTF-8;Portuguese, Portugal
-ro;ro_RO.UTF-8;Romanian, Romania
-ru;ru_RU.UTF-8;Russian, Russia
-ru;ru_UA.UTF-8;Russian, Ukraine
-sa;sa_IN.UTF-8;Sanskrit, India
-sk;sk_SK.UTF-8;Slovak, Slovakia
-sl;sl_SI.UTF-8;Slovenian, Slovenia
-sq;sq_AL.UTF-8;Albanian, Albania
-sr;sr_ME.UTF-8;Serbian, Montenegro
-sr;sr_ME.UTF-8@latin;Serbian, Montenegro (Latin)
-sr;sr_RS.UTF-8;Serbian, Serbia
-sr;sr_RS.UTF-8@latin;Serbian, Serbia (Latin)
-sv;sv_SE.UTF-8;Swedish, Sweden
-ta;ta_IN.UTF-8;Tamil, India
-te;te_IN.UTF-8;Telugu, India
-th;th_TH.UTF-8;Thai, Thailand
-tr;tr_TR.UTF-8;Turkish, Turkey
-uk;uk_UA.UTF-8;Ukrainian, Ukraine
-vi;vi_VN.UTF-8;Vietnamese, Vietnam
-zh;zh_CN.UTF-8;Simplified Chinese, China
-zh;zh_HK.UTF-8;Traditional Chinese, Hong Kong SAR China
-zh;zh_SG.UTF-8;Chinese, Singapore
-zh;zh_TW.UTF-8;Traditional Chinese, Taiwan
\ No newline at end of file
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index cec9547..7f8ebf7 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -78,7 +78,6 @@ set(DEPENDFILES
../kernel-list-addon.csv
../services-list.csv
../network-list.csv
- ../languages.csv
../filesystems-format-list.csv
../icons-builtin/install_type_custom_normal.png
../icons-builtin/install_type_data_only_normal.png
@@ -126,6 +125,7 @@ endif()
set(SOURCE_FILES
ubinstall-gtk.c
+ ubinstall-gtk-advanced.c
ubinstall-gtk-page-switch.c
ubinstall-gtk-keyboard.c
ubinstall-gtk-region.c
diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c
new file mode 100644
index 0000000..839fd21
--- /dev/null
+++ b/source/ubinstall-gtk-advanced.c
@@ -0,0 +1,634 @@
+#include "ubinstall-gtk.h"
+
+#define toggled_icon_name "com.ublinux.libublsettingsui-gtk3.toggled-symbolic"
+#define untoggled_icon_name "com.ublinux.libublsettingsui-gtk3.untoggled-symbolic"
+
+advanced_section *yon_advanced_section_new();
+void yon_advanced_section_remove();
+
+int sections_size=0;
+advanced_section *sections[2] = {NULL};
+
+advanced_section *yon_advanced_section_new(){
+ if (sections_size>=2) return NULL;
+ advanced_section *section = malloc(sizeof(advanced_section));
+ memset(section,0,sizeof(advanced_section));
+ return section;
+}
+
+void yon_advanced_section_remove_all(){
+ if (sections[0]){
+ free(sections[0]);
+ sections[0]=NULL;
+ }
+ if (sections[1]){
+ free(sections[1]);
+ sections[1]=NULL;
+ }
+ sections_size=0;
+}
+
+void yon_advanced_section_remove(char *part){
+ int pos = yon_advanced_section_get(part);
+ switch(pos){
+ case 0:
+ if (sections[0]){
+ free(sections[0]);
+ if (sections[1]){
+ sections[0]=sections[1];
+ sections[1]=NULL;
+ } else {
+ sections[0]=NULL;
+ }
+ sections_size--;
+ }
+ break;
+ case 1:
+ if (sections[1]){
+ free(sections[1]);
+ sections[1]=NULL;
+ sections_size--;
+ }
+ break;
+ default: return;
+ }
+}
+
+int yon_advanced_section_get(char *partition){
+ if (yon_char_is_empty(partition)) return -1;
+ if (sections_size>0&&!strcmp(sections[0]->partition,partition)){
+ return 0;
+ } else if (sections_size>1&&!strcmp(sections[1]->partition,partition)){
+ return 1;
+ }
+ return -1;
+}
+
+void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section){
+ if (part&§ion){
+ gtk_label_set_text(GTK_LABEL(part->SectionLabel),section->partition);
+ part->part = yon_char_new(section->partition);
+ if (section->format){
+ gtk_switch_set_active(GTK_SWITCH(part->FormatSwitch),1);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),section->size);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),yon_get_size_get_from_letter(section->size_letter));
+ gtk_entry_set_text(GTK_ENTRY(part->PartLabelEntry),section->part_label);
+ gtk_entry_set_text(GTK_ENTRY(part->FileSystemLabelEntry),section->fs_label);
+ gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->FileSystemTypeCombo),section->fs_type);
+ gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->EncryptionCombo),section->encryption);
+ gtk_entry_set_text(GTK_ENTRY(part->EncryptionEntry),section->encryption_password);
+ }
+ }
+}
+
+void yon_advanced_update(main_window *widgets){
+ yon_advanced_partition_clear(widgets);
+
+ for (int i=0;iRemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove),widgets);
+ g_signal_connect(G_OBJECT(part->SystemSectionToggle),"clicked",G_CALLBACK(on_advanced_section_toggled),widgets);
+ g_signal_connect(G_OBJECT(part->UserDataSectionToggle),"clicked",G_CALLBACK(on_advanced_section_toggled),widgets);
+ g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(on_advanced_size_changed),widgets);
+ if (i==0){
+ gtk_widget_set_sensitive(part->SystemSectionToggle,0);
+ gtk_widget_set_sensitive(part->UserDataSectionToggle,0);
+ GtkWidget *SystemImage = gtk_button_get_image(GTK_BUTTON(part->SystemSectionToggle));
+ GtkWidget *UserImage = gtk_button_get_image(GTK_BUTTON(part->UserDataSectionToggle));
+ gtk_image_set_from_icon_name(GTK_IMAGE(SystemImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name(GTK_IMAGE(UserImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1);
+ }
+ yon_advanced_partition_set_from_section(part,sections[i]);
+ yon_advanced_set_max_size_from_partition(part,widgets);
+ gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0);
+
+ part->part_type = ADVANCED_PART_EXISTING;
+ }
+ if (sections_size==2){
+ gtk_widget_hide(widgets->AdvancedAddButton);
+ } else {
+ gtk_widget_show(widgets->AdvancedAddButton);
+
+ }
+}
+
+void on_advanced_partition_create(GtkWidget *, main_window *widgets){
+ GtkTreeIter iter, *last_unvalid = NULL;
+ int found = 0;
+ for_iter(GTK_TREE_MODEL(widgets->DevicesList),&iter){
+ char *target;
+ int active;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->DevicesList),&iter,0,&target,5,&active,-1);
+ if (active){
+ if (!yon_advanced_section_get(target)){
+ last_unvalid = gtk_tree_iter_copy(&iter);
+ } else {
+ found=1;
+ if (sections_size==2) break;
+ advanced_section *section = yon_advanced_section_new();
+ section->part_source = PART_SOURCE_DEVICE;
+ section->device = target;
+ section->partition = target;
+ sections[sections_size]=section;
+ sections_size++;
+ break;
+ }
+ }
+ }
+ if (!found&&last_unvalid){
+ char *target;
+ int active;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->DevicesList),last_unvalid,0,&target,5,&active,-1);
+
+ if (sections_size==2) return;
+ advanced_section *section = yon_advanced_section_new();
+ section->part_source = PART_SOURCE_DEVICE;
+ section->device = target;
+ section->partition = target;
+ sections[sections_size]=section;
+ sections_size++;
+ }
+ yon_advanced_update(widgets);
+}
+
+void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets){
+ GtkTreeIter iter;
+ if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PartitionsList),&iter,path)){
+ char *target, *device;
+ int status;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->PartitionsList),&iter,0,&target,7,&status,9,&device,-1);
+ gtk_list_store_set(widgets->DevicesList,&iter,7,!status,-1);
+ if (!status){
+ if (sections_size==2) return;
+ advanced_section *section = yon_advanced_section_new();
+ section->part_source = PART_SOURCE_PART;
+ section->device = device;
+ section->partition = target = device;
+ sections[sections_size]=section;
+ sections_size++;
+ } else {
+ yon_advanced_section_remove(target);
+ }
+ }
+ yon_advanced_update(widgets);
+
+}
+
+void yon_install_advanced_init(main_window *){
+}
+
+void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
+
+ int chosen = 0;
+ chosen = yon_advanced_get_part_size(widgets);
+
+ gtk_tree_model_get_iter_from_string(model,&iter,path);
+ int status;
+ char *target_part, *device;
+ gtk_tree_model_get(model,&iter,0,&target_part,7,&status,9,&device,-1);
+
+ if (!status){
+ if (chosen<2){
+ gtk_list_store_set(widgets->PartitionsList,&iter,7,!status,-1);
+ chosen++;
+ advanced_section *section = yon_advanced_section_new();
+ section->part_source = PART_SOURCE_PART;
+ section->partition = target_part;
+ section->device = device;
+ section->device = device;
+ sections[sections_size]=section;
+ sections_size++;
+ }
+ } else {
+ gtk_list_store_set(widgets->PartitionsList,&iter,7,!status,-1);
+ yon_advanced_section_remove(target_part);
+ }
+ yon_advanced_update(widgets);
+}
+
+void yon_advanced_parts_update(main_window *widgets){
+ int size;
+ config_str partitions;
+ partitions = yon_config_load(yon_debug_output("%s\n",get_parts_and_devices_command),&size);
+ for (int i=0;iDevicesList);
+ GtkTreeIter iter;
+ for_iter (model,&iter){
+ char *disk_path;
+ int status;
+ gtk_tree_model_get(model,&iter,0,&disk_path,5,&status,-1);
+ if (!status) continue;
+
+ for (int i=0;i2){
+ char sizemod='\0';
+ capacity_long = atol(parsed[2]);
+
+ char *temp = yon_char_from_double(yon_size_long_convert_automatic(capacity_long,&sizemod));
+ capacity = yon_char_append_c(temp,sizemod);
+ free(temp);
+ }
+ if (parsed_size>7&&!yon_char_is_empty(parsed[7])){
+ char sizemod='\0';
+ free_space_long = capacity_long-atol(parsed[7]);
+ char *temp = yon_char_from_double(yon_size_long_convert_automatic(free_space_long,&sizemod));
+ free_space = yon_char_append_c(temp,sizemod);
+ free(temp);
+ }
+ if (parsed_size>3){
+ fs_type = parsed[3];
+ }
+ if (parsed_size>4){
+ label = parsed[4];
+ }
+
+ GtkTreeIter itar;
+ gtk_list_store_append(widgets->PartitionsList,&itar);
+ gtk_list_store_set(widgets->PartitionsList,&itar,0,name,1,capacity,2,free_space,3,fs_type,4,label,5,capacity_long,6,free_space_long,8,1,-1);
+ }
+ yon_char_parsed_free(parsed,parsed_size);
+ }
+ }
+ }
+ yon_char_parsed_free(partitions,size);
+}
+
+void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets){
+ char *cur_name = part->part;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
+ GtkTreeIter iter;
+ long selected_size;
+
+ for_iter(model,&iter){
+ char *target;
+ gtk_tree_model_get(model,&iter,0,&target,-1);
+ if (!strcmp(target,cur_name)){
+ gtk_tree_model_get(model,&iter,6,&selected_size,-1);
+ if (!selected_size){
+ gtk_tree_model_get(model,&iter,5,&selected_size,-1);
+ }
+ if (selected_size){
+ GtkAdjustment *adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(part->SizeSpin));
+ const char *sizemod = gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->SizeCombo));
+ double new_size = yon_size_long_convert_to_mod(selected_size,sizemod[0]);
+ gtk_adjustment_set_upper(adj,new_size);
+ gdouble old_value = gtk_adjustment_get_value(adj);
+ if (old_value>new_size){
+ gtk_adjustment_set_value(adj,new_size);
+ }
+ }
+ }
+ }
+}
+
+void on_advanced_size_changed(GtkWidget *self,main_window *widgets){
+ advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition");
+ yon_advanced_set_max_size_from_partition(part,widgets);
+}
+
+void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){
+ gtk_list_store_clear(widgets->PartitionsList);
+ yon_advanced_section_remove_all();
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList);
+ // int chosen = 0;
+ // chosen = yon_advanced_get_part_size(widgets);
+
+ if (gtk_tree_model_get_iter_from_string(model,&iter,path)){
+ int status;
+ char *target;
+ gtk_tree_model_get(model,&iter,0,&target,5,&status,-1);
+ if (!status){ // checks
+ gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1);
+
+ } else { // unchecks
+ gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1);
+ for_iter (model,&iter){
+ gtk_list_store_set(widgets->DevicesList,&iter,6,1,-1);
+ }
+ }
+ }
+
+ // if (chosen) gtk_widget_set_sensitive(widgets->AdvancedAddButton,1);
+ // else gtk_widget_set_sensitive(widgets->AdvancedAddButton,0);
+ yon_advanced_parts_update(widgets);
+ yon_advanced_update(widgets);
+}
+
+void on_advanced_password_clicked(GtkWidget *, advanced_partition *part){
+ yon_password_window *window = yon_password_open(GTK_ENTRY(part->EncryptionEntry));
+ gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo));
+ gtk_widget_hide(window->HashBox);
+ gtk_widget_hide(window->NoEncriptionCheck);
+}
+
+void yon_advanced_partition_clear(main_window *widgets){
+ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
+ GList *iter;
+ for (iter=list;iter;iter=iter->next){
+ advanced_partition *part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition");
+ gtk_widget_destroy(GTK_WIDGET(iter->data));
+ free(part);
+ }
+}
+
+int yon_advanced_get_part_size(main_window *widgets){
+ int size = 0;
+ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
+ size = g_list_length(list);
+ g_list_free(list);
+ return size;
+}
+
+void on_advanced_section_toggled(GtkWidget *self, main_window *widgets){
+ advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition");
+ gtk_widget_set_sensitive(self,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self),1);
+ GtkWidget *image = gtk_button_get_image(GTK_BUTTON(self));
+ gtk_image_set_from_icon_name(GTK_IMAGE(image),toggled_icon_name,GTK_ICON_SIZE_BUTTON);
+ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
+ GList *iter;
+ for (iter=list;iter;iter=iter->next){
+ advanced_partition *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition");
+ if (part != compare_part) {
+ GtkWidget *cur_toggle = self == part->SystemSectionToggle?compare_part->SystemSectionToggle:compare_part->UserDataSectionToggle;
+ g_signal_handlers_block_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets);
+ gtk_widget_set_sensitive(cur_toggle,1);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_toggle),0);
+ g_signal_handlers_unblock_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets);
+ GtkWidget *compare_image = gtk_button_get_image(GTK_BUTTON(cur_toggle));
+ gtk_image_set_from_icon_name(GTK_IMAGE(compare_image),untoggled_icon_name,GTK_ICON_SIZE_BUTTON);
+ }
+ }
+}
+
+int yon_advanced_save(main_window *widgets){
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"custom");
+ int devices_size;
+ config_str devices = NULL;
+ int parts_size;
+ config_str parts = NULL;
+ int part_size_size;
+ config_str part_size = NULL;
+ int part_label_size;
+ config_str part_label = NULL;
+ int fs_type_size;
+ config_str fs_type = NULL;
+ int fs_label_size;
+ config_str fs_label = NULL;
+ int encryption_size;
+ config_str encryption = NULL;
+ int format_size;
+ config_str format = NULL;
+ if (!sections_size){
+
+ return 0;
+ }
+ advanced_section *cur_section = sections[0]->sys_section?sections[0]:sections[1];
+ yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
+ if (cur_section->device){
+ yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
+ }
+ if (!yon_char_is_empty(cur_section->partition)){
+ yon_char_parsed_add_or_create_if_exists(parts,&parts_size,cur_section->partition);
+ } else {
+ yon_char_parsed_add_or_create_if_exists(parts,&parts_size,"");
+ }
+ if (cur_section->size){
+ char *size_str = yon_char_from_long(cur_section->size);
+ char *sz_str = yon_char_append_c(size_str,cur_section->size_letter);
+ yon_char_parsed_add_or_create_if_exists(part_size,&part_size_size,sz_str);
+ }
+ if (!yon_char_is_empty(cur_section->part_label)){
+ yon_char_parsed_add_or_create_if_exists(part_label,&part_label_size,cur_section->part_label);
+ }
+ if (!yon_char_is_empty(cur_section->fs_type)){
+ yon_char_parsed_add_or_create_if_exists(fs_type,&fs_type_size,cur_section->fs_type);
+ }
+ if (!yon_char_is_empty(cur_section->fs_label)){
+ yon_char_parsed_add_or_create_if_exists(fs_label,&fs_label_size,cur_section->fs_label);
+ }
+ if (cur_section->format){
+ yon_char_parsed_add_or_create_if_exists(format,&format_size,"yes");
+ } else {
+ yon_char_parsed_add_or_create_if_exists(format,&format_size,"no");
+ }
+ if (!yon_char_is_empty(cur_section->encryption)){
+ char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL);
+ yon_char_parsed_add_or_create_if_exists(encryption,&encryption_size,encrypt_str);
+ }
+ if (sections_size>1){
+ cur_section = sections[0]->sys_section?sections[1]:sections[0];
+
+ yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
+ if (!yon_char_is_empty(cur_section->partition)){
+ yon_char_parsed_add_or_create_if_exists(parts,&parts_size,cur_section->partition);
+ } else {
+ yon_char_parsed_add_or_create_if_exists(parts,&parts_size,"");
+ }
+ if (cur_section->size){
+ char *size_str = yon_char_from_long(cur_section->size);
+ char *sz_str = yon_char_append_c(size_str,cur_section->size_letter);
+ yon_char_parsed_add_or_create_if_exists(part_size,&part_size_size,sz_str);
+ }
+ if (!yon_char_is_empty(cur_section->part_label)){
+ yon_char_parsed_add_or_create_if_exists(part_label,&part_label_size,cur_section->part_label);
+ }
+ if (!yon_char_is_empty(cur_section->fs_type)){
+ yon_char_parsed_add_or_create_if_exists(fs_type,&fs_type_size,cur_section->fs_type);
+ }
+ if (!yon_char_is_empty(cur_section->fs_label)){
+ yon_char_parsed_add_or_create_if_exists(fs_label,&fs_label_size,cur_section->fs_label);
+ }
+ if (cur_section->format){
+ yon_char_parsed_add_or_create_if_exists(format,&format_size,"yes");
+ } else {
+ yon_char_parsed_add_or_create_if_exists(format,&format_size,"no");
+ }
+ if (!yon_char_is_empty(cur_section->encryption)){
+ char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL);
+ yon_char_parsed_add_or_create_if_exists(encryption,&encryption_size,encrypt_str);
+ }
+ }
+
+ if (devices_size){
+ char *devices_str = yon_char_parsed_to_string(devices,devices_size,",");
+ yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,devices_str);
+ }
+ if (parts_size){
+ char *parts_str = yon_char_parsed_to_string(parts,parts_size,",");
+ yon_config_register(part_parameter,part_parameter_command,parts_str);
+
+ }
+ if (part_size_size){
+ char *part_size_str = yon_char_parsed_to_string(part_size,part_size_size,",");
+ yon_config_register(part_size_parameter,part_size_parameter_command,part_size_str);
+
+ }
+ if (part_label_size){
+ char *part_label_str = yon_char_parsed_to_string(part_label,part_label_size,",");
+ yon_config_register(part_label_parameter,part_label_parameter_command,part_label_str);
+
+ }
+ if (fs_type_size){
+ char *fs_type_str = yon_char_parsed_to_string(fs_type,fs_type_size,",");
+ yon_config_register(part_fs_type_parameter,part_fs_type_parameter_command,fs_type_str);
+
+ }
+ if (fs_label_size){
+ char *fs_label_str = yon_char_parsed_to_string(fs_label,fs_label_size,",");
+ yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label_str);
+
+ }
+ if (encryption_size){
+ char *encryption_str = yon_char_parsed_to_string(encryption,encryption_size,",");
+ yon_config_register(part_crypt_parameter,part_crypt_parameter_command,encryption_str);
+
+ }
+ if (format_size){
+ char *format_str = yon_char_parsed_to_string(format,format_size,",");
+ yon_config_register(part_format_parameter,part_format_parameter_command,format_str);
+
+ }
+ if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
+ char *boot = NULL;
+ if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))){
+ yon_char_append_element(boot,"bios","+");
+ }
+ if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))){
+ yon_char_append_element(boot,"efi","+");
+
+ }
+ if (!yon_char_is_empty(boot)){
+ yon_config_register(boot_parameter,boot_parameter_command,boot);
+ } else {
+ yon_config_remove_by_key(boot_parameter);
+ }
+ } else {
+ yon_config_remove_by_key(boot_parameter);
+ }
+ if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){
+ if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){
+ yon_config_register(swap_parameter,swap_parameter_command,"auto");
+
+ } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){
+ yon_config_register(swap_parameter,swap_parameter_command,"yes");
+ yon_config_register(swap_size_parameter,swap_parameter_command,"ram");
+
+ } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapFixedSwitch))){
+ yon_config_register(swap_parameter,swap_parameter_command,"yes");
+ long swap_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin));
+ int size_letter = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapFixedSizeSwitch));
+ char *swap_str = yon_char_from_long(swap_size);
+ char *size_final = yon_char_unite(swap_str,size_letter?"G":"M",NULL);
+ yon_config_register(swap_size_parameter,swap_parameter_command,size_final);
+ } else {
+ yon_config_remove_by_key(swap_parameter);
+ yon_config_remove_by_key(swap_size_parameter);
+ }
+ }
+ return 1;
+}
+
+
+void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part){
+ advanced_section *section = sections[yon_advanced_section_get(part->part)];
+ if (self == part->SizeCombo||self == part->SizeSpin){
+ section->size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(part->SizeSpin));
+ section->size_letter = *yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(part->SizeCombo)));
+ } else if (self == part->PartLabelEntry){
+ section->part_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->PartLabelEntry)));
+ } else if (self == part->FileSystemTypeCombo){
+ section->fs_type = yon_char_new(gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->FileSystemTypeCombo)));
+ } else if (self == part->FileSystemLabelEntry){
+ section->fs_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->FileSystemLabelEntry)));
+ } else if (self == part->EncryptionCombo||self == part->EncryptionEntry){
+ section->encryption = yon_char_new(gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->EncryptionCombo)));
+ section->encryption_password = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->EncryptionEntry)));
+ } else if (self == part->FormatSwitch){
+ if (gtk_switch_get_active(GTK_SWITCH(part->FormatSwitch))){
+ section->format=1;
+ } else {
+ section->format=0;
+ }
+ }
+}
+
+advanced_partition *yon_advanced_partition_new(){
+ advanced_partition *part = new(advanced_partition);
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_advanced_part);
+ part->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
+ part->SectionLabel = yon_gtk_builder_get_widget(builder,"SectionLabel");
+ part->SystemSectionToggle = yon_gtk_builder_get_widget(builder,"SystemSectionToggle");
+ part->UserDataSectionToggle = yon_gtk_builder_get_widget(builder,"UserDataSectionToggle");
+ part->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
+ part->FormatSwitch = yon_gtk_builder_get_widget(builder,"FormatSwitch");
+ part->SizeSpin = yon_gtk_builder_get_widget(builder,"SizeSpin");
+ part->SizeCombo = yon_gtk_builder_get_widget(builder,"SizeCombo");
+ part->PartLabelEntry = yon_gtk_builder_get_widget(builder,"PartLabelEntry");
+ part->FileSystemTypeCombo = yon_gtk_builder_get_widget(builder,"FileSystemTypeCombo");
+ part->FileSystemLabelEntry = yon_gtk_builder_get_widget(builder,"FileSystemLabelEntry");
+ part->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
+ part->EncryptionEntry = yon_gtk_builder_get_widget(builder,"EncryptionEntry");
+ part->EncryptionButton = yon_gtk_builder_get_widget(builder,"EncryptionButton");
+ part->FormatRevealer = yon_gtk_builder_get_widget(builder,"FormatRevealer");
+ part->order_iter = NULL;
+ part->part = NULL;
+
+ yon_gtk_revealer_set_from_switch(GTK_REVEALER(part->FormatRevealer),GTK_SWITCH(part->FormatSwitch));
+ g_signal_connect(G_OBJECT(part->EncryptionButton),"clicked",G_CALLBACK(on_advanced_password_clicked),part);
+ g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionButton);
+ g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionEntry);
+ g_signal_connect(G_OBJECT(part->EncryptionEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->FormatSwitch),"activate",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->SizeSpin),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->PartLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->FileSystemTypeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->FileSystemLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+ g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
+
+
+ yon_fs_type_setup(GTK_COMBO_BOX_TEXT(part->FileSystemTypeCombo));
+
+ g_object_set_data(G_OBJECT(part->MainBox),"advanced_partition",part);
+ g_object_set_data(G_OBJECT(part->SizeCombo),"advanced_partition",part);
+ g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_partition",part);
+ g_object_set_data(G_OBJECT(part->SystemSectionToggle),"advanced_partition",part);
+ g_object_set_data(G_OBJECT(part->UserDataSectionToggle),"advanced_partition",part);
+
+ int size;
+ config_str encryptions = yon_char_parsed_new(&size,encryptions_list,NULL);
+ for (int i=0;iEncryptionCombo),encryptions[i],encryptions[i]);
+ }
+ yon_char_parsed_free(encryptions,size);
+ return part;
+}
+
+void on_advanced_part_remove(GtkWidget *self, main_window *widgets){
+ advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition");
+
+ yon_advanced_section_remove(part->part);
+ yon_advanced_update(widgets);
+
+}
diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c
index 20f028e..b187a57 100644
--- a/source/ubinstall-gtk-components.c
+++ b/source/ubinstall-gtk-components.c
@@ -152,31 +152,48 @@ void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *d
free(description_full);
}
+gboolean yon_os_component_insert(os_row *row){
+ main_window *widgets = g_object_get_data(G_OBJECT(row->row),"widgets");
+ gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1);
+ return G_SOURCE_REMOVE;
+}
+
+gboolean yon_spinner_switch_off(GtkSpinner *target){
+ gtk_spinner_stop(target);
+ gtk_widget_hide(GTK_WIDGET(target));
+ return G_SOURCE_REMOVE;
+}
+
+void *yon_os_components_setup(main_window *widgets){
+ int base_size;
+ config_str base = yon_config_load(get_modules_command,&base_size);
+ for (int i=0;irow),"widgets",widgets);
+ yon_os_row_setup(row,name,version,tags,description);
+ g_idle_add((GSourceFunc)yon_os_component_insert,row);
+ }
+ g_idle_add((GSourceFunc)yon_spinner_switch_off,widgets->OSSpinner);
+ yon_char_parsed_free(base,base_size);
+ return NULL;
+}
+
void yon_os_components_init(main_window *widgets){
int size = 0;
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter;
if (!list){
- int base_size;
- config_str base = yon_config_load(get_modules_command,&base_size);
- for (int i=0;iOSSoftwareListBox),row->row,-1);
- int min_size=0;
- gtk_widget_get_preferred_width(row->NameLabel,&min_size,NULL);
- if (min_size>size) size=min_size;
-
-
- }
- yon_char_parsed_free(base,base_size);
+ gtk_overlay_add_overlay(GTK_OVERLAY(widgets->OSOverlay),widgets->OSSpinner);
+ gtk_spinner_start(GTK_SPINNER(widgets->OSSpinner));
+ gtk_widget_show(widgets->OSSpinner);
+ g_thread_new("geag",(GThreadFunc)yon_os_components_setup,widgets);
while(gtk_events_pending()) gtk_main_iteration();
list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
for(iter = list;iter;iter=iter->next){
diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c
index 064d435..ce9c789 100644
--- a/source/ubinstall-gtk-installation.c
+++ b/source/ubinstall-gtk-installation.c
@@ -195,13 +195,13 @@ int yon_advanced_sections_save(dictionary *dict){
char *size = yon_char_unite(size_first,size_last?",":NULL,size_last,NULL);
yon_config_register(part_size_parameter,part_size_parameter_command,size);
- char *part_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->SectionMarkEntry));
- char *part_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->SectionMarkEntry)):NULL;
+ char *part_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->PartLabelEntry));
+ char *part_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->PartLabelEntry)):NULL;
char *part_label = yon_char_unite(part_label_first,part_label_last?",":NULL,part_label_last,NULL);
yon_config_register(part_label_parameter,part_label_parameter_command,part_label);
- char *fs_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->FileSystemMarkentry));
- char *fs_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->FileSystemMarkentry)):NULL;
+ char *fs_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->FileSystemLabelEntry));
+ char *fs_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->FileSystemLabelEntry)):NULL;
char *fs_label = yon_char_unite(fs_label_first,fs_label_last?",":NULL,fs_label_last,NULL);
yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label);
@@ -225,64 +225,59 @@ int yon_advanced_sections_save(dictionary *dict){
return 1;
}
-int yon_install_advanced_save(main_window *widgets){
-
- GtkTreeModel *model;
- GtkTreeIter iter;
- if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedDeviceTree));
- return 0;
- }
- char *device;
- gtk_tree_model_get(model,&iter,0,&device,-1);
- if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedPartitionTree)),&model,&iter)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedPartitionTree));
- return 0;
- }
- yon_config_remove_by_key(part_size_parameter);
- char *part;
- gtk_tree_model_get(model,&iter,0,&part,-1);
-
- if (!yon_advanced_sections_save(widgets->advanced_sections)){
- return 0;
- }
-
- if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){
- if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){
- yon_config_register(swap_parameter,swap_parameter_command,"auto");
- } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){
- yon_config_register(swap_parameter,swap_parameter_command,"yes");
- yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram");
- } else {
- yon_config_register(swap_parameter,swap_parameter_command,"yes");
- char *swap = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdvancedSwapFixedSizeSwitch))+1));
- yon_config_register(swap_size_parameter,swap_size_parameter_command,swap);
- }
- }
- const char *device_typevfs = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo));
- if (!yon_char_is_empty(device_typevfs)){
- yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs);
- } else {
- yon_config_remove_by_key(device_typevfs_parameter);
- }
- if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
- char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":"";
- char *efi = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))?"efi":NULL;
- char *boot = yon_char_unite(bios,!yon_char_is_empty(bios)&&!yon_char_is_empty(efi)?"+":"",efi,NULL);
- yon_config_register(boot_parameter,boot_parameter_command,boot);
- } else {
- yon_config_register(boot_parameter,boot_parameter_command,"none");
- }
-
- return 1;
-}
-
-void yon_install_advanced_init(main_window *){
- // char *boot = config(boot_parameter);
- // char *swap = config(swap_parameter);
-}
+// int yon_install_advanced_save(main_window *widgets){
+
+// GtkTreeModel *model;
+// GtkTreeIter iter;
+// if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){
+// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+// yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedDeviceTree));
+// return 0;
+// }
+// char *device;
+// gtk_tree_model_get(model,&iter,0,&device,-1);
+// if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedPartitionTree)),&model,&iter)){
+// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+// yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedPartitionTree));
+// return 0;
+// }
+// yon_config_remove_by_key(part_size_parameter);
+// char *part;
+// gtk_tree_model_get(model,&iter,0,&part,-1);
+
+// if (!yon_advanced_sections_save(widgets->advanced_sections)){
+// return 0;
+// }
+
+// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){
+// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){
+// yon_config_register(swap_parameter,swap_parameter_command,"auto");
+// } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){
+// yon_config_register(swap_parameter,swap_parameter_command,"yes");
+// yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram");
+// } else {
+// yon_config_register(swap_parameter,swap_parameter_command,"yes");
+// char *swap = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdvancedSwapFixedSizeSwitch))+1));
+// yon_config_register(swap_size_parameter,swap_size_parameter_command,swap);
+// }
+// }
+// const char *device_typevfs = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo));
+// if (!yon_char_is_empty(device_typevfs)){
+// yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs);
+// } else {
+// yon_config_remove_by_key(device_typevfs_parameter);
+// }
+// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
+// char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":"";
+// char *efi = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))?"efi":NULL;
+// char *boot = yon_char_unite(bios,!yon_char_is_empty(bios)&&!yon_char_is_empty(efi)?"+":"",efi,NULL);
+// yon_config_register(boot_parameter,boot_parameter_command,boot);
+// } else {
+// yon_config_register(boot_parameter,boot_parameter_command,"none");
+// }
+
+// return 1;
+// }
void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_button, GtkComboBox *spin_combo){
GtkTreeModel *model;
@@ -360,7 +355,7 @@ void on_device_selection_changed(GtkWidget *self, main_window *widgets){
}
gtk_list_store_append(widgets->PartitionsList,&iter);
- gtk_list_store_set(widgets->PartitionsList,&iter,0,name,1,capacity,2,free_space,3,fs_type,4,label,5,capacity_long,6,free_space_long,-1);
+ gtk_list_store_set(widgets->PartitionsList,&iter,0,name,1,capacity,2,free_space,3,fs_type,4,label,5,capacity_long,6,free_space_long,9,disk_path,-1);
}
yon_char_parsed_free(parsed,parsed_size);
}
@@ -583,272 +578,4 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){
}
}
-}
-
-void on_advanced_password_clicked(GtkWidget *, advanced_partition *part){
- yon_password_open(GTK_ENTRY(part->EncryptionEntry));
-}
-
-void yon_advanced_partition_clear(main_window *widgets){
- GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
- GList *iter;
- for (iter=list;iter;iter=iter->next){
- advanced_partition *part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition");
- gtk_widget_destroy(GTK_WIDGET(iter->data));
- free(part);
- }
- on_advanced_parts_removed(NULL,NULL,widgets);
-}
-
-int yon_advanced_get_part_size(main_window *widgets){
- int size = 0;
- GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
- size = g_list_length(list);
- g_list_free(list);
- return size;
-}
-
-void yon_advanced_set_part_sensitivity(main_window *widgets, gboolean state){
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
- int status;
- for_iter(model,&iter){
- gtk_tree_model_get(model,&iter,8,&status,-1);
- if (!status){
- gtk_list_store_set(widgets->PartitionsList,&iter,8,state?state:0,-1);
- } else {
- gtk_list_store_set(widgets->PartitionsList,&iter,8,1,-1);
- }
- }
-}
-
-void yon_advanced_set_device_sensitivity(main_window *widgets, gboolean state){
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList);
- for_iter(model,&iter){
- gtk_list_store_set(widgets->DevicesList,&iter,6,state,-1);
- }
-}
-
-advanced_partition *yon_advanced_partition_new(){
- advanced_partition *part = new(advanced_partition);
- GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_advanced_part);
- part->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
- part->SectionLabel = yon_gtk_builder_get_widget(builder,"SectionLabel");
- part->SystemSectionToggle = yon_gtk_builder_get_widget(builder,"SystemSectionToggle");
- part->UserDataSectionToggle = yon_gtk_builder_get_widget(builder,"UserDataSectionToggle");
- part->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
- part->FormatSwitch = yon_gtk_builder_get_widget(builder,"FormatSwitch");
- part->SizeSpin = yon_gtk_builder_get_widget(builder,"SizeSpin");
- part->SizeCombo = yon_gtk_builder_get_widget(builder,"SizeCombo");
- part->SectionMarkEntry = yon_gtk_builder_get_widget(builder,"SectionMarkEntry");
- part->FileSystemTypeCombo = yon_gtk_builder_get_widget(builder,"FileSystemTypeCombo");
- part->FileSystemMarkentry = yon_gtk_builder_get_widget(builder,"FileSystemMarkentry");
- part->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
- part->EncryptionEntry = yon_gtk_builder_get_widget(builder,"EncryptionEntry");
- part->EncryptionButton = yon_gtk_builder_get_widget(builder,"EncryptionButton");
- part->FormatRevealer = yon_gtk_builder_get_widget(builder,"FormatRevealer");
- part->order_iter = NULL;
- part->part = NULL;
-
- yon_gtk_revealer_set_from_switch(GTK_REVEALER(part->FormatRevealer),GTK_SWITCH(part->FormatSwitch));
- g_signal_connect(G_OBJECT(part->EncryptionButton),"clicked",G_CALLBACK(on_advanced_password_clicked),part);
- // g_signal_connect(G_OBJECT(part->SystemSectionToggle),"clicked",G_CALLBACK(on_advanced_system_toggled),part);
- // g_signal_connect(G_OBJECT(part->UserDataSectionToggle),"clicked",G_CALLBACK(on_advanced_user_toggled),part);
-
- g_object_set_data(G_OBJECT(part->MainBox),"advanced_partition",part);
- g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_partition",part);
-
- return part;
-}
-
-void on_advanced_part_remove(GtkWidget *self, main_window *widgets){
- advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition");
-
- if (part->part_type == ADVANCED_PART_EXISTING){
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
- for_iter(model,&iter){
- int status;
- char *target;
- gtk_tree_model_get(model,&iter,0,&target,7,&status,-1);
- if (status&&!strcmp(target,part->part)){
- gtk_list_store_set(GTK_LIST_STORE(model),&iter,7,0,-1);
- yon_advanced_set_part_sensitivity(widgets,1);
- }
-
- }
- }
- g_object_set_data(G_OBJECT(widgets->AdvancedPartitionAddBox),part->part,NULL);
- g_sequence_remove(part->order_iter);
- gtk_widget_destroy(part->MainBox);
- on_advanced_parts_removed(NULL,NULL,widgets);
- free(part);
-
-}
-
-void on_advanced_parts_added(GtkWidget *,GtkWidget*,main_window *widgets){
- if (yon_advanced_get_part_size(widgets)>=2){
- yon_advanced_set_part_sensitivity(widgets,0);
- gtk_widget_hide(widgets->AdvancedAddButton);
- }
-}
-
-void on_advanced_parts_removed(GtkWidget *,GtkWidget*,main_window *widgets){
- int size = yon_advanced_get_part_size(widgets);
- if (size<2){
- yon_advanced_set_part_sensitivity(widgets,1);
- gtk_widget_show(widgets->AdvancedAddButton);
- }
- if (!size){
-
- }
-}
-
-void yon_advanced_partition_setup(advanced_partition *part,main_window *widgets){
- g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove),widgets);
- g_object_set_data(G_OBJECT(widgets->AdvancedPartitionAddBox),part->part,part);
-}
-
-void on_install_advanced_add_new(GtkWidget *, main_window *widgets){
- advanced_partition *part = yon_advanced_partition_new();
- part->part_type = ADVANCED_PART_NEW;
- part->order_iter = g_sequence_append(widgets->advanced_partition_order,part);
- gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0);
- gtk_widget_show(part->MainBox);
- yon_advanced_partition_setup(part,widgets);
- on_advanced_parts_added(NULL,NULL,widgets);
-}
-
-void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){
- gtk_list_store_clear(widgets->PartitionsList);
- yon_advanced_partition_clear(widgets);
-
- int size;
- config_str partitions;
- partitions = yon_config_load(yon_debug_output("%s\n",get_parts_and_devices_command),&size);
- for (int i=0;iDevicesList);
-
- int chosen = 0;
- chosen = yon_advanced_get_part_size(widgets);
-
- if (gtk_tree_model_get_iter_from_string(model,&iter,path)){
- int status;
- gtk_tree_model_get(model,&iter,5,&status,-1);
- if (!status){
- if (chosen <2){
- gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1);
- chosen++;
- } else {
- for_iter (model,&iter){
- gtk_tree_model_get(model,&iter,5,&status,-1);
- if (!status){
- gtk_list_store_set(widgets->DevicesList,&iter,6,0,-1);
- }
- }
-
- }
- } else {
- gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1);
- if (chosen == 2){
- for_iter (model,&iter){
- gtk_list_store_set(widgets->DevicesList,&iter,6,1,-1);
- }
- }
- chosen--;
- }
- }
-
- if (chosen) gtk_widget_set_sensitive(widgets->AdvancedAddButton,1);
- else gtk_widget_set_sensitive(widgets->AdvancedAddButton,0);
-
- for_iter (model,&iter){
- char *disk_path;
- int status;
- gtk_tree_model_get(model,&iter,0,&disk_path,5,&status,-1);
- if (!status) continue;
-
- for (int i=0;i2){
- char sizemod='\0';
- capacity_long = atol(parsed[2]);
-
- char *temp = yon_char_from_double(yon_size_long_convert_automatic(capacity_long,&sizemod));
- capacity = yon_char_append_c(temp,sizemod);
- free(temp);
- }
- if (parsed_size>7&&!yon_char_is_empty(parsed[7])){
- char sizemod='\0';
- free_space_long = capacity_long-atol(parsed[7]);
- char *temp = yon_char_from_double(yon_size_long_convert_automatic(free_space_long,&sizemod));
- free_space = yon_char_append_c(temp,sizemod);
- free(temp);
- }
- if (parsed_size>3){
- fs_type = parsed[3];
- }
- if (parsed_size>4){
- label = parsed[4];
- }
-
- GtkTreeIter itar;
- gtk_list_store_append(widgets->PartitionsList,&itar);
- gtk_list_store_set(widgets->PartitionsList,&itar,0,name,1,capacity,2,free_space,3,fs_type,4,label,5,capacity_long,6,free_space_long,8,1,-1);
- }
- yon_char_parsed_free(parsed,parsed_size);
- }
- }
- }
-
-}
-
-void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
-
- int chosen = 0;
- chosen = yon_advanced_get_part_size(widgets);
-
- gtk_tree_model_get_iter_from_string(model,&iter,path);
- int status;
- char *target_part;
- gtk_tree_model_get(model,&iter,0,&target_part,7,&status,-1);
-
- if (!status){
- if (chosen<2){
- gtk_list_store_set(widgets->PartitionsList,&iter,7,!status,-1);
- chosen++;
- advanced_partition *part = yon_advanced_partition_new();
- part->part_type = ADVANCED_PART_EXISTING;
- part->order_iter = g_sequence_append(widgets->advanced_partition_order,part);
- part->part = target_part;
- gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0);
- gtk_widget_show(part->MainBox);
- yon_advanced_partition_setup(part,widgets);
- on_advanced_parts_added(NULL,NULL,widgets);
- }
- } else {
- gtk_list_store_set(widgets->PartitionsList,&iter,7,!status,-1);
- advanced_partition *part = g_object_get_data(G_OBJECT(widgets->AdvancedPartitionAddBox),target_part);
- if (part){
- on_advanced_part_remove(part->RemoveButton,widgets);
- }
- }
}
\ No newline at end of file
diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c
index b13fbd6..ebd9902 100644
--- a/source/ubinstall-gtk-page-switch.c
+++ b/source/ubinstall-gtk-page-switch.c
@@ -191,7 +191,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
return yon_install_same_partition_save(widgets);
break;
case YON_PAGE_INSTALL_ADVANCED:
- return yon_install_advanced_save(widgets);
+ return yon_advanced_save(widgets);
break;
case YON_PAGE_RECOVERY_GRUB_INSTALL:
return yon_grub_install_save(widgets);
diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
index 7914616..b2c195b 100644
--- a/source/ubinstall-gtk.c
+++ b/source/ubinstall-gtk.c
@@ -3,6 +3,37 @@
config main_config;
// //functions
+// void yon_encryption_type_setup(GtkComboBoxText *target){
+// int size;
+// config_str enc_types = yon_resource_open_file(encryptions_path,&size);
+// for (int i=0;iAdditionalSoftwareList),&iter,path);
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,0,&status,-1);
+ gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,!status,-1);
+}
+
+void on_gparted_open(){
+ yon_launch_app_with_arguments(open_gparted_command,NULL);
+}
+
+
+void on_reboot_accepted(main_window *widgets){
+ 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;
+ g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event");
+ while(gtk_events_pending()) gtk_main_iteration();
+ if (system("reboot")){};
+}
+
+void on_exit_accepted(main_window *widgets){
+ 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;
+ // g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event");
+ while(gtk_events_pending()) gtk_main_iteration();
+ gtk_widget_destroy(widgets->MainWindow);
+}
+
+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=WARNING_TEXT_LABEL;
+ data->title=WARNING_TITLE_LABEL;
+ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
+ on_exit_accepted(widgets);
+ gtk_main_quit();
+ return 1;
+ }
+ }
+
+ return 1;
+}
+
void on_locale_changed(GtkWidget *,main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
@@ -330,6 +414,9 @@ void on_locale_changed(GtkWidget *,main_window *widgets){
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;
}
}
@@ -368,59 +455,6 @@ void on_installer_language_changed(GtkWidget *self, main_window *widgets){
}
-void on_additional_software_toggled(GtkWidget *, char *path, main_window *widgets){
- GtkTreeIter iter;
- int status;
- gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,path);
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,0,&status,-1);
- gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,!status,-1);
-}
-
-void on_gparted_open(){
- yon_launch_app_with_arguments(open_gparted_command,NULL);
-}
-
-
-void on_reboot_accepted(main_window *widgets){
- 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;
- g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event");
- while(gtk_events_pending()) gtk_main_iteration();
- if (system("reboot")){};
-}
-
-void on_exit_accepted(main_window *widgets){
- 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;
- // g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event");
- while(gtk_events_pending()) gtk_main_iteration();
- gtk_widget_destroy(widgets->MainWindow);
-}
-
-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=WARNING_TEXT_LABEL;
- data->title=WARNING_TITLE_LABEL;
- if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
- on_exit_accepted(widgets);
- gtk_main_quit();
- return 1;
- }
- }
-
- return 1;
-}
-
typedef struct{
char *locale_name;
char *code;
@@ -428,100 +462,69 @@ typedef struct{
char *code_full;
} locale_struct;
+int yon_char_parsed_compare(const void *a, const void *b){
+ const config_str str_a = (const config_str)a;
+ const config_str str_b = (const config_str)b;
+
+ return strcmp(*str_a,*str_b);
+}
+
void set_locales_list(main_window *widgets){
gtk_list_store_clear(widgets->InstallerLanguageList);
gtk_list_store_clear(widgets->InstallerCountryList);
- GHashTable *localisations = g_hash_table_new(g_str_hash,g_str_equal);
- int locales_size;
- config_str locales = yon_dir_get_contents(locales_list_command,&locales_size);
- dictionary *locale_dict = NULL;
- for (int i=0;iInstallerCountryList,&iter);
- gtk_list_store_set(widgets->InstallerCountryList,&iter,0,code,1,_(country),2,locales[i],3,_(tooltip),-1);
+ char *config_code = 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);
}
- if (!g_hash_table_contains(localisations,code)) {
- locale_struct *locale = malloc(sizeof(locale_struct));
- memset(locale,0,sizeof(locale_struct));
-
- locale->locale_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"language");
- locale->code = code;
- locale->localised_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"lang_name");
- locale->code_full = yon_char_new(locales[i]);
-
- if (!yon_char_is_empty(locale->locale_name)){
- yon_char_remove_last_symbol(locale->locale_name,'\n');
- yon_char_remove_last_symbol(locale->locale_name,'"');
+ gtk_list_store_append(widgets->InstallerCountryList,&itar);
+ gtk_list_store_set(widgets->InstallerCountryList,&itar,
+ 0,lang_ab,
+ 1,_(country),
+ 2,locales[i],
+ 3,title,
+ -1);
+ if (yon_char_is_empty(config_code)){
+ config_code=setlocale(LC_ALL,NULL);
+ char *temp = strstr(config_code,".");
+ if (temp) temp[0]='\0';
}
- if (!yon_char_is_empty(locale->localised_name)){
- yon_char_remove_last_symbol(locale->localised_name,'\n');
- yon_char_remove_last_symbol(locale->localised_name,'"');
- }
- yon_dictionary_add_or_create_if_exists_with_data(locale_dict,locales[i],locale);
- free(yon_char_divide_search(locale->locale_name,"\"",-1));
- free(yon_char_divide_search(locale->localised_name,"\"",-1));
- g_hash_table_add(localisations,code);
- }
- yon_char_parsed_free(code_info,info_size);
- }
- yon_char_parsed_free(locales,locales_size);
-
- GtkTreeIter iter;
- dictionary *dict;
- char *config_val = yon_char_new(config(installer_lang_parameter));
- char *config_code = NULL;
- if (yon_char_is_empty(config_val)) config_val = yon_char_new(setlocale(LC_ALL,NULL));
- if(strstr(config_val,"_")){
- config_code = yon_char_divide_search(config_val,"_",-1);
- free(config_val);
-
- }
- for_dictionaries(dict,locale_dict){
- locale_struct *locale = yon_dictionary_get_data(dict,locale_struct*);
- gtk_list_store_append(widgets->InstallerLanguageList,&iter);
- gtk_list_store_set(widgets->InstallerLanguageList,&iter,0,locale->code,1,locale->locale_name,2,_(locale->localised_name),3,locale->code_full,-1);
- if (!yon_char_is_empty(config_code)){
- if (!strcmp(config_code,locale->code)){
+ 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);
}
@@ -531,8 +534,9 @@ gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *w
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);
- char *code;
+ 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);
@@ -673,6 +677,8 @@ void yon_main_window_create(main_window *widgets){
widgets->GpartedGrubUpdateButton = yon_gtk_builder_get_widget(builder,"GpartedGrubUpdateButton");
widgets->OSDevicesTree = yon_gtk_builder_get_widget(builder,"OSDevicesTree");
+ widgets->OSSpinner = yon_gtk_builder_get_widget(builder,"OSSpinner");
+ widgets->OSOverlay = yon_gtk_builder_get_widget(builder,"OSOverlay");
widgets->OSSysSectionTree = yon_gtk_builder_get_widget(builder,"OSSysSectionTree");
widgets->GpartedOSButton = yon_gtk_builder_get_widget(builder,"GpartedOSButton");
widgets->OSFormatSwitch = yon_gtk_builder_get_widget(builder,"OSFormatSwitch");
@@ -915,15 +921,17 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSpin);
g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSizeSwitch);
- g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_install_advanced_add_new),widgets);
+ // g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_install_advanced_add_new),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets);
- g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets);
+ // g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardLayoutChosenCell),"toggled",G_CALLBACK(on_keyboard_layout_chosen),widgets);
// g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"add",G_CALLBACK(on_advanced_parts_added),widgets);
// g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"remove",G_CALLBACK(on_advanced_parts_removed),widgets);
g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets);
g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets);
+ g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets);
+ g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets);
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL);
{
@@ -988,6 +996,7 @@ void yon_main_window_create(main_window *widgets){
// locale = setlocale(LC_ALL,NULL);
// }
// yon_ubl_window_init(TITLE_LABEL,DESCRIPTION_LABEL,locale,CssPath,LocaleName,version_application,WIKI_LINK);
+ yon_locale_init();
set_locales_list(widgets);
// {
// char *parameter = config(installer_lang_parameter);
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
index 541ba2a..8095315 100755
--- a/source/ubinstall-gtk.h
+++ b/source/ubinstall-gtk.h
@@ -72,6 +72,8 @@
#define network_path "resource:///com/ublinux/csv/network-list.csv"
#define fs_types_path "resource:///com/ublinux/csv/filesystems-format-list.csv"
+#define encryptions_list "luks1","luks2"
+
#define locales_list_command "/usr/share/i18n/locales/"
#define slide_0_path "/com/ublinux/images/slide-0.png"
@@ -560,6 +562,8 @@ typedef struct {
GtkWidget *OSFormatFSMarkEntry;
GtkWidget *OSFormatEncryptionCombo;
GtkWidget *OSFormatEncryptionEntry;
+ GtkWidget *OSSpinner;
+ GtkWidget *OSOverlay;
GtkWidget *GpartedUserdataButton;
GtkWidget *UserdataDevicesTree;
@@ -699,9 +703,9 @@ typedef struct {
GtkWidget *FormatRevealer;
GtkWidget *SizeSpin;
GtkWidget *SizeCombo;
- GtkWidget *SectionMarkEntry;
+ GtkWidget *PartLabelEntry;
GtkWidget *FileSystemTypeCombo;
- GtkWidget *FileSystemMarkentry;
+ GtkWidget *FileSystemLabelEntry;
GtkWidget *EncryptionCombo;
GtkWidget *EncryptionEntry;
GtkWidget *EncryptionButton;
@@ -928,6 +932,28 @@ typedef struct {
} source_element;
+enum PART_SOURCE {
+ PART_SOURCE_DEVICE,
+ PART_SOURCE_PART
+};
+
+typedef struct {
+ char *partition;
+ char *device;
+ int sys_section;
+ int user_section;
+ gboolean format;
+ unsigned long size;
+ char size_letter;
+ char *part_label;
+ char *fs_type;
+ char *fs_label;
+ char *encryption;
+ char *encryption_password;
+ enum PART_SOURCE part_source;
+} advanced_section;
+
+
void config_init();
main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new();
@@ -1094,19 +1120,13 @@ void yon_install_advanced_init(main_window *widgets);
void yon_os_components_init(main_window *widgets);
void yon_pacman_init(main_window *widgets);
void yon_software_init(main_window *widgets);
-void on_install_advanced_add_new(GtkWidget *, main_window *widgets);
void on_install_advanced_device_chosen(GtkCellRenderer*, gchar *path, main_window *widgets);
void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets);
void yon_devices_setup(main_window *widgets);
void on_advanced_password_clicked(GtkWidget *, advanced_partition *part);
advanced_partition *yon_advanced_partition_new();
-void yon_advanced_partition_setup(advanced_partition *part,main_window *widgets);
void on_advanced_part_remove(GtkWidget *self, main_window *widgets);
int yon_advanced_get_part_size(main_window *widgets);
-void yon_advanced_set_part_sensitivity(main_window *widgets, gboolean state);
-void yon_advanced_set_device_sensitivity(main_window *widgets, gboolean state);
-void on_advanced_parts_removed(GtkWidget *,GtkWidget*,main_window *widgets);
-void on_advanced_parts_added(GtkWidget *,GtkWidget*,main_window *widgets);
void yon_advanced_partition_clear(main_window *widgets);
void yon_layout_build(char *key, GHashTable *value, main_window *widgets);
void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description);
@@ -1133,4 +1153,23 @@ void on_vnc_toggled(GtkWidget *self, main_window *widgets);
void yon_main_window_create(main_window *widgets);
void set_locales_list(main_window *widgets);
void on_installer_language_changed(GtkWidget *self, main_window *widgets);
-gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets);
\ No newline at end of file
+gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets);
+int yon_char_parsed_compare(const void *a, const void *b);
+gboolean yon_os_component_insert(os_row *row);
+void *yon_os_components_setup(main_window *widgets);
+gboolean yon_spinner_switch_off(GtkSpinner *target);
+void on_advanced_added(GtkWidget *, char *, main_window *);
+void on_advanced_new(GtkWidget *, main_window *);
+int yon_advanced_section_get(char *partition);
+void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section);
+void yon_advanced_update(main_window *widgets);
+void on_advanced_partition_create(GtkWidget *, main_window *widgets);
+void yon_advanced_parts_update(main_window *widgets);
+void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets);
+void yon_advanced_section_remove_all();
+void on_advanced_section_toggled(GtkWidget *self, main_window *widgets);
+void yon_fs_type_setup(GtkComboBoxText *target);
+void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets);
+void on_advanced_size_changed(GtkWidget *self,main_window *widgets);
+int yon_advanced_save(main_window *widgets);
+void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part);
\ No newline at end of file
diff --git a/source/ubl-settings-advanced.c b/source/ubl-settings-advanced.c
deleted file mode 100644
index 57c7fed..0000000
--- a/source/ubl-settings-advanced.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "ubinstall-gtk.h"
-
-typedef struct {
- char *section;
- int sys_section;
- int user_section;
- int format;
- int size;
- char size_letter;
- char *part_label;
- char *fs_type;
- char *fs_label;
- char *encryption;
- char *encryption_password;
-
-} advanced_section;
-
-int sections_size=0;
-advanced_section *sections[2] = {NULL};
-
-advanced_section *yon_advanced_section_new(){
- if (sections_size>=2) return NULL;
-
- advanced_section *section = malloc(sizeof(advanced_section));
- memset(section,0,sizeof(advanced_section));
- sections[sections_size] = section;
- sections_size++;
- return section;
-}
-
-void yon_advanced_section_remove(int pos){
- switch(pos){
- case 0:
- free(sections[0]);
- if (sections[1]){
- sections[0]=sections[1];
- sections[1]=NULL;
- } else {
- sections[0]=NULL;
- }
- sections_size--;
- break;
- case 1:
- if (sections[1]){
- free(sections[1]);
- sections[1]=NULL;
- sections_size--;
- }
- break;
- default: return;
- }
-}
-
-
-
-// add section from tree view
-void yon_advanced_add(main_window *widgets){
-
-}
-
-//new section from button
-void yon_advanced_new(main_window *widgets){
-
-}
\ No newline at end of file
diff --git a/ubinstall-gtk-advanced-box.glade b/ubinstall-gtk-advanced-box.glade
index ead6d05..9594bbc 100644
--- a/ubinstall-gtk-advanced-box.glade
+++ b/ubinstall-gtk-advanced-box.glade
@@ -3,6 +3,11 @@
+
False
@@ -198,6 +209,7 @@
True
True
+ adjustment1
False
@@ -209,6 +221,7 @@
True
False
+ 0
- Mb
- Gb
@@ -235,7 +248,7 @@
-
+
True
True
@@ -261,6 +274,7 @@
True
False
+ 0
- Default
@@ -297,7 +311,7 @@
-
+
True
True
@@ -324,6 +338,7 @@
True
False
+ 0
- Off
@@ -349,6 +364,7 @@
True
+ False
True
@@ -360,6 +376,7 @@
True
+ False
True
True
image4
diff --git a/ubinstall-gtk.css b/ubinstall-gtk.css
index 9823f36..0636e16 100644
--- a/ubinstall-gtk.css
+++ b/ubinstall-gtk.css
@@ -318,4 +318,14 @@ treeview row:nth-child(even) { background-color: #ffffff; }
border-style: solid;
border-color: @theme_fg_color;
+}
+
+button {
+ min-width: 26px;
+ min-height: 24px;
+}
+
+.unsensitiveblock:disabled {
+ opacity:1;
+ background:@theme_selected_bg_color;
}
\ No newline at end of file
diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade
index 31ad87d..9a3a93a 100644
--- a/ubinstall-gtk.glade
+++ b/ubinstall-gtk.glade
@@ -1,5 +1,5 @@
-
+
@@ -148,6 +148,10 @@
+
+ True
+ False
+
@@ -198,6 +202,8 @@
+
+
@@ -1517,40 +1523,49 @@ and help you install UBLinux on your computer
5
5
-
+
True
- True
- in
+ False
-
+
True
- False
- 5
- 5
- 5
- 5
- 5
- 5
+ True
+ in
-
+
True
False
- vertical
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
-
+
True
False
- none
+ vertical
+
+
+ True
+ False
+ none
+
+
+ True
+ True
+ 1
+
+
-
- True
- True
- 1
-
+
+ -1
+
@@ -6871,90 +6886,98 @@ separately into the selected partition.
-
+
True
- True
+ False
+ 0
in
- 105
-
+
True
- True
- DevicesList
- 0
-
-
- none
-
-
+ False
-
+
+ 125
+ True
+ True
+ DevicesList
+ 0
+
+
+
-
-
- 6
- 5
-
+
+
+
+
+ 6
+ 5
+
+
+
-
-
-
-
- Device
-
-
- 0
-
+
+ Device
+
+
+
+ 0
+
+
+
-
-
-
-
- Description
-
-
- 1
-
+
+ Description
+
+
+
+ 1
+
+
+
-
-
-
-
- Label
-
-
- 2
-
+
+ Label
+
+
+
+ 2
+
+
+
-
-
-
-
- Size
-
-
- 3
-
+
+ Size
+
+
+
+ 3
+
+
+
-
-
-
-
- Serial
-
-
- 4
-
+
+ Serial
+
+
+
+ 4
+
+
+
+
+
+
False
@@ -7037,90 +7060,98 @@ separately into the selected partition.
-
+
True
- True
+ False
+ 0
in
- 140
-
+
True
- True
- PartitionsList
- 0
-
-
- none
-
-
+ False
-
+
+ 125
+ True
+ True
+ PartitionsList
+ 0
+
+
+
-
-
- 8
- 7
-
+
+
+
+
+ 8
+ 7
+
+
+
-
-
-
-
- Section
-
-
- 0
-
+
+ Section
+
+
+
+ 0
+
+
+
-
-
-
-
- Capacity
-
-
- 1
-
+
+ Capacity
+
+
+
+ 1
+
+
+
-
-
-
-
- Free space
-
-
- 2
-
+
+ Free space
+
+
+
+ 2
+
+
+
-
-
-
-
- File system
-
-
- 3
-
+
+ File system
+
+
+
+ 3
+
+
+
-
-
-
-
- Label
-
-
- 4
-
+
+ Label
+
+
+
+ 4
+
+
+
+
+
+
False
@@ -7161,7 +7192,6 @@ separately into the selected partition.
+
True
- False
True
True