|
|
|
@ -216,6 +216,22 @@ void on_system_layouts_add(GtkWidget *, main_window *widgets){
|
|
|
|
yon_layouts_add(GTK_TREE_VIEW(widgets->KeyboardLayoutTree),widgets->LayoutsList,widgets);
|
|
|
|
yon_layouts_add(GTK_TREE_VIEW(widgets->KeyboardLayoutTree),widgets->LayoutsList,widgets);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){
|
|
|
|
|
|
|
|
char *target;
|
|
|
|
|
|
|
|
char *loc_target;
|
|
|
|
|
|
|
|
char *code;
|
|
|
|
|
|
|
|
gtk_tree_model_get(model, iter, 0,&code, 4,&target, 2, &loc_target,-1);
|
|
|
|
|
|
|
|
char *string_utf = g_utf8_casefold(key,-1);
|
|
|
|
|
|
|
|
char *target_utf = g_utf8_casefold(target,-1);
|
|
|
|
|
|
|
|
char *loc_target_utf = g_utf8_casefold(loc_target,-1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *string_normalized = g_utf8_strdown(g_utf8_normalize(string_utf,-1,G_NORMALIZE_DEFAULT),-1);
|
|
|
|
|
|
|
|
char *target_normalized = g_utf8_strdown(g_utf8_normalize(target_utf,-1,G_NORMALIZE_DEFAULT),-1);
|
|
|
|
|
|
|
|
char *loc_target_normalized = g_utf8_strdown(g_utf8_normalize(loc_target_utf,-1,G_NORMALIZE_DEFAULT),-1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return !(g_str_has_prefix(target_normalized,string_normalized) || g_str_has_prefix(loc_target_normalized,string_normalized) || !strcmp(code,string_normalized));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
layouts_window *yon_layouts_window_new(){
|
|
|
|
layouts_window *yon_layouts_window_new(){
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path);
|
|
|
|
layouts_window *window = malloc(sizeof(layouts_window));
|
|
|
|
layouts_window *window = malloc(sizeof(layouts_window));
|
|
|
|
@ -227,6 +243,7 @@ layouts_window *yon_layouts_window_new(){
|
|
|
|
window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
|
|
|
|
window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
|
|
|
|
window->parameters = yon_char_new(config(xkblayout_parameter));
|
|
|
|
window->parameters = yon_char_new(config(xkblayout_parameter));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(window->MainTree),(GtkTreeViewSearchEqualFunc)on_keyboard_search_func,window,NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_layouts_chosen),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_layouts_chosen),window);
|
|
|
|
return window;
|
|
|
|
return window;
|
|
|
|
@ -351,14 +368,14 @@ void yon_layout_build(layouts_window *window){
|
|
|
|
int parsed_size;
|
|
|
|
int parsed_size;
|
|
|
|
config_str parsed = yon_char_parse(layouts[i],&parsed_size,"|");
|
|
|
|
config_str parsed = yon_char_parse(layouts[i],&parsed_size,"|");
|
|
|
|
gtk_tree_store_append(window->list,&parent,NULL);
|
|
|
|
gtk_tree_store_append(window->list,&parent,NULL);
|
|
|
|
gtk_tree_store_set(window->list,&parent,0,parsed[0],2,_(parsed[1]),-1);
|
|
|
|
gtk_tree_store_set(window->list,&parent,0,parsed[0],2,_(parsed[1]),4,parsed[1],-1);
|
|
|
|
int variants_size;
|
|
|
|
int variants_size;
|
|
|
|
config_str variants = yon_layout_get_children(parsed[0],&variants_size);
|
|
|
|
config_str variants = yon_layout_get_children(parsed[0],&variants_size);
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
for (int k=0;k<variants_size;k++){
|
|
|
|
for (int k=0;k<variants_size;k++){
|
|
|
|
parsed = yon_char_parse(variants[k],&parsed_size,"|");
|
|
|
|
parsed = yon_char_parse(variants[k],&parsed_size,"|");
|
|
|
|
gtk_tree_store_append(window->list,&iter,&parent);
|
|
|
|
gtk_tree_store_append(window->list,&iter,&parent);
|
|
|
|
gtk_tree_store_set(window->list,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),-1);
|
|
|
|
gtk_tree_store_set(window->list,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),4,parsed[2],-1);
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
yon_char_parsed_free(variants,variants_size);
|
|
|
|
yon_char_parsed_free(variants,variants_size);
|
|
|
|
|