From e6624bf6f3f3fc8f793df0d298c6e0a2d9540488 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Thu, 5 Jul 2012 20:06:12 +0000 Subject: [PATCH] Implementando função de conversão do buffer de terminal para HTML --- src/lib3270/Makefile.in | 2 +- src/lib3270/api.h | 2 +- src/lib3270/html.c | 18 ++++++++++++++---- src/lib3270/mkfb.c | 5 +++-- src/lib3270/proxy.c | 1 + src/lib3270/screen.c | 6 +++--- src/pw3270/window.c | 3 +-- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/lib3270/Makefile.in b/src/lib3270/Makefile.in index f73a607..cca9594 100644 --- a/src/lib3270/Makefile.in +++ b/src/lib3270/Makefile.in @@ -174,7 +174,7 @@ fallbacks.c: $(BINDIR)/mkfb@EXEEXT@ X3270.xad $(BINDIR)/mkfb@EXEEXT@: mkfb.c Makefile @echo " CCLD `basename $@`" @$(MKDIR) `dirname $@` - @$(HOST_CC) -g -o $@ -D_WIN32 mkfb.c + @$(HOST_CC) -g -o $@ mkfb.c clean: @rm -fr .obj diff --git a/src/lib3270/api.h b/src/lib3270/api.h index 84c2f48..ee176fa 100644 --- a/src/lib3270/api.h +++ b/src/lib3270/api.h @@ -295,7 +295,7 @@ #define COLOR_ATTR_INTENSIFY LIB3270_ATTR_INTENSIFY // #define CHAR_ATTR_CG LIB3270_ATTR_CG - #define CHAR_ATTR_MARKER LIB3270_ATTR_MARKER +// #define CHAR_ATTR_MARKER LIB3270_ATTR_MARKER #define CHAR_ATTR_UNCONVERTED LIB3270_ATTR_CG diff --git a/src/lib3270/html.c b/src/lib3270/html.c index c503446..01c88e9 100644 --- a/src/lib3270/html.c +++ b/src/lib3270/html.c @@ -89,7 +89,10 @@ struct html_info { int szText; + + unsigned char fa; /**< field attribute, it nonzero */ char * text; + int maxlength; unsigned short fg; unsigned short bg; }; @@ -195,7 +198,6 @@ if((option && LIB3270_HTML_OPTION_ALL) || (session->text[baddr+col].attr & LIB3270_ATTR_SELECTED)) { cr++; - update_colors(&info,session->text[baddr+col].attr); if(session->text[baddr+col].attr & LIB3270_ATTR_CG) { @@ -221,6 +223,7 @@ { 0x00, NULL } }; + update_colors(&info,session->text[baddr+col].attr); append_char(&info, xlat, session->text[baddr+col].chr); } @@ -237,10 +240,17 @@ { 0x00, NULL } }; - append_char(&info, xlat, session->text[baddr+col].chr); - + if((session->text[baddr+col].attr & LIB3270_ATTR_MARKER)) + { + update_colors(&info,session->text[baddr+col].attr); + append_string(&info,"|"); + } + else + { + update_colors(&info,session->text[baddr+col].attr); + append_char(&info, xlat, session->text[baddr+col].chr); + } } - } } diff --git a/src/lib3270/mkfb.c b/src/lib3270/mkfb.c index 1a7b6d5..1a2f1ff 100644 --- a/src/lib3270/mkfb.c +++ b/src/lib3270/mkfb.c @@ -41,11 +41,12 @@ #ifdef _WIN32 #include - #include - #include #define tmpfile w32_tmpfile #endif // _WIN32 +#include +#include + #include #include #include diff --git a/src/lib3270/proxy.c b/src/lib3270/proxy.c index f277120..895af71 100644 --- a/src/lib3270/proxy.c +++ b/src/lib3270/proxy.c @@ -520,6 +520,7 @@ proxy_telnet(int fd, char *host, unsigned short port) static int proxy_socks4(int fd, char *host, unsigned short port, int force_a) { popup_an_error(NULL,"%s", _( "Unsupported socks 4 proxy" ) ); + return 0; } #else static int proxy_socks4(int fd, char *host, unsigned short port, int force_a) diff --git a/src/lib3270/screen.c b/src/lib3270/screen.c index feda462..069cd12 100644 --- a/src/lib3270/screen.c +++ b/src/lib3270/screen.c @@ -220,10 +220,10 @@ static unsigned short calc_attrs(H3270 *session, int baddr, int fa_addr, int fa) a |= LIB3270_ATTR_UNDERLINE; } - if(h3270.m3279 && (gr & (GR_BLINK | GR_UNDERLINE)) && !(gr & GR_REVERSE) && !bg) + if(session->m3279 && (gr & (GR_BLINK | GR_UNDERLINE)) && !(gr & GR_REVERSE) && !bg) a |= LIB3270_ATTR_BACKGROUND_INTENSITY; - if(!h3270.m3279 && ((gr & GR_INTENSIFY) || FA_IS_HIGH(fa))) + if(!session->m3279 && ((gr & GR_INTENSIFY) || FA_IS_HIGH(fa))) a |= LIB3270_ATTR_INTENSIFY; if (gr & GR_REVERSE) @@ -313,7 +313,7 @@ void screen_update(H3270 *session, int bstart, int bend) fa_addr = baddr; fa = session->ea_buf[baddr].fa; a = calc_attrs(session, baddr, baddr, fa); - addch(session,baddr,' ',(attr = COLOR_GREEN)|CHAR_ATTR_MARKER,&first,&last); + addch(session,baddr,' ',(attr = COLOR_GREEN)|LIB3270_ATTR_MARKER,&first,&last); } else if (FA_IS_ZERO(fa)) { diff --git a/src/pw3270/window.c b/src/pw3270/window.c index dae4f6d..4fa3bd9 100644 --- a/src/pw3270/window.c +++ b/src/pw3270/window.c @@ -150,10 +150,9 @@ static void pw3270_class_init(pw3270Class *klass) { // GObjectClass * gobject_class = G_OBJECT_CLASS(klass); -// GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); - #if GTK_CHECK_VERSION(3,0,0) + GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); widget_class->destroy = pw3270_destroy; #else { -- libgit2 0.21.2