WIP settings manager rework

pull/73/head
parent d47128cf56
commit c9b36c023c
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -2,6 +2,7 @@
<gresources>
<gresource prefix="/com/ublinux/ui">
<file>ubl-settings-manager.glade</file>
<file>ubl-settings-manager-settings.glade</file>
<file>ubl-settings-manager-theme-gnome.glade</file>
<file>ubl-settings-manager-theme-gnome-section.glade</file>
<file>ubl-settings-manager-theme-main.glade</file>

@ -30,6 +30,7 @@ add_custom_target(GLADE ubl-settings-manager.glade)
set(DEPENDFILES
../ubl-settings-manager.glade
../ubl-settings-manager-settings.glade
../ubl-settings-manager-theme-gnome.glade
../ubl-settings-manager-theme-gnome-section.glade
../ubl-settings-manager-theme-main.glade
@ -69,6 +70,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
set(SOURCE_FILES
ubl-settings-manager.c
ubl-settings-manager-settings.c
ubl-settings-manager-theme.c
ubl-settings-manager-theme-gnome.c
ubl-settings-manager-app-sections.c

@ -0,0 +1,82 @@
#include "ubl-settings-manager.h"
gboolean on_settings_size_changed(GtkRange* , GtkScrollType* , gdouble value, settings_window *window){
long val = (long)value;
int size = val-val%8;
if (size<24) size=24;
if (size>64) size=64;
window->icon_size = size;
char *size_full = g_strdup_printf("%dx%d",size,size);
gtk_label_set_text(GTK_LABEL(window->SizeLabel),size_full);
gtk_image_set_from_pixbuf(GTK_IMAGE(window->SizeIcon),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), icon_path,size,1,GTK_ICON_LOOKUP_FORCE_SIZE),NULL));
free(size_full);
return 0;
}
void on_settings_accept(GtkWidget *, settings_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
yon_window_config_add_instant_parameter(icon_size_parameter,"Settings",&window->icon_size,YON_TYPE_INT);
char *cur_theme = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ThemeCombo));
if (cur_theme)
yon_window_config_add_instant_parameter(theme_parameter,"Settings",cur_theme,YON_TYPE_STRING);
int double_click = gtk_switch_get_active(GTK_SWITCH(window->DoubleClickSwitch));
yon_window_config_add_instant_parameter(double_click_parameter,"Settings",&double_click,YON_TYPE_INT);
yon_interface_update(widgets);
on_subwindow_close(window->Window);
}
settings_window *yon_settings_window_new(){
settings_window *window = malloc(sizeof(settings_window));
memset(window,0,sizeof(window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_settings);
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->SizeSlider = yon_gtk_builder_get_widget(builder,"SizeSlider");
window->SizeLabel = yon_gtk_builder_get_widget(builder,"SizeLabel");
window->SizeIcon = yon_gtk_builder_get_widget(builder,"SizeIcon");
window->ThemeCombo = yon_gtk_builder_get_widget(builder,"ThemeCombo");
window->DoubleClickSwitch = yon_gtk_builder_get_widget(builder,"DoubleClickSwitch");
window->SectionsConfigurationButton = yon_gtk_builder_get_widget(builder,"SectionsConfigurationButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_settings_accept),window);
g_signal_connect(G_OBJECT(window->SizeSlider),"change-value",G_CALLBACK(on_settings_size_changed),window);
int size;
config_str themes = (config_str)g_hash_table_get_keys_as_array(main_config.themes,&size);
qsort(themes,size,sizeof(char*),yon_char_parsed_compare);
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->ThemeCombo),themes[i],themes[i]);
}
char *theme_id = NULL;
if (yon_window_config_get_parameter("Settings",theme_parameter,&theme_id,YON_TYPE_STRING)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ThemeCombo),theme_id);
} else {
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ThemeCombo),GNOME_THEME_LABEL);
}
window->icon_size;
if (!yon_window_config_get_parameter("Settings",icon_size_parameter,&window->icon_size,YON_TYPE_INT)){
window->icon_size=32;
}
gtk_range_set_value(GTK_RANGE(window->SizeSlider),window->icon_size);
int double_click_activate;
if (!yon_window_config_get_parameter("Settings",double_click_parameter,&double_click_activate,YON_TYPE_BOOLEAN)){
double_click_activate=0;
}
gtk_switch_set_active(GTK_SWITCH(window->DoubleClickSwitch),double_click_activate);
return window;
}
void on_settings_open(GtkWidget *, main_window *widgets){
settings_window *window = yon_settings_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"settings_window");
gtk_widget_show(window->Window);
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
}

@ -1,19 +1,61 @@
#include "ubl-settings-manager.h"
typedef struct {
GtkWidget *expander;
GtkWidget *AppsList;
app_section *section;
} gnome_section;
void on_gnome_activate(){
void on_gnome_plug_connected(GtkWidget *,gnome_theme_struct *theme){
gtk_widget_show(theme->SocketBox);
gtk_widget_hide(theme->HideBox);
}
void on_gnome_plug_disconnected(GtkWidget *,gnome_theme_struct *theme){
gtk_widget_show(theme->HideBox);
gtk_widget_hide(theme->SocketBox);
on_plug_disconnected(GTK_SOCKET(theme->Socket),main_config.widgets);
}
void on_gnome_socket_add(){
void on_gnome_activate(GtkWidget *,GtkListBoxRow *self, gnome_theme_struct *theme);
void on_gnome_activate(GtkWidget *,GtkListBoxRow *self, gnome_theme_struct *theme){
theme->Socket = GTK_WIDGET(yon_sockets_init(GTK_BOX(theme->SocketBox)));
g_signal_connect(G_OBJECT(theme->Socket),"plug_added",G_CALLBACK(on_gnome_plug_connected),theme);
g_signal_connect(G_OBJECT(theme->Socket),"destroy",G_CALLBACK(on_gnome_plug_disconnected),theme);
apps *cur_app = g_object_get_data(G_OBJECT(self),"apps");
char *command = cur_app->Exec;//launch_command(cur_app->Desktop_path);
char *command_args = NULL;
if (cur_app->DualPluggable==1){
char *save_socket = yon_get_save_socket();
char *load_socket = yon_get_load_socket();
char *main_socket_id = yon_char_from_long((long)gtk_socket_get_id(GTK_SOCKET(theme->Socket)));
command_args = launch_args_command(main_socket_id,load_socket,save_socket);
} else if (cur_app->Pluggable){
char *main_socket_id = yon_char_from_long((long)gtk_socket_get_id(GTK_SOCKET(theme->Socket)));
command_args = yon_char_unite("--socket-id=",main_socket_id,NULL);
}
yon_launch_app_with_arguments(command,command_args);
}
typedef struct {
GtkWidget *expander;
GtkWidget *AppsList;
app_section *section;
} gnome_section;
void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *self, gnome_theme_struct *theme);
void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *self, gnome_theme_struct *theme){
GList *list = gtk_container_get_children(GTK_CONTAINER(theme->AppsTree));
GList *iter;
for (iter=list;iter;iter=iter->next){
gnome_section *cur_section = g_object_get_data(G_OBJECT(iter->data),"gnome_section");
if (cur_section->AppsList != self_list){
g_signal_handlers_block_by_func(G_OBJECT(cur_section->AppsList),G_CALLBACK(on_gnome_selected),theme);
gtk_list_box_unselect_all(GTK_LIST_BOX(cur_section->AppsList));
g_signal_handlers_unblock_by_func(G_OBJECT(cur_section->AppsList),G_CALLBACK(on_gnome_selected),theme);
}
}
}
void on_gnome_socket_add(){
}
gnome_section *yon_gnome_section_new(){
gnome_section *cur_section = malloc(sizeof(gnome_section));
@ -26,21 +68,32 @@ gnome_section *yon_gnome_section_new(){
void yon_gnome_section_setup_apps(gnome_section *cur_section, const char *target){
apps *cur_app = yon_apps_get((char*)target);
GtkWidget *Image = gtk_image_new_from_icon_name(cur_app->Icon,GTK_ICON_SIZE_BUTTON);
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), !yon_char_is_empty(cur_app->Icon)?cur_app->Icon:icon_path, main_config.apps_icon_size,1,GTK_ICON_LOOKUP_FORCE_SIZE);
GtkWidget *Image = NULL;
if (info){
Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
} else {
info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), icon_path, main_config.apps_icon_size,1,GTK_ICON_LOOKUP_FORCE_SIZE);
Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
}
GtkWidget *Label = gtk_label_new(cur_app->Name);
GtkWidget *Row = gtk_list_box_row_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
// g_signal_connect(G_OBJECT(theme->AppsTree),"row-activated",G_CALLBACK(on_gnome_activate),theme);
g_object_set_data(G_OBJECT(Row),"gnome_section",cur_section);
gtk_container_add(GTK_CONTAINER(Row),Box);
gtk_box_pack_start(GTK_BOX(Box),Image,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_label_set_xalign(GTK_LABEL(Label),0);
gtk_list_box_insert(GTK_LIST_BOX(cur_section->AppsList),Row,-1);
g_object_set_data(G_OBJECT(Row),"gnome_section",cur_section);
g_object_set_data(G_OBJECT(Row),"apps",cur_app);
gtk_widget_show_all(Row);
}
void yon_gnome_section_setup(GtkBox *target,app_section *section){
void yon_gnome_section_setup(gnome_theme_struct *theme,app_section *section){
gnome_section *cur_section = yon_gnome_section_new();
cur_section->section = section;
gtk_expander_set_label(GTK_EXPANDER(cur_section->expander),section->name);
@ -49,7 +102,10 @@ void yon_gnome_section_setup(GtkBox *target,app_section *section){
for(int i=0;i<app_size;i++){
yon_gnome_section_setup_apps(cur_section,app_list[i]);
}
gtk_box_pack_start(target,cur_section->expander,0,0,0);
gtk_box_pack_start(GTK_BOX(theme->AppsTree),cur_section->expander,0,0,0);
g_object_set_data(G_OBJECT(cur_section->expander),"gnome_section",cur_section);
g_signal_connect(G_OBJECT(cur_section->AppsList),"row-activated",G_CALLBACK(on_gnome_activate),theme);
g_signal_connect(G_OBJECT(cur_section->AppsList),"row-selected",G_CALLBACK(on_gnome_selected),theme);
}
int yon_gnome_update(gnome_theme_struct *theme){
@ -66,7 +122,7 @@ int yon_gnome_update(gnome_theme_struct *theme){
dictionary *cur;
for_dictionaries(cur,main_config.sections){
app_section *section_data = yon_dictionary_get_data(cur,app_section*);
yon_gnome_section_setup(GTK_BOX(theme->AppsTree),section_data);
yon_gnome_section_setup(theme,section_data);
}
return 1;
}
@ -80,11 +136,14 @@ gnome_theme_struct *yon_gnome_theme_new(){
theme->SocketBox = yon_gtk_builder_get_widget(builder,"SocketBox");
theme->GnomePaned = yon_gtk_builder_get_widget(builder,"GnomePaned");
theme->GnomeInfoLogoImage = yon_gtk_builder_get_widget(builder,"GnomeInfoLogoImage");
theme->HideBox = yon_gtk_builder_get_widget(builder,"HideBox");
theme->IconCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"IconCell"));
theme->Socket = NULL;
theme->get_command_func = NULL;
theme->theme_name = yon_char_new(GNOME_THEME_LABEL);
theme->Socket = gtk_socket_new();
theme->list_update_func = (int(*)(struct gnome_theme_struct*))yon_gnome_update;
theme->set_sections_func = NULL;
gtk_box_pack_start(GTK_BOX(theme->SocketBox),theme->Socket,1,1,0);
gtk_widget_show(theme->Socket);
g_signal_connect(G_OBJECT(theme->SocketBox),"add",G_CALLBACK(on_gnome_socket_add),theme);
// gtk_cell_renderer_set_fixed_size(theme->IconCell,main_config.apps_icon_size,main_config.apps_icon_size);

@ -6,7 +6,7 @@ theme_struct *yon_theme_update(main_window *widgets){
theme_id = yon_char_new(GNOME_THEME_LABEL);
}
theme_struct *theme = g_hash_table_lookup(main_config.themes,theme_id);
theme_struct *theme = ((theme_struct*(*)())g_hash_table_lookup(main_config.themes,theme_id))();
if (theme){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->ThemeBox));
GList *iter;
@ -25,10 +25,14 @@ theme_struct *yon_theme_update(main_window *widgets){
}
void yon_theme_init(){
theme_struct *gnome_struct = (theme_struct*)yon_gnome_theme_new();
theme_struct *main_struct = (theme_struct*)yon_main_theme_new();
g_hash_table_insert(main_config.themes,yon_char_new(GNOME_THEME_LABEL),gnome_struct);
g_hash_table_insert(main_config.themes,yon_char_new(MAIN_THEME_LABEL),main_struct);
// theme_struct *gnome_struct = (theme_struct*)yon_gnome_theme_new();
// theme_struct *main_struct = (theme_struct*)yon_main_theme_new();
g_hash_table_insert(main_config.themes,yon_char_new(GNOME_THEME_LABEL),yon_gnome_theme_new);
g_hash_table_insert(main_config.themes,yon_char_new(MAIN_THEME_LABEL),yon_main_theme_new);
}
void yon_main_update(main_theme_struct *theme){
}
void on_main_activate(){
@ -40,14 +44,16 @@ void on_main_socket_add(){
}
main_theme_struct *yon_main_theme_new(){
main_theme_struct *theme = malloc(sizeof(gnome_theme_struct));
main_theme_struct *theme = malloc(sizeof(main_theme_struct));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_main_theme);
theme->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
theme->AppsIconView = yon_gtk_builder_get_widget(builder,"AppsIconView");
theme->SocketBox = yon_gtk_builder_get_widget(builder,"SocketBox");
theme->AppsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AppsList"));
theme->theme_name = yon_char_new(MAIN_THEME_LABEL);
theme->Socket = NULL;
theme->list_update_func = (int(*)(struct main_theme_struct*))yon_main_update;
g_signal_connect(G_OBJECT(theme->AppsIconView),"item-activated",G_CALLBACK(on_main_activate),theme);
g_signal_connect(G_OBJECT(theme->SocketBox),"add",G_CALLBACK(on_main_socket_add),theme);

File diff suppressed because it is too large Load Diff

@ -37,10 +37,11 @@
#define glade_path_gnome_theme "/com/ublinux/ui/ubl-settings-manager-theme-gnome.glade"
#define glade_path_gnome_section "/com/ublinux/ui/ubl-settings-manager-theme-gnome-section.glade"
#define glade_path_main_theme "/com/ublinux/ui/ubl-settings-manager-theme-main.glade"
#define glade_path_settings "/com/ublinux/ui/ubl-settings-manager-settings.glade"
#define CssPath "/com/ublinux/css/ubl-settings-manager.css"
#define GlobalConfigPath "/etc/xdg/ubl-settings-manager/ubl-settings-manager.conf"
#define UserConfigPath "/.config/ubl-settings-manager/ubl-settings-manager.conf"
#define AppIconPath "com.ublinux.ubl-settings-manager"
#define icon_path "com.ublinux.ubl-settings-manager"
#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png"
#define DesktopPath "/usr/share/applications/"
#define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/"
@ -48,6 +49,15 @@
#define LocaleName "ubl-settings-manager"
#define ubl_settings_infoPath "ubl-settings-info"
#define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id="
#define launch_command(target) yon_char_unite("xdg-open ",target,NULL)
#define launch_args_command(main_socket,load_socket,save_socket) yon_char_unite("--socket-id=",main_socket," --socket-ext-id=",save_socket," --socket-trd-id=",load_socket,NULL)
#define double_click_parameter "double_click"
#define icon_size_parameter "icon_size"
#define theme_parameter "theme"
#define hide_banner_parameter "hide_banner"
typedef char* string;
__attribute__((unused)) static \
string version_application;
@ -75,21 +85,6 @@ typedef struct IconSection{
char *categories;
} IconSection;
typedef struct {
template_config_fields;
int apps_icon_size;
dictionary *sections;
int labelDensity;
int lock_settings;
int double_click;
dictionary *SettingsSections;
int banner_hidden;
GHashTable *themes;
} config;
extern config main_config;
typedef struct {
GtkWidget *MainFrame;
GtkWidget *MainBox;
@ -113,40 +108,36 @@ typedef struct {
} SectionSettingSegment;
typedef struct theme_struct {
GtkWidget *MainBox;
GtkWidget *AppsTree;
GtkWidget *SocketBox;
GtkWidget *HideBox;
GtkWidget *Socket;
int (*list_update_func)(struct theme_struct*);
char *(*get_command_func)(struct theme_struct*);
void (*set_sections_func)(struct theme_struct*);
GtkTreeStore *AppsStore;
char *theme_name;
GtkWidget *MainBox; //theme main box, which connects to window
GtkWidget *SocketBox; //main socket box, where socket is being parented to
GtkWidget *HideBox; //box to hide when socket has been connected
int (*list_update_func)(struct theme_struct*); //function to update theme's lits of application
// GtkWidget *AppsTree; //theme application list container
// GtkWidget *Socket;
} theme_struct;
typedef struct gnome_theme_struct {
char *theme_name;
GtkWidget *MainBox;
GtkWidget *AppsTree;
GtkWidget *SocketBox;
GtkWidget *HideBox;
GtkWidget *Socket;
int (*list_update_func)(struct gnome_theme_struct*);
char *(*get_command_func)(struct gnome_theme_struct*);
void (*set_sections_func)(struct gnome_theme_struct*);
GtkWidget *AppsTree;
GtkWidget *Socket;
GtkWidget *GnomePaned;
GtkWidget *GnomeInfoLogoImage;
GtkCellRenderer *IconCell;
} gnome_theme_struct;
typedef struct main_theme_struct {
char *theme_name;
GtkWidget *MainBox;
GtkWidget *AppsIconView;
GtkWidget *SocketBox;
GtkWidget *HideBox;
GtkWidget *Socket;
int (*list_update_func)(struct main_theme_struct*);
char *(*get_command_func)(struct main_theme_struct*);
void (*set_sections_func)(struct main_theme_struct*);
GtkWidget *AppsIconView;
GtkWidget *Socket;
GtkListStore *AppsList;
} main_theme_struct;
@ -156,62 +147,80 @@ typedef struct {
GtkWidget *TitleLabel;
GtkWidget *ThemeBox;
GtkWidget *SocketBox;
GtkWidget *BackButton;
GtkWidget *SettingsButton;
GtkWidget *BannerImage;
GtkWidget *BannerArrow;
GtkWidget *BannerButton;
GtkWidget *BannerRevealer;
GtkWidget *LoadSocket;
GtkWidget *LoadSocketBox;
GtkWidget *SaveSocket;
GtkWidget *SaveSocketBox;
GtkWidget *OptionsSocket;
GtkWidget *OptionsSocketBox;
GtkWidget *MainMenuItemSettings;
GtkWidget *MainMenuItemAbout;
GtkWidget *MainMenuItemDocumentation;
theme_struct *current_theme;
} main_window;
typedef struct {
template_config_fields;
int apps_icon_size;
dictionary *sections;
int labelDensity;
int lock_settings;
int double_click;
dictionary *SettingsSections;
int banner_hidden;
main_window *widgets;
GHashTable *themes;
} config;
extern config main_config;
typedef struct {
char *name;
int categories_size;
config_str categories;
} app_section;
void on_plug_added(GtkSocket* self, main_window *builder);
void on_plug_removed(GtkSocket* self, main_window *widgets);
void on_Item_activated(GtkIconView* self, GtkTreePath* path, main_window *applist);
void on_gnome_Item_activated(GtkIconView* self, GtkTreePath* path, main_window *applist);
void on_item_selection_changed(GtkIconView *IV, main_window *widgets);
void on_ButtonOpenHelp_activated(GtkWidget *button, GtkBuilder *builder);
void on_backToSettingsButton_clicked(GtkWidget *button,main_window *sctb);
void on_CancelHelpButton_activated(GtkWidget *button,GtkBuilder *builder);
void on_ReadHelpButton_activated(GtkWidget *button, GtkBuilder *builder);
int on_settings_accept(GtkWidget *button, dictionary **widgetsDs);
void on_paned_move(GtkPaned* self, GtkScrollType* scroll_type, main_window *widgets);
int on_settingsOpen(GtkWidget *button, main_window *widgets);
int on_settings_icon_size_changed(GtkWidget* self, main_window *widgets);
int on_settings_cancel(GtkWidget *button, main_window *widgets);
int reload_list(IVGraphicals *section);
int hide_if_unfound(dictionary *widgetsDc);
GtkWidget *create_socket(main_window *builder);
int setup_config();
void update_double_clicks(dictionary *widgetsD);
void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned);
int yon_set_sections(IconSection *section);
void yon_set_default_sections(dictionary *section);
dictionary *yon_section_new(dictionary *section, char *section_name, char *categories);
void yon_switch_theme(dictionary **dict, dictionary *newone);
void yon_segment_show(main_window *widgets, SectionSettingSegment *sgm);
SectionSettingSegment *yon_create_section_setting(char *name, char *categories);
void yon_segments_show(main_window *widgets);
void yon_segments_hide(main_window *widgets);
dictionary *yon_create_icon_section_list(dictionary *sections);
int yon_show_icon_views(dictionary *IVS,main_window *widgets);
void yon_icon_size_convert(int mode);
int launch(thread_output *thread);
float yon_time_average(dictionary *times);
void yon_time_reg_for_average(dictionary *listofregs, int size, time_t tm);
int yon_get_icon_size(int size);
typedef struct {
GtkWidget *Window;
GtkWidget *SizeSlider;
GtkWidget *SizeLabel;
GtkWidget *SizeIcon;
GtkWidget *ThemeCombo;
GtkWidget *DoubleClickSwitch;
GtkWidget *SectionsConfigurationButton;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
int icon_size;
} settings_window;
void on_settings_accept(GtkWidget *, settings_window *window);
void yon_theme_init();
theme_struct *yon_theme_update(main_window *widgets);
gnome_theme_struct *yon_gnome_theme_new();
main_theme_struct *yon_main_theme_new();
app_section *yon_app_section_new();
gnome_theme_struct *yon_gnome_theme_new();
char *yon_get_save_socket();
char *yon_get_load_socket();
GtkSocket *yon_sockets_init(GtkBox *socketBox);
void on_plug_disconnected(GtkSocket *self, main_window *widgets);
int yon_char_parsed_compare(const void *a, const void *b);
void yon_interface_update(main_window *widgets);
void on_settings_open(GtkWidget *, main_window *widgets);
#endif

@ -2,44 +2,63 @@
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<object class="GtkWindow" id="SettingsWindow">
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">24</property>
<property name="upper">64</property>
<property name="value">24</property>
<property name="step-increment">8</property>
<property name="page-increment">8</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="default-width">440</property>
<property name="default-height">250</property>
<property name="icon-name">ru.ublinux.ubl-settings-manager</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkWindow" id="Window">
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-manager</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">2</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="left-padding">12</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="settingsSizeInfoLabel">
<object class="GtkLabel" id="SizeLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="ypad">5</property>
@ -52,15 +71,12 @@
</packing>
</child>
<child>
<object class="GtkScale" id="settingsSizeSlider">
<object class="GtkScale" id="SizeSlider">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">10</property>
<property name="margin-right">10</property>
<property name="margin-start">10</property>
<property name="margin-end">10</property>
<property name="adjustment">adjustment1</property>
<property name="fill-level">5</property>
<property name="fill-level">64</property>
<property name="round-digits">0</property>
<property name="digits">0</property>
<property name="draw-value">False</property>
</object>
@ -78,11 +94,13 @@
</packing>
</child>
<child>
<object class="GtkImage" id="settingsIcon">
<object class="GtkImage" id="SizeIcon">
<property name="width-request">64</property>
<property name="height-request">64</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-manager</property>
</object>
@ -109,7 +127,7 @@
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
@ -118,34 +136,27 @@
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">2</property>
<property name="margin-bottom">5</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkComboBoxText" id="settingsThemeChooser">
<object class="GtkComboBoxText" id="ThemeCombo">
<property name="name">combo</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="margin-left">10</property>
<property name="margin-right">10</property>
<property name="margin-start">10</property>
<property name="margin-end">10</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="active">0</property>
</object>
@ -172,7 +183,7 @@
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@ -181,15 +192,12 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">3</property>
<property name="margin-bottom">3</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="settingsDoubleClickLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="margin-left">12</property>
<property name="margin-start">12</property>
<property name="label" translatable="yes">Double click selection</property>
<property name="xalign">0.019999999552965164</property>
</object>
@ -200,11 +208,9 @@
</packing>
</child>
<child>
<object class="GtkSwitch" id="settingsDoubleClickSwitch">
<object class="GtkSwitch" id="DoubleClickSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-right">10</property>
<property name="margin-end">10</property>
</object>
<packing>
<property name="expand">False</property>
@ -221,17 +227,11 @@
</packing>
</child>
<child>
<object class="GtkButton" id="settingsSectionsSettingsButton">
<object class="GtkButton" id="SectionsConfigurationButton">
<property name="label" translatable="yes">Sections management</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
</object>
<packing>
<property name="expand">False</property>
@ -239,87 +239,14 @@
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">3</property>
<property name="spacing">30</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="settingsCancel">
<property name="label" translatable="yes">Close</property>
<property name="width-request">200</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-bottom">2</property>
<property name="image">image8</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="settingsAccept">
<property name="label" translatable="yes">Apply</property>
<property name="width-request">200</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-bottom">2</property>
<property name="image">image9</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar1">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="settingsHeaderNameLabel">
<object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">UBLinux Settings Manager</property>
@ -337,17 +264,32 @@
<property name="icon_size">5</property>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image8</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Apply</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image9</property>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
</interface>

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-manager.css -->
<object class="GtkExpander" id="MainExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
@ -9,7 +10,11 @@
<object class="GtkListBox" id="AppsList">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="activate-on-single-click">False</property>
<style>
<class name="separatorTop"/>
</style>
</object>
</child>
<child type="label">

@ -34,13 +34,40 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="AppsTree">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
<object class="GtkSearchEntry" id="SearchEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="primary-icon-name">edit-find-symbolic</property>
<property name="primary-icon-activatable">False</property>
<property name="primary-icon-sensitive">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="AppsTree">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
@ -67,10 +94,6 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-right">3</property>
<property name="margin-start">3</property>
<property name="margin-end">3</property>
<property name="margin-top">3</property>
<property name="margin-bottom">3</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
@ -130,7 +153,7 @@
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>

@ -108,45 +108,6 @@
</object>
</child>
</object>
<object class="GtkMenu" id="GnomeMenu">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="reserve-toggle-size">False</property>
<property name="rect-anchor-dy">4</property>
<child>
<object class="GtkMenuItem" id="GnomeMenuItemSettings">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Settings</property>
<property name="use-underline">True</property>
<style>
<class name="menuitemtop"/>
</style>
</object>
</child>
<child>
<object class="GtkMenuItem" id="GnomeMenuItemAbout">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">About...</property>
<property name="use-underline">True</property>
<style>
<class name="menuitemmiddle"/>
</style>
</object>
</child>
<child>
<object class="GtkMenuItem" id="GnomeMenuItemDocumentation">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Documentation</property>
<property name="use-underline">True</property>
<style>
<class name="menuitembottom"/>
</style>
</object>
</child>
</object>
<object class="GtkMenu" id="MainMenu">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -203,6 +164,7 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -287,7 +249,9 @@
<object class="GtkBox" id="MainBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
@ -308,10 +272,7 @@
<property name="name">Icon</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<placeholder/>
</child>
@ -370,7 +331,7 @@
</object>
</child>
<child>
<object class="GtkButton" id="GnomebackToSettingsButton">
<object class="GtkButton" id="BackButton">
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">False</property>
@ -382,20 +343,10 @@
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkMenuButton">
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="direction">left</property>
<property name="use-popover">False</property>
<child>
<placeholder/>
</child>
<style>
<class name="thin"/>
<class name="noborder"/>
</style>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left</property>
</object>
<packing>
<property name="expand">False</property>
@ -428,9 +379,8 @@
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="popup">menu1</property>
<property name="popup">MainMenu</property>
<property name="direction">none</property>
<property name="popover">settingsPopover</property>
<child>
<placeholder/>
</child>
@ -441,7 +391,7 @@
</packing>
</child>
<child>
<object class="GtkBox" id="GnomeThirdSocketPlace">
<object class="GtkBox" id="LoadSocketBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
@ -456,7 +406,7 @@
</packing>
</child>
<child>
<object class="GtkBox" id="Gnomesocketbuttonplace">
<object class="GtkBox" id="SaveSocketBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
@ -467,7 +417,7 @@
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">4</property>
<property name="position">5</property>
</packing>
</child>
</object>
@ -477,193 +427,4 @@
<class name="noborder"/>
</style>
</object>
<object class="GtkMenu">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="menu-type-hint">menu</property>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="draw-as-radio">True</property>
</object>
</child>
</object>
<object class="GtkAction" id="action1"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">1</property>
<property name="upper">5</property>
<property name="value">2</property>
<property name="step-increment">1</property>
<property name="page-increment">1</property>
</object>
<object class="GtkAdjustment" id="adjustment2">
<property name="upper">1</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment3"/>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">ubconfig-gui</property>
<property name="icon_size">6</property>
</object>
<object class="GtkMenu" id="PersonalMenu">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Element 1</property>
</object>
</child>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Element 2</property>
<child type="submenu">
<object class="GtkMenu" id="menu2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Element 3</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label" translatable="yes">Element 4</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="image">image3</property>
<property name="use-stock">False</property>
</object>
</child>
</object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Стандартная тема</col>
</row>
<row>
<col id="0" translatable="yes">GNOME тема</col>
</row>
</data>
</object>
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<object class="GtkMenu" id="menu3">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<object class="GtkListStore" id="settingsModelCombobox">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkPopover" id="settingsPopover">
<property name="can-focus">False</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="margin-end">4</property>
<property name="margin-top">4</property>
<property name="margin-bottom">4</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkModelButton" id="MainMenuItemSettings1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="text" translatable="yes">Settings</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkModelButton" id="MainMenuItemDocumentation1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="text" translatable="yes">Documentation</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkModelButton" id="MainMenuItemAboutSystem1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="text" translatable="yes">About system</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<style>
<class name="noborder"/>
</style>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
</child>
</object>
</interface>

Loading…
Cancel
Save