From ac22a22a113f00b946d6f679475e9d67691dba17 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Sep 2023 15:49:18 +0600 Subject: [PATCH] Update --- layouts.csv | 1 + source/ubl-settings-keyboard.c | 26 +++++++++++++++++-------- source/ubl-settings-keyboard.h | 4 +++- source/ubl-utils.c | 35 ++++++++++++++++++++++++++++++++++ source/ubl-utils.h | 7 +++++-- ubl-settings-keyboard.glade | 2 +- ubl-settings-keyboard.pot | 3 +++ ubl-settings-keyboard_ru.po | 3 +++ 8 files changed, 69 insertions(+), 12 deletions(-) diff --git a/layouts.csv b/layouts.csv index 0c3d5fa..4a59bcb 100644 --- a/layouts.csv +++ b/layouts.csv @@ -60,6 +60,7 @@ te;Telugu th;Thai tr;Turkish uk;Ukrainian +us;American vi;Vietnamese zh;Simplified Chinese zh;Traditional Chinese diff --git a/source/ubl-settings-keyboard.c b/source/ubl-settings-keyboard.c index 4f3203b..9e1ba4d 100644 --- a/source/ubl-settings-keyboard.c +++ b/source/ubl-settings-keyboard.c @@ -106,10 +106,11 @@ void yon_load_proceed(YON_CONFIG_TYPE type, main_window *widgets){ gtk_list_store_clear(widgets->layoutsList); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ModelCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),0); - gtk_entry_set_text(GTK_ENTRY(widgets->OptionsEntry),""); + gtk_entry_set_text(GTK_ENTRY(widgets->OptionsEntry),DEFAULT_LABEL); + char *name; if (yon_config_load_register(type,"keyboard","XkbModel","keyboard","XkbLayout","keyboard","KEYBOARD","keyboard","XkbOptions","config","NUMLOCK",NULL)){ GtkTreeIter iter; - char *name = yon_config_get_by_key("XkbModel"); + name = yon_config_get_by_key("XkbModel"); char *id; if (name) { int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->modelsList),&iter); @@ -140,9 +141,16 @@ void yon_load_proceed(YON_CONFIG_TYPE type, main_window *widgets){ } else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),0); free(name); - if (main_config.layouts_list){ - int size=0; - name = yon_config_get_by_key("XkbLayout"); + } + if (main_config.layouts_list){ + int size=0; + name = yon_config_get_by_key("XkbLayout"); + if (!name){ + int sizes; + config_str rtn = yon_config_load(get_defaults_command,&sizes); + name = yon_char_divide_search(rtn[0],"\n",-1); + yon_char_divide_search(name,"=",-1); + } config_str layouts = yon_char_parse(name,&size,","); GtkTreeIter iter; char *rid,*rname; @@ -157,9 +165,11 @@ void yon_load_proceed(YON_CONFIG_TYPE type, main_window *widgets){ } } } - } - } - yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + + + } + + yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } diff --git a/source/ubl-settings-keyboard.h b/source/ubl-settings-keyboard.h index b7e8b63..b34d78d 100644 --- a/source/ubl-settings-keyboard.h +++ b/source/ubl-settings-keyboard.h @@ -30,10 +30,12 @@ #define options_parameter "XkbOptions" #define num_lock_boot_parameter "NUMLOCK" -#define get_options_command "grep \"grp:.*toggle\" /usr/share/X11/xkb/rules/base.lst|sed -e 's/^ *//g' -e 's/\t//g' -e 's/toggle */toggle;/g'" +#define get_options_command "grep -E \"grp:.*toggle|grp_led:.*toggle|compose:.*toggle\" /usr/share/X11/xkb/rules/base.lst|sed -e 's/^ *//g' -e 's/\t//g' -e 's/toggle */toggle;/g'" #define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}|^ {8,8}'|sed -e 's/ *//g' -e 's,,,g' -e 's/ *//g' -e 's,,,g'" #define get_layouts_command "grep '' /usr/share/ubl-settings-keyboard/csv/layouts.csv" +#define get_defaults_command "ubconfig --default get keyboard XkbLayout" + #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-keyboard" typedef char* string; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 188d5fa..338e917 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -942,6 +942,16 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size) return NULL; }; +config_str yon_file_open(char *file_path, int *size){ + FILE *file = fopen(file_path,"r"); + char str_loaded[4098]; + config_str final_string = NULL; + while (fgets(str_loaded,4098,file)){ + final_string ? yon_char_parsed_append(final_string,size,str_loaded) : yon_char_parsed_new(size,final_string,NULL); + } + return final_string; +} + //config functions typedef struct yon_config_parameter @@ -1740,6 +1750,31 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end yon_dictionary_add_or_create_if_exists_with_data(__yon_main_window_config.deleted_parameters,param->parameter_name,param); } + int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type){ + GError *err=NULL; + switch (type){ + case YON_TYPE_BOOLEAN: + *((int*)return_value) = g_key_file_get_boolean(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_INT: + *((int*)return_value) = g_key_file_get_integer(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_STRING: + *((char**)return_value) = g_key_file_get_string(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_STRING_LIST: + gsize size=0; + *((char***)return_value) = g_key_file_get_string_list(__yon_window_config_file,section,config_parameter,&size,&err); + *((char***)return_value)=yon_remalloc(return_value,size+1); + *((char***)return_value)[size]=NULL; + if (err) return 0; else return 1; + break; + } + } + GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){ GtkWidget *menu_item = gtk_menu_item_new(); gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom"); diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 928aea9..6ab711f 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -28,8 +28,6 @@ #define get_home_dir_command yon_char_unite("getent passwd \"",yon_ubl_root_user_get(),"\" | cut -d: -f6",NULL) - - typedef enum { #ifdef __GTK_H__ @@ -173,6 +171,8 @@ void yon_apps_sort(apps *applist, int size); apps *yon_apps_get_by_name(apps *applist, char *name, int size); +config_str yon_file_open(char *file_path, int *size); + //config functions #define ubconfig_save_command "ubconfig" @@ -228,6 +228,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end enum YON_TYPE{ YON_TYPE_STRING, + YON_TYPE_STRING_LIST, YON_TYPE_INT, YON_TYPE_BOOLEAN, YON_TYPE_OTHER @@ -264,6 +265,8 @@ void yon_window_config_add_custom_parameter(char *param_name, char *section, voi void yon_window_config_erase_custom_parameter(char *param_name, char *section); +int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type); + int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size); int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find); diff --git a/ubl-settings-keyboard.glade b/ubl-settings-keyboard.glade index 6c08022..6b0f6e5 100644 --- a/ubl-settings-keyboard.glade +++ b/ubl-settings-keyboard.glade @@ -997,7 +997,7 @@ translated and supported by community. True - True + False True diff --git a/ubl-settings-keyboard.pot b/ubl-settings-keyboard.pot index b293988..933a9a2 100644 --- a/ubl-settings-keyboard.pot +++ b/ubl-settings-keyboard.pot @@ -416,6 +416,9 @@ msgstr "" msgid "Ukrainian" msgstr "" +msgid "American" +msgstr "" + msgid "Vietnamese" msgstr "" diff --git a/ubl-settings-keyboard_ru.po b/ubl-settings-keyboard_ru.po index da6017d..9257e06 100644 --- a/ubl-settings-keyboard_ru.po +++ b/ubl-settings-keyboard_ru.po @@ -419,6 +419,9 @@ msgstr "Турецкий" msgid "Ukrainian" msgstr "Украинский" +msgid "American" +msgstr "Американский английский" + msgid "Vietnamese" msgstr "Вьетнамский"