Layout list fixes

pull/14/head
parent 3416043a67
commit 92bd8e47a3
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -1,68 +1,98 @@
af;Afrikaans al;Albanian
ar;Arabic et;Amharic
as;Assamese am;Armenian
ara;Arabic
eg;Arabic (Egypt)
iq;Arabic (Iraq)
ma;Arabic (Morocco)
sy;Arabic (Syria)
az;Azerbaijani az;Azerbaijani
be;Belarusian ml;Bambara
bd;Bangla
by;Belarusian
be;Belgian
dz;Berber (Algeria, Latin)
ba;Bosnian
brai;Braille
bg;Bulgarian bg;Bulgarian
bn;Bengali mm;Burmese
bs;Bosnian cn;Chinese
ca;Catalan hr;Croatian
cs;Czech cz;Czech
da;Danish dk;Danish
de;German af;Dari
el;Greek mv;Dhivehi
en;English nl;Dutch
es;Spanish bt;Dzongkha
et;Estonian au;English (Australia)
cm;English (Cameroon)
gh;English (Ghana)
nz;English (New Zealand)
ng;English (Nigeria)
za;English (South Africa)
gb;English (UK)
us;English (US)
epo;Esperanto
ee;Estonian
fo;Faroese
ph;Filipino
fi;Finnish fi;Finnish
fr;French fr;French
gu;Gujarati ca;French (Canada)
he;Hebrew cd;French (Democratic Republic of the Congo)
hi;Hindi tg;French (Togo)
hr;Croatian ge;Georgian
de;German
at;German (Austria)
ch;German (Switzerland)
gr;Greek
il;Hebrew
hu;Hungarian hu;Hungarian
hy;Armenian
id;Indonesian
is;Icelandic is;Icelandic
in;Indian
id;Indonesian (Latin)
ie;Irish
it;Italian it;Italian
ja;Japanese jp;Japanese
ka;Georgian kz;Kazakh
kk;Kazakh kh;Khmer (Cambodia)
kn;Kannada kr;Korean
ko;Korean kg;Kyrgyz
ks;Kashmiri la;Lao
ku;Kurdish
ky;Kirghiz
lt;Lithuanian
lv;Latvian lv;Latvian
lt;Lithuanian
mk;Macedonian mk;Macedonian
ml;Malayalam my;Malay (Jawi, Arabic Keyboard)
mr;Marathi
ms;Malay
mt;Maltese mt;Maltese
nb;Bokmal md;Moldavian
nl;Dutch mn;Mongolian
nn;Nynorsk me;Montenegrin
or;Oriya np;Nepali
pa;Punjabi gn;N'Ko (AZERTY)
no;Norwegian
ir;Persian
pl;Polish pl;Polish
pt;Portuguese pt;Portuguese
br;Portuguese (Brazil)
ro;Romanian ro;Romanian
ru;Russian ru;Russian
sa;Sanskrit rs;Serbian
lk;Sinhala (phonetic)
sk;Slovak sk;Slovak
sl;Slovenian si;Slovenian
sq;Albanian es;Spanish
sr;Serbian latam;Spanish (Latin American)
sv;Swedish ke;Swahili (Kenya)
ta;Tamil tz;Swahili (Tanzania)
te;Telugu se;Swedish
tw;Taiwanese
tj;Tajik
th;Thai th;Thai
bw;Tswana
tm;Turkmen
tr;Turkish tr;Turkish
uk;Ukrainian ua;Ukrainian
us;American pk;Urdu (Pakistan)
vi;Vietnamese uz;Uzbek
zh;Simplified Chinese vn;Vietnamese
zh;Traditional Chinese sn;Wolof
zh;Chinese
zh;Traditional Chinese
1 af al Afrikaans Albanian
2 ar et Arabic Amharic
3 as am Assamese Armenian
4 ara Arabic
5 eg Arabic (Egypt)
6 iq Arabic (Iraq)
7 ma Arabic (Morocco)
8 sy Arabic (Syria)
9 az az Azerbaijani Azerbaijani
10 be ml Belarusian Bambara
11 bd Bangla
12 by Belarusian
13 be Belgian
14 dz Berber (Algeria, Latin)
15 ba Bosnian
16 brai Braille
17 bg bg Bulgarian Bulgarian
18 bn mm Bengali Burmese
19 bs cn Bosnian Chinese
20 ca hr Catalan Croatian
21 cs cz Czech Czech
22 da dk Danish Danish
23 de af German Dari
24 el mv Greek Dhivehi
25 en nl English Dutch
26 es bt Spanish Dzongkha
27 et au Estonian English (Australia)
28 cm English (Cameroon)
29 gh English (Ghana)
30 nz English (New Zealand)
31 ng English (Nigeria)
32 za English (South Africa)
33 gb English (UK)
34 us English (US)
35 epo Esperanto
36 ee Estonian
37 fo Faroese
38 ph Filipino
39 fi fi Finnish Finnish
40 fr fr French French
41 gu ca Gujarati French (Canada)
42 he cd Hebrew French (Democratic Republic of the Congo)
43 hi tg Hindi French (Togo)
44 hr ge Croatian Georgian
45 de German
46 at German (Austria)
47 ch German (Switzerland)
48 gr Greek
49 il Hebrew
50 hu hu Hungarian Hungarian
hy Armenian
id Indonesian
51 is is Icelandic Icelandic
52 in Indian
53 id Indonesian (Latin)
54 ie Irish
55 it it Italian Italian
56 ja jp Japanese Japanese
57 ka kz Georgian Kazakh
58 kk kh Kazakh Khmer (Cambodia)
59 kn kr Kannada Korean
60 ko kg Korean Kyrgyz
61 ks la Kashmiri Lao
ku Kurdish
ky Kirghiz
lt Lithuanian
62 lv lv Latvian Latvian
63 lt Lithuanian
64 mk mk Macedonian Macedonian
65 ml my Malayalam Malay (Jawi, Arabic Keyboard)
mr Marathi
ms Malay
66 mt mt Maltese Maltese
67 nb md Bokmal Moldavian
68 nl mn Dutch Mongolian
69 nn me Nynorsk Montenegrin
70 or np Oriya Nepali
71 pa gn Punjabi N'Ko (AZERTY)
72 no Norwegian
73 ir Persian
74 pl pl Polish Polish
75 pt pt Portuguese Portuguese
76 br Portuguese (Brazil)
77 ro ro Romanian Romanian
78 ru ru Russian Russian
79 sa rs Sanskrit Serbian
80 lk Sinhala (phonetic)
81 sk sk Slovak Slovak
82 sl si Slovenian Slovenian
83 sq es Albanian Spanish
84 sr latam Serbian Spanish (Latin American)
85 sv ke Swedish Swahili (Kenya)
86 ta tz Tamil Swahili (Tanzania)
87 te se Telugu Swedish
88 tw Taiwanese
89 tj Tajik
90 th th Thai Thai
91 bw Tswana
92 tm Turkmen
93 tr tr Turkish Turkish
94 uk ua Ukrainian Ukrainian
95 us pk American Urdu (Pakistan)
96 vi uz Vietnamese Uzbek
97 zh vn Simplified Chinese Vietnamese
98 zh sn Traditional Chinese Wolof
zh Chinese
zh Traditional Chinese

@ -2,9 +2,6 @@
config main_config; config main_config;
void on_save_done(main_window *, config_str output, int size){ void on_save_done(main_window *, config_str output, int size){
char *final_output = yon_char_parsed_to_string(output,size,""); char *final_output = yon_char_parsed_to_string(output,size,"");
if (final_output){ if (final_output){
@ -153,7 +150,7 @@ gboolean yon_interface_update(main_window *widgets){
{ {
if (main_config.layouts_list){ if (main_config.layouts_list){
for_iter(main_config.layouts_list,&iter){ for_iter(main_config.layouts_list,&iter){
gtk_tree_store_set(main_config.layouts_list,&iter,2,0,-1); gtk_list_store_set(main_config.layouts_list,&iter,2,0,-1);
} }
} }
char *name = yon_config_get_by_key(num_lock_boot_parameter); char *name = yon_config_get_by_key(num_lock_boot_parameter);
@ -166,7 +163,7 @@ gboolean yon_interface_update(main_window *widgets){
int size=0; int size=0;
name = yon_config_get_by_key(keyboard_layout_parameter); name = yon_config_get_by_key(keyboard_layout_parameter);
config_str layouts = yon_char_parse(name,&size,","); config_str layouts = yon_char_parse(name,&size,",");
GtkTreeIter iter, itar,itor; GtkTreeIter iter, itar;
char *rid,*rname; char *rid,*rname;
gtk_list_store_clear(widgets->layoutsList); gtk_list_store_clear(widgets->layoutsList);
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
@ -176,14 +173,6 @@ gboolean yon_interface_update(main_window *widgets){
gtk_list_store_append(widgets->layoutsList,&itar); gtk_list_store_append(widgets->layoutsList,&itar);
gtk_list_store_set(widgets->layoutsList,&itar,0,rname,1,rid,2,1,-1); gtk_list_store_set(widgets->layoutsList,&itar,0,rname,1,rid,2,1,-1);
} }
for(int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.layouts_list),&itor,&iter);valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.layouts_list),&itor)){
gtk_tree_model_get(GTK_TREE_MODEL(main_config.layouts_list),&itor,0,&rid,1,&rname,-1);
if (!strcmp(layouts[i],rid)){
gtk_list_store_append(widgets->layoutsList,&itar);
gtk_list_store_set(widgets->layoutsList,&itar,0,rname,1,rid,2,1,-1);
}
}
} }
} }
} }
@ -296,28 +285,18 @@ void on_layouts_accept(GtkWidget *self, dictionary *dict){
layouts_window *window = yon_dictionary_get_data(dict->first->next,layouts_window*); layouts_window *window = yon_dictionary_get_data(dict->first->next,layouts_window*);
gtk_list_store_clear(widgets->layoutsList); gtk_list_store_clear(widgets->layoutsList);
GtkTreeModel *model = GTK_TREE_MODEL(window->list); GtkTreeModel *model = GTK_TREE_MODEL(window->list);
GList *list = yon_get_all_selected(GTK_TREE_VIEW(window->MainTree),2);
char *name; char *name;
char *id; char *id;
GtkTreeIter iter, lwiter, chiter; GtkTreeIter iter, lwiter;
for_iter(model,&lwiter){ GtkTreePath *pth;
int status; for (guint i=0;i<g_list_length(list);i++){
gtk_tree_model_get(model,&lwiter,0,&name,1,&id,2,&status,-1); pth = (GtkTreePath*)g_list_nth_data(list,i);
if (status){ gtk_tree_model_get_iter(model,&lwiter,pth);
gtk_list_store_append(widgets->layoutsList,&iter); gtk_list_store_append(widgets->layoutsList,&iter);
gtk_tree_model_get(model,&lwiter,0,&name,1,&id,-1);
gtk_list_store_set(widgets->layoutsList,&iter,1,name,0,id,2,1,-1); gtk_list_store_set(widgets->layoutsList,&iter,1,name,0,id,2,1,-1);
} }
if (gtk_tree_model_iter_children(model,&chiter,&lwiter)){
for (int valid2 = 1; valid2; valid2 = gtk_tree_model_iter_next(model,&chiter)){
char *chid, *chname;
int chstatus;
gtk_tree_model_get(model,&chiter,0,&chname,1,&chid,2,&chstatus,-1);
if (chstatus){
gtk_list_store_append(widgets->layoutsList,&iter);
gtk_list_store_set(widgets->layoutsList,&iter,1,chname,0,chid,2,1,-1);
}
}
}
}
yon_layouts_save(widgets); yon_layouts_save(widgets);
on_subwindow_close(self); on_subwindow_close(self);
} }
@ -327,7 +306,7 @@ void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path); gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path);
int chosen; int chosen;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,2,&chosen,-1); gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,2,&chosen,-1);
gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,2,!chosen,-1); gtk_list_store_set(window->list,&iter,2,!chosen,-1);
} }
void on_layouts_add(GtkWidget *, main_window *widgets){ void on_layouts_add(GtkWidget *, main_window *widgets){
@ -338,7 +317,7 @@ void on_layouts_add(GtkWidget *, main_window *widgets){
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell")); window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell"));
window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree"); window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
window->list = (GtkListStore*)main_config.layouts_list; window->list = main_config.layouts_list;
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(window->list)); gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(window->list));
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),GTK_SELECTION_MULTIPLE); gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),GTK_SELECTION_MULTIPLE);
@ -361,13 +340,13 @@ void on_layouts_add(GtkWidget *, main_window *widgets){
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&id,-1); gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&id,-1);
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
if (!strcmp(id,parsed[i])){ if (!strcmp(id,parsed[i])){
gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,2,1,-1); gtk_list_store_set(window->list,&iter,2,1,-1);
found=1; found=1;
break; break;
} }
} }
if (!found) { if (!found) {
gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,2,0,-1); gtk_list_store_set(window->list,&iter,2,0,-1);
} }
} }
} }
@ -446,7 +425,7 @@ void yon_main_window_complete(main_window *widgets){
widgets->modelsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2")); widgets->modelsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
int size; int size;
GtkTreeIter iter,chiter; GtkTreeIter iter;
config_str models = yon_config_load(get_models_command,&size); config_str models = yon_config_load(get_models_command,&size);
for (int i=0;i<size;i+=2){ for (int i=0;i<size;i+=2){
models[i] = yon_char_divide_search(models[i],"\n",-1); models[i] = yon_char_divide_search(models[i],"\n",-1);
@ -454,27 +433,15 @@ void yon_main_window_complete(main_window *widgets){
gtk_list_store_append(widgets->modelsList,&iter); gtk_list_store_append(widgets->modelsList,&iter);
gtk_list_store_set(widgets->modelsList,&iter,1,models[i],0,_(models[i+1]),-1); gtk_list_store_set(widgets->modelsList,&iter,1,models[i],0,_(models[i+1]),-1);
} }
main_config.layouts_list = gtk_tree_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); main_config.layouts_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
int laysize; int laysize;
config_str rtn = yon_config_load(get_layouts_command,&size); config_str rtn = yon_resource_open_file(layouts_path,&size);
for (int i=0; i<size; i++){ for (int i=0; i<size; i++){
yon_char_remove_last_symbol(rtn[i],'\n'); yon_char_remove_last_symbol(rtn[i],'\n');
config_str layout = yon_char_parse(rtn[i],&laysize,"|"); config_str layout = yon_char_parse(rtn[i],&laysize,";");
if (yon_char_is_empty(layout[1])){ gtk_list_store_append(main_config.layouts_list,&iter);
gtk_tree_store_append(main_config.layouts_list,&iter,NULL); char *lout = layout[1];
textdomain("iso_639"); gtk_list_store_set(main_config.layouts_list,&iter,0,layout[0],1,lout,-1);
gtk_tree_store_set(main_config.layouts_list,&iter,0,layout[0],1,_(layout[2]),-1);
textdomain(LocaleName);
} else {
char *full_layout = yon_char_unite(layout[0],"_",layout[1],NULL);
gtk_tree_store_append(main_config.layouts_list,&chiter,&iter);
textdomain("iso_639");
gtk_tree_store_set(main_config.layouts_list,&chiter,0,full_layout,1,_(layout[2]),-1);
textdomain(LocaleName);
free(full_layout);
}
} }
main_config.options_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); main_config.options_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
rtn = yon_config_load(get_options_command,&size); rtn = yon_config_load(get_options_command,&size);

@ -9,7 +9,6 @@
#include <libublsettings.h> #include <libublsettings.h>
#include <libublsettings-gtk3.h> #include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h> #include <libublsettingsui-gtk3.h>
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
@ -51,25 +50,6 @@
#define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}<name>|^ {8,8}<description>'|sed -e 's/ *<name>//g' -e 's,</name>,,g' -e 's/ *<description>//g' -e 's,</description>,,g'" #define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}<name>|^ {8,8}<description>'|sed -e 's/ *<name>//g' -e 's,</name>,,g' -e 's/ *<description>//g' -e 's,</description>,,g'"
#define layouts_path "resource:///com/ublinux/csv/layouts.csv" #define layouts_path "resource:///com/ublinux/csv/layouts.csv"
#define get_layouts_command "xkbcli list --load-exotic | awk \"\
layout && /description:/ {\
match(\\$0, /: *(.*)/, matches);\
description = matches[1];\
printf \\\"%s|%s|%s\\\\n\\\", layout, variant, description;\
layout = \\\"\\\"; variant = \\\"\\\";\
}\
/layout:/ {\
match(\\$0, /: *'([^']+)'/, matches);\
l = matches[1];\
layout = layouts[l] = l;\
}\
/variant:/ {\
match(\\$0, /: *'([^']+)'/, matches);\
variant = matches[1];\
}\
\" | sort -u\
"
typedef char* string; typedef char* string;
__attribute__((unused)) static \ __attribute__((unused)) static \
@ -81,7 +61,7 @@ typedef struct {
config_str launch_arguments; config_str launch_arguments;
int launch_size; int launch_size;
char *options; char *options;
GtkTreeStore *layouts_list; GtkListStore *layouts_list;
GtkListStore *options_list; GtkListStore *options_list;
} config; } config;

Loading…
Cancel
Save