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
+
+
+
+ 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;