From fafe3433fb67804ef96a0a3bc4c28e9610f10589 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 18 Jan 2024 12:28:30 +0600 Subject: [PATCH] Added mode-dependent image at status line --- Makefile | 8 ++- ...blsettingsui-gtk3.config-full-symbolic.svg | 46 ++++++++++++ ...ttingsui-gtk3.config-hdd-home-symbolic.svg | 46 ++++++++++++ ...ublsettingsui-gtk3.config-hdd-symbolic.svg | 46 ++++++++++++ ...settingsui-gtk3.config-module-symbolic.svg | 46 ++++++++++++ ...ttingsui-gtk3.config-ram-home-symbolic.svg | 46 ++++++++++++ ...ettingsui-gtk3.config-sandbox-symbolic.svg | 46 ++++++++++++ libublsettingsui-gtk3.glade | 19 +++++ source/libublsettingsui-gtk3.c | 70 +++++++++++++++++-- source/libublsettingsui-gtk3.h | 18 +++++ 10 files changed, 386 insertions(+), 5 deletions(-) create mode 100644 com.ublinux.libublsettingsui-gtk3.config-full-symbolic.svg create mode 100644 com.ublinux.libublsettingsui-gtk3.config-hdd-home-symbolic.svg create mode 100644 com.ublinux.libublsettingsui-gtk3.config-hdd-symbolic.svg create mode 100644 com.ublinux.libublsettingsui-gtk3.config-module-symbolic.svg create mode 100644 com.ublinux.libublsettingsui-gtk3.config-ram-home-symbolic.svg create mode 100644 com.ublinux.libublsettingsui-gtk3.config-sandbox-symbolic.svg diff --git a/Makefile b/Makefile index cb37ba2..42ac4db 100644 --- a/Makefile +++ b/Makefile @@ -123,8 +123,14 @@ install: check @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.cancel-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.config-full-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.config-module-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.config-sandbox-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.config-ram-home-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.config-hdd-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.config-hdd-home-symbolic.svg" @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ ldconfig -n ${DESTDIR}${PREFIX}/lib; \ diff --git a/com.ublinux.libublsettingsui-gtk3.config-full-symbolic.svg b/com.ublinux.libublsettingsui-gtk3.config-full-symbolic.svg new file mode 100644 index 0000000..f460ae4 --- /dev/null +++ b/com.ublinux.libublsettingsui-gtk3.config-full-symbolic.svg @@ -0,0 +1,46 @@ + + + + + + + diff --git a/com.ublinux.libublsettingsui-gtk3.config-hdd-home-symbolic.svg b/com.ublinux.libublsettingsui-gtk3.config-hdd-home-symbolic.svg new file mode 100644 index 0000000..70fbdd4 --- /dev/null +++ b/com.ublinux.libublsettingsui-gtk3.config-hdd-home-symbolic.svg @@ -0,0 +1,46 @@ + + + + + + + diff --git a/com.ublinux.libublsettingsui-gtk3.config-hdd-symbolic.svg b/com.ublinux.libublsettingsui-gtk3.config-hdd-symbolic.svg new file mode 100644 index 0000000..70fbdd4 --- /dev/null +++ b/com.ublinux.libublsettingsui-gtk3.config-hdd-symbolic.svg @@ -0,0 +1,46 @@ + + + + + + + diff --git a/com.ublinux.libublsettingsui-gtk3.config-module-symbolic.svg b/com.ublinux.libublsettingsui-gtk3.config-module-symbolic.svg new file mode 100644 index 0000000..b18d1cc --- /dev/null +++ b/com.ublinux.libublsettingsui-gtk3.config-module-symbolic.svg @@ -0,0 +1,46 @@ + + + + + + + diff --git a/com.ublinux.libublsettingsui-gtk3.config-ram-home-symbolic.svg b/com.ublinux.libublsettingsui-gtk3.config-ram-home-symbolic.svg new file mode 100644 index 0000000..70fbdd4 --- /dev/null +++ b/com.ublinux.libublsettingsui-gtk3.config-ram-home-symbolic.svg @@ -0,0 +1,46 @@ + + + + + + + diff --git a/com.ublinux.libublsettingsui-gtk3.config-sandbox-symbolic.svg b/com.ublinux.libublsettingsui-gtk3.config-sandbox-symbolic.svg new file mode 100644 index 0000000..70fbdd4 --- /dev/null +++ b/com.ublinux.libublsettingsui-gtk3.config-sandbox-symbolic.svg @@ -0,0 +1,46 @@ + + + + + + + diff --git a/libublsettingsui-gtk3.glade b/libublsettingsui-gtk3.glade index 3915044..388c719 100644 --- a/libublsettingsui-gtk3.glade +++ b/libublsettingsui-gtk3.glade @@ -261,6 +261,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 1 + + + True + False + 5 + 5 + 5 + 5 + 25 + com.ublinux.libublsettingsui-gtk3.statemode-yellow-symbolic + 6 + + + False + True + end + 2 + + False diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 8bd2f14..f586388 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -1,6 +1,50 @@ #include "libublsettingsui-gtk3.h" +static char *__yon_config_mode=NULL; +char *yon_ubl_save_mode_get_icon_name(SAVE_MODE_TYPE type){ + switch (type){ + case SAVE_MODE_FULL: + return "com.ublinux.libublsettingsui-gtk3.config-full-symbolic"; + break; + case SAVE_MODE_MODULE: + return "com.ublinux.libublsettingsui-gtk3.config-module-symbolic"; + break; + case SAVE_MODE_SANDBOX: + return "com.ublinux.libublsettingsui-gtk3.config-sandbox-symbolic"; + break; + case SAVE_MODE_RAM_HOME: + return "com.ublinux.libublsettingsui-gtk3.config-ram-home-symbolic"; + break; + case SAVE_MODE_HDD: + return "com.ublinux.libublsettingsui-gtk3.config-hdd-symbolic"; + break; + case SAVE_MODE_HDD_HOME: + return "com.ublinux.libublsettingsui-gtk3.config-hdd-home-symbolic"; + break; + } +} + +SAVE_MODE_TYPE yon_ubl_save_mode_get_type(char *type){ + if (!strcmp(type,"changes")){ + return SAVE_MODE_FULL; + } + if (!strcmp(type,"module")){ + return SAVE_MODE_MODULE; + } + if (!strcmp(type,"sandbox")){ + return SAVE_MODE_SANDBOX; + } + if (!strcmp(type,"sandbox_ram_home")){ + return SAVE_MODE_RAM_HOME; + } + if (!strcmp(type,"sandbox_hdd")){ + return SAVE_MODE_HDD; + } + if (!strcmp(type,"sandbox_hdd_home")){ + return SAVE_MODE_HDD_HOME; + } +} //signal emmit handlers - no header initialization @@ -325,9 +369,11 @@ template_saving_window *yon_save_proceed(char *path,YON_CONFIG_TYPE type, ...){ } } if (!found){ - GtkTreeIter itar; - gtk_list_store_append(window->list,&itar); - gtk_list_store_set(window->list,&itar,0,1,1,compare_name,3,compare_value,5,1,6,section,-1); + if (!yon_config_check_ignore(compare_name)&&!yon_char_is_empty(compare_value)){ + GtkTreeIter itar; + gtk_list_store_append(window->list,&itar); + gtk_list_store_set(window->list,&itar,0,1,1,compare_name,3,compare_value,5,1,6,section,-1); + } } free(compare_value); free(compare_name); @@ -356,6 +402,8 @@ int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data) GtkWidget *image_accept = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.accept-symbolic",GTK_ICON_SIZE_BUTTON); gtk_button_set_image((GtkButton*)g_list_nth_data(list,0),image_cancel); gtk_button_set_image((GtkButton*)g_list_nth_data(list,1),image_accept); + gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,0)),"marginright"); + gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,1)),"marginright"); g_list_free(list); GtkWidget *header_label = gtk_label_new(template_app_information.app_title); @@ -435,6 +483,7 @@ template_main_window *setup_window(){ widgets->InterfaceBox = yon_gtk_builder_get_widget(builder,"InterfaceBox"); GtkWidget *HatIcon = yon_gtk_builder_get_widget(builder,"HatIcon"); GtkWidget *HeadImage = yon_gtk_builder_get_widget(builder,"HeadImage"); + GtkWidget *ModeStatusImage = yon_gtk_builder_get_widget(builder,"ModeStatusImage"); widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); @@ -459,7 +508,20 @@ template_main_window *setup_window(){ g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),template_app_information.wiki_link); g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),NULL); - + if (yon_char_is_empty(__yon_config_mode)){ + int size; + config_str cnf = yon_config_load(SAVE_MODE_GET_COMMAND,&size); + __yon_config_mode=yon_char_new(cnf[0]); + if (__yon_config_mode[strlen(__yon_config_mode)-1]=='\n') __yon_config_mode[strlen(__yon_config_mode)-1]='\0'; + yon_char_parsed_free(cnf,size); + if (!yon_char_is_empty(__yon_config_mode)&&strcmp(__yon_config_mode,"(null)")){ + gtk_image_set_from_pixbuf(GTK_IMAGE(ModeStatusImage),gtk_icon_theme_load_icon_for_scale(gtk_icon_theme_get_default(),yon_ubl_save_mode_get_icon_name(yon_ubl_save_mode_get_type(__yon_config_mode)),64,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL)); + } else { + free(__yon_config_mode); + __yon_config_mode=NULL; + gtk_widget_hide(ModeStatusImage); + } + } gtk_widget_show(widgets->Window); return widgets; } diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 6c66522..6cd1766 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -65,8 +65,26 @@ #define PARAMETER_LABEL _("Parameter") #define OLD_VALUE_LABEL _("Old value") #define NEW_VALUE_LABEL _("New value") + + #define SYSTEMBOOT_STATEMODE "SYSTEMBOOT_STATEMODE" + #define SYSTEMBOOT_STATEMODE_SECTION "[system]" #endif +#define SAVE_MODE_GET_COMMAND "ubconfig --raw --source global get [config] SYSTEMBOOT_STATEMODE" + +typedef enum SAVE_MODE_TYPE { + SAVE_MODE_FULL, + SAVE_MODE_MODULE, + SAVE_MODE_SANDBOX, + SAVE_MODE_RAM_HOME, + SAVE_MODE_HDD, + SAVE_MODE_HDD_HOME, +} SAVE_MODE_TYPE; + +char *yon_ubl_save_mode_get_icon_name(SAVE_MODE_TYPE type); + +SAVE_MODE_TYPE yon_ubl_save_mode_get_type(char *type); + typedef struct { GtkWidget *interface;