Merge pull request 'Languages loading rework' (#102) from YanTheKaller/ubinstall-gtk:master into master

Reviewed-on: #102
master
Dmitry Razumov 3 weeks ago
commit 9187d7de0e

@ -56,7 +56,6 @@
<file>kernel-list-addon.csv</file> <file>kernel-list-addon.csv</file>
<file>services-list.csv</file> <file>services-list.csv</file>
<file>network-list.csv</file> <file>network-list.csv</file>
<file>languages.csv</file>
<file>filesystems-format-list.csv</file> <file>filesystems-format-list.csv</file>
</gresource> </gresource>
</gresources> </gresources>

@ -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
1 LANG LANG_NAME
2 af_ZA.UTF-8 Afrikaans
3 ar_AE.UTF-8 Arabic
4 as_IN.UTF-8 Assamese
5 az_AZ.UTF-8 Azerbaijani
6 be_BY.UTF-8 Belarusian
7 bg_BG.UTF-8 Bulgarian
8 bn_IN.UTF-8 Bengali
9 bs_BA.UTF-8 Bosnian
10 ca_ES.UTF-8 Catalan
11 cs_CZ.UTF-8 Czech
12 da_DK.UTF-8 Danish
13 de_DE.UTF-8 German
14 el_GR.UTF-8 Greek
15 en_GB.UTF-8 English
16 es_ES.UTF-8 Spanish
17 et_EE.UTF-8 Estonian
18 fi_FI.UTF-8 Finnish
19 fr_FR.UTF-8 French
20 gu_IN.UTF-8 Gujarati
21 he_IL.UTF-8 Hebrew
22 hi_IN.UTF-8 Hindi
23 hr_HR.UTF-8 Croatian
24 hu_HU.UTF-8 Hungarian
25 hy_AM.UTF-8 Armenian
26 id_ID.UTF-8 Indonesian
27 is_IS.UTF-8 Icelandic
28 it_IT.UTF-8 Italian
29 ja_JP.UTF-8 Japanese
30 ka_GE.UTF-8 Georgian
31 kk_KZ.UTF-8 Kazakh
32 kn_IN.UTF-8 Kannada
33 ko_KR.UTF-8 Korean
34 ks_IN.UTF-8 Kashmiri
35 ku_TR.UTF-8 Kurdish
36 ky_KG.UTF-8 Kirghiz
37 lt_LT.UTF-8 Lithuanian
38 lv_LV.UTF-8 Latvian
39 mk_MK.UTF-8 Macedonian
40 ml_IN.UTF-8 Malayalam
41 mr_IN.UTF-8 Marathi
42 ms_MY.UTF-8 Malay
43 mt_MT.UTF-8 Maltese
44 nb_NO.UTF-8 Bokmal
45 nl_NL.UTF-8 Dutch
46 nn_NO.UTF-8 Nynorsk
47 or_IN.UTF-8 Oriya
48 pa_IN.UTF-8 Punjabi
49 pl_PL.UTF-8 Polish
50 pt_PT.UTF-8 Portuguese
51 ro_RO.UTF-8 Romanian
52 ru_RU.UTF-8 Russian
53 sa_IN.UTF-8 Sanskrit
54 sk_SK.UTF-8 Slovak
55 sl_SI.UTF-8 Slovenian
56 sq_AL.UTF-8 Albanian
57 sr_ME.UTF-8 Serbian
58 sr_RS.UTF-8 Serbian
59 sv_SE.UTF-8 Swedish
60 ta_IN.UTF-8 Tamil
61 te_IN.UTF-8 Telugu
62 th_TH.UTF-8 Thai
63 tr_TR.UTF-8 Turkish
64 uk_UA.UTF-8 Ukrainian
65 vi_VN.UTF-8 Vietnamese
66 zh_CN.UTF-8 Simplified Chinese

@ -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 ""

@ -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 <info@ublinux.com>, 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 "Традиционный китайский, Тайвань"

@ -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
1 LANG_GROUP LANG LANG_NAME
2 af af_ZA.UTF-8 Afrikaans, South Africa
3 ar ar_AE.UTF-8 Arabic, United Arab Emirates
4 ar ar_BH.UTF-8 Arabic, Bahrain
5 ar ar_DZ.UTF-8 Arabic, Algeria
6 ar ar_EG.UTF-8 Arabic, Egypt
7 ar ar_IQ.UTF-8 Arabic, Iraq
8 ar ar_JO.UTF-8 Arabic, Jordan
9 ar ar_KW.UTF-8 Arabic, Kuwait
10 ar ar_LY.UTF-8 Arabic, Libya
11 ar ar_MA.UTF-8 Arabic, Morocco
12 ar ar_OM.UTF-8 Arabic, Oman
13 ar ar_QA.UTF-8 Arabic, Qatar
14 ar ar_SA.UTF-8 Arabic, Saudi Arabia
15 ar ar_TN.UTF-8 Arabic, Tunisia
16 ar ar_YE.UTF-8 Arabic, Yemen
17 as as_IN.UTF-8 Assamese, India
18 az az_AZ.UTF-8 Azerbaijani, Azerbaijan
19 be be_BY.UTF-8 Belarusian, Belarus
20 bg bg_BG.UTF-8 Bulgarian, Bulgaria
21 bn bn_IN.UTF-8 Bengali, India
22 bs bs_BA.UTF-8 Bosnian, Bosnia and Herzegovina
23 ca ca_ES.UTF-8 Catalan, Spain
24 cs cs_CZ.UTF-8 Czech, Czech Republic
25 da da_DK.UTF-8 Danish, Denmark
26 de de_AT.UTF-8 German, Austria
27 de de_BE.UTF-8 German, Belgium
28 de de_CH.UTF-8 German, Switzerland
29 de de_DE.UTF-8 German, Germany
30 de de_LI.UTF-8 German, Liechtenstein
31 de de_LU.UTF-8 German, Luxembourg
32 el el_CY.UTF-8 Greek, Cyprus
33 el el_GR.UTF-8 Greek, Greece
34 en en_AU.UTF-8 English, Australia
35 en en_BW.UTF-8 English, Botswana
36 en en_CA.UTF-8 English, Canada
37 en en_GB.UTF-8 English, United Kingdom
38 en en_HK.UTF-8 English, Hong Kong SAR China
39 en en_IE.UTF-8 English, Ireland
40 en en_IN.UTF-8 English, India
41 en en_MT.UTF-8 English, Malta
42 en en_NZ.UTF-8 English, New Zealand
43 en en_PH.UTF-8 English, Philippines
44 en en_SG.UTF-8 English, Singapore
45 en en_US.UTF-8 English, U.S.A.
46 en en_ZW.UTF-8 English, Zimbabwe
47 es es_AR.UTF-8 Spanish, Argentina
48 es es_BO.UTF-8 Spanish, Bolivia
49 es es_CL.UTF-8 Spanish, Chile
50 es es_CO.UTF-8 Spanish, Colombia
51 es es_CR.UTF-8 Spanish, Costa Rica
52 es es_DO.UTF-8 Spanish, Dominican Republic
53 es es_EC.UTF-8 Spanish, Ecuador
54 es es_ES.UTF-8 Spanish, Spain
55 es es_GT.UTF-8 Spanish, Guatemala
56 es es_HN.UTF-8 Spanish, Honduras
57 es es_MX.UTF-8 Spanish, Mexico
58 es es_NI.UTF-8 Spanish, Nicaragua
59 es es_PA.UTF-8 Spanish, Panama
60 es es_PE.UTF-8 Spanish, Peru
61 es es_PR.UTF-8 Spanish, Puerto Rico
62 es es_PY.UTF-8 Spanish, Paraguay
63 es es_SV.UTF-8 Spanish, El Salvador
64 es es_US.UTF-8 Spanish, U.S.A.
65 es es_UY.UTF-8 Spanish, Uruguay
66 es es_VE.UTF-8 Spanish, Venezuela
67 et et_EE.UTF-8 Estonian, Estonia
68 fi fi_FI.UTF-8 Finnish, Finland
69 fr fr_BE.UTF-8 French, Belgium
70 fr fr_CA.UTF-8 French, Canada
71 fr fr_CH.UTF-8 French, Switzerland
72 fr fr_FR.UTF-8 French, France
73 fr fr_LU.UTF-8 French, Luxembourg
74 gu gu_IN.UTF-8 Gujarati, India
75 he he_IL.UTF-8 Hebrew, Israel
76 hi hi_IN.UTF-8 Hindi, India
77 hr hr_HR.UTF-8 Croatian, Croatia
78 hu hu_HU.UTF-8 Hungarian, Hungary
79 hy hy_AM.UTF-8 Armenian, Armenia
80 id id_ID.UTF-8 Indonesian, Indonesia
81 is is_IS.UTF-8 Icelandic, Iceland
82 it it_CH.UTF-8 Italian, Switzerland
83 it it_IT.UTF-8 Italian, Italy
84 ja ja_JP.UTF-8 Japanese, Japan
85 ka ka_GE.UTF-8 Georgian, Georgia
86 kk kk_KZ.UTF-8 Kazakh, Kazakhstan
87 kn kn_IN.UTF-8 Kannada, India
88 ko ko_KR.UTF-8 Korean, Korea
89 ks ks_IN.UTF-8 Kashmiri, India
90 ku ku_TR.UTF-8 Kurdish, Turkey
91 ku ku_TR.UTF-8@sorani Kurdish (Sorani), Turkey
92 ky ky_KG.UTF-8 Kirghiz, Kyrgyzstan
93 lt lt_LT.UTF-8 Lithuanian, Lithuania
94 lv lv_LV.UTF-8 Latvian, Latvia
95 mk mk_MK.UTF-8 Macedonian, Macedonia
96 ml ml_IN.UTF-8 Malayalam, India
97 mr mr_IN.UTF-8 Marathi, India
98 ms ms_MY.UTF-8 Malay, Malaysia
99 mt mt_MT.UTF-8 Maltese, Malta
100 nb nb_NO.UTF-8 Bokmal, Norway
101 nl nl_BE.UTF-8 Dutch, Belgium
102 nl nl_NL.UTF-8 Dutch, Netherlands
103 nn nn_NO.UTF-8 Nynorsk, Norway
104 or or_IN.UTF-8 Oriya, India
105 pa pa_IN.UTF-8 Punjabi, India
106 pl pl_PL.UTF-8 Polish, Poland
107 pt pt_BR.UTF-8 Portuguese, Brazil
108 pt pt_PT.UTF-8 Portuguese, Portugal
109 ro ro_RO.UTF-8 Romanian, Romania
110 ru ru_RU.UTF-8 Russian, Russia
111 ru ru_UA.UTF-8 Russian, Ukraine
112 sa sa_IN.UTF-8 Sanskrit, India
113 sk sk_SK.UTF-8 Slovak, Slovakia
114 sl sl_SI.UTF-8 Slovenian, Slovenia
115 sq sq_AL.UTF-8 Albanian, Albania
116 sr sr_ME.UTF-8 Serbian, Montenegro
117 sr sr_ME.UTF-8@latin Serbian, Montenegro (Latin)
118 sr sr_RS.UTF-8 Serbian, Serbia
119 sr sr_RS.UTF-8@latin Serbian, Serbia (Latin)
120 sv sv_SE.UTF-8 Swedish, Sweden
121 ta ta_IN.UTF-8 Tamil, India
122 te te_IN.UTF-8 Telugu, India
123 th th_TH.UTF-8 Thai, Thailand
124 tr tr_TR.UTF-8 Turkish, Turkey
125 uk uk_UA.UTF-8 Ukrainian, Ukraine
126 vi vi_VN.UTF-8 Vietnamese, Vietnam
127 zh zh_CN.UTF-8 Simplified Chinese, China
128 zh zh_HK.UTF-8 Traditional Chinese, Hong Kong SAR China
129 zh zh_SG.UTF-8 Chinese, Singapore
130 zh zh_TW.UTF-8 Traditional Chinese, Taiwan

@ -78,7 +78,6 @@ set(DEPENDFILES
../kernel-list-addon.csv ../kernel-list-addon.csv
../services-list.csv ../services-list.csv
../network-list.csv ../network-list.csv
../languages.csv
../filesystems-format-list.csv ../filesystems-format-list.csv
../icons-builtin/install_type_custom_normal.png ../icons-builtin/install_type_custom_normal.png
../icons-builtin/install_type_data_only_normal.png ../icons-builtin/install_type_data_only_normal.png
@ -126,6 +125,7 @@ endif()
set(SOURCE_FILES set(SOURCE_FILES
ubinstall-gtk.c ubinstall-gtk.c
ubinstall-gtk-advanced.c
ubinstall-gtk-page-switch.c ubinstall-gtk-page-switch.c
ubinstall-gtk-keyboard.c ubinstall-gtk-keyboard.c
ubinstall-gtk-region.c ubinstall-gtk-region.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&&section){
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;i<sections_size;i++){
advanced_partition *part = yon_advanced_partition_new();
g_signal_connect(G_OBJECT(part->RemoveButton),"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;i<size;i++){
yon_char_remove_last_symbol(partitions[i],'\n');
}
GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList);
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;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(partitions[i],&parsed_size,";");
if (!strcmp(parsed[0],"part")){
char *name = parsed[1];
if (strstr(name,disk_path)){
char *capacity = NULL;
long capacity_long = 0;
char *free_space = NULL;
long free_space_long = 0;
char *fs_type = NULL;
char *label = NULL;
if (parsed_size>2){
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;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->EncryptionCombo),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);
}

@ -152,31 +152,48 @@ void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *d
free(description_full); 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;i<base_size;i++){
yon_char_remove_last_symbol(base[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(base[i],&parsed_size,";");
char *version = parsed[1];
char *name = parsed[0];
char *tags = yon_char_replace(parsed[2]," ",", ");
char *description = parsed[3];
os_row *row = yon_os_row_new();
g_object_set_data(G_OBJECT(row->row),"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){ void yon_os_components_init(main_window *widgets){
int size = 0; int size = 0;
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter; GList *iter;
if (!list){ if (!list){
int base_size; gtk_overlay_add_overlay(GTK_OVERLAY(widgets->OSOverlay),widgets->OSSpinner);
config_str base = yon_config_load(get_modules_command,&base_size); gtk_spinner_start(GTK_SPINNER(widgets->OSSpinner));
for (int i=0;i<base_size;i++){ gtk_widget_show(widgets->OSSpinner);
yon_char_remove_last_symbol(base[i],'\n'); g_thread_new("geag",(GThreadFunc)yon_os_components_setup,widgets);
int parsed_size;
config_str parsed = yon_char_parse(base[i],&parsed_size,";");
char *version = parsed[1];
char *name = parsed[0];
char *tags = yon_char_replace(parsed[2]," ",", ");
char *description = parsed[3];
os_row *row = yon_os_row_new();
yon_os_row_setup(row,name,version,tags,description);
gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),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);
while(gtk_events_pending()) gtk_main_iteration(); while(gtk_events_pending()) gtk_main_iteration();
list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
for(iter = list;iter;iter=iter->next){ for(iter = list;iter;iter=iter->next){

@ -195,13 +195,13 @@ int yon_advanced_sections_save(dictionary *dict){
char *size = yon_char_unite(size_first,size_last?",":NULL,size_last,NULL); char *size = yon_char_unite(size_first,size_last?",":NULL,size_last,NULL);
yon_config_register(part_size_parameter,part_size_parameter_command,size); 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_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->SectionMarkEntry)):NULL; 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); 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); 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_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->FileSystemMarkentry)):NULL; 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); 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); 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; return 1;
} }
int yon_install_advanced_save(main_window *widgets){ // int yon_install_advanced_save(main_window *widgets){
GtkTreeModel *model; // GtkTreeModel *model;
GtkTreeIter iter; // GtkTreeIter iter;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&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_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)); // yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedDeviceTree));
return 0; // return 0;
} // }
char *device; // char *device;
gtk_tree_model_get(model,&iter,0,&device,-1); // 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)){ // 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_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)); // yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedPartitionTree));
return 0; // return 0;
} // }
yon_config_remove_by_key(part_size_parameter); // yon_config_remove_by_key(part_size_parameter);
char *part; // char *part;
gtk_tree_model_get(model,&iter,0,&part,-1); // gtk_tree_model_get(model,&iter,0,&part,-1);
if (!yon_advanced_sections_save(widgets->advanced_sections)){ // if (!yon_advanced_sections_save(widgets->advanced_sections)){
return 0; // return 0;
} // }
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){ // if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){ // if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){
yon_config_register(swap_parameter,swap_parameter_command,"auto"); // yon_config_register(swap_parameter,swap_parameter_command,"auto");
} else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){ // } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){
yon_config_register(swap_parameter,swap_parameter_command,"yes"); // yon_config_register(swap_parameter,swap_parameter_command,"yes");
yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram"); // yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram");
} else { // } else {
yon_config_register(swap_parameter,swap_parameter_command,"yes"); // 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)); // 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); // 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)); // const char *device_typevfs = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo));
if (!yon_char_is_empty(device_typevfs)){ // if (!yon_char_is_empty(device_typevfs)){
yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs); // yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs);
} else { // } else {
yon_config_remove_by_key(device_typevfs_parameter); // yon_config_remove_by_key(device_typevfs_parameter);
} // }
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){ // if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":""; // char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":"";
char *efi = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))?"efi":NULL; // 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); // 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); // yon_config_register(boot_parameter,boot_parameter_command,boot);
} else { // } else {
yon_config_register(boot_parameter,boot_parameter_command,"none"); // yon_config_register(boot_parameter,boot_parameter_command,"none");
} // }
return 1; // return 1;
} // }
void yon_install_advanced_init(main_window *){
// char *boot = config(boot_parameter);
// char *swap = config(swap_parameter);
}
void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_button, GtkComboBox *spin_combo){ void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_button, GtkComboBox *spin_combo){
GtkTreeModel *model; 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_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); 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;i<size;i++){
yon_char_remove_last_symbol(partitions[i],'\n');
}
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;
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;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(partitions[i],&parsed_size,";");
if (!strcmp(parsed[0],"part")){
char *name = parsed[1];
if (strstr(name,disk_path)){
char *capacity = NULL;
long capacity_long = 0;
char *free_space = NULL;
long free_space_long = 0;
char *fs_type = NULL;
char *label = NULL;
if (parsed_size>2){
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);
}
}
} }

@ -191,7 +191,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
return yon_install_same_partition_save(widgets); return yon_install_same_partition_save(widgets);
break; break;
case YON_PAGE_INSTALL_ADVANCED: case YON_PAGE_INSTALL_ADVANCED:
return yon_install_advanced_save(widgets); return yon_advanced_save(widgets);
break; break;
case YON_PAGE_RECOVERY_GRUB_INSTALL: case YON_PAGE_RECOVERY_GRUB_INSTALL:
return yon_grub_install_save(widgets); return yon_grub_install_save(widgets);

@ -3,6 +3,37 @@
config main_config; config main_config;
// //functions // //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;i<size;i++){
// yon_char_remove_last_symbol(enc_types[i],'\n');
// int parsed_size;
// config_str parsed = yon_char_parse(enc_types[i],&parsed_size,";");
// if (parsed_size){
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(target),parsed[0],parsed[0]);
// yon_char_parsed_free(parsed,parsed_size);
// }
// }
// }
void yon_fs_type_setup(GtkComboBoxText *target){
int size;
config_str enc_types = yon_resource_open_file(fs_types_path,&size);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(enc_types[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(enc_types[i],&parsed_size,";");
if (parsed_size){
if (parsed[0][0]=='1'){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(target),parsed[1],parsed[1]);
}
yon_char_parsed_free(parsed,parsed_size);
}
}
}
void on_vnc_toggled(GtkWidget *self, main_window *){ void on_vnc_toggled(GtkWidget *self, main_window *){
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(self))){ if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(self))){
yon_launch(enable_vnc_command); yon_launch(enable_vnc_command);
@ -310,6 +341,59 @@ void config_init(){
// void *on_setup_system_configuration(void *data); // void *on_setup_system_configuration(void *data);
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;
}
void on_locale_changed(GtkWidget *,main_window *widgets){ void on_locale_changed(GtkWidget *,main_window *widgets){
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model; GtkTreeModel *model;
@ -330,6 +414,9 @@ void on_locale_changed(GtkWidget *,main_window *widgets){
if (!strcmp(config_code,target)){ if (!strcmp(config_code,target)){
gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&iter,&itar); 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); 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; 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{ typedef struct{
char *locale_name; char *locale_name;
char *code; char *code;
@ -428,100 +462,69 @@ typedef struct{
char *code_full; char *code_full;
} locale_struct; } 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){ void set_locales_list(main_window *widgets){
gtk_list_store_clear(widgets->InstallerLanguageList); gtk_list_store_clear(widgets->InstallerLanguageList);
gtk_list_store_clear(widgets->InstallerCountryList); gtk_list_store_clear(widgets->InstallerCountryList);
GHashTable *localisations = g_hash_table_new(g_str_hash,g_str_equal); char *config_code = config(installer_lang_parameter);
int locales_size; int size;
config_str locales = yon_dir_get_contents(locales_list_command,&locales_size); config_str locales = yon_locale_get_all_codes(&size);
dictionary *locale_dict = NULL; qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
for (int i=0;i<locales_size;i++){ GtkTreeIter iter,itar;
if (!strcmp(locales[i],".")) continue; GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal);
if (!strcmp(locales[i],"..")) continue; textdomain(LOCALES_DOMAIN_NAME);
char *path = yon_char_unite(locales_list_command,locales[i],NULL); for (int i=0;i<size;i++){
int info_size; char *lang_ab = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_AB);
config_str code_info = yon_file_open(path,&info_size); char *language = yon_locale_get_parameter(locales[i],YON_LOCALE_LANGUAGE);
char *code = yon_char_parsed_check_exist_begins_with(code_info,info_size,"lang_ab"); char *lang_name = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_NAME);
if (yon_char_is_empty(code)) continue; char *territory = yon_locale_get_parameter(locales[i],YON_LOCALE_TERRITORY);
yon_char_remove_last_symbol(code,'\n'); char *title = yon_locale_get_parameter(locales[i],YON_LOCALE_TITLE);
yon_char_remove_last_symbol(code,'"'); if (yon_char_is_empty(lang_ab)||
free(yon_char_divide_search(code,"\"",-1)); yon_char_is_empty(language)||
yon_char_is_empty(lang_name)||
{ yon_char_is_empty(territory)||
char *region = yon_char_parsed_check_exist_begins_with(code_info,info_size,"territory"); yon_char_is_empty(title)) continue;
if (!yon_char_is_empty(region)){ char *country = yon_char_unite(language,", ",territory,NULL);
yon_char_remove_last_symbol(region,'\n'); if (!g_hash_table_contains(added,lang_ab)){
yon_char_remove_last_symbol(region,'"'); g_hash_table_add(added,yon_char_new(lang_ab));
free(yon_char_divide_search(region,"\"",-1)); gtk_list_store_append(widgets->InstallerLanguageList,&iter);
} gtk_list_store_set(widgets->InstallerLanguageList,&iter,
char *lang_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"language"); 0,lang_ab,
if (!yon_char_is_empty(lang_name)){ 1,_(language),
yon_char_remove_last_symbol(lang_name,'\n'); 2,lang_name,
yon_char_remove_last_symbol(lang_name,'"'); 3,locales[i],
free(yon_char_divide_search(lang_name,"\"",-1)); -1);
}
char *tooltip = yon_char_parsed_check_exist_begins_with(code_info,info_size,"title");
if (!yon_char_is_empty(tooltip)){
yon_char_remove_last_symbol(tooltip,'\n');
yon_char_remove_last_symbol(tooltip,'"');
free(yon_char_divide_search(tooltip,"\"",-1));
}
GtkTreeIter iter;
char *country = yon_char_unite(lang_name," (",region,")",NULL);
gtk_list_store_append(widgets->InstallerCountryList,&iter);
gtk_list_store_set(widgets->InstallerCountryList,&iter,0,code,1,_(country),2,locales[i],3,_(tooltip),-1);
} }
if (!g_hash_table_contains(localisations,code)) { gtk_list_store_append(widgets->InstallerCountryList,&itar);
locale_struct *locale = malloc(sizeof(locale_struct)); gtk_list_store_set(widgets->InstallerCountryList,&itar,
memset(locale,0,sizeof(locale_struct)); 0,lang_ab,
1,_(country),
locale->locale_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"language"); 2,locales[i],
locale->code = code; 3,title,
locale->localised_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"lang_name"); -1);
locale->code_full = yon_char_new(locales[i]); if (yon_char_is_empty(config_code)){
config_code=setlocale(LC_ALL,NULL);
if (!yon_char_is_empty(locale->locale_name)){ char *temp = strstr(config_code,".");
yon_char_remove_last_symbol(locale->locale_name,'\n'); if (temp) temp[0]='\0';
yon_char_remove_last_symbol(locale->locale_name,'"');
} }
if (!yon_char_is_empty(locale->localised_name)){ if (!strcmp(config_code,locales[i])){
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)){
g_signal_handlers_block_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets); 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); gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
on_locale_changed(NULL,widgets); on_locale_changed(NULL,widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),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; if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&itar)) return 0;
char *cur_code,*country; char *cur_code,*country;
gtk_tree_model_get(self,iter,0,&cur_code,1,&country,-1); 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); gtk_tree_model_get(model,&itar,0,&code,-1);
if (!strcmp(code,cur_code)){ if (!strcmp(code,cur_code)){
char *config_lang = config(installer_lang_parameter); 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->GpartedGrubUpdateButton = yon_gtk_builder_get_widget(builder,"GpartedGrubUpdateButton");
widgets->OSDevicesTree = yon_gtk_builder_get_widget(builder,"OSDevicesTree"); 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->OSSysSectionTree = yon_gtk_builder_get_widget(builder,"OSSysSectionTree");
widgets->GpartedOSButton = yon_gtk_builder_get_widget(builder,"GpartedOSButton"); widgets->GpartedOSButton = yon_gtk_builder_get_widget(builder,"GpartedOSButton");
widgets->OSFormatSwitch = yon_gtk_builder_get_widget(builder,"OSFormatSwitch"); 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->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->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->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->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),"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->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->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->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->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); 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); // locale = setlocale(LC_ALL,NULL);
// } // }
// yon_ubl_window_init(TITLE_LABEL,DESCRIPTION_LABEL,locale,CssPath,LocaleName,version_application,WIKI_LINK); // yon_ubl_window_init(TITLE_LABEL,DESCRIPTION_LABEL,locale,CssPath,LocaleName,version_application,WIKI_LINK);
yon_locale_init();
set_locales_list(widgets); set_locales_list(widgets);
// { // {
// char *parameter = config(installer_lang_parameter); // char *parameter = config(installer_lang_parameter);

@ -72,6 +72,8 @@
#define network_path "resource:///com/ublinux/csv/network-list.csv" #define network_path "resource:///com/ublinux/csv/network-list.csv"
#define fs_types_path "resource:///com/ublinux/csv/filesystems-format-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 locales_list_command "/usr/share/i18n/locales/"
#define slide_0_path "/com/ublinux/images/slide-0.png" #define slide_0_path "/com/ublinux/images/slide-0.png"
@ -560,6 +562,8 @@ typedef struct {
GtkWidget *OSFormatFSMarkEntry; GtkWidget *OSFormatFSMarkEntry;
GtkWidget *OSFormatEncryptionCombo; GtkWidget *OSFormatEncryptionCombo;
GtkWidget *OSFormatEncryptionEntry; GtkWidget *OSFormatEncryptionEntry;
GtkWidget *OSSpinner;
GtkWidget *OSOverlay;
GtkWidget *GpartedUserdataButton; GtkWidget *GpartedUserdataButton;
GtkWidget *UserdataDevicesTree; GtkWidget *UserdataDevicesTree;
@ -699,9 +703,9 @@ typedef struct {
GtkWidget *FormatRevealer; GtkWidget *FormatRevealer;
GtkWidget *SizeSpin; GtkWidget *SizeSpin;
GtkWidget *SizeCombo; GtkWidget *SizeCombo;
GtkWidget *SectionMarkEntry; GtkWidget *PartLabelEntry;
GtkWidget *FileSystemTypeCombo; GtkWidget *FileSystemTypeCombo;
GtkWidget *FileSystemMarkentry; GtkWidget *FileSystemLabelEntry;
GtkWidget *EncryptionCombo; GtkWidget *EncryptionCombo;
GtkWidget *EncryptionEntry; GtkWidget *EncryptionEntry;
GtkWidget *EncryptionButton; GtkWidget *EncryptionButton;
@ -928,6 +932,28 @@ typedef struct {
} source_element; } 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(); void config_init();
main_window *yon_main_window_complete(); main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new(); 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_os_components_init(main_window *widgets);
void yon_pacman_init(main_window *widgets); void yon_pacman_init(main_window *widgets);
void yon_software_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_device_chosen(GtkCellRenderer*, gchar *path, main_window *widgets);
void on_install_advanced_partition_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 yon_devices_setup(main_window *widgets);
void on_advanced_password_clicked(GtkWidget *, advanced_partition *part); void on_advanced_password_clicked(GtkWidget *, advanced_partition *part);
advanced_partition *yon_advanced_partition_new(); 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); void on_advanced_part_remove(GtkWidget *self, main_window *widgets);
int yon_advanced_get_part_size(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_advanced_partition_clear(main_window *widgets);
void yon_layout_build(char *key, GHashTable *value, 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); 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 yon_main_window_create(main_window *widgets);
void set_locales_list(main_window *widgets); void set_locales_list(main_window *widgets);
void on_installer_language_changed(GtkWidget *self, main_window *widgets); void on_installer_language_changed(GtkWidget *self, main_window *widgets);
gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets); gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets);
int yon_char_parsed_compare(const void *a, const void *b);
gboolean yon_os_component_insert(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);

@ -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){
}

@ -3,6 +3,11 @@
<interface domain="ubinstall-gtk"> <interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css --> <!-- interface-css-provider-path ubinstall-gtk.css -->
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -11,12 +16,12 @@
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.untoggled-symbolic</property>
</object> </object>
<object class="GtkImage" id="image3"> <object class="GtkImage" id="image3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.untoggled-symbolic</property>
</object> </object>
<object class="GtkImage" id="image4"> <object class="GtkImage" id="image4">
<property name="visible">True</property> <property name="visible">True</property>
@ -90,6 +95,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image2</property> <property name="image">image2</property>
<style>
<class name="unsensitiveblock"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -105,6 +113,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image3</property> <property name="image">image3</property>
<style>
<class name="unsensitiveblock"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -198,6 +209,7 @@
<object class="GtkSpinButton" id="SizeSpin"> <object class="GtkSpinButton" id="SizeSpin">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="adjustment">adjustment1</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -209,6 +221,7 @@
<object class="GtkComboBoxText" id="SizeCombo"> <object class="GtkComboBoxText" id="SizeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item id="M" translatable="yes">Mb</item> <item id="M" translatable="yes">Mb</item>
<item id="G" translatable="yes">Gb</item> <item id="G" translatable="yes">Gb</item>
@ -235,7 +248,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="SectionMarkEntry"> <object class="GtkEntry" id="PartLabelEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
@ -261,6 +274,7 @@
<object class="GtkComboBoxText" id="FileSystemTypeCombo"> <object class="GtkComboBoxText" id="FileSystemTypeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
</items> </items>
@ -297,7 +311,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="FileSystemMarkentry"> <object class="GtkEntry" id="FileSystemLabelEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
@ -324,6 +338,7 @@
<object class="GtkComboBoxText" id="EncryptionCombo"> <object class="GtkComboBoxText" id="EncryptionCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Off</item> <item translatable="yes">Off</item>
</items> </items>
@ -349,6 +364,7 @@
<child> <child>
<object class="GtkEntry" id="EncryptionEntry"> <object class="GtkEntry" id="EncryptionEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
@ -360,6 +376,7 @@
<child> <child>
<object class="GtkButton" id="EncryptionButton"> <object class="GtkButton" id="EncryptionButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image4</property> <property name="image">image4</property>

@ -318,4 +318,14 @@ treeview row:nth-child(even) { background-color: #ffffff; }
border-style: solid; border-style: solid;
border-color: @theme_fg_color; border-color: @theme_fg_color;
}
button {
min-width: 26px;
min-height: 24px;
}
.unsensitiveblock:disabled {
opacity:1;
background:@theme_selected_bg_color;
} }

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubinstall-gtk"> <interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css --> <!-- interface-css-provider-path ubinstall-gtk.css -->
@ -148,6 +148,10 @@
<column type="gchararray"/> <column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkSpinner" id="OSSpinner">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<object class="GtkListStore" id="PacmanSoftwareAllList"> <object class="GtkListStore" id="PacmanSoftwareAllList">
<columns> <columns>
<!-- column-name Chosen --> <!-- column-name Chosen -->
@ -198,6 +202,8 @@
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name Activatable --> <!-- column-name Activatable -->
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name SourceDevice -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkListStore" id="StartupList"> <object class="GtkListStore" id="StartupList">
@ -1517,40 +1523,49 @@ and help you install UBLinux on your computer</property>
<property name="left-padding">5</property> <property name="left-padding">5</property>
<property name="right-padding">5</property> <property name="right-padding">5</property>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkOverlay" id="OSOverlay">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="shadow-type">in</property>
<child> <child>
<object class="GtkViewport"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="margin-left">5</property> <property name="shadow-type">in</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkViewport">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child> <child>
<object class="GtkListBox" id="OSSoftwareListBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="selection-mode">none</property> <property name="orientation">vertical</property>
<child>
<object class="GtkListBox" id="OSSoftwareListBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="selection-mode">none</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="index">-1</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
@ -6871,90 +6886,98 @@ separately into the selected partition.</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property> <property name="shadow-type">in</property>
<property name="min-content-height">105</property>
<child> <child>
<object class="GtkTreeView" id="AdvancedDeviceTree"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="model">DevicesList</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeView" id="AdvancedDeviceTree">
<property name="height-request">125</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">DevicesList</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child> <child>
<object class="GtkCellRendererToggle" id="AdvancedDeviceChosenCell"/> <object class="GtkTreeViewColumn">
<attributes> <child>
<attribute name="sensitive">6</attribute> <object class="GtkCellRendererToggle" id="AdvancedDeviceChosenCell"/>
<attribute name="active">5</attribute> <attributes>
</attributes> <attribute name="sensitive">6</attribute>
<attribute name="active">5</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Device</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Device</property>
<attribute name="text">0</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Description</property>
<attribute name="text">1</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Label</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Label</property>
<attribute name="text">2</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Size</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Size</property>
<attribute name="text">3</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Serial</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Serial</property>
<attribute name="text">4</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
<child type="label_item">
<placeholder/>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -7037,90 +7060,98 @@ separately into the selected partition.</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property> <property name="shadow-type">in</property>
<property name="min-content-height">140</property>
<child> <child>
<object class="GtkTreeView" id="AdvancedPartitionTree"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="model">PartitionsList</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeView" id="AdvancedPartitionTree">
<property name="height-request">125</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">PartitionsList</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child> <child>
<object class="GtkCellRendererToggle" id="AdvancedPartChosenCell"/> <object class="GtkTreeViewColumn">
<attributes> <child>
<attribute name="sensitive">8</attribute> <object class="GtkCellRendererToggle" id="AdvancedPartChosenCell"/>
<attribute name="active">7</attribute> <attributes>
</attributes> <attribute name="sensitive">8</attribute>
<attribute name="active">7</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Section</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Section</property>
<attribute name="text">0</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Capacity</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Capacity</property>
<attribute name="text">1</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Free space</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Free space</property>
<attribute name="text">2</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">File system</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">File system</property>
<attribute name="text">3</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Label</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkTreeViewColumn">
<attributes> <property name="title" translatable="yes">Label</property>
<attribute name="text">4</attribute> <child>
</attributes> <object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
<child type="label_item">
<placeholder/>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -7161,7 +7192,6 @@ separately into the selected partition.</property>
<object class="GtkButton" id="AdvancedAddButton"> <object class="GtkButton" id="AdvancedAddButton">
<property name="label" translatable="yes">+</property> <property name="label" translatable="yes">+</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<style> <style>
@ -7506,6 +7536,7 @@ separately into the selected partition.</property>
<object class="GtkSwitch" id="AdvancedSwapAutoSwitch"> <object class="GtkSwitch" id="AdvancedSwapAutoSwitch">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="active">True</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

Loading…
Cancel
Save