Commit 8d37354a0fb22eb5801f999967d47899a5447bdf

Authored by perry.werneck@gmail.com
1 parent 31052932

Incluindo novo tratamento de janelas popup

@@ -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
src/include/lib3270/popup.h 0 → 100644
@@ -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 /*]*/