diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index ed45a17..d77379f 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -60,10 +60,16 @@ add_custom_target(
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
- -O2 -pipe -fno-plt -fexceptions \
- -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
+ -O2 -pipe -fno-plt -fexceptions \
+ -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection")
+string(FIND "${CMAKE_CXX_FLAGS}" "-D_FORTIFY_SOURCE" FORTIFY_FOUND)
+
+if(FORTIFY_FOUND EQUAL -1)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wp,-D_FORTIFY_SOURCE=2")
+endif()
+
set(SOURCE_FILES
ubl-settings-system.c
diff --git a/source/ubl-cmake.in b/source/ubl-cmake.in
deleted file mode 100644
index d4623a7..0000000
--- a/source/ubl-cmake.in
+++ /dev/null
@@ -1 +0,0 @@
-#cmakedefine WEBKIT_FOUND
diff --git a/source/ubl-settings-system.c b/source/ubl-settings-system.c
index 82b9049..6c1468e 100644
--- a/source/ubl-settings-system.c
+++ b/source/ubl-settings-system.c
@@ -4,8 +4,36 @@ config main_config;
//functions
+void on_save_done(main_window *widgets, config_str output, int size){
+ char *final_output = yon_char_parsed_to_string(output,size,"");
+ if (final_output){
+ printf("%s\n",final_output);
+ free(final_output);
+ }
+ yon_char_parsed_free(output,size);
+ textdomain(template_ui_LocaleName);
+ switch (main_config.save_config){
+ case 0:
+ yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+ break;
+ case 1:
+ yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+ break;
+ case 2:
+ yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+ break;
+ case 3:
+ yon_ubl_status_box_render(SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+
+ }
+ textdomain(LocaleName);
+
+}
+
int yon_load_proceed(YON_CONFIG_TYPE type){
- yon_config_clean();
+ if (type!=YON_CONFIG_CUSTOM){
+ yon_config_clean();
+ }
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
@@ -31,12 +59,13 @@ int yon_load_proceed(YON_CONFIG_TYPE type){
path=yon_char_unite("'",file,"'",NULL);
main_config.custom_load_path = path;
}
+ yon_config_clean();
+ yon_config_load_config(type,config_get_command(path),NULL);
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
return 0;
}
- yon_config_load_config(type,config_get_command(path),NULL);
}
return 1;
@@ -191,6 +220,7 @@ void yon_config_global_load(GtkWidget *self, main_window *widgets){
}
void yon_config_global_local_save(){
+ main_config.save_config=2;
int changed = yon_config_get_status(id_parameter)==1;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL);
if (window){
@@ -277,6 +307,7 @@ void yon_config_custom_load(GtkWidget *self, main_window *widgets){
}
void yon_config_local_save(){
+ main_config.save_config=1;
int changed = yon_config_get_status(id_parameter)==1;
template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL);
if (window){
@@ -288,6 +319,7 @@ void yon_config_local_save(){
}
void yon_config_global_save(){
+ main_config.save_config=0;
int changed = yon_config_get_status(id_parameter)==1;
template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL);
if (window){
@@ -296,10 +328,10 @@ void yon_config_global_save(){
}
}
-
}
void yon_config_custom_save(){
+ main_config.save_config=3;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL);
}
@@ -366,6 +398,9 @@ void on_locale_open(GtkWidget *self, main_window *widgets){
g_signal_connect(G_OBJECT(window->CloseButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),dict);
g_signal_connect(G_OBJECT(window->MainTree),"row-activated",G_CALLBACK(on_locale_toggle),window);
+
+ yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,main_icon,"LocalesWindow");
+
gtk_dialog_run(GTK_DIALOG(window->Window));
}
@@ -597,6 +632,8 @@ connection_window *yon_connection_window_new(){
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->StatusEntry),"clicked",G_CALLBACK(on_status_clicked),window);
g_signal_connect(G_OBJECT(window->CheckButton),"clicked",G_CALLBACK(yon_update_thread),window);
+
+ yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
return window;
}
@@ -709,6 +746,7 @@ void config_init(){
main_config.lock_save_global=0;
main_config.lock_save_local=0;
main_config.domain_connected=0;
+ main_config.save_config=0;
}
void on_check_domain_connected(GtkWidget *self, main_window *widgets){
@@ -847,6 +885,7 @@ main_window *yon_main_window_complete(main_window *widgets){
char *domain = yon_config_get_by_key(DOMAIN);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),domain);
+ yon_save_window_set_postsave_function(on_save_done,widgets);
return widgets;
}
diff --git a/source/ubl-settings-system.h b/source/ubl-settings-system.h
index 2d53139..6b08fb2 100644
--- a/source/ubl-settings-system.h
+++ b/source/ubl-settings-system.h
@@ -98,6 +98,7 @@ char *local;
typedef struct {
template_config_fields
GtkListStore *localeslist;
+ int save_config;
int domain_connected;
} config;
diff --git a/ubl-settings-system-layouts.glade b/ubl-settings-system-layouts.glade
index 2dfb5fc..e3caeb8 100644
--- a/ubl-settings-system-layouts.glade
+++ b/ubl-settings-system-layouts.glade
@@ -16,6 +16,8 @@
450
550
False
+ True
+ com.ublinux.ubl-settings-system
dialog