Commit 957aa5c9e902c78298c264ee15e5318e0658e6bc

Authored by Perry Werneck
1 parent 11ac88cd
Exists in master and in 1 other branch develop

Adding signal for customized action fire.

src/include/internals.h
... ... @@ -118,6 +118,11 @@
118 118 V3270_SIGNAL_LOAD_POPUP_RESPONSE, ///< @brief Load popup response (GTK_RESPONSE_NONE to show popup).
119 119 V3270_SIGNAL_SAVE_POPUP_RESPONSE, ///< @brief Save popup response.
120 120  
  121 + //
  122 + // Misc signals
  123 + //
  124 + V3270_SIGNAL_FIRE_ACTION, ///< @brief Fire action by name.
  125 +
121 126 V3270_SIGNAL_LAST
122 127 };
123 128  
... ...
src/terminal/callbacks.c
... ... @@ -398,58 +398,6 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title
398 398 g_idle_add_full(G_PRIORITY_DEFAULT_IDLE,(GSourceFunc) bg_update_oia, data, g_free);
399 399 }
400 400  
401   - /*
402   - static int popup_ssl_error(H3270 *session, int rc, const char *title, const char *summary, const char *body)
403   - {
404   - GtkWidget *terminal = (GtkWidget *) lib3270_get_user_data(session);
405   -
406   - debug("%s.summary=\"%s\"",__FUNCTION__,summary);
407   - debug("%s.body=\"%s\"",__FUNCTION__,body ? body : "undefined");
408   -
409   - if(terminal && GTK_IS_V3270(terminal))
410   - {
411   - GtkWidget * dialog = gtk_message_dialog_new_with_markup(
412   - GTK_WINDOW(gtk_widget_get_toplevel(terminal)),
413   - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
414   - GTK_MESSAGE_WARNING,
415   - GTK_BUTTONS_NONE,
416   - "%s",
417   - summary
418   - );
419   -
420   - gtk_window_set_title(GTK_WINDOW(dialog), title);
421   -
422   - if(body && *body)
423   - {
424   - gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),"%s",body);
425   - }
426   - else if(rc)
427   - {
428   - gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),_( "The error code was %d"),rc);
429   - }
430   -
431   - gtk_dialog_add_buttons(
432   - GTK_DIALOG(dialog),
433   - _("Cancel"), GTK_RESPONSE_CANCEL,
434   - _("Continue"), GTK_RESPONSE_APPLY,
435   - NULL
436   - );
437   -
438   - gtk_dialog_set_default_response(GTK_DIALOG (dialog),GTK_RESPONSE_CANCEL);
439   -
440   - gtk_widget_show_all(dialog);
441   - int rc = gtk_dialog_run(GTK_DIALOG(dialog));
442   - gtk_widget_destroy(dialog);
443   -
444   - if(rc == GTK_RESPONSE_APPLY)
445   - return 0;
446   -
447   - }
448   -
449   - return -1;
450   - }
451   - */
452   -
453 401 static int popup(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char wait) {
454 402  
455 403 GtkResponseType response = v3270_popup_dialog_show(
... ... @@ -464,6 +412,21 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title
464 412  
465 413 }
466 414  
  415 + static int action(H3270 *hSession, const char *name) {
  416 +
  417 + guint response = ENOENT;
  418 +
  419 + v3270_signal_emit(
  420 + GTK_WIDGET(lib3270_get_user_data(hSession)),
  421 + V3270_SIGNAL_FIRE_ACTION,
  422 + name,
  423 + &response
  424 + );
  425 +
  426 + return response;
  427 + }
  428 +
  429 +
467 430 void v3270_install_callbacks(v3270 *widget)
468 431 {
469 432 struct lib3270_session_callbacks *cbk;
... ... @@ -517,6 +480,7 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title
517 480 cbk->save = save;
518 481 cbk->load = load;
519 482 cbk->popup = popup;
  483 + cbk->action = action;
520 484  
521 485 }
522 486  
... ...
src/terminal/widget.c
... ... @@ -498,6 +498,15 @@ static void finalize(GObject *object) {
498 498 v3270_UINT__POINTER,
499 499 G_TYPE_UINT, 1, G_TYPE_POINTER);
500 500  
  501 + v3270_widget_signal[V3270_SIGNAL_FIRE_ACTION] =
  502 + g_signal_new( I_("fire-action"),
  503 + G_OBJECT_CLASS_TYPE (gobject_class),
  504 + G_SIGNAL_RUN_LAST,
  505 + 0,
  506 + NULL, NULL,
  507 + v3270_UINT__POINTER,
  508 + G_TYPE_UINT, 1, G_TYPE_POINTER);
  509 +
501 510 v3270_widget_signal[V3270_SIGNAL_SAVE_POPUP_RESPONSE] =
502 511 g_signal_new( I_("save-popup-response"),
503 512 G_OBJECT_CLASS_TYPE (gobject_class),
... ...