From 38d61d8a182ea133fe6750572947035a6f6e8e50 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Wed, 22 Jul 2020 15:53:54 -0300 Subject: [PATCH] Refactoring popup engine. --- src/dialogs/popups.c | 2 ++ src/include/internals.h | 3 ++- src/include/terminal.h | 1 - src/include/v3270.h | 3 --- src/terminal/callbacks.c | 42 +++++++++++++++++++----------------------- src/terminal/widget.c | 10 ---------- 6 files changed, 23 insertions(+), 38 deletions(-) diff --git a/src/dialogs/popups.c b/src/dialogs/popups.c index 0246c65..5d8c617 100644 --- a/src/dialogs/popups.c +++ b/src/dialogs/popups.c @@ -131,6 +131,7 @@ } + /* void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type , const gchar *title, const gchar *message, const gchar *text) { LIB3270_POPUP popup = { @@ -148,6 +149,7 @@ v3270_show_popup(widget, &popup, FALSE); } + */ void v3270_error_popup(GtkWidget *widget, const gchar *title, const gchar *summary, const gchar *body) { diff --git a/src/include/internals.h b/src/include/internals.h index 31f57ed..9583423 100644 --- a/src/include/internals.h +++ b/src/include/internals.h @@ -82,7 +82,6 @@ V3270_SIGNAL_KEYPRESS, V3270_SIGNAL_MODEL_CHANGED, V3270_SIGNAL_CHANGED, - V3270_SIGNAL_MESSAGE, V3270_SIGNAL_FIELD, V3270_SIGNAL_SESSION_CHANGED, @@ -133,6 +132,8 @@ G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_grid(GtkAlign align); G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_frame(GtkWidget * child, const gchar *title); + G_GNUC_INTERNAL GtkResponseType v3270_show_popup(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait); + G_GNUC_INTERNAL void v3270_signal_emit(gpointer instance, enum V3270_SIGNAL signal_id, ...); G_GNUC_INTERNAL void v3270_dialog_close(GtkDialog *dialog, gpointer user_data); diff --git a/src/include/terminal.h b/src/include/terminal.h index 66f4d52..680ed26 100644 --- a/src/include/terminal.h +++ b/src/include/terminal.h @@ -105,7 +105,6 @@ G_BEGIN_DECLS void (*activate)(GtkWidget *widget); void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE_ID toggle_id,gboolean toggle_state,const gchar *toggle_name); void (*message_changed)(v3270 *widget, LIB3270_MESSAGE id); - void (*popup_message)(GtkWidget *widget, LIB3270_NOTIFY id , const gchar *title, const gchar *message, const gchar *text); }; diff --git a/src/include/v3270.h b/src/include/v3270.h index 53337c5..5c23c26 100644 --- a/src/include/v3270.h +++ b/src/include/v3270.h @@ -215,13 +215,10 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget); LIB3270_EXPORT const gchar * v3270_get_default_font_name(); - LIB3270_EXPORT void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type, const gchar *title, const gchar *message, const gchar *text); - LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); LIB3270_EXPORT gchar * v3270_get_session_title(GtkWidget *widget); -// LIB3270_EXPORT gchar * v3270_get_title(GtkWidget *widget); LIB3270_EXPORT gchar * v3270_set_title(GtkWidget *widget, const gchar *title); LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); diff --git a/src/terminal/callbacks.c b/src/terminal/callbacks.c index e45028a..ea6db32 100644 --- a/src/terminal/callbacks.c +++ b/src/terminal/callbacks.c @@ -43,6 +43,7 @@ #include #include #include + #include #include /*--[ Implement ]------------------------------------------------------------------------------------*/ @@ -275,16 +276,16 @@ static void update_selection(H3270 *session, G_GNUC_UNUSED int start, G_GNUC_UNU } -static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *text) +static void message(H3270 *session, LIB3270_NOTIFY type , const char *title, const char *message, const char *text) { - v3270_signal_emit( - GTK_WIDGET(lib3270_get_user_data(session)), - V3270_SIGNAL_MESSAGE, - (int) id, - (gchar *) title, - (gchar *) message, - (gchar *) text - ); + LIB3270_POPUP popup = { + .type = type, + .title = title, + .summary = message, + .body = text + }; + + v3270_show_popup(GTK_WIDGET(lib3270_get_user_data(session)),&popup,0); } @@ -325,23 +326,18 @@ static int load(H3270 *session, const char *filename) static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list args) { - GtkWidget *terminal = (GtkWidget *) lib3270_get_user_data(session); + LIB3270_POPUP popup = { + .type = type, + .title = title, + .summary = msg + }; - if(terminal && GTK_IS_V3270(terminal)) - { + g_autofree gchar * body = NULL; - if(fmt) - { - gchar *text = g_strdup_vprintf(fmt,args); - v3270_popup_message(GTK_WIDGET(terminal),type,title,msg,text); - g_free(text); - } - else - { - v3270_popup_message(GTK_WIDGET(terminal),type,title,msg,NULL); - } + if(fmt) + body = g_strdup_vprintf(fmt,args); - } + v3270_show_popup(GTK_WIDGET(lib3270_get_user_data(session)),&popup,0); } diff --git a/src/terminal/widget.c b/src/terminal/widget.c index d6d2e24..760a3b3 100644 --- a/src/terminal/widget.c +++ b/src/terminal/widget.c @@ -242,7 +242,6 @@ static void v3270_class_init(v3270Class *klass) klass->activate = v3270_activate; klass->toggle_changed = v3270_toggle_changed; klass->message_changed = v3270_update_message; - klass->popup_message = v3270_popup_message; // Register I/O Handlers v3270_register_io_handlers(klass); @@ -428,15 +427,6 @@ static void v3270_class_init(v3270Class *klass) v3270_VOID__VOID_UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); - v3270_widget_signal[V3270_SIGNAL_MESSAGE] = - g_signal_new( I_("popup_message"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (v3270Class, popup_message), - NULL, NULL, - v3270_VOID__VOID_UINT_POINTER_POINTER_POINTER, - G_TYPE_NONE, 4, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); - v3270_widget_signal[V3270_SIGNAL_FIELD] = g_signal_new( I_("field_clicked"), G_OBJECT_CLASS_TYPE (gobject_class), -- libgit2 0.21.2