Added keyboard window search

pull/270/head
parent 32dab2c4f1
commit 075336bc9e

@ -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);

@ -204,7 +204,7 @@ void config_init(){
} }
yon_char_parsed_free(languages,size); yon_char_parsed_free(languages,size);
main_config.layouts_store = gtk_tree_store_new(4,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); main_config.layouts_store = gtk_tree_store_new(5,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN,G_TYPE_STRING);
main_config.variants_list = yon_config_load(layouts_variant_command,&main_config.variants_size); main_config.variants_list = yon_config_load(layouts_variant_command,&main_config.variants_size);
main_config.layouts_list = yon_config_load(layouts_command,&main_config.layouts_size); main_config.layouts_list = yon_config_load(layouts_command,&main_config.layouts_size);
for (int i=0;i<main_config.variants_size;i++){ for (int i=0;i<main_config.variants_size;i++){

@ -1547,4 +1547,5 @@ int yon_advanced_part_get_pos(advanced_part_widgets *part, main_window *widgets)
int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets); int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets);
void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_part_data *data); void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_part_data *data);
void yon_advanced_part_data_unref(advanced_part_data *data); void yon_advanced_part_data_unref(advanced_part_data *data);
void on_advanced_part_content_changed(GtkWidget *, GtkWidget *, main_window *widgets); void on_advanced_part_content_changed(GtkWidget *, GtkWidget *, main_window *widgets);
gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *);

@ -52,7 +52,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="expander-column">treeviewcolumn1</property> <property name="expander-column">treeviewcolumn1</property>
<property name="search-column">0</property> <property name="search-column">2</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>

Loading…
Cancel
Save