From 491e077edf513094e5d09a3fc8301b2a27054b9d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 Jan 2024 10:06:58 +0600 Subject: [PATCH] Added test action confirmation window --- source/libublsettingsui-gtk3.c | 31 +++++++++++++++++++++++++++++++ source/libublsettingsui-gtk3.h | 8 ++++++++ 2 files changed, 39 insertions(+) diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 5d16935..48bd0c7 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -338,6 +338,37 @@ template_saving_window *yon_save_proceed(char *path,YON_CONFIG_TYPE type, ...){ } +void yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){ + GtkWidget *dialog = gtk_dialog_new_with_buttons(template_app_information.app_title,GTK_WINDOW(gtk_widget_get_toplevel(self)),GTK_DIALOG_MODAL,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL); + gtk_window_set_icon_name(GTK_WINDOW(dialog),yon_char_append("com.ublinux.",template_app_information.app_title)); + gtk_window_set_title(GTK_WINDOW(dialog),template_app_information.app_title); + gtk_widget_set_size_request(dialog,450,-1); + + GtkWidget *header = gtk_header_bar_new(); + gtk_header_bar_set_title(GTK_HEADER_BAR(header),template_app_information.app_title); + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header),1); + gtk_widget_show(header); + gtk_window_set_titlebar(GTK_WINDOW(dialog),header); + + GtkWidget *image = gtk_image_new_from_icon_name("dialog-question-symbolic",GTK_ICON_SIZE_DIALOG); + gtk_widget_show(image); + + GtkWidget *label = gtk_label_new(data->action_text); + gtk_widget_show(label); + + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); + gtk_widget_show(box); + gtk_box_pack_start(GTK_BOX(box),image,0,0,5); + gtk_box_pack_start(GTK_BOX(box),label,0,0,5); + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),box,1,1,5); + + int resp = gtk_dialog_run(GTK_DIALOG(dialog)); + if (resp == GTK_RESPONSE_ACCEPT){ + data->function(NULL,data->data); + } + gtk_widget_destroy(dialog); +} + // standard functions int yon_ubl_connect_config(_template_config *config){ diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 951e006..054fb69 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -154,6 +154,14 @@ typedef struct { YON_CONFIG_TYPE type; } template_saving_window; +typedef struct { + void (*function)(void*,void*); + void *data; + char *action_text; +} dialog_confirmation_data; + +void yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data); + template_saving_window *yon_save_proceed(char *path,YON_CONFIG_TYPE type, ...); /**yon_open_browser(GtkWidget *self, char *link)