Merge lp:~tintou/switchboard-plug-keyboard/less-hardcode into lp:~elementary-pantheon/switchboard-plug-keyboard/trunk
- less-hardcode
- Merge into trunk
Proposed by
Corentin Noël
Status: | Merged | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Danielle Foré | ||||||||||||||||
Approved revision: | 395 | ||||||||||||||||
Merged at revision: | 396 | ||||||||||||||||
Proposed branch: | lp:~tintou/switchboard-plug-keyboard/less-hardcode | ||||||||||||||||
Merge into: | lp:~elementary-pantheon/switchboard-plug-keyboard/trunk | ||||||||||||||||
Diff against target: |
940 lines (+143/-681) 7 files modified
CMakeLists.txt (+0/-5) data/layouts.txt (+0/-482) debian/control (+2/-2) src/Pages/Layout/add_layout.vala (+47/-15) src/Pages/Layout/display.vala (+5/-16) src/Pages/Layout/handler.vala (+89/-147) src/Pages/layout.vala (+0/-14) |
||||||||||||||||
To merge this branch: | bzr merge lp:~tintou/switchboard-plug-keyboard/less-hardcode | ||||||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Danielle Foré | Needs Fixing | ||
Review via email: mp+292331@code.launchpad.net |
Commit message
* Get layouts from xkb-data instead of hardcoding a list
* Allow translations
Description of the change
Less hardcode
Use system layouts
Allow translations
To post a comment you must log in.
Revision history for this message
Felipe Escoto (philip.scott) wrote : | # |
Revision history for this message
Danielle Foré (danrabbit) wrote : | # |
This branch also currently has the problem that languages and layouts aren't being properly matched. Corentin seemed to think it was because of the alphabetical sort
review:
Needs Fixing
Revision history for this message
Danielle Foré (danrabbit) wrote : | # |
The keyboard indicator has been updated
- 395. By Corentin Noël
-
Use the system keyboard layouts
Revision history for this message
Corentin Noël (tintou) wrote : | # |
I fixed the addition mish-mash, it's now okay for review
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2015-05-08 09:32:04 +0000 |
3 | +++ CMakeLists.txt 2016-04-20 22:56:03 +0000 |
4 | @@ -31,15 +31,10 @@ |
5 | configure_file (${CMAKE_SOURCE_DIR}/config.vala.cmake ${CMAKE_BINARY_DIR}/src/config.vala) |
6 | add_definitions (-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\") |
7 | |
8 | -# Files |
9 | -file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*") |
10 | - |
11 | # Comment this out to enable C compiler warnings |
12 | add_definitions (-w) |
13 | |
14 | # Traslation stuff |
15 | add_subdirectory (po) |
16 | -# Info-plug |
17 | -install (FILES ${resources} DESTINATION ${PKGDATADIR}) |
18 | |
19 | add_subdirectory(src) |
20 | |
21 | === removed directory 'data' |
22 | === removed file 'data/layouts.txt' |
23 | --- data/layouts.txt 2013-01-03 16:19:15 +0000 |
24 | +++ data/layouts.txt 1970-01-01 00:00:00 +0000 |
25 | @@ -1,482 +0,0 @@ |
26 | -#Afghani:af |
27 | -Pashto (Afghanistan, OLPC):olpc-ps |
28 | -Pashto:ps |
29 | -Persian (Afghanistan, Dari OLPC):fa-olpc |
30 | -Uzbek (Afghanistan):uz |
31 | -Uzbek (Afghanistan, OLPC):uz-olpc |
32 | -#Albanian:al |
33 | -#Amharic:et |
34 | -#Arabic (Morocco):ma |
35 | -Berber (Morocco, Tifinagh alternative phonetic):tifinagh-alt-phonetic |
36 | -Berber (Morocco, Tifinagh alternative):tifinagh-alt |
37 | -Berber (Morocco, Tifinagh extended phonetic):tifinagh-extended-phonetic |
38 | -Berber (Morocco, Tifinagh extended):tifinagh-extended |
39 | -Berber (Morocco, Tifinagh phonetic):tifinagh-phonetic |
40 | -Berber (Morocco, Tifinagh):tifinagh |
41 | -French (Morocco):french |
42 | -#Arabic (Syria):sy |
43 | -Kurdish (Syria, F):ku_f |
44 | -Kurdish (Syria, Latin Alt-Q):ku_alt |
45 | -Kurdish (Syria, Latin Q):ku |
46 | -Syriac (phonetic):syc_phonetic |
47 | -Syriac:syc |
48 | -#Arabic:ara |
49 | -Arabic (Buckwalter):buckwalter |
50 | -Arabic (azerty):azerty |
51 | -Arabic (azerty/digits):azerty_digits |
52 | -Arabic (digits):digits |
53 | -Arabic (qwerty):qwerty |
54 | -Arabic (qwerty/digits):qwerty_digits |
55 | -#Armenian:am |
56 | -Armenian (alternative eastern):eastern-alt |
57 | -Armenian (alternative phonetic):phonetic-alt |
58 | -Armenian (eastern):eastern |
59 | -Armenian (phonetic):phonetic |
60 | -Armenian (western):western |
61 | -#Azerbaijani:az |
62 | -Azerbaijani (Cyrillic):cyrillic |
63 | -#Bambara:ml |
64 | -English (Mali, US Macintosh):us-mac |
65 | -English (Mali, US international):us-intl |
66 | -French (Mali, alternative):fr-oss |
67 | -#Belarusian:by |
68 | -Belarusian (Latin):latin |
69 | -Belarusian (legacy):legacy |
70 | -#Belgian:be |
71 | -Belgian (ISO alternate):iso-alternate |
72 | -Belgian (Sun dead keys):sundeadkeys |
73 | -Belgian (Wang model 724 azerty):wang |
74 | -Belgian (alternative):oss |
75 | -Belgian (alternative, Sun dead keys):oss_sundeadkeys |
76 | -Belgian (alternative, latin-9 only):oss_latin9 |
77 | -Belgian (eliminate dead keys):nodeadkeys |
78 | -#Bengali:bd |
79 | -Bengali (Probhat):probhat |
80 | -#Bosnian:ba |
81 | -Bosnian (US keyboard with Bosnian digraphs):unicodeus |
82 | -Bosnian (US keyboard with Bosnian letters):us |
83 | -Bosnian (use Bosnian digraphs):unicode |
84 | -Bosnian (use guillemets for quotes):alternatequotes |
85 | -#Braille:brai |
86 | -Braille (left hand):left_hand |
87 | -Braille (right hand):right_hand |
88 | -#Bulgarian:bg |
89 | -Bulgarian (new phonetic):bas_phonetic |
90 | -Bulgarian (traditional phonetic):phonetic |
91 | -#Burmese:mm |
92 | -#Catalan:ad |
93 | -#Chinese:cn |
94 | -Tibetan (with ASCII numerals):tib_asciinum |
95 | -Tibetan:tib |
96 | -Uyghur:uig |
97 | -#Croatian:hr |
98 | -Croatian (US keyboard with Croatian digraphs):unicodeus |
99 | -Croatian (US keyboard with Croatian letters):us |
100 | -Croatian (use Croatian digraphs):unicode |
101 | -Croatian (use guillemets for quotes):alternatequotes |
102 | -#Czech:cz |
103 | -Czech (UCW layout, accented letters only):ucw |
104 | -Czech (US Dvorak with CZ UCW support):dvorak-ucw |
105 | -Czech (qwerty):qwerty |
106 | -Czech (qwerty, extended Backslash):qwerty_bksl |
107 | -Czech (with <\|> key):bksl |
108 | -#Danish:dk |
109 | -Danish (Dvorak):dvorak |
110 | -Danish (Macintosh):mac |
111 | -Danish (Macintosh, eliminate dead keys):mac_nodeadkeys |
112 | -Danish (eliminate dead keys):nodeadkeys |
113 | -#Dhivehi:mv |
114 | -#Dutch:nl |
115 | -Dutch (Macintosh):mac |
116 | -Dutch (Sun dead keys):sundeadkeys |
117 | -Dutch (standard):std |
118 | -#Dzongkha:bt |
119 | -#English (Cameroon):cm |
120 | -Cameroon Multilingual (Dvorak):dvorak |
121 | -Cameroon Multilingual (azerty):azerty |
122 | -Cameroon Multilingual (qwerty):qwerty |
123 | -French (Cameroon):french |
124 | -#English (Ghana):gh |
125 | -Akan:akan |
126 | -Avatime:avn |
127 | -English (Ghana, GILLBT):gillbt |
128 | -English (Ghana, multilingual):generic |
129 | -Ewe:ewe |
130 | -Fula:fula |
131 | -Ga:ga |
132 | -Hausa:hausa |
133 | -#English (Nigeria):ng |
134 | -Hausa:hausa |
135 | -Igbo:igbo |
136 | -Yoruba:yoruba |
137 | -#English (South Africa):za |
138 | -#English (UK):gb |
139 | -English (UK, Colemak):colemak |
140 | -English (UK, Dvorak with UK punctuation):dvorakukp |
141 | -English (UK, Dvorak):dvorak |
142 | -English (UK, Macintosh international):mac_intl |
143 | -English (UK, Macintosh):mac |
144 | -English (UK, extended WinKeys):extd |
145 | -English (UK, international with dead keys):intl |
146 | -#English (US):us |
147 | -Cherokee:chr |
148 | -English (Colemak):colemak |
149 | -English (Dvorak alternative international no dead keys):dvorak-alt-intl |
150 | -English (Dvorak international with dead keys):dvorak-intl |
151 | -English (Dvorak):dvorak |
152 | -English (Macintosh):mac |
153 | -English (US, alternative international):alt-intl |
154 | -English (US, international with dead keys):intl |
155 | -English (US, with euro on 5):euro |
156 | -English (classic Dvorak):dvorak-classic |
157 | -English (international AltGr dead keys):altgr-intl |
158 | -English (layout toggle on multiply/divide key):olpc2 |
159 | -English (left handed Dvorak):dvorak-l |
160 | -English (programmer Dvorak):dvp |
161 | -English (right handed Dvorak):dvorak-r |
162 | -Russian (US, phonetic):rus |
163 | -Serbo-Croatian (US):hbs |
164 | -#Esperanto:epo |
165 | -Esperanto (displaced semicolon and quote, obsolete):legacy |
166 | -#Estonian:ee |
167 | -Estonian (Dvorak):dvorak |
168 | -Estonian (US keyboard with Estonian letters):us |
169 | -Estonian (eliminate dead keys):nodeadkeys |
170 | -#Faroese:fo |
171 | -Faroese (eliminate dead keys):nodeadkeys |
172 | -#Filipino:ph |
173 | -Filipino (Capewell-Dvorak Baybayin):capewell-dvorak-bay |
174 | -Filipino (Capewell-Dvorak Latin):capewell-dvorak |
175 | -Filipino (Capewell-QWERF 2006 Baybayin):capewell-qwerf2k6-bay |
176 | -Filipino (Capewell-QWERF 2006 Latin):capewell-qwerf2k6 |
177 | -Filipino (Colemak Baybayin):colemak-bay |
178 | -Filipino (Colemak Latin):colemak |
179 | -Filipino (Dvorak Baybayin):dvorak-bay |
180 | -Filipino (Dvorak Latin):dvorak |
181 | -Filipino (QWERTY Baybayin):qwerty-bay |
182 | -#Finnish:fi |
183 | -Finnish (Macintosh):mac |
184 | -Finnish (classic):classic |
185 | -Finnish (classic, eliminate dead keys):nodeadkeys |
186 | -Northern Saami (Finland):smi |
187 | -#French (Canada):ca |
188 | -Canadian Multilingual (first part):multi |
189 | -Canadian Multilingual (second part):multi-2gr |
190 | -Canadian Multilingual:multix |
191 | -English (Canada):eng |
192 | -French (Canada, Dvorak):fr-dvorak |
193 | -French (Canada, legacy):fr-legacy |
194 | -Inuktitut:ike |
195 | -#French (Democratic Republic of the Congo):cd |
196 | -#French (Guinea):gn |
197 | -#French:fr |
198 | -French (Bepo, ergonomic, Dvorak way):bepo |
199 | -French (Bepo, ergonomic, Dvorak way, latin-9 only):bepo_latin9 |
200 | -French (Breton):bre |
201 | -French (Dvorak):dvorak |
202 | -French (Macintosh):mac |
203 | -French (Sun dead keys):sundeadkeys |
204 | -French (alternative):oss |
205 | -French (alternative, Sun dead keys):oss_sundeadkeys |
206 | -French (alternative, eliminate dead keys):oss_nodeadkeys |
207 | -French (alternative, latin-9 only):oss_latin9 |
208 | -French (eliminate dead keys):nodeadkeys |
209 | -French (legacy, alternative):latin9 |
210 | -French (legacy, alternative, Sun dead keys):latin9_sundeadkeys |
211 | -French (legacy, alternative, eliminate dead keys):latin9_nodeadkeys |
212 | -Georgian (France, AZERTY Tskapo):geo |
213 | -Occitan:oci |
214 | -#Georgian:ge |
215 | -Georgian (MESS):mess |
216 | -Georgian (ergonomic):ergonomic |
217 | -Ossetian (Georgia):os |
218 | -Russian (Georgia):ru |
219 | -#German (Austria):at |
220 | -German (Austria, Macintosh):mac |
221 | -German (Austria, Sun dead keys):sundeadkeys |
222 | -German (Austria, eliminate dead keys):nodeadkeys |
223 | -#German (Switzerland):ch |
224 | -French (Switzerland):fr |
225 | -French (Switzerland, Macintosh):fr_mac |
226 | -French (Switzerland, Sun dead keys):fr_sundeadkeys |
227 | -French (Switzerland, eliminate dead keys):fr_nodeadkeys |
228 | -German (Switzerland, Macintosh):de_mac |
229 | -German (Switzerland, Sun dead keys):de_sundeadkeys |
230 | -German (Switzerland, eliminate dead keys):de_nodeadkeys |
231 | -German (Switzerland, legacy):legacy |
232 | -#German:de |
233 | -German (Dvorak):dvorak |
234 | -German (Macintosh):mac |
235 | -German (Macintosh, eliminate dead keys):mac_nodeadkeys |
236 | -German (Neo 2):neo |
237 | -German (Sun dead keys):sundeadkeys |
238 | -German (dead acute):deadacute |
239 | -German (dead grave acute):deadgraveacute |
240 | -German (eliminate dead keys):nodeadkeys |
241 | -Lower Sorbian (qwertz):dsb_qwertz |
242 | -Lower Sorbian:dsb |
243 | -Romanian (Germany):ro |
244 | -Romanian (Germany, eliminate dead keys):ro_nodeadkeys |
245 | -Russian (Germany, phonetic):ru |
246 | -#Greek:gr |
247 | -Greek (eliminate dead keys):nodeadkeys |
248 | -Greek (extended):extended |
249 | -Greek (polytonic):polytonic |
250 | -Greek (simple):simple |
251 | -#Hebrew:il |
252 | -Hebrew (Biblical, Tiro):biblical |
253 | -Hebrew (lyx):lyx |
254 | -Hebrew (phonetic):phonetic |
255 | -#Hungarian:hu |
256 | -Hungarian (101/qwerty/comma/dead keys):101_qwerty_comma_dead |
257 | -Hungarian (101/qwerty/comma/eliminate dead keys):101_qwerty_comma_nodead |
258 | -Hungarian (101/qwerty/dot/dead keys):101_qwerty_dot_dead |
259 | -Hungarian (101/qwerty/dot/eliminate dead keys):101_qwerty_dot_nodead |
260 | -Hungarian (101/qwertz/comma/dead keys):101_qwertz_comma_dead |
261 | -Hungarian (101/qwertz/comma/eliminate dead keys):101_qwertz_comma_nodead |
262 | -Hungarian (101/qwertz/dot/dead keys):101_qwertz_dot_dead |
263 | -Hungarian (101/qwertz/dot/eliminate dead keys):101_qwertz_dot_nodead |
264 | -Hungarian (102/qwerty/comma/dead keys):102_qwerty_comma_dead |
265 | -Hungarian (102/qwerty/comma/eliminate dead keys):102_qwerty_comma_nodead |
266 | -Hungarian (102/qwerty/dot/dead keys):102_qwerty_dot_dead |
267 | -Hungarian (102/qwerty/dot/eliminate dead keys):102_qwerty_dot_nodead |
268 | -Hungarian (102/qwertz/comma/dead keys):102_qwertz_comma_dead |
269 | -Hungarian (102/qwertz/comma/eliminate dead keys):102_qwertz_comma_nodead |
270 | -Hungarian (102/qwertz/dot/dead keys):102_qwertz_dot_dead |
271 | -Hungarian (102/qwertz/dot/eliminate dead keys):102_qwertz_dot_nodead |
272 | -Hungarian (eliminate dead keys):nodeadkeys |
273 | -Hungarian (qwerty):qwerty |
274 | -Hungarian (standard):standard |
275 | -#Icelandic:is |
276 | -Icelandic (Dvorak):dvorak |
277 | -Icelandic (Macintosh):mac |
278 | -Icelandic (Sun dead keys):Sundeadkeys |
279 | -Icelandic (eliminate dead keys):nodeadkeys |
280 | -#Indian:in |
281 | -Bengali (India):ben |
282 | -Bengali (India, Baishakhi Inscript):ben_inscript |
283 | -Bengali (India, Baishakhi):ben_baishakhi |
284 | -Bengali (India, Bornona):ben_bornona |
285 | -Bengali (India, Probhat):ben_probhat |
286 | -Bengali (India, Uni Gitanjali):ben_gitanjali |
287 | -English (India, with RupeeSign):eng |
288 | -Gujarati:guj |
289 | -Hindi (Bolnagri):bolnagri |
290 | -Hindi (Wx):hin-wx |
291 | -Kannada:kan |
292 | -Malayalam (Lalitha):mal_lalitha |
293 | -Malayalam (enhanced Inscript with Rupee Sign):mal_enhanced |
294 | -Malayalam:mal |
295 | -Oriya:ori |
296 | -Punjabi (Gurmukhi Jhelum):jhelum |
297 | -Punjabi (Gurmukhi):guru |
298 | -Tamil (TAB typewriter):tam_TAB |
299 | -Tamil (TSCII typewriter):tam_TSCII |
300 | -Tamil (Unicode):tam_unicode |
301 | -Tamil (keyboard with numerals):tam_keyboard_with_numerals |
302 | -Tamil:tam |
303 | -Telugu:tel |
304 | -Urdu (WinKeys):urd-winkeys |
305 | -Urdu (alternative phonetic):urd-phonetic3 |
306 | -Urdu (phonetic):urd-phonetic |
307 | -#Iraqi:iq |
308 | -Kurdish (Iraq, Arabic-Latin):ku_ara |
309 | -Kurdish (Iraq, F):ku_f |
310 | -Kurdish (Iraq, Latin Alt-Q):ku_alt |
311 | -Kurdish (Iraq, Latin Q):ku |
312 | -#Irish:ie |
313 | -CloGaelach:CloGaelach |
314 | -Irish (UnicodeExpert):UnicodeExpert |
315 | -Ogham (IS434):ogam_is434 |
316 | -Ogham:ogam |
317 | -#Italian:it |
318 | -Georgian (Italy):geo |
319 | -Italian (Macintosh):mac |
320 | -Italian (US keyboard with Italian letters):us |
321 | -Italian (eliminate dead keys):nodeadkeys |
322 | -#Japanese (PC-98xx Series):nec_vndr/jp |
323 | -#Japanese:jp |
324 | -Japanese (Kana 86):kana86 |
325 | -Japanese (Kana):kana |
326 | -Japanese (Macintosh):mac |
327 | -Japanese (OADG 109A):OADG109A |
328 | -#Kazakh:kz |
329 | -Kazakh (with Russian):kazrus |
330 | -Russian (Kazakhstan, with Kazakh):ruskaz |
331 | -#Khmer (Cambodia):kh |
332 | -#Korean:kr |
333 | -Korean (101/104 key compatible):kr104 |
334 | -#Kyrgyz:kg |
335 | -Kyrgyz (phonetic):phonetic |
336 | -#Lao:la |
337 | -Lao (STEA proposed standard layout):stea |
338 | -#Latvian:lv |
339 | -Latvian (F variant):fkey |
340 | -Latvian (adapted):adapted |
341 | -Latvian (apostrophe variant):apostrophe |
342 | -Latvian (ergonomic, ŪGJRMV):ergonomic |
343 | -Latvian (modern):modern |
344 | -Latvian (tilde variant):tilde |
345 | -#Lithuanian:lt |
346 | -Lithuanian (IBM LST 1205-92):ibm |
347 | -Lithuanian (LEKP):lekp |
348 | -Lithuanian (LEKPa):lekpa |
349 | -Lithuanian (US keyboard with Lithuanian letters):us |
350 | -Lithuanian (standard):std |
351 | -#Macedonian:mk |
352 | -Macedonian (eliminate dead keys):nodeadkeys |
353 | -#Maltese:mt |
354 | -Maltese (with US layout):us |
355 | -#Maori:mao |
356 | -#Mongolian:mn |
357 | -#Montenegrin:me |
358 | -Montenegrin (Cyrillic with guillemets):cyrillicalternatequotes |
359 | -Montenegrin (Cyrillic):cyrillic |
360 | -Montenegrin (Cyrillic, Z and ZHE swapped):cyrillicyz |
361 | -Montenegrin (Latin Unicode qwerty):latinunicodeyz |
362 | -Montenegrin (Latin Unicode):latinunicode |
363 | -Montenegrin (Latin qwerty):latinyz |
364 | -Montenegrin (Latin with guillemets):latinalternatequotes |
365 | -#Nepali:np |
366 | -#Norwegian:no |
367 | -Northern Saami (Norway):smi |
368 | -Northern Saami (Norway, eliminate dead keys):smi_nodeadkeys |
369 | -Norwegian (Dvorak):dvorak |
370 | -Norwegian (Macintosh):mac |
371 | -Norwegian (Macintosh, eliminate dead keys):mac_nodeadkeys |
372 | -Norwegian (eliminate dead keys):nodeadkeys |
373 | -#Persian:ir |
374 | -Kurdish (Iran, Arabic-Latin):ku_ara |
375 | -Kurdish (Iran, F):ku_f |
376 | -Kurdish (Iran, Latin Alt-Q):ku_alt |
377 | -Kurdish (Iran, Latin Q):ku |
378 | -Persian (with Persian Keypad):pes_keypad |
379 | -#Polish:pl |
380 | -Kashubian:csb |
381 | -Polish (Dvorak):dvorak |
382 | -Polish (Dvorak, Polish quotes on key 1):dvorak_altquotes |
383 | -Polish (Dvorak, Polish quotes on quotemark key):dvorak_quotes |
384 | -Polish (programmer Dvorak):dvp |
385 | -Polish (qwertz):qwertz |
386 | -Russian (Poland, phonetic Dvorak):ru_phonetic_dvorak |
387 | -#Portuguese (Brazil):br |
388 | -Portuguese (Brazil, Dvorak):dvorak |
389 | -Portuguese (Brazil, eliminate dead keys):nodeadkeys |
390 | -Portuguese (Brazil, nativo for Esperanto):nativo-epo |
391 | -Portuguese (Brazil, nativo for USA keyboards):nativo-us |
392 | -Portuguese (Brazil, nativo):nativo |
393 | -#Portuguese:pt |
394 | -Esperanto (Portugal, Nativo):nativo-epo |
395 | -Portuguese (Macintosh):mac |
396 | -Portuguese (Macintosh, Sun dead keys):mac_sundeadkeys |
397 | -Portuguese (Macintosh, eliminate dead keys):mac_nodeadkeys |
398 | -Portuguese (Nativo for USA keyboards):nativo-us |
399 | -Portuguese (Nativo):nativo |
400 | -Portuguese (Sun dead keys):sundeadkeys |
401 | -Portuguese (eliminate dead keys):nodeadkeys |
402 | -#Romanian:ro |
403 | -Romanian (WinKeys):winkeys |
404 | -Romanian (cedilla):cedilla |
405 | -Romanian (standard cedilla):std_cedilla |
406 | -Romanian (standard):std |
407 | -#Russian:ru |
408 | -Bashkirian:bak |
409 | -Chuvash (Latin):cv_latin |
410 | -Chuvash:cv |
411 | -Kalmyk:xal |
412 | -Komi:kom |
413 | -Mari:chm |
414 | -Ossetian (WinKeys):os_winkeys |
415 | -Ossetian (legacy):os_legacy |
416 | -Russian (DOS):dos |
417 | -Russian (legacy):legacy |
418 | -Russian (phonetic WinKeys):phonetic_winkeys |
419 | -Russian (phonetic):phonetic |
420 | -Russian (typewriter):typewriter |
421 | -Russian (typewriter, legacy):typewriter-legacy |
422 | -Serbian (Russia):srp |
423 | -Tatar:tt |
424 | -Udmurt:udm |
425 | -Yakut:sah |
426 | -#Serbian (Cyrillic):rs |
427 | -Pannonian Rusyn (homophonic):rue |
428 | -Serbian (Cyrillic with guillemets):alternatequotes |
429 | -Serbian (Cyrillic, Z and ZHE swapped):yz |
430 | -Serbian (Latin Unicode qwerty):latinunicodeyz |
431 | -Serbian (Latin Unicode):latinunicode |
432 | -Serbian (Latin qwerty):latinyz |
433 | -Serbian (Latin with guillemets):latinalternatequotes |
434 | -Serbian (Latin):latin |
435 | -#Sinhala (phonetic):lk |
436 | -Tamil (Sri Lanka, TAB Typewriter):tam_TAB |
437 | -Tamil (Sri Lanka, Unicode):tam_unicode |
438 | -#Slovak:sk |
439 | -Slovak (extended Backslash):bksl |
440 | -Slovak (qwerty):qwerty |
441 | -Slovak (qwerty, extended Backslash):qwerty_bksl |
442 | -#Slovenian:si |
443 | -Slovenian (US keyboard with Slovenian letters):us |
444 | -Slovenian (use guillemets for quotes):alternatequotes |
445 | -#Spanish (Latin American):latam |
446 | -Spanish (Latin American, Sun dead keys):sundeadkeys |
447 | -Spanish (Latin American, eliminate dead keys):nodeadkeys |
448 | -Spanish (Latin American, include dead tilde):deadtilde |
449 | -#Spanish:es |
450 | -Asturian (Spain, with bottom-dot H and bottom-dot L):ast |
451 | -Catalan (Spain, with middle-dot L):cat |
452 | -Spanish (Dvorak):dvorak |
453 | -Spanish (Macintosh):mac |
454 | -Spanish (Sun dead keys):sundeadkeys |
455 | -Spanish (eliminate dead keys):nodeadkeys |
456 | -Spanish (include dead tilde):deadtilde |
457 | -#Swahili (Kenya):ke |
458 | -Kikuyu:kik |
459 | -#Swahili (Tanzania):tz |
460 | -#Swedish:se |
461 | -Northern Saami (Sweden):smi |
462 | -Russian (Sweden, phonetic):rus |
463 | -Russian (Sweden, phonetic, eliminate dead keys):rus_nodeadkeys |
464 | -Swedish (Dvorak):dvorak |
465 | -Swedish (Macintosh):mac |
466 | -Swedish (Svdvorak):svdvorak |
467 | -Swedish (eliminate dead keys):nodeadkeys |
468 | -Swedish Sign Language:swl |
469 | -#Taiwanese:tw |
470 | -Saisiyat (Taiwan):saisiyat |
471 | -Taiwanese (indigenous):indigenous |
472 | -#Tajik:tj |
473 | -Tajik (legacy):legacy |
474 | -#Thai:th |
475 | -Thai (Pattachote):pat |
476 | -Thai (TIS-820.2538):tis |
477 | -#Tswana:bw |
478 | -#Turkish:tr |
479 | -Crimean Tatar (Turkish Alt-Q):crh_alt |
480 | -Crimean Tatar (Turkish F):crh_f |
481 | -Crimean Tatar (Turkish Q):crh |
482 | -Kurdish (Turkey, F):ku_f |
483 | -Kurdish (Turkey, Latin Alt-Q):ku_alt |
484 | -Kurdish (Turkey, Latin Q):ku |
485 | -Turkish (Alt-Q):alt |
486 | -Turkish (F):f |
487 | -Turkish (Sun dead keys):sundeadkeys |
488 | -Turkish (international with dead keys):intl |
489 | -#Turkmen:tm |
490 | -Turkmen (Alt-Q):alt |
491 | -#Ukrainian:ua |
492 | -Russian (Ukraine, standard RSTU):rstu_ru |
493 | -Ukrainian (WinKeys):winkeys |
494 | -Ukrainian (homophonic):homophonic |
495 | -Ukrainian (legacy):legacy |
496 | -Ukrainian (phonetic):phonetic |
497 | -Ukrainian (standard RSTU):rstu |
498 | -Ukrainian (typewriter):typewriter |
499 | -#Urdu (Pakistan):pk |
500 | -Arabic (Pakistan):ara |
501 | -Sindhi:snd |
502 | -Urdu (Pakistan, CRULP):urd-crulp |
503 | -Urdu (Pakistan, NLA):urd-nla |
504 | -#Uzbek:uz |
505 | -Uzbek (Latin):latin |
506 | -#Vietnamese:vn |
507 | -#Wolof:sn |
508 | |
509 | === modified file 'debian/control' |
510 | --- debian/control 2014-01-09 23:07:40 +0000 |
511 | +++ debian/control 2016-04-20 22:56:03 +0000 |
512 | @@ -8,7 +8,7 @@ |
513 | |
514 | Package: switchboard-plug-keyboard |
515 | Architecture: any |
516 | -Depends: ${shlibs:Depends}, ${misc:Depends} |
517 | +Depends: ${shlibs:Depends}, ${misc:Depends}, xkb-data, xkb-data-i18n |
518 | Enhances: switchboard |
519 | Description: Switchboard plug for keyboard settings |
520 | This plug can be used to change several keyboard settings, for example the delay and speed of the key repetition, or the cursor blinking speed. You can change your keyboard layout, and use multiple layouts at the same time. Keyboard shortcuts are also part of this plug. |
521 | @@ -20,4 +20,4 @@ |
522 | Depends: switchboard-plug-keyboard (= ${binary:Version}), ${misc:Depends} |
523 | Enhances: switchboard-plug-keyboard |
524 | Description: Switchboard plug for keyboard settings (debugging symbols) |
525 | - This package contains debugging symbols for switchboard-plug-keyboard. |
526 | \ No newline at end of file |
527 | + This package contains debugging symbols for switchboard-plug-keyboard. |
528 | |
529 | === modified file 'src/Pages/Layout/add_layout.vala' |
530 | --- src/Pages/Layout/add_layout.vala 2015-10-26 23:56:54 +0000 |
531 | +++ src/Pages/Layout/add_layout.vala 2016-04-20 22:56:03 +0000 |
532 | @@ -3,7 +3,7 @@ |
533 | // pop over widget to add a new keyboard layout |
534 | class AddLayout : Gtk.Popover |
535 | { |
536 | - public signal void layout_added (int language, int layout = 0); |
537 | + public signal void layout_added (string language, string layout); |
538 | |
539 | public AddLayout() |
540 | { |
541 | @@ -26,32 +26,33 @@ |
542 | grid.attach (label_layout, 0, 1, 1, 1); |
543 | |
544 | // list stores |
545 | - var lang_list = create_list_store (handler.get_layouts ()); |
546 | - var layout_list = create_list_store (handler.get_variants (0)); |
547 | - |
548 | - // combo boxes to select language and layout |
549 | + var lang_list = create_list_store (handler.languages); |
550 | var language_box = new Gtk.ComboBox.with_model (lang_list); |
551 | + language_box.id_column = 0; |
552 | + language_box.active = 0; |
553 | + |
554 | + var layout_list = create_list_store (handler.get_variants_for_language (language_box.active_id)); |
555 | var layout_box = new Gtk.ComboBox.with_model (layout_list); |
556 | + layout_box.id_column = 0; |
557 | + layout_box.active = 0; |
558 | |
559 | var renderer = new Gtk.CellRendererText (); |
560 | |
561 | language_box.pack_start (renderer, true); |
562 | - language_box.add_attribute (renderer, "text", 0); |
563 | + language_box.add_attribute (renderer, "text", 1); |
564 | language_box.active = 0; |
565 | |
566 | layout_box.pack_start (renderer, true); |
567 | - layout_box.add_attribute (renderer, "text", 0); |
568 | + layout_box.add_attribute (renderer, "text", 1); |
569 | layout_box.active = 0; |
570 | |
571 | grid.attach (language_box, 1, 0, 1, 1); |
572 | grid.attach (layout_box, 1, 1, 1, 1); |
573 | |
574 | - language_box.changed.connect( () => |
575 | - { |
576 | - var active = language_box.active; |
577 | - layout_box.model = create_list_store (handler.get_variants (active)); |
578 | + language_box.changed.connect(() => { |
579 | + layout_box.model = create_list_store (handler.get_variants_for_language (language_box.active_id)); |
580 | layout_box.active = 0; |
581 | - } ); |
582 | + }); |
583 | |
584 | // add buttons |
585 | var button_box = new Gtk.ButtonBox (Gtk.Orientation.HORIZONTAL); |
586 | @@ -70,11 +71,42 @@ |
587 | this.hide (); |
588 | } ); |
589 | |
590 | - button_add.clicked.connect (() => |
591 | - { |
592 | + button_add.clicked.connect (() => { |
593 | this.hide (); |
594 | - layout_added (language_box.active, layout_box.active); |
595 | + layout_added (language_box.active_id, layout_box.active_id); |
596 | } ); |
597 | } |
598 | + |
599 | + // creates a list store from a string vector |
600 | + Gtk.ListStore create_list_store (HashTable<string, string> values) |
601 | + { |
602 | + Gtk.ListStore list_store = new Gtk.ListStore (2, typeof (string), typeof (string)); |
603 | + list_store.set_default_sort_func (compare_func); |
604 | + list_store.set_sort_column_id (Gtk.TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, Gtk.SortType.ASCENDING); |
605 | + |
606 | + values.foreach ((key, val) => { |
607 | + Gtk.TreeIter iter; |
608 | + list_store.append (out iter); |
609 | + list_store.set (iter, 0, key, 1, val); |
610 | + }); |
611 | + |
612 | + return list_store; |
613 | + } |
614 | + |
615 | + int compare_func (Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b) { |
616 | + Value val_a; |
617 | + Value val_b; |
618 | + model.get_value (a, 1, out val_a); |
619 | + model.get_value (b, 1, out val_b); |
620 | + if (((string) val_a) == _("Default")) { |
621 | + return -1; |
622 | + } |
623 | + |
624 | + if (((string) val_b) == _("Default")) { |
625 | + return 1; |
626 | + } |
627 | + |
628 | + return ((string) val_a).collate ((string) val_b); |
629 | + } |
630 | } |
631 | } |
632 | |
633 | === modified file 'src/Pages/Layout/display.vala' |
634 | --- src/Pages/Layout/display.vala 2015-10-27 00:02:07 +0000 |
635 | +++ src/Pages/Layout/display.vala 2016-04-20 22:56:03 +0000 |
636 | @@ -160,21 +160,15 @@ |
637 | } |
638 | |
639 | Gtk.ListStore build_store () { |
640 | - Gtk.ListStore list_store = new Gtk.ListStore (3, typeof (string), typeof(uint), typeof(uint)); |
641 | + Gtk.ListStore list_store = new Gtk.ListStore (2, typeof (string), typeof(string)); |
642 | Gtk.TreeIter iter; |
643 | - |
644 | - uint layout = 0, variant = 0; |
645 | - |
646 | for (uint i = 0; i < settings.layouts.length; i++) { |
647 | string item = settings.layouts.get_layout (i).name; |
648 | - handler.from_code (item, out layout, out variant); |
649 | - item = handler.get_name (layout, variant); |
650 | - |
651 | list_store.append (out iter); |
652 | - list_store.set (iter, 0, item); |
653 | - list_store.set (iter, 1, layout); |
654 | - list_store.set (iter, 2, variant); |
655 | + list_store.set (iter, 0, handler.get_display_name (item)); |
656 | + list_store.set (iter, 1, item); |
657 | } |
658 | + |
659 | return list_store; |
660 | } |
661 | |
662 | @@ -193,12 +187,7 @@ |
663 | void add_item (LayoutPage.AddLayout pop) |
664 | { |
665 | pop.layout_added.connect ((layout, variant) => { |
666 | - |
667 | - var name = handler.get_name (layout, variant); |
668 | - var code = handler.get_code (layout, variant); |
669 | - |
670 | - // TODO variant |
671 | - settings.layouts.add_layout (new Layout.XKB (code, "")); |
672 | + settings.layouts.add_layout (new Layout.XKB (layout, variant)); |
673 | rebuild_list (); |
674 | }); |
675 | } |
676 | |
677 | === modified file 'src/Pages/Layout/handler.vala' |
678 | --- src/Pages/Layout/handler.vala 2014-08-10 19:29:15 +0000 |
679 | +++ src/Pages/Layout/handler.vala 2016-04-20 22:56:03 +0000 |
680 | @@ -1,147 +1,89 @@ |
681 | -namespace Pantheon.Keyboard.LayoutPage |
682 | -{ |
683 | - // class that parses the layout file, provides lists of languages and |
684 | - // variants, and converts between layout names and their gsettings codes |
685 | - class LayoutHandler : GLib.Object |
686 | - { |
687 | - InternalLayout[] layouts; |
688 | - |
689 | - private string[] names; |
690 | - private string[] codes; |
691 | - |
692 | - public LayoutHandler () |
693 | - { |
694 | - foreach (var l in parse_layouts ()) |
695 | - { |
696 | - var parts = l.split(":", 2); |
697 | - |
698 | - names += parts[0]; |
699 | - codes += parts[1]; |
700 | - |
701 | - layouts += new InternalLayout (parse_variants (l)); |
702 | - } |
703 | - } |
704 | - |
705 | - public string[] get_layouts () { |
706 | - return names; |
707 | - } |
708 | - |
709 | - public string[] get_variants (uint index) { |
710 | - return layouts[index].names; |
711 | - } |
712 | - |
713 | - public string get_code (uint l, uint v) |
714 | - { |
715 | - if (v != 0) |
716 | - return codes[l] + "+" + layouts[l].codes[v]; |
717 | - return codes[l]; |
718 | - } |
719 | - |
720 | - public string get_name (uint l, uint v) |
721 | - { |
722 | - if (v != 0) |
723 | - return layouts[l].names[v]; |
724 | - return names[l]; |
725 | - } |
726 | - |
727 | - public bool from_code (string code, out uint l, out uint v) |
728 | - { |
729 | - var parts = code.split("+", 2); |
730 | - |
731 | - l = v = 0; |
732 | - |
733 | - if (parts[0] == null) return false; |
734 | - |
735 | - while (codes[l] != parts[0]) |
736 | - if (l++ > codes.length) |
737 | - return false; |
738 | - |
739 | - if (parts[1] == null) return true; |
740 | - |
741 | - while (layouts[l].codes[v] != parts[1]) |
742 | - if (v++ > layouts[l].codes.length) |
743 | - return false; |
744 | - |
745 | - return true; |
746 | - } |
747 | - |
748 | - // private class that contains the variants of one language |
749 | - private class InternalLayout : GLib.Object { |
750 | - public string[] names; |
751 | - public string[] codes; |
752 | - |
753 | - public InternalLayout (string[] variants ) |
754 | - { |
755 | - names += _("Default"); |
756 | - codes += ""; |
757 | - |
758 | - foreach (var v in variants) |
759 | - { |
760 | - var parts = v.split(":", 2); |
761 | - |
762 | - names += parts[0]; |
763 | - codes += parts[1]; |
764 | - } |
765 | - } |
766 | - } |
767 | - |
768 | - // private functions to parse the files |
769 | - private string[]? parse_layouts () |
770 | - { |
771 | - string[] return_val = null; |
772 | - |
773 | - var file = File.new_for_path (Build.PKGDATADIR + "/layouts.txt"); |
774 | - |
775 | - if (!file.query_exists ()) { |
776 | - warning ("File '%s' doesn't exist.\n", file.get_path ()); |
777 | - return return_val; |
778 | - } |
779 | - |
780 | - try { |
781 | - var dis = new DataInputStream (file.read ()); |
782 | - |
783 | - string line; |
784 | - |
785 | - while ((line = dis.read_line (null)) != null) |
786 | - if( "#" in line ) |
787 | - return_val += line.replace ("#", ""); |
788 | - } catch (Error e) { |
789 | - error ("%s", e.message); |
790 | - } |
791 | - |
792 | - return return_val; |
793 | - } |
794 | - |
795 | - private string[]? parse_variants (string language) |
796 | - { |
797 | - string[] return_val = null; |
798 | - |
799 | - var file = File.new_for_path (Build.PKGDATADIR + "/layouts.txt"); |
800 | - |
801 | - if (!file.query_exists ()) { |
802 | - warning ("File '%s' doesn't exist.\n", file.get_path ()); |
803 | - return null; |
804 | - } |
805 | - |
806 | - try { |
807 | - var dis = new DataInputStream (file.read ()); |
808 | - |
809 | - string line; |
810 | - |
811 | - while ((line = dis.read_line (null)) != null) { |
812 | - if (line == "#" + language) { |
813 | - while ((line = dis.read_line (null)) != null) { |
814 | - if( "#" in line ) break; |
815 | - return_val += line; |
816 | - } |
817 | - break; |
818 | - } |
819 | - } |
820 | - } catch (Error e) { |
821 | - error ("%s", e.message); |
822 | - } |
823 | - |
824 | - return return_val; |
825 | - } |
826 | - } |
827 | -} |
828 | \ No newline at end of file |
829 | +public class Pantheon.Keyboard.LayoutPage.LayoutHandler : GLib.Object { |
830 | + public HashTable<string, string> languages { public get; private set; } |
831 | + |
832 | + public LayoutHandler () { |
833 | + parse_layouts (); |
834 | + } |
835 | + |
836 | + construct { |
837 | + languages = new HashTable<string, string> (str_hash, str_equal); |
838 | + } |
839 | + |
840 | + private void parse_layouts () { |
841 | + var file = File.new_for_path ("/usr/share/X11/xkb/rules/evdev.lst"); |
842 | + |
843 | + if (!file.query_exists ()) { |
844 | + critical ("File '%s' doesn't exist.", file.get_path ()); |
845 | + return; |
846 | + } |
847 | + |
848 | + try { |
849 | + var dis = new DataInputStream (file.read ()); |
850 | + string line; |
851 | + bool layout_found = false; |
852 | + while ((line = dis.read_line (null)) != null) { |
853 | + if (layout_found) { |
854 | + if ("!" in line || line == "") { |
855 | + break; |
856 | + } |
857 | + |
858 | + var parts = line.chug ().split (" ", 2); |
859 | + languages.set (parts[0], dgettext ("xkeyboard-config", parts[1].chug ())); |
860 | + } else { |
861 | + if ("!" in line && "layout" in line) { |
862 | + layout_found = true; |
863 | + } |
864 | + } |
865 | + } |
866 | + } catch (Error e) { |
867 | + error (e.message); |
868 | + } |
869 | + } |
870 | + |
871 | + public HashTable<string, string> get_variants_for_language (string language) { |
872 | + var returned_table = new HashTable<string, string> (str_hash, str_equal); |
873 | + returned_table.set ("", _("Default")); |
874 | + var file = File.new_for_path ("/usr/share/X11/xkb/rules/evdev.lst"); |
875 | + |
876 | + if (!file.query_exists ()) { |
877 | + critical ("File '%s' doesn't exist.", file.get_path ()); |
878 | + return returned_table; |
879 | + } |
880 | + |
881 | + try { |
882 | + var dis = new DataInputStream (file.read ()); |
883 | + string line; |
884 | + bool variant_found = false; |
885 | + while ((line = dis.read_line (null)) != null) { |
886 | + if (variant_found) { |
887 | + if ("!" in line || line == "") { |
888 | + break; |
889 | + } |
890 | + |
891 | + var parts = line.chug ().split (" ", 2); |
892 | + var subparts = parts[1].chug ().split (":", 2); |
893 | + if (subparts[0] == language) { |
894 | + returned_table.set (parts[0], dgettext ("xkeyboard-config", subparts[1].chug ())); |
895 | + } |
896 | + } else { |
897 | + if ("!" in line && "variant" in line) { |
898 | + variant_found = true; |
899 | + } |
900 | + } |
901 | + } |
902 | + } catch (Error e) { |
903 | + error (e.message); |
904 | + } |
905 | + |
906 | + return returned_table; |
907 | + } |
908 | + |
909 | + public string get_display_name (string variant) { |
910 | + if ("+" in variant) { |
911 | + var parts = variant.split ("+", 2); |
912 | + return get_variants_for_language (parts[0]).get (parts[1]); |
913 | + } else { |
914 | + return languages.get (variant); |
915 | + } |
916 | + } |
917 | +} |
918 | |
919 | === modified file 'src/Pages/layout.vala' |
920 | --- src/Pages/layout.vala 2015-10-22 15:32:43 +0000 |
921 | +++ src/Pages/layout.vala 2016-04-20 22:56:03 +0000 |
922 | @@ -60,18 +60,4 @@ |
923 | this.attach (entry_test, 4, 3, 3, 1); |
924 | } |
925 | } |
926 | - |
927 | - // creates a list store from a string vector |
928 | - Gtk.ListStore create_list_store (string[] strv) |
929 | - { |
930 | - Gtk.ListStore list_store = new Gtk.ListStore (1, typeof (string)); |
931 | - Gtk.TreeIter iter; |
932 | - |
933 | - foreach (string item in strv) { |
934 | - list_store.append (out iter); |
935 | - list_store.set (iter, 0, item); |
936 | - } |
937 | - |
938 | - return list_store; |
939 | - } |
940 | } |
Before mergin, the keyboard indicator needs to be updated to use this new backend. It depends on that layouts.txt file