#include #include #include "ubl-utils.h" #include #include #include #include #include #include #include #include "../compile/ubl-cmake.h" #ifdef WEBKIT_FOUND #include #endif #include "ubl-strings.h" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-keyboard" #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubl-settings-keyboard.glade" #define glade_layouts_path "/com/ublinux/ui/ubl-settings-keyboard-layouts.glade" #define glade_options_path "/com/ublinux/ui/ubl-settings-keyboard-options.glade" #define banner_path "/com/ublinux/images/ubl-settings-keyboard-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-keyboard.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define hostname_parameter "HOSTNAME" #define model_parameter "XkbModel" #define keyboard_layout_parameter "XkbLayout" #define console_font_parameter "CONSOLE_FONT" #define num_lock_boot_parameter "NUMLOCK" #define language_parameter "LANG" #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_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 LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-keyboard" typedef char* string; string version_application; char *local; typedef struct { int always_open_documentation; int win_pos_x; int win_pos_y; int win_width; int win_height; int socket_id; int load_socket_id; int save_socket_id; int lock_help; int lock_save_local; int lock_save_global; int lock_load_global; } config; typedef struct { //Standard GtkWidget *Window; GtkWidget *HatLabel; GtkWidget *PlugBox; GtkWidget *HeadOverlay; GtkWidget *HeadImage; GtkWidget *HeadBox; GtkWidget *HeadTitleLabel; GtkWidget *HeadInfoLabel; GtkWidget *StatusBox; GtkWidget *StatusIcon; GtkWidget *StatusLabel; GtkWidget *SaveLabel; GtkWidget *SaveMenuItem; GtkWidget *SaveGlobalMenuItem; GtkWidget *SaveLocalMenuItem; GtkWidget *RightBox; GtkWidget *LoadLabel; GtkWidget *LoadGlobalMenuItem; GtkWidget *LoadLocalMenuItem; GtkWidget *LeftBox; GtkWidget *DocumentationMenuItem; GtkWidget *AboutMenuItem; // Custom GtkWidget *NumLockCombo; GtkWidget *ModelCombo; GtkWidget *keyboard; GtkWidget *keytable; GtkWidget *grp_toggle; GtkWidget *OptionsEntry; GtkWidget *OptionsButton; GtkWidget *LayoutsTree; GtkWidget *MoveUpButton; GtkWidget *MoveDownButton; GtkWidget *AddButton; GtkWidget *RemoveButton; GtkListStore *layoutsList; GtkListStore *modelsList; } main_window; typedef struct { GtkWidget *Window; GtkWidget *HatText; GtkWidget *HeaderText; GtkWidget *InfoText; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } documentation_confirmation_window; typedef struct { GtkWidget *Window; GtkWidget *MainTree; GtkWidget *CancelButton; GtkWidget *AcceptButton; GtkListStore *list; } layouts_window; typedef struct { GtkWidget *Window; GtkWidget *CancelButton; GtkWidget *AcceptButton; } options_window; main_window *setup_window();