Commit 8d37354a0fb22eb5801f999967d47899a5447bdf
1 parent
31052932
Exists in
master
and in
5 other branches
Incluindo novo tratamento de janelas popup
Showing
12 changed files
with
169 additions
and
261 deletions
Show diff stats
pw3270.cbp
@@ -116,6 +116,8 @@ | @@ -116,6 +116,8 @@ | ||
116 | </Unit> | 116 | </Unit> |
117 | <Unit filename="src/include/lib3270.h" /> | 117 | <Unit filename="src/include/lib3270.h" /> |
118 | <Unit filename="src/include/lib3270/config.h.in" /> | 118 | <Unit filename="src/include/lib3270/config.h.in" /> |
119 | + <Unit filename="src/include/lib3270/log.h" /> | ||
120 | + <Unit filename="src/include/lib3270/popup.h" /> | ||
119 | <Unit filename="src/include/lib3270/session.h" /> | 121 | <Unit filename="src/include/lib3270/session.h" /> |
120 | <Unit filename="src/include/pw3270.h" /> | 122 | <Unit filename="src/include/pw3270.h" /> |
121 | <Unit filename="src/include/rules.mak.in" /> | 123 | <Unit filename="src/include/rules.mak.in" /> |
src/gtk/main.c
@@ -31,22 +31,61 @@ | @@ -31,22 +31,61 @@ | ||
31 | 31 | ||
32 | #include "globals.h" | 32 | #include "globals.h" |
33 | #include "v3270/v3270.h" | 33 | #include "v3270/v3270.h" |
34 | +#include <lib3270/popup.h> | ||
34 | #include <stdlib.h> | 35 | #include <stdlib.h> |
35 | 36 | ||
37 | +/*--[ Statics ]--------------------------------------------------------------------------------------*/ | ||
38 | + | ||
39 | + static GtkWidget *toplevel = NULL; | ||
40 | + | ||
36 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 41 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
37 | 42 | ||
38 | -int main (int argc, char *argv[]) | 43 | +static int popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list args) |
39 | { | 44 | { |
40 | - GtkWidget *window; | 45 | + GtkWidget * dialog; |
46 | + GtkMessageType msgtype = GTK_MESSAGE_WARNING; | ||
47 | + GtkButtonsType buttons = GTK_BUTTONS_OK; | ||
48 | + gchar * text = g_strdup_vprintf(fmt,args); | ||
49 | + | ||
50 | + if(type == LIB3270_NOTIFY_CRITICAL) | ||
51 | + { | ||
52 | + msgtype = GTK_MESSAGE_ERROR; | ||
53 | + buttons = GTK_BUTTONS_CLOSE; | ||
54 | + } | ||
55 | + | ||
56 | + if(msg) | ||
57 | + { | ||
58 | + dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(toplevel),GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,msgtype,buttons,"%s",msg); | ||
59 | + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",text); | ||
60 | + } | ||
61 | + else | ||
62 | + { | ||
63 | + dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(toplevel),GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,msgtype,buttons,"%s",text); | ||
64 | + } | ||
41 | 65 | ||
66 | + g_free(text); | ||
67 | + | ||
68 | + gtk_window_set_title(GTK_WINDOW(dialog),title ? title : "Error"); | ||
69 | + | ||
70 | + gtk_dialog_run(GTK_DIALOG (dialog)); | ||
71 | + gtk_widget_destroy(dialog); | ||
72 | + | ||
73 | + | ||
74 | + return 0; | ||
75 | +} | ||
76 | + | ||
77 | +int main (int argc, char *argv[]) | ||
78 | +{ | ||
42 | gtk_init(&argc, &argv); | 79 | gtk_init(&argc, &argv); |
80 | + | ||
43 | configuration_init(); | 81 | configuration_init(); |
82 | + lib3270_set_popup_handler(popup_handler); | ||
44 | 83 | ||
45 | - window = create_main_window(); | 84 | + toplevel = create_main_window(); |
46 | 85 | ||
47 | - if(window) | 86 | + if(toplevel) |
48 | { | 87 | { |
49 | - gtk_widget_show(window); | 88 | + gtk_widget_show(toplevel); |
50 | gtk_main(); | 89 | gtk_main(); |
51 | } | 90 | } |
52 | 91 |
src/gtk/v3270/widget.c
@@ -108,11 +108,18 @@ static void v3270_toggle_changed(v3270 *widget,LIB3270_TOGGLE toggle_id, gboolea | @@ -108,11 +108,18 @@ static void v3270_toggle_changed(v3270 *widget,LIB3270_TOGGLE toggle_id, gboolea | ||
108 | 108 | ||
109 | } | 109 | } |
110 | 110 | ||
111 | +static void loghandler(H3270 *session, const char *module, int rc, const char *fmt, va_list args) | ||
112 | +{ | ||
113 | + g_logv(module,rc ? G_LOG_LEVEL_WARNING : G_LOG_LEVEL_MESSAGE, fmt, args); | ||
114 | +} | ||
115 | + | ||
111 | static void v3270_class_init(v3270Class *klass) | 116 | static void v3270_class_init(v3270Class *klass) |
112 | { | 117 | { |
113 | GObjectClass * gobject_class = G_OBJECT_CLASS(klass); | 118 | GObjectClass * gobject_class = G_OBJECT_CLASS(klass); |
114 | GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); | 119 | GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); |
115 | 120 | ||
121 | + lib3270_set_log_handler(loghandler); | ||
122 | + | ||
116 | widget_class->realize = v3270_realize; | 123 | widget_class->realize = v3270_realize; |
117 | widget_class->size_allocate = v3270_size_allocate; | 124 | widget_class->size_allocate = v3270_size_allocate; |
118 | widget_class->key_press_event = v3270_key_press_event; | 125 | widget_class->key_press_event = v3270_key_press_event; |
@@ -395,7 +402,7 @@ static void v3270_init(v3270 *widget) | @@ -395,7 +402,7 @@ static void v3270_init(v3270 *widget) | ||
395 | 402 | ||
396 | if(widget->host->sz != sizeof(H3270)) | 403 | if(widget->host->sz != sizeof(H3270)) |
397 | { | 404 | { |
398 | - g_critical(N_( "Unexpected signature in H3270 object, possible version mismatch in lib3270") ); | 405 | + g_error(N_( "Unexpected signature in H3270 object, possible version mismatch in lib3270") ); |
399 | return; | 406 | return; |
400 | } | 407 | } |
401 | 408 |
@@ -0,0 +1,50 @@ | @@ -0,0 +1,50 @@ | ||
1 | +/* | ||
2 | + * "Software PW3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple | ||
19 | + * Place, Suite 330, Boston, MA, 02111-1307, USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como api.h e possui 444 linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) | ||
27 | + * licinio@bb.com.br (Licínio Luis Branco) | ||
28 | + * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | ||
29 | + * | ||
30 | + */ | ||
31 | + | ||
32 | +#ifndef LIB3270_POPUP_INCLUDED | ||
33 | + | ||
34 | + #define LIB3270_POPUP_INCLUDED 1 | ||
35 | + | ||
36 | + typedef enum _LIB3270_NOTIFY | ||
37 | + { | ||
38 | + LIB3270_NOTIFY_INFO, /**< Simple information dialog */ | ||
39 | + LIB3270_NOTIFY_WARNING, | ||
40 | + LIB3270_NOTIFY_ERROR, | ||
41 | + LIB3270_NOTIFY_CRITICAL, /**< Critical error, user can abort application */ | ||
42 | + | ||
43 | + LIB3270_NOTIFY_USER /**< Reserver, always the last one */ | ||
44 | + } LIB3270_NOTIFY; | ||
45 | + | ||
46 | + LIB3270_EXPORT void lib3270_set_popup_handler(int (*popup_handler)(H3270 *, LIB3270_NOTIFY, const char *, const char *, const char *, va_list)); | ||
47 | + | ||
48 | +#endif // LIB3270_POPUP_INCLUDED | ||
49 | + | ||
50 | + |
src/lib3270/api.h
@@ -26,7 +26,6 @@ | @@ -26,7 +26,6 @@ | ||
26 | * erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) | 26 | * erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) |
27 | * licinio@bb.com.br (Licínio Luis Branco) | 27 | * licinio@bb.com.br (Licínio Luis Branco) |
28 | * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | 28 | * kraucer@bb.com.br (Kraucer Fernandes Mazuco) |
29 | - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) | ||
30 | * | 29 | * |
31 | */ | 30 | */ |
32 | 31 | ||
@@ -179,15 +178,7 @@ | @@ -179,15 +178,7 @@ | ||
179 | 178 | ||
180 | 179 | ||
181 | /** Type of dialog boxes */ | 180 | /** Type of dialog boxes */ |
182 | - typedef enum _LIB3270_NOTIFY | ||
183 | - { | ||
184 | - LIB3270_NOTIFY_INFO, /**< Simple information dialog */ | ||
185 | - LIB3270_NOTIFY_WARNING, | ||
186 | - LIB3270_NOTIFY_ERROR, | ||
187 | - LIB3270_NOTIFY_CRITICAL, /**< Critical error, user can abort application */ | ||
188 | - | ||
189 | - LIB3270_NOTIFY_USER /**< Reserver, always the last one */ | ||
190 | - } LIB3270_NOTIFY; | 181 | + #include <lib3270/popup.h> |
191 | 182 | ||
192 | #define PW3270_DIALOG_INFO LIB3270_NOTIFY_INFO | 183 | #define PW3270_DIALOG_INFO LIB3270_NOTIFY_INFO |
193 | #define PW3270_DIALOG_CRITICAL LIB3270_NOTIFY_CRITICAL | 184 | #define PW3270_DIALOG_CRITICAL LIB3270_NOTIFY_CRITICAL |
src/lib3270/charset.c
@@ -410,7 +410,7 @@ resource_charset(char *csname, char *cs, char *ftcs) | @@ -410,7 +410,7 @@ resource_charset(char *csname, char *cs, char *ftcs) | ||
410 | #endif /*]*/ | 410 | #endif /*]*/ |
411 | break; | 411 | break; |
412 | default: | 412 | default: |
413 | - popup_an_error("Extra %s value(s), ignoring", | 413 | + popup_an_error(NULL,"Extra %s value(s), ignoring", |
414 | ResDisplayCharset); | 414 | ResDisplayCharset); |
415 | break; | 415 | break; |
416 | } | 416 | } |
@@ -421,7 +421,7 @@ resource_charset(char *csname, char *cs, char *ftcs) | @@ -421,7 +421,7 @@ resource_charset(char *csname, char *cs, char *ftcs) | ||
421 | #if defined(X3270_DBCS) /*[*/ | 421 | #if defined(X3270_DBCS) /*[*/ |
422 | /* Can't swap DBCS modes while connected. */ | 422 | /* Can't swap DBCS modes while connected. */ |
423 | if (IN_3270 && (n_rcs == 2) != dbcs) { | 423 | if (IN_3270 && (n_rcs == 2) != dbcs) { |
424 | - popup_an_error("Can't change DBCS modes while connected"); | 424 | + popup_an_error(NULL,"Can't change DBCS modes while connected"); |
425 | return CS_ILLEGAL; | 425 | return CS_ILLEGAL; |
426 | } | 426 | } |
427 | #endif /*]*/ | 427 | #endif /*]*/ |
@@ -646,7 +646,7 @@ remap_chars(char *csname, char *spec, remap_scope scope, int *ne) | @@ -646,7 +646,7 @@ remap_chars(char *csname, char *spec, remap_scope scope, int *ne) | ||
646 | s = CN; | 646 | s = CN; |
647 | } | 647 | } |
648 | if (ebc != 256) { | 648 | if (ebc != 256) { |
649 | - popup_an_error("Charset has %d entries, need 256", ebc); | 649 | + popup_an_error(NULL,"Charset has %d entries, need 256", ebc); |
650 | rc = CS_BAD; | 650 | rc = CS_BAD; |
651 | } else { | 651 | } else { |
652 | /* | 652 | /* |
@@ -679,7 +679,7 @@ remap_chars(char *csname, char *spec, remap_scope scope, int *ne) | @@ -679,7 +679,7 @@ remap_chars(char *csname, char *spec, remap_scope scope, int *ne) | ||
679 | ((ebc = strtoul(ebcs, &ptr, 0)), | 679 | ((ebc = strtoul(ebcs, &ptr, 0)), |
680 | ptr == ebcs || *ptr != '\0') || | 680 | ptr == ebcs || *ptr != '\0') || |
681 | (iso = parse_keysym(isos, True)) == NoSymbol) { | 681 | (iso = parse_keysym(isos, True)) == NoSymbol) { |
682 | - popup_an_error("Cannot parse %s \"%s\", entry %d", | 682 | + popup_an_error(NULL,"Cannot parse %s \"%s\", entry %d", |
683 | ResCharset, csname, *ne); | 683 | ResCharset, csname, *ne); |
684 | rc = CS_BAD; | 684 | rc = CS_BAD; |
685 | break; | 685 | break; |
src/lib3270/ctlr.c
@@ -225,7 +225,7 @@ void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr) | @@ -225,7 +225,7 @@ void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr) | ||
225 | if(idx < 0 || idx >= (sizeof(sz)/sizeof(struct _sz))) | 225 | if(idx < 0 || idx >= (sizeof(sz)/sizeof(struct _sz))) |
226 | { | 226 | { |
227 | idx = 2; | 227 | idx = 2; |
228 | - popup_an_error("Unknown model: %d - Defaulting to 4 (%dx%d)", mn, sz[idx].cols,sz[idx].rows); | 228 | + popup_an_error(NULL,"Unknown model: %d - Defaulting to 4 (%dx%d)", mn, sz[idx].cols,sz[idx].rows); |
229 | mn = 4; | 229 | mn = 4; |
230 | } | 230 | } |
231 | 231 | ||
@@ -237,13 +237,13 @@ void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr) | @@ -237,13 +237,13 @@ void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr) | ||
237 | if (ovc != 0 || ovr != 0) | 237 | if (ovc != 0 || ovr != 0) |
238 | { | 238 | { |
239 | if (ovc <= 0 || ovr <= 0) | 239 | if (ovc <= 0 || ovr <= 0) |
240 | - popup_an_error("Invalid %s %dx%d:\nNegative or zero",ResOversize, ovc, ovr); | 240 | + popup_an_error(NULL,"Invalid %s %dx%d:\nNegative or zero",ResOversize, ovc, ovr); |
241 | else if (ovc * ovr >= 0x4000) | 241 | else if (ovc * ovr >= 0x4000) |
242 | - popup_an_error("Invalid %s %dx%d:\nToo big",ResOversize, ovc, ovr); | 242 | + popup_an_error(NULL,"Invalid %s %dx%d:\nToo big",ResOversize, ovc, ovr); |
243 | else if (ovc > 0 && ovc < session->maxCOLS) | 243 | else if (ovc > 0 && ovc < session->maxCOLS) |
244 | - popup_an_error("Invalid %s cols (%d):\nLess than model %d cols (%d)",ResOversize, ovc, session->model_num, session->maxCOLS); | 244 | + popup_an_error(NULL,"Invalid %s cols (%d):\nLess than model %d cols (%d)",ResOversize, ovc, session->model_num, session->maxCOLS); |
245 | else if (ovr > 0 && ovr < session->maxROWS) | 245 | else if (ovr > 0 && ovr < session->maxROWS) |
246 | - popup_an_error("Invalid %s rows (%d):\nLess than model %d rows (%d)",ResOversize, ovr, session->model_num, session->maxROWS); | 246 | + popup_an_error(NULL,"Invalid %s rows (%d):\nLess than model %d rows (%d)",ResOversize, ovr, session->model_num, session->maxROWS); |
247 | else | 247 | else |
248 | update_model_info(session,mn,session->ov_cols = ovc,session->ov_rows = ovr); | 248 | update_model_info(session,mn,session->ov_cols = ovc,session->ov_rows = ovr); |
249 | } | 249 | } |
@@ -563,8 +563,7 @@ process_ds(unsigned char *buf, int buflen) | @@ -563,8 +563,7 @@ process_ds(unsigned char *buf, int buflen) | ||
563 | break; | 563 | break; |
564 | default: | 564 | default: |
565 | /* unknown 3270 command */ | 565 | /* unknown 3270 command */ |
566 | - popup_an_error("Unknown 3270 Data Stream command: 0x%X\n", | ||
567 | - buf[0]); | 566 | + popup_an_error(NULL,"Unknown 3270 Data Stream command: 0x%X\n",buf[0]); |
568 | return PDS_BAD_CMD; | 567 | return PDS_BAD_CMD; |
569 | } | 568 | } |
570 | } | 569 | } |
src/lib3270/glue.c
@@ -198,7 +198,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model) | @@ -198,7 +198,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model) | ||
198 | model_number = parse_model_number(model); | 198 | model_number = parse_model_number(model); |
199 | if (model_number < 0) | 199 | if (model_number < 0) |
200 | { | 200 | { |
201 | - popup_an_error("Invalid model number: %s", model); | 201 | + popup_an_error(NULL,"Invalid model number: %s", model); |
202 | model_number = 0; | 202 | model_number = 0; |
203 | } | 203 | } |
204 | 204 | ||
@@ -268,7 +268,7 @@ H3270 * lib3270_session_new(const char *model) | @@ -268,7 +268,7 @@ H3270 * lib3270_session_new(const char *model) | ||
268 | Trace("Charset: %s",appres.charset); | 268 | Trace("Charset: %s",appres.charset); |
269 | if (charset_init(appres.charset) != CS_OKAY) | 269 | if (charset_init(appres.charset) != CS_OKAY) |
270 | { | 270 | { |
271 | - Warning( _( "Cannot find charset \"%s\", using defaults" ), appres.charset); | 271 | + Warning(NULL, _( "Cannot find charset \"%s\", using defaults" ), appres.charset); |
272 | (void) charset_init(CN); | 272 | (void) charset_init(CN); |
273 | } | 273 | } |
274 | 274 |
src/lib3270/kybd.c
@@ -3245,7 +3245,7 @@ static void | @@ -3245,7 +3245,7 @@ static void | ||
3245 | do_pa(unsigned n) | 3245 | do_pa(unsigned n) |
3246 | { | 3246 | { |
3247 | if (n < 1 || n > PA_SZ) { | 3247 | if (n < 1 || n > PA_SZ) { |
3248 | - popup_an_error( _( "Unknown PA key %d" ), n); | 3248 | + popup_an_error(NULL, _( "Unknown PA key %d" ), n); |
3249 | return; | 3249 | return; |
3250 | } | 3250 | } |
3251 | 3251 | ||
@@ -3257,7 +3257,7 @@ do_pa(unsigned n) | @@ -3257,7 +3257,7 @@ do_pa(unsigned n) | ||
3257 | static void do_pf(unsigned n) | 3257 | static void do_pf(unsigned n) |
3258 | { | 3258 | { |
3259 | if (n < 1 || n > PF_SZ) { | 3259 | if (n < 1 || n > PF_SZ) { |
3260 | - popup_an_error( _( "Unknown PF key %d" ), n); | 3260 | + popup_an_error(NULL, _( "Unknown PF key %d" ), n); |
3261 | return; | 3261 | return; |
3262 | } | 3262 | } |
3263 | 3263 | ||
@@ -3471,8 +3471,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3471,8 +3471,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3471 | case BACKSLASH: /* last character was a backslash */ | 3471 | case BACKSLASH: /* last character was a backslash */ |
3472 | switch (c) { | 3472 | switch (c) { |
3473 | case 'a': | 3473 | case 'a': |
3474 | - popup_an_error("%s: Bell not supported", | ||
3475 | - action_name(String_action)); | 3474 | + popup_an_error(NULL,"%s: Bell not supported",action_name(String_action)); |
3476 | // cancel_if_idle_command(); | 3475 | // cancel_if_idle_command(); |
3477 | state = BASE; | 3476 | state = BASE; |
3478 | break; | 3477 | break; |
@@ -3520,7 +3519,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3520,7 +3519,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3520 | state = BASE; | 3519 | state = BASE; |
3521 | break; | 3520 | break; |
3522 | case 'v': | 3521 | case 'v': |
3523 | - popup_an_error("%s: Vertical tab not supported",action_name(String_action)); | 3522 | + popup_an_error(NULL,"%s: Vertical tab not supported",action_name(String_action)); |
3524 | // cancel_if_idle_command(); | 3523 | // cancel_if_idle_command(); |
3525 | state = BASE; | 3524 | state = BASE; |
3526 | break; | 3525 | break; |
@@ -3561,8 +3560,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3561,8 +3560,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3561 | state = BACKPF; | 3560 | state = BACKPF; |
3562 | break; | 3561 | break; |
3563 | default: | 3562 | default: |
3564 | - popup_an_error("%s: Unknown character " | ||
3565 | - "after \\p", | 3563 | + popup_an_error(NULL,"%s: Unknown character after \\p", |
3566 | action_name(String_action)); | 3564 | action_name(String_action)); |
3567 | // cancel_if_idle_command(); | 3565 | // cancel_if_idle_command(); |
3568 | state = BASE; | 3566 | state = BASE; |
@@ -3574,8 +3572,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3574,8 +3572,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3574 | literal = (literal * 10) + (c - '0'); | 3572 | literal = (literal * 10) + (c - '0'); |
3575 | nc++; | 3573 | nc++; |
3576 | } else if (!nc) { | 3574 | } else if (!nc) { |
3577 | - popup_an_error("%s: Unknown character " | ||
3578 | - "after \\pf", | 3575 | + popup_an_error(NULL,"%s: Unknown character after \\pf", |
3579 | action_name(String_action)); | 3576 | action_name(String_action)); |
3580 | // cancel_if_idle_command(); | 3577 | // cancel_if_idle_command(); |
3581 | state = BASE; | 3578 | state = BASE; |
@@ -3593,8 +3590,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3593,8 +3590,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3593 | literal = (literal * 10) + (c - '0'); | 3590 | literal = (literal * 10) + (c - '0'); |
3594 | nc++; | 3591 | nc++; |
3595 | } else if (!nc) { | 3592 | } else if (!nc) { |
3596 | - popup_an_error("%s: Unknown character " | ||
3597 | - "after \\pa", | 3593 | + popup_an_error(NULL,"%s: Unknown character after \\pa", |
3598 | action_name(String_action)); | 3594 | action_name(String_action)); |
3599 | // cancel_if_idle_command(); | 3595 | // cancel_if_idle_command(); |
3600 | state = BASE; | 3596 | state = BASE; |
@@ -3614,7 +3610,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3614,7 +3610,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3614 | nc = 0; | 3610 | nc = 0; |
3615 | continue; | 3611 | continue; |
3616 | } else { | 3612 | } else { |
3617 | - popup_an_error("%s: Missing hex digits after \x", | 3613 | + popup_an_error(NULL,"%s: Missing hex digits after \x", |
3618 | action_name(String_action)); | 3614 | action_name(String_action)); |
3619 | // cancel_if_idle_command(); | 3615 | // cancel_if_idle_command(); |
3620 | state = BASE; | 3616 | state = BASE; |
@@ -3691,7 +3687,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | @@ -3691,7 +3687,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p | ||
3691 | } | 3687 | } |
3692 | break; | 3688 | break; |
3693 | default: | 3689 | default: |
3694 | - popup_an_error("%s: Missing data after \", | 3690 | + popup_an_error(NULL,"%s: Missing data after \", |
3695 | action_name(String_action)); | 3691 | action_name(String_action)); |
3696 | // cancel_if_idle_command(); | 3692 | // cancel_if_idle_command(); |
3697 | break; | 3693 | break; |
src/lib3270/proxy.c
@@ -228,7 +228,7 @@ proxy_setup(char **phost, char **pport) | @@ -228,7 +228,7 @@ proxy_setup(char **phost, char **pport) | ||
228 | *pport = NewString(PORT_SOCKS5D); | 228 | *pport = NewString(PORT_SOCKS5D); |
229 | return PT_SOCKS5D; | 229 | return PT_SOCKS5D; |
230 | } | 230 | } |
231 | - popup_an_error("Invalid proxy type '%.*s'", sl, proxy); | 231 | + popup_an_error(NULL,"Invalid proxy type '%.*s'", sl, proxy); |
232 | return -1; | 232 | return -1; |
233 | } | 233 | } |
234 | 234 | ||
@@ -695,7 +695,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) | @@ -695,7 +695,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) | ||
695 | if (rv == -2) | 695 | if (rv == -2) |
696 | use_name = 1; | 696 | use_name = 1; |
697 | else if (rv < 0) { | 697 | else if (rv < 0) { |
698 | - popup_an_error("SOCKS5 proxy: %s/%u: %s", host, port, | 698 | + popup_an_error(NULL,"SOCKS5 proxy: %s/%u: %s", host, port, |
699 | errmsg); | 699 | errmsg); |
700 | return -1; | 700 | return -1; |
701 | } | 701 | } |
@@ -863,7 +863,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) | @@ -863,7 +863,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) | ||
863 | switch (nread++) { | 863 | switch (nread++) { |
864 | case 0: | 864 | case 0: |
865 | if (r != 0x05) { | 865 | if (r != 0x05) { |
866 | - popup_an_error("SOCKS5 Proxy: incorrect " | 866 | + popup_an_error(NULL,"SOCKS5 Proxy: incorrect " |
867 | "reply version 0x%02x", r); | 867 | "reply version 0x%02x", r); |
868 | #if defined(X3270_TRACE) /*[*/ | 868 | #if defined(X3270_TRACE) /*[*/ |
869 | if (nread) | 869 | if (nread) |
@@ -932,7 +932,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) | @@ -932,7 +932,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) | ||
932 | break; | 932 | break; |
933 | #endif /*]*/ | 933 | #endif /*]*/ |
934 | default: | 934 | default: |
935 | - popup_an_error("SOCKS5 Proxy: unknown server " | 935 | + popup_an_error(NULL,"SOCKS5 Proxy: unknown server " |
936 | "address type 0x%02x", r); | 936 | "address type 0x%02x", r); |
937 | #if defined(X3270_TRACE) /*[*/ | 937 | #if defined(X3270_TRACE) /*[*/ |
938 | if (nread) | 938 | if (nread) |
src/lib3270/screen.c
@@ -26,7 +26,6 @@ | @@ -26,7 +26,6 @@ | ||
26 | * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | 26 | * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) |
27 | * licinio@bb.com.br (Licínio Luis Branco) | 27 | * licinio@bb.com.br (Licínio Luis Branco) |
28 | * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | 28 | * kraucer@bb.com.br (Kraucer Fernandes Mazuco) |
29 | - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) | ||
30 | * | 29 | * |
31 | */ | 30 | */ |
32 | 31 | ||
@@ -75,11 +74,15 @@ | @@ -75,11 +74,15 @@ | ||
75 | #define get_color_pair(fg,bg) (((bg&0x0F) << 4) | (fg&0x0F)) | 74 | #define get_color_pair(fg,bg) (((bg&0x0F) << 4) | (fg&0x0F)) |
76 | #define DEFCOLOR_MAP(f) ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) | 75 | #define DEFCOLOR_MAP(f) ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) |
77 | 76 | ||
78 | -#if defined(WC3270) /*[*/ | ||
79 | -extern char *profile_name; | ||
80 | -#endif | 77 | +// #if defined(WC3270) |
78 | +// extern char *profile_name; | ||
79 | +// #endif | ||
80 | + | ||
81 | +static int logpopup(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg); | ||
82 | + | ||
83 | +static int (*popup_handler)(H3270 *, LIB3270_NOTIFY, const char *, const char *, const char *, va_list) = logpopup; | ||
81 | 84 | ||
82 | -static const struct lib3270_screen_callbacks *callbacks = NULL; | 85 | +// static const struct lib3270_screen_callbacks *callbacks = NULL; |
83 | // static SCRIPT_STATE script_state = SCRIPT_STATE_NONE; | 86 | // static SCRIPT_STATE script_state = SCRIPT_STATE_NONE; |
84 | 87 | ||
85 | 88 | ||
@@ -92,12 +95,10 @@ static void status_connect(H3270 *session, int ignored, void *dunno); | @@ -92,12 +95,10 @@ static void status_connect(H3270 *session, int ignored, void *dunno); | ||
92 | static void status_3270_mode(H3270 *session, int ignored, void *dunno); | 95 | static void status_3270_mode(H3270 *session, int ignored, void *dunno); |
93 | static void status_printer(H3270 *session, int on, void *dunno); | 96 | static void status_printer(H3270 *session, int on, void *dunno); |
94 | static unsigned short color_from_fa(unsigned char fa); | 97 | static unsigned short color_from_fa(unsigned char fa); |
95 | -static void relabel(H3270 *session, int ignored, void *dunno); | 98 | +// static void relabel(H3270 *session, int ignored, void *dunno); |
96 | 99 | ||
97 | void set_display_charset(char *dcs) | 100 | void set_display_charset(char *dcs) |
98 | { | 101 | { |
99 | - if(callbacks && callbacks->charset) | ||
100 | - callbacks->charset(dcs); | ||
101 | } | 102 | } |
102 | 103 | ||
103 | static void addch(H3270 *session, int baddr, unsigned char c, unsigned short attr) | 104 | static void addch(H3270 *session, int baddr, unsigned char c, unsigned short attr) |
@@ -109,9 +110,6 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att | @@ -109,9 +110,6 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att | ||
109 | ea_buf[baddr].chr = c; | 110 | ea_buf[baddr].chr = c; |
110 | ea_buf[baddr].attr = attr; | 111 | ea_buf[baddr].attr = attr; |
111 | 112 | ||
112 | - if(callbacks && callbacks->addch) | ||
113 | - callbacks->addch(baddr/session->cols, baddr%session->cols, c, attr); | ||
114 | - | ||
115 | if(session->update) | 113 | if(session->update) |
116 | session->update(session,baddr,c,attr,baddr == session->cursor_addr); | 114 | session->update(session,baddr,c,attr,baddr == session->cursor_addr); |
117 | } | 115 | } |
@@ -126,76 +124,19 @@ int screen_init(H3270 *session) | @@ -126,76 +124,19 @@ int screen_init(H3270 *session) | ||
126 | { | 124 | { |
127 | CHECK_SESSION_HANDLE(session); | 125 | CHECK_SESSION_HANDLE(session); |
128 | 126 | ||
129 | - /* Initialize the console. */ | ||
130 | - if(callbacks) | ||
131 | - { | ||
132 | - /* Init default callbacks */ | ||
133 | - if(callbacks->move_cursor) | ||
134 | - session->update_cursor = callbacks->move_cursor; | ||
135 | - | ||
136 | - if(callbacks->set_oia) | ||
137 | - session->update_oia = callbacks->set_oia; | ||
138 | - | ||
139 | - if(callbacks->set_viewsize) | ||
140 | - session->configure = callbacks->set_viewsize; | ||
141 | - | ||
142 | - if(callbacks->lu) | ||
143 | - session->update_luname = callbacks->lu; | ||
144 | - | ||
145 | - if(callbacks->status) | ||
146 | - session->update_status = callbacks->status; | ||
147 | - | ||
148 | - if(callbacks->erase) | ||
149 | - session->erase = callbacks->erase; | ||
150 | - | ||
151 | - if(callbacks->cursor) | ||
152 | - session->cursor = callbacks->cursor; | ||
153 | - | ||
154 | - if(callbacks->toggle_changed) | ||
155 | - session->update_toggle = callbacks->toggle_changed; | ||
156 | - | ||
157 | - if(callbacks->model_changed) | ||
158 | - session->update_model = callbacks->model_changed; | ||
159 | - | ||
160 | - if(callbacks->init()) | ||
161 | - { | ||
162 | - popup_an_error(session,"Can't initialize terminal."); | ||
163 | - return -1; | ||
164 | - } | ||
165 | - } | ||
166 | - | ||
167 | /* Set up callbacks for state changes. */ | 127 | /* Set up callbacks for state changes. */ |
168 | lib3270_register_schange(session,ST_CONNECT, status_connect,0); | 128 | lib3270_register_schange(session,ST_CONNECT, status_connect,0); |
169 | lib3270_register_schange(session,ST_3270_MODE, status_3270_mode,0); | 129 | lib3270_register_schange(session,ST_3270_MODE, status_3270_mode,0); |
170 | lib3270_register_schange(session,ST_PRINTER, status_printer,0); | 130 | lib3270_register_schange(session,ST_PRINTER, status_printer,0); |
171 | 131 | ||
172 | - lib3270_register_schange(session,ST_HALF_CONNECT, relabel,0); | ||
173 | - lib3270_register_schange(session,ST_CONNECT, relabel,0); | ||
174 | - lib3270_register_schange(session,ST_3270_MODE, relabel,0); | ||
175 | - | ||
176 | - /* See about all-bold behavior. */ | ||
177 | -// if (appres.all_bold_on) | ||
178 | -// ab_mode = TS_ON; | ||
179 | -// else if (!ts_value(appres.all_bold, &ab_mode)) | ||
180 | -// (void) fprintf(stderr, "invalid %s value: '%s', assuming 'auto'\n", ResAllBold, appres.all_bold); | ||
181 | -// if (ab_mode == TS_AUTO) | ||
182 | -// ab_mode = appres.m3279? TS_ON: TS_OFF; | 132 | +// lib3270_register_schange(session,ST_HALF_CONNECT, relabel,0); |
133 | +// lib3270_register_schange(session,ST_CONNECT, relabel,0); | ||
134 | +// lib3270_register_schange(session,ST_3270_MODE, relabel,0); | ||
183 | 135 | ||
184 | /* Set up the controller. */ | 136 | /* Set up the controller. */ |
185 | ctlr_init(session,-1); | 137 | ctlr_init(session,-1); |
186 | ctlr_reinit(session,-1); | 138 | ctlr_reinit(session,-1); |
187 | 139 | ||
188 | - /* Set the window label. */ | ||
189 | -#if defined(WC3270) /*[*/ | ||
190 | - | ||
191 | - if (appres.title != CN) | ||
192 | - screen_title(appres.title); | ||
193 | - else if (profile_name != CN) | ||
194 | - screen_title(profile_name); | ||
195 | - else | ||
196 | - screen_title(NULL); | ||
197 | -#endif | ||
198 | - | ||
199 | /* Finish screen initialization. */ | 140 | /* Finish screen initialization. */ |
200 | screen_suspend(session); | 141 | screen_suspend(session); |
201 | 142 | ||
@@ -318,8 +259,6 @@ void update_model_info(H3270 *session, int model, int cols, int rows) | @@ -318,8 +259,6 @@ void update_model_info(H3270 *session, int model, int cols, int rows) | ||
318 | 259 | ||
319 | if(session->update_model) | 260 | if(session->update_model) |
320 | session->update_model(session, session->model_name,session->model_num,rows,cols); | 261 | session->update_model(session, session->model_name,session->model_num,rows,cols); |
321 | - else if(callbacks && callbacks->model_changed) | ||
322 | - callbacks->model_changed(session, session->model_name,session->model_num,rows,cols); | ||
323 | } | 262 | } |
324 | 263 | ||
325 | LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned char *chr, unsigned short *attr) | 264 | LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned char *chr, unsigned short *attr) |
@@ -452,27 +391,16 @@ static void screen_update(H3270 *session, int bstart, int bend) | @@ -452,27 +391,16 @@ static void screen_update(H3270 *session, int bstart, int bend) | ||
452 | 391 | ||
453 | void screen_disp(H3270 *session) | 392 | void screen_disp(H3270 *session) |
454 | { | 393 | { |
455 | -// session->first_changed = -1; | ||
456 | -// session->last_changed = -1; | ||
457 | - | ||
458 | screen_update(session,0,session->rows*session->cols); | 394 | screen_update(session,0,session->rows*session->cols); |
459 | - | ||
460 | - if(callbacks && callbacks->display) | ||
461 | - callbacks->display(session); | ||
462 | } | 395 | } |
463 | 396 | ||
464 | void screen_suspend(H3270 *session) | 397 | void screen_suspend(H3270 *session) |
465 | { | 398 | { |
466 | - if(callbacks && callbacks->set_suspended) | ||
467 | - callbacks->set_suspended(1); | ||
468 | } | 399 | } |
469 | 400 | ||
470 | void screen_resume(H3270 *session) | 401 | void screen_resume(H3270 *session) |
471 | { | 402 | { |
472 | screen_disp(session); | 403 | screen_disp(session); |
473 | - | ||
474 | - if(callbacks && callbacks->set_suspended) | ||
475 | - callbacks->set_suspended(0); | ||
476 | } | 404 | } |
477 | 405 | ||
478 | LIB3270_EXPORT int lib3270_get_cursor_address(H3270 *h) | 406 | LIB3270_EXPORT int lib3270_get_cursor_address(H3270 *h) |
@@ -586,12 +514,6 @@ void status_reset(H3270 *session) | @@ -586,12 +514,6 @@ void status_reset(H3270 *session) | ||
586 | 514 | ||
587 | screen_disp(session); | 515 | screen_disp(session); |
588 | 516 | ||
589 | - if(callbacks && callbacks->reset) | ||
590 | - { | ||
591 | - Trace("%s calling reset",__FUNCTION__); | ||
592 | - callbacks->reset(kybdlock); | ||
593 | - } | ||
594 | - | ||
595 | } | 517 | } |
596 | 518 | ||
597 | /** | 519 | /** |
@@ -700,59 +622,38 @@ static void status_printer(H3270 *session, int on, void *dunno) | @@ -700,59 +622,38 @@ static void status_printer(H3270 *session, int on, void *dunno) | ||
700 | set_status(session,OIA_FLAG_PRINTER,on); | 622 | set_status(session,OIA_FLAG_PRINTER,on); |
701 | } | 623 | } |
702 | 624 | ||
703 | -/* | ||
704 | -SCRIPT_STATE status_script(SCRIPT_STATE state) | ||
705 | -{ | ||
706 | - if(state != script_state && callbacks && callbacks->set_script) | ||
707 | - callbacks->set_script(state); | ||
708 | - return script_state = state; | ||
709 | -} | ||
710 | -*/ | ||
711 | - | ||
712 | void status_timing(H3270 *session, struct timeval *t0, struct timeval *t1) | 625 | void status_timing(H3270 *session, struct timeval *t0, struct timeval *t1) |
713 | { | 626 | { |
714 | - CHECK_SESSION_HANDLE(session); | ||
715 | - | ||
716 | - if(callbacks && callbacks->show_timer) | ||
717 | - callbacks->show_timer(t1->tv_sec - t0->tv_sec); | ||
718 | } | 627 | } |
719 | 628 | ||
720 | void status_untiming(H3270 *session) | 629 | void status_untiming(H3270 *session) |
721 | { | 630 | { |
722 | CHECK_SESSION_HANDLE(session); | 631 | CHECK_SESSION_HANDLE(session); |
723 | 632 | ||
724 | - if(callbacks && callbacks->show_timer) | ||
725 | - callbacks->show_timer(-1); | ||
726 | - | ||
727 | if(session->set_timer) | 633 | if(session->set_timer) |
728 | session->set_timer(session,0); | 634 | session->set_timer(session,0); |
729 | } | 635 | } |
730 | 636 | ||
731 | void ring_bell(void) | 637 | void ring_bell(void) |
732 | { | 638 | { |
733 | - if(callbacks && callbacks->ring_bell) | ||
734 | - callbacks->ring_bell(); | ||
735 | } | 639 | } |
736 | 640 | ||
737 | -/* Set the window title. */ | ||
738 | -void | ||
739 | -screen_title(char *text) | 641 | +/* Set the window title. */ /* |
642 | +void screen_title(char *text) | ||
740 | { | 643 | { |
741 | - if(callbacks && callbacks->title) | ||
742 | - callbacks->title(text); | ||
743 | } | 644 | } |
744 | 645 | ||
745 | static void | 646 | static void |
746 | relabel(H3270 *session, int ignored unused, void *dunno) | 647 | relabel(H3270 *session, int ignored unused, void *dunno) |
747 | { | 648 | { |
748 | -#if defined(WC3270) /*[*/ | 649 | +#if defined(WC3270) |
749 | if (appres.title != CN) | 650 | if (appres.title != CN) |
750 | return; | 651 | return; |
751 | #endif | 652 | #endif |
752 | 653 | ||
753 | if (PCONNECTED) | 654 | if (PCONNECTED) |
754 | { | 655 | { |
755 | -#if defined(WC3270) /*[*/ | 656 | +#if defined(WC3270) |
756 | if (profile_name != CN) | 657 | if (profile_name != CN) |
757 | screen_title(profile_name); | 658 | screen_title(profile_name); |
758 | else | 659 | else |
@@ -770,19 +671,7 @@ int query_counter(COUNTER_ID id) | @@ -770,19 +671,7 @@ int query_counter(COUNTER_ID id) | ||
770 | { | 671 | { |
771 | return lib3270_event_counter[id]; | 672 | return lib3270_event_counter[id]; |
772 | } | 673 | } |
773 | - | ||
774 | -int Register3270ScreenCallbacks(const struct lib3270_screen_callbacks *cbk) | ||
775 | -{ | ||
776 | - if(!cbk) | ||
777 | - return EINVAL; | ||
778 | - | ||
779 | - if(cbk->sz != sizeof(struct lib3270_screen_callbacks)) | ||
780 | - return -EINVAL; | ||
781 | - | ||
782 | - callbacks = cbk; | ||
783 | - | ||
784 | - return 0; | ||
785 | -} | 674 | +*/ |
786 | 675 | ||
787 | void show_3270_popup_dialog(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, ...) | 676 | void show_3270_popup_dialog(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, ...) |
788 | { | 677 | { |
@@ -793,16 +682,15 @@ void show_3270_popup_dialog(H3270 *session, LIB3270_NOTIFY type, const char *tit | @@ -793,16 +682,15 @@ void show_3270_popup_dialog(H3270 *session, LIB3270_NOTIFY type, const char *tit | ||
793 | 682 | ||
794 | va_list arg_ptr; | 683 | va_list arg_ptr; |
795 | va_start(arg_ptr, fmt); | 684 | va_start(arg_ptr, fmt); |
796 | - | ||
797 | - if(callbacks && callbacks->notify) | ||
798 | - callbacks->notify(session,type,title,msg,fmt,arg_ptr); | ||
799 | - else | ||
800 | - lib3270_write_va_log(session,"lib3270",fmt,arg_ptr); | ||
801 | - | 685 | + popup_handler(session,type,title,msg,fmt,arg_ptr); |
802 | va_end(arg_ptr); | 686 | va_end(arg_ptr); |
803 | 687 | ||
804 | } | 688 | } |
805 | 689 | ||
690 | +static int logpopup(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg) | ||
691 | +{ | ||
692 | + lib3270_write_va_log(session,"lib3270",fmt,arg); | ||
693 | +} | ||
806 | 694 | ||
807 | void Error(H3270 *session, const char *fmt, ...) | 695 | void Error(H3270 *session, const char *fmt, ...) |
808 | { | 696 | { |
@@ -811,12 +699,7 @@ void Error(H3270 *session, const char *fmt, ...) | @@ -811,12 +699,7 @@ void Error(H3270 *session, const char *fmt, ...) | ||
811 | CHECK_SESSION_HANDLE(session); | 699 | CHECK_SESSION_HANDLE(session); |
812 | 700 | ||
813 | va_start(arg_ptr, fmt); | 701 | va_start(arg_ptr, fmt); |
814 | - | ||
815 | - if(callbacks && callbacks->notify) | ||
816 | - callbacks->notify(session,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); | ||
817 | - else | ||
818 | - lib3270_write_va_log(&h3270,"lib3270",fmt,arg_ptr); | ||
819 | - | 702 | + popup_handler(session,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); |
820 | va_end(arg_ptr); | 703 | va_end(arg_ptr); |
821 | 704 | ||
822 | } | 705 | } |
@@ -828,12 +711,7 @@ void Warning(H3270 *session, const char *fmt, ...) | @@ -828,12 +711,7 @@ void Warning(H3270 *session, const char *fmt, ...) | ||
828 | CHECK_SESSION_HANDLE(session); | 711 | CHECK_SESSION_HANDLE(session); |
829 | 712 | ||
830 | va_start(arg_ptr, fmt); | 713 | va_start(arg_ptr, fmt); |
831 | - | ||
832 | - if(callbacks && callbacks->notify) | ||
833 | - callbacks->notify(session,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); | ||
834 | - else | ||
835 | - lib3270_write_va_log(&h3270,"lib3270",fmt,arg_ptr); | ||
836 | - | 714 | + popup_handler(session,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); |
837 | va_end(arg_ptr); | 715 | va_end(arg_ptr); |
838 | 716 | ||
839 | } | 717 | } |
@@ -846,12 +724,7 @@ extern void popup_an_error(H3270 *session, const char *fmt, ...) | @@ -846,12 +724,7 @@ extern void popup_an_error(H3270 *session, const char *fmt, ...) | ||
846 | CHECK_SESSION_HANDLE(session); | 724 | CHECK_SESSION_HANDLE(session); |
847 | 725 | ||
848 | va_start(args, fmt); | 726 | va_start(args, fmt); |
849 | - | ||
850 | - if(callbacks && callbacks->notify) | ||
851 | - callbacks->notify(session,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); | ||
852 | - else | ||
853 | - lib3270_write_va_log(&h3270,"lib3270",fmt,args); | ||
854 | - | 727 | + popup_handler(session,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); |
855 | va_end(args); | 728 | va_end(args); |
856 | 729 | ||
857 | } | 730 | } |
@@ -863,19 +736,13 @@ void popup_system_error(H3270 *session, const char *title, const char *message, | @@ -863,19 +736,13 @@ void popup_system_error(H3270 *session, const char *title, const char *message, | ||
863 | CHECK_SESSION_HANDLE(session); | 736 | CHECK_SESSION_HANDLE(session); |
864 | 737 | ||
865 | va_start(args, fmt); | 738 | va_start(args, fmt); |
866 | - | ||
867 | - if(callbacks && callbacks->notify) | ||
868 | - callbacks->notify(session,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); | ||
869 | - else | ||
870 | - lib3270_write_va_log(&h3270,"lib3270",fmt,args); | ||
871 | - | 739 | + popup_handler(session,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); |
872 | va_end(args); | 740 | va_end(args); |
873 | } | 741 | } |
874 | 742 | ||
875 | - | ||
876 | - | ||
877 | LIB3270_EXPORT void update_toggle_actions(void) | 743 | LIB3270_EXPORT void update_toggle_actions(void) |
878 | { | 744 | { |
745 | +/* | ||
879 | int f; | 746 | int f; |
880 | 747 | ||
881 | if(callbacks && callbacks->toggle_changed) | 748 | if(callbacks && callbacks->toggle_changed) |
@@ -883,6 +750,7 @@ LIB3270_EXPORT void update_toggle_actions(void) | @@ -883,6 +750,7 @@ LIB3270_EXPORT void update_toggle_actions(void) | ||
883 | for(f=0;f< N_TOGGLES;f++) | 750 | for(f=0;f< N_TOGGLES;f++) |
884 | callbacks->toggle_changed(&h3270,f,appres.toggle[f].value,TT_UPDATE,toggle_names[f]); | 751 | callbacks->toggle_changed(&h3270,f,appres.toggle[f].value,TT_UPDATE,toggle_names[f]); |
885 | } | 752 | } |
753 | +*/ | ||
886 | } | 754 | } |
887 | 755 | ||
888 | void mcursor_set(H3270 *session,LIB3270_CURSOR m) | 756 | void mcursor_set(H3270 *session,LIB3270_CURSOR m) |
@@ -947,7 +815,7 @@ LIB3270_ACTION( testpattern ) | @@ -947,7 +815,7 @@ LIB3270_ACTION( testpattern ) | ||
947 | }; | 815 | }; |
948 | 816 | ||
949 | int row = 0; | 817 | int row = 0; |
950 | - int max = (h3270.maxROWS * h3270.maxCOLS); | 818 | + int max = (hSession->maxROWS * hSession->maxCOLS); |
951 | int pos = 0; | 819 | int pos = 0; |
952 | int f; | 820 | int f; |
953 | int fg = COLOR_BLUE; | 821 | int fg = COLOR_BLUE; |
@@ -973,58 +841,14 @@ LIB3270_ACTION( testpattern ) | @@ -973,58 +841,14 @@ LIB3270_ACTION( testpattern ) | ||
973 | 841 | ||
974 | Trace("%s display",__FUNCTION__); | 842 | Trace("%s display",__FUNCTION__); |
975 | 843 | ||
976 | - screen_disp(&h3270); | 844 | + screen_disp(hSession); |
977 | 845 | ||
978 | Trace("%s ends",__FUNCTION__); | 846 | Trace("%s ends",__FUNCTION__); |
979 | return 0; | 847 | return 0; |
980 | } | 848 | } |
981 | 849 | ||
982 | -/* | ||
983 | -LIB3270_EXPORT struct ea * copy_device_buffer(int *el) | ||
984 | -{ | ||
985 | - int sz = sizeof(struct ea) * (h3270.maxROWS * h3270.maxCOLS); | ||
986 | - struct ea *ret = malloc(sz); | ||
987 | - memcpy(ret,ea_buf,sz); | ||
988 | - if(el) | ||
989 | - *el = (h3270.maxROWS * h3270.maxCOLS); | ||
990 | - return ret; | ||
991 | -} | ||
992 | -*/ | ||
993 | - | ||
994 | -/* | ||
995 | -LIB3270_EXPORT HCONSOLE console_window_new(const char *title, const char *label) | ||
996 | -{ | ||
997 | - if(callbacks && callbacks->console_new ) | ||
998 | - return callbacks->console_new(title,label); | ||
999 | - | ||
1000 | - return NULL; | ||
1001 | -} | ||
1002 | - | ||
1003 | -LIB3270_EXPORT void console_window_delete(HCONSOLE hwnd) | ||
1004 | -{ | ||
1005 | - if(callbacks && callbacks->console_delete ) | ||
1006 | - callbacks->console_delete(hwnd); | ||
1007 | -} | ||
1008 | - | ||
1009 | -LIB3270_EXPORT int console_window_append(HCONSOLE hwnd, const char *fmt, ...) | 850 | +LIB3270_EXPORT void lib3270_set_popup_handler(int (*handler)(H3270 *, LIB3270_NOTIFY, const char *, const char *, const char *, va_list)) |
1010 | { | 851 | { |
1011 | - va_list args; | ||
1012 | - | ||
1013 | - if(callbacks && callbacks->console_append) | ||
1014 | - { | ||
1015 | - va_start(args, fmt); | ||
1016 | - callbacks->console_append(hwnd, fmt, args); | ||
1017 | - va_end(args); | ||
1018 | - } | ||
1019 | - | ||
1020 | - return 0; | 852 | + popup_handler = handler ? handler : logpopup; |
1021 | } | 853 | } |
1022 | 854 | ||
1023 | -LIB3270_EXPORT char * console_window_wait_for_user_entry(HCONSOLE hwnd) | ||
1024 | -{ | ||
1025 | - if(callbacks && callbacks->console_entry ) | ||
1026 | - return callbacks->console_entry(hwnd); | ||
1027 | - return NULL; | ||
1028 | -} | ||
1029 | -*/ | ||
1030 | - |
src/lib3270/telnet.c
@@ -475,7 +475,7 @@ int net_connect(const char *host, char *portname, Boolean ls, Boolean *resolving | @@ -475,7 +475,7 @@ int net_connect(const char *host, char *portname, Boolean ls, Boolean *resolving | ||
475 | 475 | ||
476 | hp = gethostbyname(hn); | 476 | hp = gethostbyname(hn); |
477 | if (hp == (struct hostent *) 0) { | 477 | if (hp == (struct hostent *) 0) { |
478 | - popup_an_error("Unknown passthru host: %s", hn); | 478 | + popup_an_error(NULL,"Unknown passthru host: %s", hn); |
479 | return -1; | 479 | return -1; |
480 | } | 480 | } |
481 | (void) memmove(passthru_haddr, hp->h_addr, hp->h_length); | 481 | (void) memmove(passthru_haddr, hp->h_addr, hp->h_length); |
@@ -497,7 +497,7 @@ int net_connect(const char *host, char *portname, Boolean ls, Boolean *resolving | @@ -497,7 +497,7 @@ int net_connect(const char *host, char *portname, Boolean ls, Boolean *resolving | ||
497 | if (ptr == portname || *ptr != '\0' || lport == 0L || | 497 | if (ptr == portname || *ptr != '\0' || lport == 0L || |
498 | lport & ~0xffff) { | 498 | lport & ~0xffff) { |
499 | if (!(sp = getservbyname(portname, "tcp"))) { | 499 | if (!(sp = getservbyname(portname, "tcp"))) { |
500 | - popup_an_error("Unknown port number " | 500 | + popup_an_error(NULL,"Unknown port number " |
501 | "or service: %s", portname); | 501 | "or service: %s", portname); |
502 | return -1; | 502 | return -1; |
503 | } | 503 | } |
@@ -657,7 +657,7 @@ int net_connect(const char *host, char *portname, Boolean ls, Boolean *resolving | @@ -657,7 +657,7 @@ int net_connect(const char *host, char *portname, Boolean ls, Boolean *resolving | ||
657 | output_id = AddOutput(h3270.sock, &h3270, output_possible); | 657 | output_id = AddOutput(h3270.sock, &h3270, output_possible); |
658 | #endif /*]*/ | 658 | #endif /*]*/ |
659 | } else { | 659 | } else { |
660 | - popup_a_sockerr( N_( "Can't connect to %s:%d" ),h3270.hostname, h3270.current_port); | 660 | + popup_a_sockerr(NULL, N_( "Can't connect to %s:%d" ),h3270.hostname, h3270.current_port); |
661 | close_fail; | 661 | close_fail; |
662 | } | 662 | } |
663 | } else { | 663 | } else { |
@@ -1029,7 +1029,7 @@ void net_input(H3270 *session) | @@ -1029,7 +1029,7 @@ void net_input(H3270 *session) | ||
1029 | */ | 1029 | */ |
1030 | trace_dsn("RCVD socket error %d\n", errno); | 1030 | trace_dsn("RCVD socket error %d\n", errno); |
1031 | if (HALF_CONNECTED) { | 1031 | if (HALF_CONNECTED) { |
1032 | - popup_a_sockerr( N_( "%s:%d" ),h3270.hostname, h3270.current_port); | 1032 | + popup_a_sockerr(NULL, N_( "%s:%d" ),h3270.hostname, h3270.current_port); |
1033 | } else if (socket_errno() != SE_ECONNRESET) { | 1033 | } else if (socket_errno() != SE_ECONNRESET) { |
1034 | popup_a_sockerr(NULL, N_( "Socket read error" ) ); | 1034 | popup_a_sockerr(NULL, N_( "Socket read error" ) ); |
1035 | } | 1035 | } |
@@ -3179,14 +3179,14 @@ non_blocking(Boolean on) | @@ -3179,14 +3179,14 @@ non_blocking(Boolean on) | ||
3179 | int i = on ? 1 : 0; | 3179 | int i = on ? 1 : 0; |
3180 | 3180 | ||
3181 | if (SOCK_IOCTL(h3270.sock, FIONBIO, (int *) &i) < 0) { | 3181 | if (SOCK_IOCTL(h3270.sock, FIONBIO, (int *) &i) < 0) { |
3182 | - popup_a_sockerr( N_( "ioctl(%s)" ), "FIONBIO"); | 3182 | + popup_a_sockerr(NULL, N_( "ioctl(%s)" ), "FIONBIO"); |
3183 | return -1; | 3183 | return -1; |
3184 | } | 3184 | } |
3185 | # else /*][*/ | 3185 | # else /*][*/ |
3186 | int f; | 3186 | int f; |
3187 | 3187 | ||
3188 | if ((f = fcntl(sock, F_GETFL, 0)) == -1) { | 3188 | if ((f = fcntl(sock, F_GETFL, 0)) == -1) { |
3189 | - popup_an_errno(errno, N_( "fcntl(%s)" ), "F_GETFL" ); | 3189 | + popup_an_errno(NULL,errno, N_( "fcntl(%s)" ), "F_GETFL" ); |
3190 | return -1; | 3190 | return -1; |
3191 | } | 3191 | } |
3192 | if (on) | 3192 | if (on) |
@@ -3194,7 +3194,7 @@ non_blocking(Boolean on) | @@ -3194,7 +3194,7 @@ non_blocking(Boolean on) | ||
3194 | else | 3194 | else |
3195 | f &= ~O_NDELAY; | 3195 | f &= ~O_NDELAY; |
3196 | if (fcntl(sock, F_SETFL, f) < 0) { | 3196 | if (fcntl(sock, F_SETFL, f) < 0) { |
3197 | - popup_an_errno(errno, N_( "fcntl(%s)" ), "F_GETFL"); | 3197 | + popup_an_errno(NULL,errno, N_( "fcntl(%s)" ), "F_GETFL"); |
3198 | return -1; | 3198 | return -1; |
3199 | } | 3199 | } |
3200 | # endif /*]*/ | 3200 | # endif /*]*/ |