Commit d3143661311432b736efdef4120294660cbecc0c

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

Reimplementando extensão libreoffice, corrigindo bugs encontrados na interface DBUS

src/classlib/local.cc
... ... @@ -454,18 +454,18 @@
454 454 return 0;
455 455 }
456 456  
457   - string * get_text_at(int row, int col, size_t sz)
  457 + string get_text_at(int row, int col, size_t sz)
458 458 {
  459 + string rc;
459 460 char * ptr = _get_text_at(hSession,row,col,sz);
460 461  
461 462 if(ptr)
462 463 {
463   - string *s = new string(ptr);
  464 + rc.assign(ptr);
464 465 _free(ptr);
465   - return s;
466 466 }
467 467  
468   - return new string("");
  468 + return rc;
469 469 }
470 470  
471 471 int set_text_at(int row, int col, const char *str)
... ... @@ -478,18 +478,18 @@
478 478 return _cmp_text_at(hSession,row,col,text);
479 479 }
480 480  
481   - string * get_text(int offset, size_t len)
  481 + string get_text(int offset, size_t len)
482 482 {
483   - char *ptr = _get_text(hSession,offset,len);
  483 + string rc;
  484 + char * ptr = _get_text(hSession,offset,len);
484 485  
485 486 if(ptr)
486 487 {
487   - string *s = new string(ptr);
  488 + rc.assign(ptr);
488 489 _free(ptr);
489   - return s;
490 490 }
491 491  
492   - return new string("");
  492 + return rc;
493 493 }
494 494  
495 495 int set_cursor_position(int row, int col)
... ... @@ -561,9 +561,9 @@
561 561 return 0;
562 562 }
563 563  
564   - string * get_display_charset(void)
  564 + string get_display_charset(void)
565 565 {
566   - return new string(_get_display_charset(hSession));
  566 + return string(_get_display_charset(hSession));
567 567 }
568 568  
569 569 int set_host_charset(const char *charset)
... ... @@ -571,9 +571,9 @@
571 571 return _set_host_charset(hSession,charset);
572 572 }
573 573  
574   - string * get_host_charset(void)
  574 + string get_host_charset(void)
575 575 {
576   - return new string(_get_host_charset(hSession));
  576 + return string(_get_host_charset(hSession));
577 577 }
578 578  
579 579 int erase_eof(void)
... ...
src/classlib/remote.cc
... ... @@ -214,8 +214,10 @@
214 214 return reply;
215 215 }
216 216  
217   - string * get_string(DBusMessage * msg)
  217 + string get_string(DBusMessage * msg)
218 218 {
  219 + string rc;
  220 +
219 221 if(msg)
220 222 {
221 223 DBusMessageIter iter;
... ... @@ -224,11 +226,10 @@
224 226 {
225 227 if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING)
226 228 {
227   - string * rc;
228 229 const char * str;
229 230 dbus_message_iter_get_basic(&iter, &str);
230 231 trace("Response: [%s]",str);
231   - rc = new string(str);
  232 + rc.assign(str);
232 233 dbus_message_unref(msg);
233 234 return rc;
234 235 }
... ... @@ -242,10 +243,10 @@
242 243  
243 244 }
244 245  
245   - return NULL;
  246 + return rc;
246 247 }
247 248  
248   - string * query_string(const char *method)
  249 + string query_string(const char *method)
249 250 {
250 251 return get_string(call(create_message(method)));
251 252 }
... ... @@ -863,7 +864,7 @@
863 864 #endif
864 865 }
865 866  
866   - string * get_text_at(int row, int col, size_t sz)
  867 + string get_text_at(int row, int col, size_t sz)
867 868 {
868 869 #if defined(WIN32)
869 870  
... ... @@ -888,7 +889,7 @@
888 889  
889 890 #else
890 891  
891   - return NULL;
  892 + return string();
892 893  
893 894 #endif
894 895  
... ... @@ -978,7 +979,7 @@
978 979 return ETIMEDOUT;
979 980 }
980 981  
981   - string * get_text(int baddr, size_t len)
  982 + string get_text(int baddr, size_t len)
982 983 {
983 984 #if defined(WIN32)
984 985 struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, (unsigned short) baddr, (unsigned short) len };
... ... @@ -999,7 +1000,7 @@
999 1000 return get_string(call(msg));
1000 1001 #else
1001 1002 throw exception("%s","IPC support is unavailable");
1002   - return NULL;
  1003 + return string();
1003 1004 #endif
1004 1005 }
1005 1006  
... ... @@ -1248,7 +1249,7 @@
1248 1249 #endif
1249 1250 }
1250 1251  
1251   - string * get_host_charset(void)
  1252 + string get_host_charset(void)
1252 1253 {
1253 1254 #if defined(WIN32)
1254 1255  
... ... @@ -1268,7 +1269,7 @@
1268 1269  
1269 1270  
1270 1271 #if defined(HAVE_DBUS)
1271   - string * get_clipboard(void)
  1272 + string get_clipboard(void)
1272 1273 {
1273 1274 return query_string("getClipboard");
1274 1275 }
... ... @@ -1278,7 +1279,7 @@
1278 1279 return query_intval("setClipboard", DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID);
1279 1280 }
1280 1281  
1281   - string * get_display_charset(void)
  1282 + string get_display_charset(void)
1282 1283 {
1283 1284 return query_string("getDisplayCharset");
1284 1285 }
... ...
src/classlib/session.cc
... ... @@ -124,7 +124,7 @@
124 124 void session::set_display_charset(const char *remote, const char *local)
125 125 {
126 126 #ifdef HAVE_ICONV
127   - string *display_charset = this->get_display_charset();
  127 + string display_charset = this->get_display_charset();
128 128  
129 129 if(this->conv2Local != (iconv_t) (-1))
130 130 iconv_close(this->conv2Local);
... ... @@ -133,7 +133,7 @@
133 133 iconv_close(this->conv2Host);
134 134  
135 135 if(!remote)
136   - remote = display_charset->c_str();
  136 + remote = display_charset.c_str();
137 137  
138 138 if(strcmp(local,remote))
139 139 {
... ... @@ -146,14 +146,18 @@
146 146 conv2Local = conv2Host = (iconv_t)(-1);
147 147 }
148 148  
149   - delete display_charset;
150 149 #endif
151 150  
152 151 }
153 152  
154   - string * session::get_display_charset(void)
  153 + string session::get_display_charset(void)
155 154 {
156   - return new string("ISO-8859-1");
  155 + return string(get_encoding());
  156 + }
  157 +
  158 + const char * session::get_encoding(void)
  159 + {
  160 + return "ISO-8859-1";
157 161 }
158 162  
159 163 // 3270 methods
... ... @@ -209,13 +213,13 @@
209 213 return EINVAL;
210 214 }
211 215  
212   - string * session::get_copy(void)
  216 + string session::get_copy(void)
213 217 {
214 218 errno = EINVAL;
215   - return NULL;
  219 + return string();
216 220 }
217 221  
218   - string * session::get_clipboard(void)
  222 + string session::get_clipboard(void)
219 223 {
220 224 #if defined(WIN32)
221 225  
... ... @@ -239,7 +243,7 @@
239 243 return NULL;
240 244 }
241 245  
242   - string *text = new string ( pszText );
  246 + string text = string ( pszText );
243 247  
244 248 GlobalUnlock( hData );
245 249  
... ... @@ -294,69 +298,75 @@
294 298 return -1;
295 299 }
296 300  
297   - string * session::file_chooser_dialog(int action, const char *title, const char *extension, const char *filename)
  301 + string session::file_chooser_dialog(int action, const char *title, const char *extension, const char *filename)
298 302 {
299   - return NULL;
  303 + return string("");
300 304 }
301 305  
302   - string * session::get_3270_text(string *str)
  306 + string session::get_3270_text(const char *str)
303 307 {
  308 + string rc;
  309 +
304 310 #ifdef HAVE_ICONV
305   - if(str && conv2Host != (iconv_t)(-1))
  311 + size_t in = strlen(str);
  312 +
  313 + if(in && conv2Host != (iconv_t)(-1))
306 314 {
307   - size_t in = str->length();
308 315 size_t out = (in << 1);
309 316 char * ptr;
310 317 char * outBuffer = (char *) malloc(out);
311   - ICONV_CONST char * inBuffer = (ICONV_CONST char *) str->c_str();
  318 + ICONV_CONST char * inBuffer = (ICONV_CONST char *) str;
312 319  
313 320 memset(ptr=outBuffer,0,out);
314 321  
315 322 iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state
316 323  
317 324 if(iconv(conv2Host,&inBuffer,&in,&ptr,&out) != ((size_t) -1))
318   - str->assign(outBuffer);
  325 + rc.assign(outBuffer);
319 326  
320 327 free(outBuffer);
321 328 }
  329 +#else
  330 + rc = str;
322 331 #endif // HAVE_ICONV
323 332  
324   - return str;
  333 + return rc;
325 334 }
326 335  
327   - string * session::get_local_text(string *str)
  336 + string session::get_local_text(const char *str)
328 337 {
  338 + string rc;
  339 +
329 340 #ifdef HAVE_ICONV
330   - if(str && conv2Local != (iconv_t)(-1))
  341 + size_t in = strlen(str);
  342 +
  343 + if(in && conv2Local != (iconv_t)(-1))
331 344 {
332   - size_t in = str->length();
333 345 size_t out = (in << 1);
334 346 char * ptr;
335 347 char * outBuffer = (char *) malloc(out);
336   - ICONV_CONST char * inBuffer = (ICONV_CONST char *) str->c_str();
  348 + ICONV_CONST char * inBuffer = (ICONV_CONST char *) str;
337 349  
338 350 memset(ptr=outBuffer,0,out);
339 351  
340 352 iconv(conv2Local,NULL,NULL,NULL,NULL); // Reset state
341 353  
342 354 if(iconv(conv2Local,&inBuffer,&in,&ptr,&out) != ((size_t) -1))
343   - str->assign(outBuffer);
  355 + rc.assign(outBuffer);
344 356  
345 357 free(outBuffer);
346 358 }
  359 +#else
  360 + rc = str;
347 361 #endif // HAVE_ICONV
348 362  
349   - return str;
  363 + return rc;
350 364 }
351 365  
352   - string * session::get_string_at(int row, int col, size_t sz)
  366 + string session::get_string_at(int row, int col, size_t sz)
353 367 {
354   - string *str = this->get_text_at(row,col,sz);
355   -
356   - if(str)
357   - return this->get_local_text(str);
358   -
359   - return 0;
  368 + string str = this->get_text_at(row,col,sz);
  369 + return this->get_local_text(str.c_str());
360 370 }
361 371  
362 372 int session::set_string_at(int row, int col, const char *str)
... ... @@ -427,23 +437,17 @@
427 437  
428 438 int session::cmp_string_at(int row, int col, const char *text)
429 439 {
430   - string * str = get_3270_text(new string(text));
431   - int rc = cmp_text_at(row,col,str->c_str());
432   - delete str;
433   - return rc;
  440 + return cmp_text_at(row,col,get_3270_text(text).c_str());
434 441 }
435 442  
436 443 int session::wait_for_string_at(int row, int col, const char *key, int timeout)
437 444 {
438   - string * str = get_3270_text(new string(key));
439   - int rc = wait_for_text_at(row,col,str->c_str(),timeout);
440   - delete str;
441   - return rc;
  445 + return wait_for_text_at(row,col,get_3270_text(key).c_str(),timeout);
442 446 }
443 447  
444   - string * session::get_string(int baddr, size_t len)
  448 + string session::get_string(int baddr, size_t len)
445 449 {
446   - return get_local_text(get_text(baddr,len));
  450 + return get_local_text(get_text(baddr,len).c_str());
447 451 }
448 452  
449 453 string session::asc2ebc(string &str)
... ...
src/classlib/testprogram.cc
... ... @@ -40,7 +40,7 @@
40 40 {
41 41  
42 42 {
43   - string *s;
  43 + string s;
44 44 session *session = session::start("pw3270:a");
45 45 // session *session = session::start("new");
46 46  
... ... @@ -55,12 +55,10 @@
55 55 cout << "\tSession state: " << session->get_cstate() << endl;
56 56  
57 57 s = session->get_display_charset();
58   - cout << "\tDisplay charset: " << s->c_str() << endl;
59   - delete s;
  58 + cout << "\tDisplay charset: " << s.c_str() << endl;
60 59  
61 60 s = session->get_host_charset();
62   - cout << "\tHost charset: " << s->c_str() << endl;
63   - delete s;
  61 + cout << "\tHost charset: " << s.c_str() << endl;
64 62  
65 63 session->connect(false);
66 64 delete session;
... ...
src/include/pw3270/class.h
... ... @@ -130,8 +130,8 @@
130 130 #endif // WIN32
131 131  
132 132 virtual int set_host_charset(const char *charset) = 0;
133   - virtual string * get_host_charset(void) = 0;
134   - virtual string * get_display_charset(void);
  133 + virtual string get_host_charset(void) = 0;
  134 + virtual string get_display_charset(void);
135 135  
136 136 // Connection & Network
137 137 int connect(const char *host, bool wait = true);
... ... @@ -144,8 +144,8 @@
144 144 virtual int iterate(bool wait = true) = 0;
145 145  
146 146 // Get/Set/Test without charset translation
147   - virtual string * get_text(int baddr, size_t len) = 0;
148   - virtual string * get_text_at(int row, int col, size_t sz) = 0;
  147 + virtual string get_text(int baddr, size_t len) = 0;
  148 + virtual string get_text_at(int row, int col, size_t sz) = 0;
149 149 virtual int set_text_at(int row, int col, const char *str) = 0;
150 150 virtual int cmp_text_at(int row, int col, const char *text) = 0;
151 151 virtual int wait_for_text_at(int row, int col, const char *key, int timeout);
... ... @@ -158,8 +158,8 @@
158 158 string ebc2asc(string &str);
159 159  
160 160 // Get/Set/Test with charset translation
161   - string * get_string(int baddr, size_t len);
162   - string * get_string_at(int row, int col, size_t sz);
  161 + string get_string(int baddr, size_t len);
  162 + string get_string_at(int row, int col, size_t sz);
163 163 int set_string_at(int row, int col, const char *str);
164 164 int cmp_string_at(int row, int col, const char *text);
165 165 int wait_for_string_at(int row, int col, const char *key, int timeout);
... ... @@ -190,21 +190,23 @@
190 190  
191 191 // Clipboard management
192 192 virtual int set_copy(const char *text);
193   - virtual string * get_copy(void);
  193 + virtual string get_copy(void);
194 194  
195   - virtual string * get_clipboard(void);
  195 + virtual string get_clipboard(void);
196 196 virtual int set_clipboard(const char *text);
197 197  
198 198 // Dialogs
199 199 virtual int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...);
200   - virtual string * file_chooser_dialog(int action, const char *title, const char *extension, const char *filename);
  200 + virtual string file_chooser_dialog(int action, const char *title, const char *extension, const char *filename);
201 201  
202 202 // File transfer
203 203 virtual int file_transfer(LIB3270_FT_OPTION options, const char *local, const char *remote, int lrecl = 0, int blksize = 0, int primspace = 0, int secspace = 0, int dft = 4096);
204 204  
205 205 // Charset translation
206   - string * get_3270_text(string *str);
207   - string * get_local_text(string *str);
  206 + const char * get_encoding(void);
  207 +
  208 + string get_3270_text(const char *str);
  209 + string get_local_text(const char *str);
208 210  
209 211 protected:
210 212 session();
... ...
src/loffice/Makefile.in 0 → 100644
... ... @@ -0,0 +1,192 @@
  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 +# Contatos:
  22 +#
  23 +# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  24 +# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
  25 +#
  26 +
  27 +PACKAGE_NAME=@PACKAGE_NAME@
  28 +SOURCES=info.cc get.cc set.cc service.cc init.cc connect.cc
  29 +
  30 +UNO_CLASSES= /com/sun/star/uno/XWeak \
  31 + /com/sun/star/uno/RuntimeException \
  32 + /com/sun/star/lang/WrappedTargetException
  33 +
  34 +
  35 +#---[ LibreOffice SDK ]--------------------------------------------------------
  36 +
  37 +OO_SDK_HOME=@OO_SDK_HOME@
  38 +OO_SDK_URE_HOME=@OO_SDK_URE_HOME@
  39 +
  40 +UNO=@UNO@
  41 +UNOPKG=@UNOPKG@
  42 +IDLC=@IDLC@
  43 +REGMERGE=@REGMERGE@
  44 +CPPUMAKER=@CPPUMAKER@
  45 +CONVERT=@CONVERT@
  46 +ZIP=@ZIP@
  47 +
  48 +TYPES_RDB=@OO_SDK_URE_HOME@/share/misc/types.rdb
  49 +
  50 +#---[ Paths ]------------------------------------------------------------------
  51 +
  52 +prefix=@prefix@
  53 +exec_prefix=@exec_prefix@
  54 +bindir=@bindir@
  55 +sbindir=@sbindir@
  56 +libdir=@libdir@
  57 +includedir=@includedir@
  58 +
  59 +#---[ Tools ]------------------------------------------------------------------
  60 +
  61 +CXX=@CXX@
  62 +MKDIR=@MKDIR_P@
  63 +
  64 +#---[ Paths ]------------------------------------------------------------------
  65 +
  66 +OBJDIR=.obj
  67 +BINDIR=.bin
  68 +RDBDIR=.rdb
  69 +URDDIR=.urd
  70 +
  71 +OBJDBG=$(OBJDIR)/Debug
  72 +BINDBG=$(BINDIR)/Debug
  73 +
  74 +OBJRLS=$(OBJDIR)/Release
  75 +BINRLS=$(BINDIR)/Release
  76 +
  77 +#---[ lib3270 common class ]---------------------------------------------------
  78 +
  79 +DEBUG_CFLAGS=-DDEBUG=1 -g -Wall
  80 +PW3270_CFLAGS=-I../include
  81 +CLASSLIBDIR=../classlib
  82 +include $(CLASSLIBDIR)/class.mak
  83 +
  84 +#---[ Build options ]----------------------------------------------------------
  85 +
  86 +CPPUENV="gcc3"
  87 +CXXFLAGS=@CXXFLAGS@ -fvisibility=hidden @DLL_CFLAGS@ -Wno-strict-aliasing -I../include -I./include -I$(includedir)/libreoffice -Wno-strict-aliasing -DCPPU_ENV=$(CPPUENV) -DLANGUAGE_BINDING_NAME=\"$(CPPUENV)\"
  88 +
  89 +OO_LDFLAGS=-L$(OO_SDK_HOME)/lib -L$(OO_SDK_URE_HOME)/lib \
  90 + -Wl,-rpath-link=$(OO_SDK_URE_HOME)/lib,-rpath=$(OO_SDK_URE_HOME)/lib \
  91 + -luno_cppu -luno_cppuhelpergcc3 -luno_salhelpergcc3
  92 +
  93 +#---[ Rules ]------------------------------------------------------------------
  94 +
  95 +$(URDDIR)/%.urd: %.idl
  96 + @echo " IDLC `basename $@`"
  97 + @$(MKDIR) `dirname $@`
  98 + @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $<
  99 +
  100 +$(URDDIR)/%.urd: /usr/share/idl/libreoffice/%.idl
  101 + @echo " IDLC `basename $@`"
  102 + @$(MKDIR) `dirname $@`
  103 + @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $<
  104 +
  105 +$(RDBDIR)/%.rdb: $(URDDIR)/%.urd
  106 + @echo " REGM `basename $@`"
  107 + @$(MKDIR) `dirname $@`
  108 + @$(REGMERGE) $@ /UCR $<
  109 +
  110 +include/%.hpp: $(RDBDIR)/%.rdb
  111 + @echo " CPPU `basename $@`"
  112 + @$(MKDIR) `dirname $@`
  113 + @$(CPPUMAKER) -O./include $(TYPES_RDB) $<
  114 +
  115 +$(OBJDBG)/%.o: %.cc include/$(PACKAGE_NAME)/lib3270.hpp \
  116 + $(foreach CLS, $(UNO_CLASSES), include/$(CLS).hpp) \
  117 + *.hpp Makefile
  118 + @echo " CC `basename $@`"
  119 + @mkdir -p `dirname $@`
  120 + @$(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $<
  121 +# $(DBG_CFLAGS) $(CXXFLAGS) $(LIB3270_CFLAGS) -DLIBNAME=\"$(BINDBG)/$(PROGRAM_NAME).uno@DLLEXT@\" -o $@ -c $<
  122 +
  123 +#---[ UNO targets ]------------------------------------------------------------
  124 +
  125 +include/$(PACKAGE_NAME)/lib3270.hpp: $(RDBDIR)/$(PACKAGE_NAME).rdb
  126 + @echo " CPPU `basename $@`"
  127 + @$(MKDIR) `dirname $@`
  128 + @$(CPPUMAKER) -O./include -T$(PACKAGE_NAME).lib3270 $(TYPES_RDB) $<
  129 +
  130 +
  131 +#---[ Debug targets ]----------------------------------------------------------
  132 +
  133 +Debug: $(BINDBG)/$(PACKAGE_NAME).oxt
  134 +
  135 +run: $(BINDBG)/$(PACKAGE_NAME).oxt
  136 + @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt
  137 + @libreoffice testmacros.odt
  138 + @SHARED=false $(UNOPKG) remove $(PACKAGE_NAME)
  139 +
  140 +add: $(BINDBG)/$(PACKAGE_NAME).oxt
  141 + @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt
  142 +
  143 +$(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@: \
  144 + $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \
  145 + $(CLASS_DEBUG_OBJECTS)
  146 + @echo " LD `basename $@`"
  147 + @$(MKDIR) `dirname $@`
  148 + $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) $(CLASS_LIBS) -o $@ $^
  149 +
  150 +
  151 +$(BINDBG)/$(PACKAGE_NAME).oxt: \
  152 + $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ \
  153 + $(RDBDIR)/$(PACKAGE_NAME).rdb \
  154 + description.xml \
  155 + manifest.xml \
  156 + description.txt
  157 + @rm -f $@
  158 + @$(MKDIR) `dirname $@`
  159 +
  160 + @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp
  161 +
  162 + @cp $(RDBDIR)/$(PACKAGE_NAME).rdb $(BINDBG)/$(PACKAGE).oxt.tmp
  163 + @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE).oxt.tmp
  164 +
  165 + @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp/META-INF
  166 + @cp manifest.xml $(BINDBG)/$(PACKAGE).oxt.tmp/META-INF
  167 +
  168 + @cp description.xml $(BINDBG)/$(PACKAGE).oxt.tmp
  169 + @cp description.txt $(BINDBG)/$(PACKAGE).oxt.tmp
  170 +
  171 + @$(CONVERT) ../$(PACKAGE_NAME)/pixmaps/$(PACKAGE_NAME).svg --format=png > $(BINDBG)/$(PACKAGE).oxt.tmp/$(PACKAGE_NAME).png
  172 +
  173 + @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE_NAME).oxt.tmp
  174 + @cd $(BINDBG)/$(PACKAGE).oxt.tmp ; $(ZIP) -r -m ../$(PACKAGE_NAME).oxt .
  175 + @rm -fr $(BINDBG)/$(PACKAGE).oxt.tmp
  176 + @echo $@ Ok.
  177 +
  178 +
  179 +#---[ Misc targets ]-----------------------------------------------------------
  180 +
  181 +cleanDebug: clean
  182 +
  183 +clean:
  184 + @rm -f *.urd
  185 + @rm -fr $(RDBDIR)
  186 + @rm -fr $(URDDIR)
  187 + @rm -fr include
  188 + @rm -f *.rdb
  189 + @rm -fr $(OBJDIR)
  190 + @rm -fr $(BINDIR)
  191 +
  192 +
... ...
src/loffice/connect.cc 0 → 100644
... ... @@ -0,0 +1,145 @@
  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 connect.cc e possui - 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 Mendonça)
  27 + *
  28 + *
  29 + */
  30 +
  31 + #include "globals.hpp"
  32 + #include "pw3270/lib3270.hpp"
  33 + #include <exception>
  34 + #include <com/sun/star/uno/RuntimeException.hdl>
  35 +
  36 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  37 +
  38 + using namespace pw3270_impl;
  39 +
  40 + ::sal_Int16 SAL_CALL session_impl::Connect() throw (::com::sun::star::uno::RuntimeException)
  41 + {
  42 + trace("%s: hSession=%p",__FUNCTION__,hSession);
  43 +
  44 + try
  45 + {
  46 + if(!hSession)
  47 + hSession = h3270::session::get_default();
  48 +
  49 + return hSession->connect(false);
  50 +
  51 + } catch(std::exception &e)
  52 + {
  53 + trace("%s failed: %s",__FUNCTION__,e.what());
  54 +
  55 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  56 +
  57 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  58 +
  59 + }
  60 +
  61 + return -1;
  62 +
  63 +
  64 + }
  65 +
  66 + ::sal_Int16 SAL_CALL session_impl::Disconnect() throw (::com::sun::star::uno::RuntimeException)
  67 + {
  68 + try
  69 + {
  70 + CHECK_SESSION_HANDLE
  71 +
  72 + return hSession->disconnect();
  73 +
  74 + } catch(std::exception &e)
  75 + {
  76 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  77 +
  78 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  79 +
  80 + }
  81 +
  82 + return -1;
  83 +
  84 + }
  85 +
  86 + ::sal_Bool SAL_CALL session_impl::isConnected() throw (::com::sun::star::uno::RuntimeException)
  87 + {
  88 + try
  89 + {
  90 + CHECK_SESSION_HANDLE
  91 +
  92 + return hSession->is_connected();
  93 +
  94 + } catch(std::exception &e)
  95 + {
  96 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  97 +
  98 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  99 +
  100 + }
  101 +
  102 + return -1;
  103 + }
  104 +
  105 + ::sal_Bool SAL_CALL session_impl::isReady() throw (::com::sun::star::uno::RuntimeException)
  106 + {
  107 + try
  108 + {
  109 + CHECK_SESSION_HANDLE
  110 +
  111 + return hSession->is_ready();
  112 +
  113 + } catch(std::exception &e)
  114 + {
  115 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  116 +
  117 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  118 +
  119 + }
  120 +
  121 + return -1;
  122 +
  123 + }
  124 +
  125 + ::sal_Int16 SAL_CALL session_impl::waitForReady( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException)
  126 + {
  127 + try
  128 + {
  129 + CHECK_SESSION_HANDLE
  130 +
  131 + return hSession->wait_for_ready(seconds);
  132 +
  133 + } catch(std::exception &e)
  134 + {
  135 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  136 +
  137 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  138 +
  139 + }
  140 +
  141 + return -1;
  142 +
  143 + }
  144 +
  145 +
... ...
src/loffice/description.txt 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +Uno/OpenOffice library allowing 3270 access from StarBasic
  2 +
... ...
src/loffice/description.xml.in 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<description xmlns="http://openoffice.org/extensions/description/2006"
  3 +xmlns:d="http://openoffice.org/extensions/description/2006"
  4 +xmlns:xlink="http://www.w3.org/1999/xlink">
  5 +
  6 + <version value="@PACKAGE_VERSION@" />
  7 +
  8 + <identifier value="@PACKAGE_NAME@" />
  9 +
  10 + <platform value="linux_@host_cpu@" />
  11 +
  12 + <dependencies>
  13 + <OpenOffice.org-minimal-version value="2.2" d:name="OpenOffice.org 2.2"/>
  14 + </dependencies>
  15 +
  16 + <display-name>
  17 + <name lang="en">3270 access extension</name>
  18 + </display-name>
  19 +
  20 + <icon>
  21 + <default xlink:href="@PACKAGE_NAME@.png" />
  22 + </icon>
  23 +
  24 + <extension-description>
  25 + <src xlink:href="description.txt" lang="en" />
  26 + </extension-description>
  27 +
  28 +
  29 +
  30 +</description>
... ...
src/loffice/get.cc 0 → 100644
... ... @@ -0,0 +1,88 @@
  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 get.cc e possui - 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 Mendonça)
  27 + *
  28 + * Referência:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
  31 + *
  32 + */
  33 +
  34 + #include "globals.hpp"
  35 + #include <lib3270/config.h>
  36 + #include "pw3270/lib3270.hpp"
  37 +
  38 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  39 +
  40 + using namespace pw3270_impl;
  41 +
  42 + ::rtl::OUString session_impl::getVersion() throw (RuntimeException)
  43 + {
  44 + trace("%s: hSession=%p",__FUNCTION__,hSession);
  45 + return OUString( RTL_CONSTASCII_USTRINGPARAM(PACKAGE_VERSION) );
  46 + }
  47 +
  48 + ::rtl::OUString session_impl::getRevision() throw (RuntimeException)
  49 + {
  50 + trace("%s: hSession=%p",__FUNCTION__,hSession);
  51 + return OUString( RTL_CONSTASCII_USTRINGPARAM(PACKAGE_REVISION) );
  52 + }
  53 +
  54 + ::rtl::OUString SAL_CALL session_impl::getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException)
  55 + {
  56 + string s;
  57 +
  58 + try
  59 + {
  60 + CHECK_SESSION_HANDLE
  61 + s = hSession->get_text_at(row,col,size);
  62 +
  63 + } catch(std::exception &e)
  64 + {
  65 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  66 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  67 + }
  68 +
  69 + return OUString(s.c_str(), s.length(), encoding, RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  70 + }
  71 +
  72 + ::sal_Int16 SAL_CALL session_impl::waitForTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& str, ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException)
  73 + {
  74 + try
  75 + {
  76 + CHECK_SESSION_HANDLE
  77 + OString vlr = rtl::OUStringToOString(str,encoding);
  78 + return hSession->wait_for_text_at(row,col,vlr.getStr(),seconds);
  79 +
  80 + } catch(std::exception &e)
  81 + {
  82 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  83 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  84 + }
  85 +
  86 + return -1;
  87 +
  88 + }
... ...
src/loffice/globals.hpp 0 → 100644
... ... @@ -0,0 +1,143 @@
  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 globals.hpp e possui - 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 + *
  28 + * Referências:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/C%2B%2B_Component
  31 + *
  32 + *
  33 + */
  34 +
  35 +#ifndef PW3270_OXT_GLOBALS_HPP_INCLUDED
  36 +
  37 + #define PW3270_OXT_GLOBALS_HPP_INCLUDED 1
  38 +
  39 + #define CPPUENV "gcc3"
  40 +
  41 + #ifdef _WIN32
  42 + #define SAL_W32
  43 + #else
  44 + #define UNX 1
  45 + #define GCC 1
  46 + #define LINUX 1
  47 + #define HAVE_GCC_VISIBILITY_FEATURE 1
  48 + #endif
  49 +
  50 +
  51 + #include <cppuhelper/implbase4.hxx> // "3" implementing three interfaces
  52 + #include <cppuhelper/factory.hxx>
  53 + #include <com/sun/star/lang/XInitialization.hpp>
  54 +// #include <cppuhelper/implementationentry.hxx>
  55 + #include <com/sun/star/lang/XServiceInfo.hpp>
  56 +
  57 +#ifdef DEBUG
  58 + #include <com/sun/star/lang/XMain.hpp>
  59 +#endif // DEBUG
  60 +
  61 + #include <com/sun/star/uno/RuntimeException.hpp>
  62 +
  63 + #ifdef DEBUG
  64 + #include <stdio.h>
  65 + #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
  66 + #else
  67 + #define trace(x, ...) // __VA_ARGS__
  68 + #endif
  69 +
  70 + #include <pw3270/lib3270.hpp>
  71 + #include <pw3270/class.h>
  72 +
  73 + #define DLL_PUBLIC __attribute__((visibility("default")))
  74 +
  75 + #define CHECK_SESSION_HANDLE if(!hSession) hSession = h3270::session::get_default();
  76 +
  77 +
  78 + using namespace ::rtl; // for OUString
  79 + using namespace ::com::sun::star; // for sdk interfaces
  80 + using namespace ::com::sun::star::lang; // for sdk interfaces
  81 + using namespace ::com::sun::star::uno; // for basic types
  82 + using namespace PW3270_NAMESPACE;
  83 +
  84 + namespace pw3270_impl
  85 + {
  86 + // https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
  87 + class DLL_PUBLIC session_impl : public ::cppu::WeakImplHelper4< ::pw3270::lib3270, XServiceInfo, XMain, XInitialization >
  88 + {
  89 + public:
  90 +
  91 + session_impl();
  92 + virtual ~session_impl();
  93 +
  94 + // XMain
  95 + virtual ::sal_Int32 SAL_CALL run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception);
  96 +
  97 + // XInitialization will be called upon createInstanceWithArguments[AndContext]()
  98 + virtual void SAL_CALL initialize( Sequence< Any > const & args ) throw (Exception);
  99 +
  100 + // XServiceInfo
  101 + virtual OUString SAL_CALL getImplementationName() throw (RuntimeException);
  102 + virtual sal_Bool SAL_CALL supportsService( OUString const & serviceName ) throw (RuntimeException);
  103 + virtual Sequence< OUString > SAL_CALL getSupportedServiceNames() throw (RuntimeException);
  104 +
  105 + // lib3270
  106 + virtual ::rtl::OUString SAL_CALL getVersion() throw (RuntimeException);
  107 + virtual ::rtl::OUString SAL_CALL getRevision() throw (RuntimeException);
  108 + virtual ::sal_Int16 SAL_CALL iterate( ::sal_Bool wait ) throw (::com::sun::star::uno::RuntimeException);
  109 +
  110 + virtual ::sal_Int16 SAL_CALL setSessionName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException);
  111 +
  112 + virtual ::sal_Int16 SAL_CALL setHost( const ::rtl::OUString& url ) throw (::com::sun::star::uno::RuntimeException);
  113 + virtual ::sal_Int16 SAL_CALL Connect() throw (::com::sun::star::uno::RuntimeException);
  114 + virtual ::sal_Int16 SAL_CALL Disconnect() throw (::com::sun::star::uno::RuntimeException);
  115 +
  116 + // State
  117 + virtual ::sal_Bool SAL_CALL isConnected() throw (::com::sun::star::uno::RuntimeException);
  118 + virtual ::sal_Bool SAL_CALL isReady() throw (::com::sun::star::uno::RuntimeException);
  119 +
  120 + // Screen contents
  121 + virtual ::rtl::OUString SAL_CALL getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException);
  122 + virtual ::sal_Int16 SAL_CALL setTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& str ) throw (::com::sun::star::uno::RuntimeException);
  123 +
  124 + // Wait
  125 + virtual ::sal_Int16 SAL_CALL waitForReady( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException);
  126 + virtual ::sal_Int16 SAL_CALL waitForTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& str, ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException);
  127 +
  128 +
  129 +
  130 + private:
  131 + h3270::session * hSession;
  132 + rtl_TextEncoding encoding;
  133 +
  134 + };
  135 +
  136 + extern Sequence< OUString > SAL_CALL getSupportedServiceNames_session_impl();
  137 + extern OUString SAL_CALL getImplementationName_session_impl();
  138 + extern Reference< XInterface > SAL_CALL create_session_impl(Reference< XComponentContext > const & xContext ) SAL_THROW( () );
  139 +
  140 + };
  141 +
  142 +
  143 +#endif // PW3270_OXT_GLOBALS_HPP_INCLUDED
... ...
src/loffice/info.cc 0 → 100644
... ... @@ -0,0 +1,58 @@
  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 info.cc e possui - 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 Mendonça)
  27 + *
  28 + * Referência:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
  31 + *
  32 + */
  33 +
  34 + #include "globals.hpp"
  35 + #include "pw3270/lib3270.hpp"
  36 +
  37 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  38 +
  39 +using namespace pw3270_impl;
  40 +
  41 +// XServiceInfo implementation
  42 +OUString session_impl::getImplementationName() throw (RuntimeException)
  43 +{
  44 + // unique implementation name
  45 + return OUString( RTL_CONSTASCII_USTRINGPARAM("pw3270.pw3270_impl.session") );
  46 +}
  47 +
  48 +sal_Bool session_impl::supportsService( OUString const & serviceName ) throw (RuntimeException)
  49 +{
  50 + // this object only supports one service, so the test is simple
  51 + return serviceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("pw3270.session") );
  52 +}
  53 +
  54 +Sequence< OUString > session_impl::getSupportedServiceNames() throw (RuntimeException)
  55 +{
  56 + return getSupportedServiceNames_session_impl();
  57 +}
  58 +
... ...
src/loffice/init.cc 0 → 100644
... ... @@ -0,0 +1,95 @@
  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 init.cc e possui - 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 Mendonça)
  27 + *
  28 + * Referência:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Create_Instance_with_Arguments
  31 + *
  32 + */
  33 +
  34 + #include "globals.hpp"
  35 + #include <com/sun/star/lang/IllegalArgumentException.hpp>
  36 + #include "pw3270/lib3270.hpp"
  37 +
  38 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  39 +
  40 +using namespace pw3270_impl;
  41 +
  42 +
  43 +session_impl::session_impl()
  44 +{
  45 + this->hSession = NULL;
  46 + this->encoding = RTL_TEXTENCODING_ISO_8859_1;
  47 +}
  48 +
  49 +session_impl::~session_impl()
  50 +{
  51 + if(this->hSession)
  52 + delete this->hSession;
  53 +}
  54 +
  55 +
  56 +// XInitialization implementation
  57 +void session_impl::initialize( Sequence< Any > const & args ) throw (Exception)
  58 +{
  59 + if (1 != args.getLength())
  60 + {
  61 + throw lang::IllegalArgumentException(
  62 + OUString( RTL_CONSTASCII_USTRINGPARAM("give a string instanciating this component!") ),
  63 + (::cppu::OWeakObject *)this,
  64 + 0 );
  65 + }
  66 +
  67 + // Initialize
  68 +
  69 + // TODO: Get arguments.
  70 +
  71 +
  72 +}
  73 +
  74 +// XMain
  75 +::sal_Int32 SAL_CALL session_impl::run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception)
  76 +{
  77 +
  78 +
  79 + return 0;
  80 +}
  81 +
  82 +::sal_Int16 SAL_CALL session_impl::iterate( ::sal_Bool wait ) throw (::com::sun::star::uno::RuntimeException)
  83 +{
  84 + try
  85 + {
  86 + CHECK_SESSION_HANDLE
  87 + return hSession->iterate(wait);
  88 +
  89 + } catch(std::exception &e)
  90 + {
  91 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  92 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  93 + }
  94 + return -1;
  95 +}
... ...
src/loffice/loffice3270.cbp 0 → 100644
... ... @@ -0,0 +1,64 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2 +<CodeBlocks_project_file>
  3 + <FileVersion major="1" minor="6" />
  4 + <Project>
  5 + <Option title="pw3270 openOffice" />
  6 + <Option makefile_is_custom="1" />
  7 + <Option pch_mode="2" />
  8 + <Option compiler="gcc" />
  9 + <Build>
  10 + <Target title="Debug">
  11 + <Option output=".bin/Debug/pw3270 LibreOffice" prefix_auto="1" extension_auto="1" />
  12 + <Option object_output=".obj/Debug/" />
  13 + <Option type="1" />
  14 + <Option compiler="gcc" />
  15 + <Compiler>
  16 + <Add option="-g" />
  17 + </Compiler>
  18 + </Target>
  19 + <Target title="Release">
  20 + <Option output=".bin/Release/pw3270 LibreOffice" prefix_auto="1" extension_auto="1" />
  21 + <Option object_output=".obj/Release/" />
  22 + <Option type="1" />
  23 + <Option compiler="gcc" />
  24 + <Compiler>
  25 + <Add option="-O2" />
  26 + </Compiler>
  27 + <Linker>
  28 + <Add option="-s" />
  29 + </Linker>
  30 + </Target>
  31 + </Build>
  32 + <Compiler>
  33 + <Add option="-Wall" />
  34 + </Compiler>
  35 + <Unit filename="../../configure.ac" />
  36 + <Unit filename="../classlib/Makefile.in" />
  37 + <Unit filename="../classlib/class.mak" />
  38 + <Unit filename="../classlib/class.mak.in" />
  39 + <Unit filename="../classlib/exception.cc" />
  40 + <Unit filename="../classlib/local.cc" />
  41 + <Unit filename="../classlib/remote.cc" />
  42 + <Unit filename="../classlib/session.cc" />
  43 + <Unit filename="../include/pw3270/class.h" />
  44 + <Unit filename="Makefile.in" />
  45 + <Unit filename="connect.cc" />
  46 + <Unit filename="get.cc" />
  47 + <Unit filename="globals.hpp" />
  48 + <Unit filename="include/pw3270/lib3270.hdl" />
  49 + <Unit filename="include/pw3270/lib3270.hpp" />
  50 + <Unit filename="info.cc" />
  51 + <Unit filename="init.cc" />
  52 + <Unit filename="manifest.xml.in" />
  53 + <Unit filename="pw3270.idl" />
  54 + <Unit filename="service.cc" />
  55 + <Unit filename="set.cc" />
  56 + <Unit filename="testprogram.cc" />
  57 + <Extensions>
  58 + <code_completion />
  59 + <envvars />
  60 + <debugger />
  61 + <lib_finder disable_auto="1" />
  62 + </Extensions>
  63 + </Project>
  64 +</CodeBlocks_project_file>
... ...
src/loffice/manifest.xml.in 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<manifest:manifest>
  3 +<manifest:file-entry manifest:media-type= "application/vnd.sun.star.uno-component;type=native;platform=Linux_@host_cpu@" manifest:full-path="@PACKAGE_NAME@.uno.so"/>
  4 +<manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-typelibrary;type=RDB" manifest:full-path="@PACKAGE_NAME@.rdb"/>
  5 +</manifest:manifest>
  6 +
... ...
src/loffice/pw3270.idl 0 → 100644
... ... @@ -0,0 +1,79 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como pw3270.idl e possui - 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 Mendonça)
  27 + *
  28 + * Referências:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C++/C++_Component
  31 + *
  32 + */
  33 +
  34 +#include <com/sun/star/uno/XInterface.idl>
  35 +#include <com/sun/star/lang/XInitialization.idl>
  36 +#include <com/sun/star/lang/XMain.idl>
  37 +
  38 +module pw3270
  39 +{
  40 + /*
  41 + * Interface to lib3270
  42 + */
  43 + interface lib3270 : com::sun::star::uno::XInterface
  44 + {
  45 + // Constants
  46 + string getVersion();
  47 + string getRevision();
  48 +
  49 + // Host definition
  50 + short setHost([in] string url);
  51 + short Connect();
  52 + short Disconnect();
  53 + short iterate([in] boolean wait);
  54 +
  55 + // Screen contents
  56 + string getTextAt([in] short row, [in] short col, [in] short size);
  57 + short setTextAt([in] short row, [in] short col, [in] string str);
  58 + short waitForTextAt([in] short row, [in] short col, [in] string str, [in] short seconds);
  59 +
  60 + // Misc Settings
  61 + short setSessionName([in] string name);
  62 +
  63 + // State
  64 + boolean isConnected();
  65 + boolean isReady();
  66 +
  67 + // Waiting
  68 + short waitForReady([in] short seconds);
  69 +
  70 + };
  71 +
  72 + service session
  73 + {
  74 + interface lib3270;
  75 + interface com::sun::star::lang::XInitialization;
  76 + interface com::sun::star::lang::XMain;
  77 + };
  78 +};
  79 +
... ...
src/loffice/research.sh 0 → 100755
... ... @@ -0,0 +1,44 @@
  1 +#!/bin/bash
  2 +
  3 +OO_SDK_HOME=/usr/lib64/libreoffice/sdk
  4 +IDLC=/usr/lib64/libreoffice/sdk/bin/idlc
  5 +CPPUMAKER=/usr/lib64/libreoffice/sdk/bin/cppumaker
  6 +TYPES_RDB=/usr/lib64/libreoffice/ure/share/misc/types.rdb
  7 +REGMERGE=/usr/lib64/libreoffice/ure/bin/regmerge
  8 +
  9 +$IDLC -C -I$OO_SDK_HOME/idl -O. pw3270.idl
  10 +if [ "$?" != "0" ]; then
  11 + exit -1
  12 +fi
  13 +
  14 +
  15 +$REGMERGE pw3270.rdb /UCR pw3270.urd
  16 +if [ "$?" != "0" ]; then
  17 + exit -1
  18 +fi
  19 +
  20 +
  21 +$CPPUMAKER -O./include -Tpw3270.lib3270 $TYPES_RDB pw3270.rdb
  22 +if [ "$?" != "0" ]; then
  23 + exit -1
  24 +fi
  25 +
  26 +# XWeak
  27 +$IDLC -C -I$OO_SDK_HOME/idl -O. /usr/share/idl/libreoffice/com/sun/star/uno/XWeak.idl
  28 +if [ "$?" != "0" ]; then
  29 + exit -1
  30 +fi
  31 +
  32 +$REGMERGE XWeak.rdb /UCR XWeak.urd
  33 +if [ "$?" != "0" ]; then
  34 + exit -1
  35 +fi
  36 +
  37 +$CPPUMAKER -O./include $TYPES_RDB XWeak.rdb
  38 +if [ "$?" != "0" ]; then
  39 + exit -1
  40 +fi
  41 +
  42 +
  43 +echo ok
  44 +
... ...
src/loffice/service.cc 0 → 100644
... ... @@ -0,0 +1,98 @@
  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 info.cc e possui - 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 Mendonça)
  27 + *
  28 + * Referência:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Providing_a_Single_Factory_Using_a_Helper_Method
  31 + *
  32 + */
  33 +
  34 + #include "globals.hpp"
  35 + #include <cppuhelper/implementationentry.hxx>
  36 + #include "pw3270/lib3270.hpp"
  37 +
  38 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  39 +
  40 +namespace pw3270_impl
  41 +{
  42 + Sequence< OUString > SAL_CALL getSupportedServiceNames_session_impl()
  43 + {
  44 + Sequence<OUString> names(1);
  45 + names[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("pw3270.session"));
  46 + return names;
  47 + }
  48 +
  49 + OUString SAL_CALL getImplementationName_session_impl()
  50 + {
  51 + return OUString( RTL_CONSTASCII_USTRINGPARAM("pw3270.lib3270.session") );
  52 + }
  53 +
  54 + Reference< XInterface > SAL_CALL create_session_impl(Reference< XComponentContext > const & xContext ) SAL_THROW( () )
  55 + {
  56 + return static_cast< lang::XTypeProvider * >( new session_impl() );
  57 + }
  58 +
  59 + static struct ::cppu::ImplementationEntry s_component_entries [] =
  60 + {
  61 + {
  62 + create_session_impl,
  63 + getImplementationName_session_impl,
  64 + getSupportedServiceNames_session_impl,
  65 + ::cppu::createSingleComponentFactory,
  66 + 0,
  67 + 0
  68 + },
  69 + {
  70 + 0,
  71 + 0,
  72 + 0,
  73 + 0,
  74 + 0,
  75 + 0
  76 + }
  77 + };
  78 +
  79 +}
  80 +
  81 +extern "C"
  82 +{
  83 + DLL_PUBLIC void * SAL_CALL component_getFactory(sal_Char const * implName, lang::XMultiServiceFactory * xMgr,registry::XRegistryKey * xRegistry )
  84 + {
  85 + return ::cppu::component_getFactoryHelper(implName, xMgr, xRegistry, ::pw3270_impl::s_component_entries );
  86 + }
  87 +
  88 + DLL_PUBLIC sal_Bool SAL_CALL component_writeInfo(lang::XMultiServiceFactory * xMgr, registry::XRegistryKey * xRegistry )
  89 + {
  90 + return ::cppu::component_writeInfoHelper(xMgr, xRegistry, ::pw3270_impl::s_component_entries );
  91 + }
  92 +
  93 + DLL_PUBLIC void SAL_CALL component_getImplementationEnvironment(sal_Char const ** ppEnvTypeName, uno_Environment ** ppEnv )
  94 + {
  95 + * ppEnvTypeName = LANGUAGE_BINDING_NAME;
  96 + }
  97 +
  98 +}
... ...
src/loffice/set.cc 0 → 100644
... ... @@ -0,0 +1,143 @@
  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 get.cc e possui - 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 Mendonça)
  27 + *
  28 + * Referência:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
  31 + *
  32 + */
  33 +
  34 + #include "globals.hpp"
  35 + #include <exception>
  36 + #include <com/sun/star/uno/RuntimeException.hdl>
  37 + #include <com/sun/star/lang/IllegalArgumentException.hpp>
  38 + #include "pw3270/lib3270.hpp"
  39 +
  40 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  41 +
  42 + using namespace pw3270_impl;
  43 + using namespace com::sun::star::uno;
  44 +
  45 + ::sal_Int16 SAL_CALL session_impl::setSessionName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException)
  46 + {
  47 + if(hSession)
  48 + {
  49 + // Remove old session
  50 + delete hSession;
  51 + hSession = NULL;
  52 + }
  53 +
  54 + OString vlr = rtl::OUStringToOString( name , RTL_TEXTENCODING_UNICODE );
  55 +
  56 + trace("%s(\"%s\")",__FUNCTION__,vlr.getStr());
  57 +
  58 + try
  59 + {
  60 + string charset;
  61 +
  62 + hSession = h3270::session::create(((const char *) vlr.getStr()));
  63 +
  64 + trace("%s: hSession(\"%s\"=%p",__FUNCTION__,vlr.getStr(),hSession);
  65 +
  66 + } catch(std::exception &e)
  67 + {
  68 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  69 +
  70 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  71 +
  72 + return -1;
  73 +
  74 + }
  75 +
  76 + string charset = hSession->get_display_charset();
  77 +
  78 + trace("Charset=\"%s\"",charset.c_str());
  79 +
  80 + if(!charset.compare("ISO-8859-1"))
  81 + {
  82 + encoding = RTL_TEXTENCODING_ISO_8859_1;
  83 + }
  84 + else if(!charset.compare("UTF-8"))
  85 + {
  86 + encoding = RTL_TEXTENCODING_UTF8;
  87 + }
  88 + else
  89 + {
  90 + string s = "Unable to convert the host's display charset " + charset + ".";
  91 +
  92 + throw lang::IllegalArgumentException(
  93 + OUString( RTL_CONSTASCII_USTRINGPARAM(s.c_str()) ),
  94 + (::cppu::OWeakObject *)this,
  95 + 0 );
  96 +
  97 + }
  98 +
  99 + return 0;
  100 +
  101 + }
  102 +
  103 + ::sal_Int16 SAL_CALL session_impl::setHost( const ::rtl::OUString& url ) throw (::com::sun::star::uno::RuntimeException)
  104 + {
  105 + if(!hSession)
  106 + hSession = h3270::session::get_default();
  107 +
  108 + OString vlr = rtl::OUStringToOString( url , RTL_TEXTENCODING_UNICODE );
  109 +
  110 + try
  111 + {
  112 +
  113 + return hSession->set_url(vlr.getStr());
  114 +
  115 + } catch(std::exception &e)
  116 + {
  117 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  118 +
  119 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  120 +
  121 + }
  122 +
  123 + return -1;
  124 + }
  125 +
  126 + ::sal_Int16 SAL_CALL session_impl::setTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& str ) throw (::com::sun::star::uno::RuntimeException)
  127 + {
  128 + try
  129 + {
  130 + CHECK_SESSION_HANDLE
  131 + OString vlr = rtl::OUStringToOString(str,encoding);
  132 + return hSession->set_text_at(row,col,vlr.getStr());
  133 +
  134 + } catch(std::exception &e)
  135 + {
  136 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  137 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  138 + }
  139 +
  140 + return -1;
  141 +
  142 + }
  143 +
... ...
src/loffice/testmacros.odt 0 → 100644
No preview for this file type
src/loffice/testprogram.cc 0 → 100644
... ... @@ -0,0 +1,148 @@
  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 testprogram.cc e possui - 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 Mendonça)
  27 + *
  28 + */
  29 +
  30 + #include "globals.hpp"
  31 +
  32 + #include <cppuhelper/bootstrap.hxx>
  33 + #include <com/sun/star/bridge/XUnoUrlResolver.hpp>
  34 + #include <com/sun/star/lang/XMultiServiceFactory.hpp>
  35 +
  36 + #include "pw3270/lib3270.hpp"
  37 +
  38 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  39 +
  40 +using namespace com::sun::star::uno;
  41 +using namespace com::sun::star::lang;
  42 +using namespace com::sun::star::bridge;
  43 +using namespace rtl;
  44 +using namespace cppu;
  45 +
  46 +int SAL_CALL main(int argc, char **argv)
  47 +{
  48 + Reference< XComponentContext > rComponentContext = defaultBootstrap_InitialComponentContext();
  49 + OSL_ENSURE( xContext.is(), "### cannot creage intial component context!" );
  50 +
  51 +/*
  52 + Reference< XSimpleRegistry > xReg = DefaultRegistry();
  53 +
  54 + Reference< XSimpleRegistry > xReg = createSimpleRegistry();
  55 +
  56 + OSL_ENSURE( xReg.is(), "### cannot get service instance of \"SimpleRegistry\"!" );
  57 +
  58 + xReg->open(OUString::createFromAscii("pw3270.rdb"), sal_False, sal_False);
  59 +
  60 + OSL_ENSURE( xReg->isValid(), "### cannot open test registry \"pw3270.rdb\"!" );
  61 +
  62 +
  63 + TRACE("%s","Calling bootstrap_InitialComponentContext");
  64 + Reference< XComponentContext > xContext = bootstrap_InitialComponentContext(xReg);
  65 + OSL_ENSURE( xContext.is(), "### cannot creage intial component context!" );
  66 +
  67 + TRACE("%s","Calling getServiceManager\n");
  68 + Reference< XMultiComponentFactory > xMgr = xContext->getServiceManager();
  69 + OSL_ENSURE( xMgr.is(), "### cannot get initial service manager!" );
  70 +
  71 + // register my component
  72 + TRACE("%s","Calling createInstanceWithContext");
  73 +
  74 + Reference< XImplementationRegistration > xImplReg(
  75 + xMgr->createInstanceWithContext(OUString::createFromAscii("com.sun.star.registry.ImplementationRegistration"), xContext), UNO_QUERY);
  76 + OSL_ENSURE( xImplReg.is(), "### cannot get service instance of \"com.sun.star.registry.ImplementationRegistration\"!" );
  77 +
  78 + if (xImplReg.is())
  79 + {
  80 + const char *libname = LIBNAME;
  81 +
  82 + TRACE("Loading %s",libname);
  83 +
  84 + xImplReg->registerImplementation(
  85 + OUString::createFromAscii("com.sun.star.loader.SharedLibrary"), // loader for component
  86 + OUString::createFromAscii(libname), // component location
  87 + Reference< XSimpleRegistry >() // registry omitted,
  88 + // defaulting to service manager registry used
  89 + );
  90 +
  91 + // get an object instance
  92 + printf("Calling createInstanceWithContext(%s)\n",IMPLNAME);
  93 +
  94 + Reference< XInterface > xx ;
  95 + xx = xMgr->createInstanceWithContext(OUString::createFromAscii(IMPLNAME), xContext);
  96 +
  97 + printf("Instance: %p\n",&xx);
  98 +
  99 + Reference< pw3270intf > srv( xx, UNO_QUERY );
  100 +
  101 + OSL_ENSURE( srv.is(), "### cannot get service instance!");
  102 +
  103 + printf("object.is(): %d\n",srv.is());
  104 +
  105 + if(srv.is())
  106 + {
  107 + // Wait for commands
  108 + OString str;
  109 + char buffer[80];
  110 + printf("getConnectionState: %d\n", srv->getConnectionState());
  111 +
  112 + str = OUStringToOString( srv->getVersion(),RTL_TEXTENCODING_UTF8);
  113 + printf("Version:\t%s\n",str.pData->buffer);
  114 +
  115 + str = OUStringToOString( srv->getRevision(),RTL_TEXTENCODING_UTF8);
  116 + printf("Revision:\t%s\n",str.pData->buffer);
  117 +
  118 + printf("Connect(): %d\n" , srv->Connect(OUString::createFromAscii("L:3270.df.bb:9023"),10));
  119 +
  120 + sleep(5);
  121 +
  122 + //str = OUStringToOString( srv->getScreenContentAt(20,39,5),RTL_TEXTENCODING_UTF8);
  123 + //Trace("ContentsAt(20,39): \"%s\"",str.pData->buffer);
  124 + printf("waitForStringAt(SISBB) returned %d\n",srv->waitForStringAt(20,39,OUString::createFromAscii("SISBB"),20));
  125 + printf("sendEnterKey() returned %d\n",srv->sendEnterKey());
  126 + printf("waitForStringAt(Senha) returned %d\n",srv->waitForStringAt(14,2,OUString::createFromAscii("Senha"),20));
  127 + printf("setStringAt returned %d\n",srv->setStringAt(13,21,OUString::createFromAscii("c1103788")));
  128 +
  129 + str = OUStringToOString( srv->getScreenContent(),RTL_TEXTENCODING_UTF8);
  130 + printf("Entire screen:\n%s\n",str.pData->buffer);
  131 +
  132 + printf("Enter to exit...\n");
  133 + fgets(buffer,80,stdin);
  134 +
  135 + printf("Disconnect(): %d\n" , srv->Disconnect());
  136 +
  137 + sleep(5);
  138 +
  139 + }
  140 + }
  141 +
  142 +
  143 + Reference< XComponent >::query( xContext )->dispose();
  144 +
  145 +*/
  146 +
  147 + return 0;
  148 +}
... ...
src/openoffice/Makefile.in
... ... @@ -1,192 +0,0 @@
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   -# Contatos:
22   -#
23   -# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
24   -# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
25   -#
26   -
27   -PACKAGE_NAME=@PACKAGE_NAME@
28   -SOURCES=info.cc get.cc set.cc service.cc init.cc connect.cc
29   -
30   -UNO_CLASSES= /com/sun/star/uno/XWeak \
31   - /com/sun/star/uno/RuntimeException \
32   - /com/sun/star/lang/WrappedTargetException
33   -
34   -
35   -#---[ LibreOffice SDK ]--------------------------------------------------------
36   -
37   -OO_SDK_HOME=@OO_SDK_HOME@
38   -OO_SDK_URE_HOME=@OO_SDK_URE_HOME@
39   -
40   -UNO=@UNO@
41   -UNOPKG=@UNOPKG@
42   -IDLC=@IDLC@
43   -REGMERGE=@REGMERGE@
44   -CPPUMAKER=@CPPUMAKER@
45   -CONVERT=@CONVERT@
46   -ZIP=@ZIP@
47   -
48   -TYPES_RDB=@OO_SDK_URE_HOME@/share/misc/types.rdb
49   -
50   -#---[ Paths ]------------------------------------------------------------------
51   -
52   -prefix=@prefix@
53   -exec_prefix=@exec_prefix@
54   -bindir=@bindir@
55   -sbindir=@sbindir@
56   -libdir=@libdir@
57   -includedir=@includedir@
58   -
59   -#---[ Tools ]------------------------------------------------------------------
60   -
61   -CXX=@CXX@
62   -MKDIR=@MKDIR_P@
63   -
64   -#---[ Paths ]------------------------------------------------------------------
65   -
66   -OBJDIR=.obj
67   -BINDIR=.bin
68   -RDBDIR=.rdb
69   -URDDIR=.urd
70   -
71   -OBJDBG=$(OBJDIR)/Debug
72   -BINDBG=$(BINDIR)/Debug
73   -
74   -OBJRLS=$(OBJDIR)/Release
75   -BINRLS=$(BINDIR)/Release
76   -
77   -#---[ lib3270 common class ]---------------------------------------------------
78   -
79   -DEBUG_CFLAGS=-DDEBUG=1 -g -Wall
80   -PW3270_CFLAGS=-I../include
81   -CLASSLIBDIR=../classlib
82   -include $(CLASSLIBDIR)/class.mak
83   -
84   -#---[ Build options ]----------------------------------------------------------
85   -
86   -CPPUENV="gcc3"
87   -CXXFLAGS=@CXXFLAGS@ -fvisibility=hidden @DLL_CFLAGS@ -Wno-strict-aliasing -I../include -I./include -I$(includedir)/libreoffice -Wno-strict-aliasing -DCPPU_ENV=$(CPPUENV) -DLANGUAGE_BINDING_NAME=\"$(CPPUENV)\"
88   -
89   -OO_LDFLAGS=-L$(OO_SDK_HOME)/lib -L$(OO_SDK_URE_HOME)/lib \
90   - -Wl,-rpath-link=$(OO_SDK_URE_HOME)/lib,-rpath=$(OO_SDK_URE_HOME)/lib \
91   - -luno_cppu -luno_cppuhelpergcc3 -luno_salhelpergcc3
92   -
93   -#---[ Rules ]------------------------------------------------------------------
94   -
95   -$(URDDIR)/%.urd: %.idl
96   - @echo " IDLC `basename $@`"
97   - @$(MKDIR) `dirname $@`
98   - @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $<
99   -
100   -$(URDDIR)/%.urd: /usr/share/idl/libreoffice/%.idl
101   - @echo " IDLC `basename $@`"
102   - @$(MKDIR) `dirname $@`
103   - @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $<
104   -
105   -$(RDBDIR)/%.rdb: $(URDDIR)/%.urd
106   - @echo " REGM `basename $@`"
107   - @$(MKDIR) `dirname $@`
108   - @$(REGMERGE) $@ /UCR $<
109   -
110   -include/%.hpp: $(RDBDIR)/%.rdb
111   - @echo " CPPU `basename $@`"
112   - @$(MKDIR) `dirname $@`
113   - @$(CPPUMAKER) -O./include $(TYPES_RDB) $<
114   -
115   -$(OBJDBG)/%.o: %.cc include/$(PACKAGE_NAME)/lib3270.hpp \
116   - $(foreach CLS, $(UNO_CLASSES), include/$(CLS).hpp) \
117   - *.hpp Makefile
118   - @echo " CC `basename $@`"
119   - @mkdir -p `dirname $@`
120   - @$(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $<
121   -# $(DBG_CFLAGS) $(CXXFLAGS) $(LIB3270_CFLAGS) -DLIBNAME=\"$(BINDBG)/$(PROGRAM_NAME).uno@DLLEXT@\" -o $@ -c $<
122   -
123   -#---[ UNO targets ]------------------------------------------------------------
124   -
125   -include/$(PACKAGE_NAME)/lib3270.hpp: $(RDBDIR)/$(PACKAGE_NAME).rdb
126   - @echo " CPPU `basename $@`"
127   - @$(MKDIR) `dirname $@`
128   - @$(CPPUMAKER) -O./include -T$(PACKAGE_NAME).lib3270 $(TYPES_RDB) $<
129   -
130   -
131   -#---[ Debug targets ]----------------------------------------------------------
132   -
133   -Debug: $(BINDBG)/$(PACKAGE_NAME).oxt
134   -
135   -run: $(BINDBG)/$(PACKAGE_NAME).oxt
136   - @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt
137   - @libreoffice testmacros.odt
138   - @SHARED=false $(UNOPKG) remove $(PACKAGE_NAME)
139   -
140   -add: $(BINDBG)/$(PACKAGE_NAME).oxt
141   - @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt
142   -
143   -$(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@: \
144   - $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \
145   - $(CLASS_DEBUG_OBJECTS)
146   - @echo " LD `basename $@`"
147   - @$(MKDIR) `dirname $@`
148   - $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) $(CLASS_LIBS) -o $@ $^
149   -
150   -
151   -$(BINDBG)/$(PACKAGE_NAME).oxt: \
152   - $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ \
153   - $(RDBDIR)/$(PACKAGE_NAME).rdb \
154   - description.xml \
155   - manifest.xml \
156   - description.txt
157   - @rm -f $@
158   - @$(MKDIR) `dirname $@`
159   -
160   - @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp
161   -
162   - @cp $(RDBDIR)/$(PACKAGE_NAME).rdb $(BINDBG)/$(PACKAGE).oxt.tmp
163   - @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE).oxt.tmp
164   -
165   - @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp/META-INF
166   - @cp manifest.xml $(BINDBG)/$(PACKAGE).oxt.tmp/META-INF
167   -
168   - @cp description.xml $(BINDBG)/$(PACKAGE).oxt.tmp
169   - @cp description.txt $(BINDBG)/$(PACKAGE).oxt.tmp
170   -
171   - @$(CONVERT) ../$(PACKAGE_NAME)/pixmaps/$(PACKAGE_NAME).svg --format=png > $(BINDBG)/$(PACKAGE).oxt.tmp/$(PACKAGE_NAME).png
172   -
173   - @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE_NAME).oxt.tmp
174   - @cd $(BINDBG)/$(PACKAGE).oxt.tmp ; $(ZIP) -r -m ../$(PACKAGE_NAME).oxt .
175   - @rm -fr $(BINDBG)/$(PACKAGE).oxt.tmp
176   - @echo $@ Ok.
177   -
178   -
179   -#---[ Misc targets ]-----------------------------------------------------------
180   -
181   -cleanDebug: clean
182   -
183   -clean:
184   - @rm -f *.urd
185   - @rm -fr $(RDBDIR)
186   - @rm -fr $(URDDIR)
187   - @rm -fr include
188   - @rm -f *.rdb
189   - @rm -fr $(OBJDIR)
190   - @rm -fr $(BINDIR)
191   -
192   -
src/openoffice/connect.cc
... ... @@ -1,87 +0,0 @@
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 connect.cc e possui - 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 Mendonça)
27   - *
28   - *
29   - */
30   -
31   - #include "globals.hpp"
32   - #include "pw3270/lib3270.hpp"
33   - #include <exception>
34   - #include <com/sun/star/uno/RuntimeException.hdl>
35   -
36   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
37   -
38   - using namespace pw3270_impl;
39   -
40   - ::sal_Int16 SAL_CALL session_impl::Connect() throw (::com::sun::star::uno::RuntimeException)
41   - {
42   - trace("%s: hSession=%p",__FUNCTION__,hSession);
43   -
44   - try
45   - {
46   - if(!hSession)
47   - hSession = h3270::session::get_default();
48   -
49   - return hSession->connect(false);
50   -
51   - } catch(std::exception &e)
52   - {
53   - trace("%s failed: %s",__FUNCTION__,e.what());
54   -
55   - OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
56   -
57   - throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
58   -
59   - }
60   -
61   - return -1;
62   -
63   -
64   - }
65   -
66   - ::sal_Int16 SAL_CALL session_impl::Disconnect() throw (::com::sun::star::uno::RuntimeException)
67   - {
68   - try
69   - {
70   - if(!hSession)
71   - hSession = h3270::session::get_default();
72   -
73   - return hSession->disconnect();
74   -
75   - } catch(std::exception &e)
76   - {
77   - OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
78   -
79   - throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
80   -
81   - }
82   -
83   - return -1;
84   -
85   - }
86   -
87   -
src/openoffice/description.txt
... ... @@ -1,2 +0,0 @@
1   -Uno/OpenOffice library allowing 3270 access from StarBasic
2   -
src/openoffice/description.xml.in
... ... @@ -1,30 +0,0 @@
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<description xmlns="http://openoffice.org/extensions/description/2006"
3   -xmlns:d="http://openoffice.org/extensions/description/2006"
4   -xmlns:xlink="http://www.w3.org/1999/xlink">
5   -
6   - <version value="@PACKAGE_VERSION@" />
7   -
8   - <identifier value="@PACKAGE_NAME@" />
9   -
10   - <platform value="linux_@host_cpu@" />
11   -
12   - <dependencies>
13   - <OpenOffice.org-minimal-version value="2.2" d:name="OpenOffice.org 2.2"/>
14   - </dependencies>
15   -
16   - <display-name>
17   - <name lang="en">3270 access extension</name>
18   - </display-name>
19   -
20   - <icon>
21   - <default xlink:href="@PACKAGE_NAME@.png" />
22   - </icon>
23   -
24   - <extension-description>
25   - <src xlink:href="description.txt" lang="en" />
26   - </extension-description>
27   -
28   -
29   -
30   -</description>
src/openoffice/get.cc
... ... @@ -1,52 +0,0 @@
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 get.cc e possui - 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 Mendonça)
27   - *
28   - * Referência:
29   - *
30   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
31   - *
32   - */
33   -
34   - #include "globals.hpp"
35   - #include <lib3270/config.h>
36   - #include "pw3270/lib3270.hpp"
37   -
38   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
39   -
40   - using namespace pw3270_impl;
41   -
42   - ::rtl::OUString session_impl::getVersion() throw (RuntimeException)
43   - {
44   - trace("%s: hSession=%p",__FUNCTION__,hSession);
45   - return OUString( RTL_CONSTASCII_USTRINGPARAM(PACKAGE_VERSION) );
46   - }
47   -
48   - ::rtl::OUString session_impl::getRevision() throw (RuntimeException)
49   - {
50   - trace("%s: hSession=%p",__FUNCTION__,hSession);
51   - return OUString( RTL_CONSTASCII_USTRINGPARAM(PACKAGE_REVISION) );
52   - }
src/openoffice/globals.hpp
... ... @@ -1,124 +0,0 @@
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 globals.hpp e possui - 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   - *
28   - * Referências:
29   - *
30   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/C%2B%2B_Component
31   - *
32   - *
33   - */
34   -
35   -#ifndef PW3270_OXT_GLOBALS_HPP_INCLUDED
36   -
37   - #define PW3270_OXT_GLOBALS_HPP_INCLUDED 1
38   -
39   - #define CPPUENV "gcc3"
40   -
41   - #ifdef _WIN32
42   - #define SAL_W32
43   - #else
44   - #define UNX 1
45   - #define GCC 1
46   - #define LINUX 1
47   - #define HAVE_GCC_VISIBILITY_FEATURE 1
48   - #endif
49   -
50   -
51   - #include <cppuhelper/implbase4.hxx> // "3" implementing three interfaces
52   - #include <cppuhelper/factory.hxx>
53   - #include <com/sun/star/lang/XInitialization.hpp>
54   -// #include <cppuhelper/implementationentry.hxx>
55   - #include <com/sun/star/lang/XServiceInfo.hpp>
56   -
57   -#ifdef DEBUG
58   - #include <com/sun/star/lang/XMain.hpp>
59   -#endif // DEBUG
60   -
61   - #include <com/sun/star/uno/RuntimeException.hpp>
62   -
63   - #ifdef DEBUG
64   - #include <stdio.h>
65   - #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
66   - #else
67   - #define trace(x, ...) // __VA_ARGS__
68   - #endif
69   -
70   - #include <pw3270/lib3270.hpp>
71   - #include <pw3270/class.h>
72   -
73   - #define DLL_PUBLIC __attribute__((visibility("default")))
74   -
75   - using namespace ::rtl; // for OUString
76   - using namespace ::com::sun::star; // for sdk interfaces
77   - using namespace ::com::sun::star::lang; // for sdk interfaces
78   - using namespace ::com::sun::star::uno; // for basic types
79   - using namespace PW3270_NAMESPACE;
80   -
81   - namespace pw3270_impl
82   - {
83   - // https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
84   - class DLL_PUBLIC session_impl : public ::cppu::WeakImplHelper4< ::pw3270::lib3270, XServiceInfo, XMain, XInitialization >
85   - {
86   - public:
87   -
88   - session_impl();
89   - virtual ~session_impl();
90   -
91   - // XMain
92   - virtual ::sal_Int32 SAL_CALL run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception);
93   -
94   - // XInitialization will be called upon createInstanceWithArguments[AndContext]()
95   - virtual void SAL_CALL initialize( Sequence< Any > const & args ) throw (Exception);
96   -
97   - // XServiceInfo
98   - virtual OUString SAL_CALL getImplementationName() throw (RuntimeException);
99   - virtual sal_Bool SAL_CALL supportsService( OUString const & serviceName ) throw (RuntimeException);
100   - virtual Sequence< OUString > SAL_CALL getSupportedServiceNames() throw (RuntimeException);
101   -
102   - // lib3270
103   - virtual ::rtl::OUString SAL_CALL getVersion() throw (RuntimeException);
104   - virtual ::rtl::OUString SAL_CALL getRevision() throw (RuntimeException);
105   -
106   - virtual ::sal_Int16 SAL_CALL setSessionName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException);
107   -
108   - virtual ::sal_Int16 SAL_CALL setHost( const ::rtl::OUString& url ) throw (::com::sun::star::uno::RuntimeException);
109   - virtual ::sal_Int16 SAL_CALL Connect() throw (::com::sun::star::uno::RuntimeException);
110   - virtual ::sal_Int16 SAL_CALL Disconnect() throw (::com::sun::star::uno::RuntimeException);
111   -
112   - private:
113   - h3270::session *hSession;
114   -
115   - };
116   -
117   - extern Sequence< OUString > SAL_CALL getSupportedServiceNames_session_impl();
118   - extern OUString SAL_CALL getImplementationName_session_impl();
119   - extern Reference< XInterface > SAL_CALL create_session_impl(Reference< XComponentContext > const & xContext ) SAL_THROW( () );
120   -
121   - };
122   -
123   -
124   -#endif // PW3270_OXT_GLOBALS_HPP_INCLUDED
src/openoffice/info.cc
... ... @@ -1,58 +0,0 @@
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 info.cc e possui - 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 Mendonça)
27   - *
28   - * Referência:
29   - *
30   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
31   - *
32   - */
33   -
34   - #include "globals.hpp"
35   - #include "pw3270/lib3270.hpp"
36   -
37   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
38   -
39   -using namespace pw3270_impl;
40   -
41   -// XServiceInfo implementation
42   -OUString session_impl::getImplementationName() throw (RuntimeException)
43   -{
44   - // unique implementation name
45   - return OUString( RTL_CONSTASCII_USTRINGPARAM("pw3270.pw3270_impl.session") );
46   -}
47   -
48   -sal_Bool session_impl::supportsService( OUString const & serviceName ) throw (RuntimeException)
49   -{
50   - // this object only supports one service, so the test is simple
51   - return serviceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("pw3270.session") );
52   -}
53   -
54   -Sequence< OUString > session_impl::getSupportedServiceNames() throw (RuntimeException)
55   -{
56   - return getSupportedServiceNames_session_impl();
57   -}
58   -
src/openoffice/init.cc
... ... @@ -1,79 +0,0 @@
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 init.cc e possui - 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 Mendonça)
27   - *
28   - * Referência:
29   - *
30   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Create_Instance_with_Arguments
31   - *
32   - */
33   -
34   - #include "globals.hpp"
35   - #include <com/sun/star/lang/IllegalArgumentException.hpp>
36   - #include "pw3270/lib3270.hpp"
37   -
38   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
39   -
40   -using namespace pw3270_impl;
41   -
42   -
43   -session_impl::session_impl()
44   -{
45   - this->hSession = NULL;
46   -}
47   -
48   -session_impl::~session_impl()
49   -{
50   - if(this->hSession)
51   - delete this->hSession;
52   -}
53   -
54   -
55   -// XInitialization implementation
56   -void session_impl::initialize( Sequence< Any > const & args ) throw (Exception)
57   -{
58   - if (1 != args.getLength())
59   - {
60   - throw lang::IllegalArgumentException(
61   - OUString( RTL_CONSTASCII_USTRINGPARAM("give a string instanciating this component!") ),
62   - (::cppu::OWeakObject *)this,
63   - 0 );
64   - }
65   -
66   - // Initialize
67   -
68   - // TODO: Get arguments.
69   -
70   -
71   -}
72   -
73   -// XMain
74   -::sal_Int32 SAL_CALL session_impl::run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception)
75   -{
76   -
77   -
78   - return 0;
79   -}
src/openoffice/loffice3270.cbp
... ... @@ -1,64 +0,0 @@
1   -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2   -<CodeBlocks_project_file>
3   - <FileVersion major="1" minor="6" />
4   - <Project>
5   - <Option title="pw3270 openOffice" />
6   - <Option makefile_is_custom="1" />
7   - <Option pch_mode="2" />
8   - <Option compiler="gcc" />
9   - <Build>
10   - <Target title="Debug">
11   - <Option output=".bin/Debug/pw3270 LibreOffice" prefix_auto="1" extension_auto="1" />
12   - <Option object_output=".obj/Debug/" />
13   - <Option type="1" />
14   - <Option compiler="gcc" />
15   - <Compiler>
16   - <Add option="-g" />
17   - </Compiler>
18   - </Target>
19   - <Target title="Release">
20   - <Option output=".bin/Release/pw3270 LibreOffice" prefix_auto="1" extension_auto="1" />
21   - <Option object_output=".obj/Release/" />
22   - <Option type="1" />
23   - <Option compiler="gcc" />
24   - <Compiler>
25   - <Add option="-O2" />
26   - </Compiler>
27   - <Linker>
28   - <Add option="-s" />
29   - </Linker>
30   - </Target>
31   - </Build>
32   - <Compiler>
33   - <Add option="-Wall" />
34   - </Compiler>
35   - <Unit filename="../../configure.ac" />
36   - <Unit filename="../classlib/Makefile.in" />
37   - <Unit filename="../classlib/class.mak" />
38   - <Unit filename="../classlib/class.mak.in" />
39   - <Unit filename="../classlib/exception.cc" />
40   - <Unit filename="../classlib/local.cc" />
41   - <Unit filename="../classlib/remote.cc" />
42   - <Unit filename="../classlib/session.cc" />
43   - <Unit filename="../include/pw3270/class.h" />
44   - <Unit filename="Makefile.in" />
45   - <Unit filename="connect.cc" />
46   - <Unit filename="get.cc" />
47   - <Unit filename="globals.hpp" />
48   - <Unit filename="include/pw3270/lib3270.hdl" />
49   - <Unit filename="include/pw3270/lib3270.hpp" />
50   - <Unit filename="info.cc" />
51   - <Unit filename="init.cc" />
52   - <Unit filename="manifest.xml.in" />
53   - <Unit filename="pw3270.idl" />
54   - <Unit filename="service.cc" />
55   - <Unit filename="set.cc" />
56   - <Unit filename="testprogram.cc" />
57   - <Extensions>
58   - <code_completion />
59   - <envvars />
60   - <debugger />
61   - <lib_finder disable_auto="1" />
62   - </Extensions>
63   - </Project>
64   -</CodeBlocks_project_file>
src/openoffice/manifest.xml.in
... ... @@ -1,6 +0,0 @@
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<manifest:manifest>
3   -<manifest:file-entry manifest:media-type= "application/vnd.sun.star.uno-component;type=native;platform=Linux_@host_cpu@" manifest:full-path="@PACKAGE_NAME@.uno.so"/>
4   -<manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-typelibrary;type=RDB" manifest:full-path="@PACKAGE_NAME@.rdb"/>
5   -</manifest:manifest>
6   -
src/openoffice/pw3270.idl
... ... @@ -1,66 +0,0 @@
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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como pw3270.idl e possui - 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 Mendonça)
27   - *
28   - *
29   - * Referências:
30   - *
31   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C++/C++_Component
32   - *
33   - */
34   -
35   -#include <com/sun/star/uno/XInterface.idl>
36   -#include <com/sun/star/lang/XInitialization.idl>
37   -#include <com/sun/star/lang/XMain.idl>
38   -
39   -module pw3270
40   -{
41   - /*
42   - * Interface to lib3270
43   - */
44   - interface lib3270 : com::sun::star::uno::XInterface
45   - {
46   - // Constants
47   - string getVersion();
48   - string getRevision();
49   -
50   - // Host definition
51   - short setHost([in] string url);
52   - short Connect();
53   - short Disconnect();
54   -
55   - // Misc Settings
56   - short setSessionName([in] string name);
57   - };
58   -
59   - service session
60   - {
61   - interface lib3270;
62   - interface com::sun::star::lang::XInitialization;
63   - interface com::sun::star::lang::XMain;
64   - };
65   -};
66   -
src/openoffice/research.sh
... ... @@ -1,44 +0,0 @@
1   -#!/bin/bash
2   -
3   -OO_SDK_HOME=/usr/lib64/libreoffice/sdk
4   -IDLC=/usr/lib64/libreoffice/sdk/bin/idlc
5   -CPPUMAKER=/usr/lib64/libreoffice/sdk/bin/cppumaker
6   -TYPES_RDB=/usr/lib64/libreoffice/ure/share/misc/types.rdb
7   -REGMERGE=/usr/lib64/libreoffice/ure/bin/regmerge
8   -
9   -$IDLC -C -I$OO_SDK_HOME/idl -O. pw3270.idl
10   -if [ "$?" != "0" ]; then
11   - exit -1
12   -fi
13   -
14   -
15   -$REGMERGE pw3270.rdb /UCR pw3270.urd
16   -if [ "$?" != "0" ]; then
17   - exit -1
18   -fi
19   -
20   -
21   -$CPPUMAKER -O./include -Tpw3270.lib3270 $TYPES_RDB pw3270.rdb
22   -if [ "$?" != "0" ]; then
23   - exit -1
24   -fi
25   -
26   -# XWeak
27   -$IDLC -C -I$OO_SDK_HOME/idl -O. /usr/share/idl/libreoffice/com/sun/star/uno/XWeak.idl
28   -if [ "$?" != "0" ]; then
29   - exit -1
30   -fi
31   -
32   -$REGMERGE XWeak.rdb /UCR XWeak.urd
33   -if [ "$?" != "0" ]; then
34   - exit -1
35   -fi
36   -
37   -$CPPUMAKER -O./include $TYPES_RDB XWeak.rdb
38   -if [ "$?" != "0" ]; then
39   - exit -1
40   -fi
41   -
42   -
43   -echo ok
44   -
src/openoffice/service.cc
... ... @@ -1,98 +0,0 @@
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 info.cc e possui - 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 Mendonça)
27   - *
28   - * Referência:
29   - *
30   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Providing_a_Single_Factory_Using_a_Helper_Method
31   - *
32   - */
33   -
34   - #include "globals.hpp"
35   - #include <cppuhelper/implementationentry.hxx>
36   - #include "pw3270/lib3270.hpp"
37   -
38   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
39   -
40   -namespace pw3270_impl
41   -{
42   - Sequence< OUString > SAL_CALL getSupportedServiceNames_session_impl()
43   - {
44   - Sequence<OUString> names(1);
45   - names[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("pw3270.session"));
46   - return names;
47   - }
48   -
49   - OUString SAL_CALL getImplementationName_session_impl()
50   - {
51   - return OUString( RTL_CONSTASCII_USTRINGPARAM("pw3270.lib3270.session") );
52   - }
53   -
54   - Reference< XInterface > SAL_CALL create_session_impl(Reference< XComponentContext > const & xContext ) SAL_THROW( () )
55   - {
56   - return static_cast< lang::XTypeProvider * >( new session_impl() );
57   - }
58   -
59   - static struct ::cppu::ImplementationEntry s_component_entries [] =
60   - {
61   - {
62   - create_session_impl,
63   - getImplementationName_session_impl,
64   - getSupportedServiceNames_session_impl,
65   - ::cppu::createSingleComponentFactory,
66   - 0,
67   - 0
68   - },
69   - {
70   - 0,
71   - 0,
72   - 0,
73   - 0,
74   - 0,
75   - 0
76   - }
77   - };
78   -
79   -}
80   -
81   -extern "C"
82   -{
83   - DLL_PUBLIC void * SAL_CALL component_getFactory(sal_Char const * implName, lang::XMultiServiceFactory * xMgr,registry::XRegistryKey * xRegistry )
84   - {
85   - return ::cppu::component_getFactoryHelper(implName, xMgr, xRegistry, ::pw3270_impl::s_component_entries );
86   - }
87   -
88   - DLL_PUBLIC sal_Bool SAL_CALL component_writeInfo(lang::XMultiServiceFactory * xMgr, registry::XRegistryKey * xRegistry )
89   - {
90   - return ::cppu::component_writeInfoHelper(xMgr, xRegistry, ::pw3270_impl::s_component_entries );
91   - }
92   -
93   - DLL_PUBLIC void SAL_CALL component_getImplementationEnvironment(sal_Char const ** ppEnvTypeName, uno_Environment ** ppEnv )
94   - {
95   - * ppEnvTypeName = LANGUAGE_BINDING_NAME;
96   - }
97   -
98   -}
src/openoffice/set.cc
... ... @@ -1,99 +0,0 @@
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 get.cc e possui - 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 Mendonça)
27   - *
28   - * Referência:
29   - *
30   - * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
31   - *
32   - */
33   -
34   - #include "globals.hpp"
35   - #include <exception>
36   - #include <com/sun/star/uno/RuntimeException.hdl>
37   - #include "pw3270/lib3270.hpp"
38   -
39   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
40   -
41   - using namespace pw3270_impl;
42   - using namespace com::sun::star::uno;
43   -
44   - ::sal_Int16 SAL_CALL session_impl::setSessionName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException)
45   - {
46   - if(hSession)
47   - {
48   - // Remove old session
49   - delete hSession;
50   - hSession = NULL;
51   - }
52   -
53   - OString vlr = rtl::OUStringToOString( name , RTL_TEXTENCODING_UNICODE );
54   -
55   - trace("%s(\"%s\")",__FUNCTION__,vlr.getStr());
56   -
57   - try
58   - {
59   -
60   - hSession = h3270::session::create(((const char *) vlr.getStr()));
61   - trace("%s: hSession(\"%s\"=%p",__FUNCTION__,vlr.getStr(),hSession);
62   -
63   - } catch(std::exception &e)
64   - {
65   - OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
66   -
67   - throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
68   -
69   - return -1;
70   -
71   - }
72   -
73   - return 0;
74   -
75   - }
76   -
77   - ::sal_Int16 SAL_CALL session_impl::setHost( const ::rtl::OUString& url ) throw (::com::sun::star::uno::RuntimeException)
78   - {
79   - if(!hSession)
80   - hSession = h3270::session::get_default();
81   -
82   - OString vlr = rtl::OUStringToOString( url , RTL_TEXTENCODING_UNICODE );
83   -
84   - try
85   - {
86   -
87   - return hSession->set_url(vlr.getStr());
88   -
89   - } catch(std::exception &e)
90   - {
91   - OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
92   -
93   - throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
94   -
95   - }
96   -
97   - return -1;
98   - }
99   -
src/openoffice/testmacros.odt
No preview for this file type
src/openoffice/testprogram.cc
... ... @@ -1,148 +0,0 @@
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 testprogram.cc e possui - 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 Mendonça)
27   - *
28   - */
29   -
30   - #include "globals.hpp"
31   -
32   - #include <cppuhelper/bootstrap.hxx>
33   - #include <com/sun/star/bridge/XUnoUrlResolver.hpp>
34   - #include <com/sun/star/lang/XMultiServiceFactory.hpp>
35   -
36   - #include "pw3270/lib3270.hpp"
37   -
38   -/*---[ Implement ]-----------------------------------------------------------------------------------------*/
39   -
40   -using namespace com::sun::star::uno;
41   -using namespace com::sun::star::lang;
42   -using namespace com::sun::star::bridge;
43   -using namespace rtl;
44   -using namespace cppu;
45   -
46   -int SAL_CALL main(int argc, char **argv)
47   -{
48   - Reference< XComponentContext > rComponentContext = defaultBootstrap_InitialComponentContext();
49   - OSL_ENSURE( xContext.is(), "### cannot creage intial component context!" );
50   -
51   -/*
52   - Reference< XSimpleRegistry > xReg = DefaultRegistry();
53   -
54   - Reference< XSimpleRegistry > xReg = createSimpleRegistry();
55   -
56   - OSL_ENSURE( xReg.is(), "### cannot get service instance of \"SimpleRegistry\"!" );
57   -
58   - xReg->open(OUString::createFromAscii("pw3270.rdb"), sal_False, sal_False);
59   -
60   - OSL_ENSURE( xReg->isValid(), "### cannot open test registry \"pw3270.rdb\"!" );
61   -
62   -
63   - TRACE("%s","Calling bootstrap_InitialComponentContext");
64   - Reference< XComponentContext > xContext = bootstrap_InitialComponentContext(xReg);
65   - OSL_ENSURE( xContext.is(), "### cannot creage intial component context!" );
66   -
67   - TRACE("%s","Calling getServiceManager\n");
68   - Reference< XMultiComponentFactory > xMgr = xContext->getServiceManager();
69   - OSL_ENSURE( xMgr.is(), "### cannot get initial service manager!" );
70   -
71   - // register my component
72   - TRACE("%s","Calling createInstanceWithContext");
73   -
74   - Reference< XImplementationRegistration > xImplReg(
75   - xMgr->createInstanceWithContext(OUString::createFromAscii("com.sun.star.registry.ImplementationRegistration"), xContext), UNO_QUERY);
76   - OSL_ENSURE( xImplReg.is(), "### cannot get service instance of \"com.sun.star.registry.ImplementationRegistration\"!" );
77   -
78   - if (xImplReg.is())
79   - {
80   - const char *libname = LIBNAME;
81   -
82   - TRACE("Loading %s",libname);
83   -
84   - xImplReg->registerImplementation(
85   - OUString::createFromAscii("com.sun.star.loader.SharedLibrary"), // loader for component
86   - OUString::createFromAscii(libname), // component location
87   - Reference< XSimpleRegistry >() // registry omitted,
88   - // defaulting to service manager registry used
89   - );
90   -
91   - // get an object instance
92   - printf("Calling createInstanceWithContext(%s)\n",IMPLNAME);
93   -
94   - Reference< XInterface > xx ;
95   - xx = xMgr->createInstanceWithContext(OUString::createFromAscii(IMPLNAME), xContext);
96   -
97   - printf("Instance: %p\n",&xx);
98   -
99   - Reference< pw3270intf > srv( xx, UNO_QUERY );
100   -
101   - OSL_ENSURE( srv.is(), "### cannot get service instance!");
102   -
103   - printf("object.is(): %d\n",srv.is());
104   -
105   - if(srv.is())
106   - {
107   - // Wait for commands
108   - OString str;
109   - char buffer[80];
110   - printf("getConnectionState: %d\n", srv->getConnectionState());
111   -
112   - str = OUStringToOString( srv->getVersion(),RTL_TEXTENCODING_UTF8);
113   - printf("Version:\t%s\n",str.pData->buffer);
114   -
115   - str = OUStringToOString( srv->getRevision(),RTL_TEXTENCODING_UTF8);
116   - printf("Revision:\t%s\n",str.pData->buffer);
117   -
118   - printf("Connect(): %d\n" , srv->Connect(OUString::createFromAscii("L:3270.df.bb:9023"),10));
119   -
120   - sleep(5);
121   -
122   - //str = OUStringToOString( srv->getScreenContentAt(20,39,5),RTL_TEXTENCODING_UTF8);
123   - //Trace("ContentsAt(20,39): \"%s\"",str.pData->buffer);
124   - printf("waitForStringAt(SISBB) returned %d\n",srv->waitForStringAt(20,39,OUString::createFromAscii("SISBB"),20));
125   - printf("sendEnterKey() returned %d\n",srv->sendEnterKey());
126   - printf("waitForStringAt(Senha) returned %d\n",srv->waitForStringAt(14,2,OUString::createFromAscii("Senha"),20));
127   - printf("setStringAt returned %d\n",srv->setStringAt(13,21,OUString::createFromAscii("c1103788")));
128   -
129   - str = OUStringToOString( srv->getScreenContent(),RTL_TEXTENCODING_UTF8);
130   - printf("Entire screen:\n%s\n",str.pData->buffer);
131   -
132   - printf("Enter to exit...\n");
133   - fgets(buffer,80,stdin);
134   -
135   - printf("Disconnect(): %d\n" , srv->Disconnect());
136   -
137   - sleep(5);
138   -
139   - }
140   - }
141   -
142   -
143   - Reference< XComponent >::query( xContext )->dispose();
144   -
145   -*/
146   -
147   - return 0;
148   -}
src/plugins/dbus3270/gobject.c
... ... @@ -481,7 +481,8 @@ void pw3270_dbus_get_host_charset(PW3270Dbus *object, DBusGMethodInvocation *con
481 481  
482 482 void pw3270_dbus_get_display_charset(PW3270Dbus *object, DBusGMethodInvocation *context)
483 483 {
484   - dbus_g_method_return(context,lib3270_get_display_charset(pw3270_dbus_get_session_handle(object)));
  484 + // Allways return UTF-8 to avoid double conversion
  485 + dbus_g_method_return(context,"UTF-8");
485 486 }
486 487  
487 488 void pw3270_dbus_set_host_charset(PW3270Dbus *object, const gchar *charset, DBusGMethodInvocation *context)
... ...
src/plugins/rx3270/pluginmain.cc
... ... @@ -100,8 +100,8 @@
100 100 int wait(int seconds);
101 101 int wait_for_ready(int seconds);
102 102  
103   - string * get_text(int baddr, size_t len);
104   - string * get_text_at(int row, int col, size_t sz);
  103 + string get_text(int baddr, size_t len);
  104 + string get_text_at(int row, int col, size_t sz);
105 105 int cmp_text_at(int row, int col, const char *text);
106 106 int set_text_at(int row, int col, const char *str);
107 107  
... ... @@ -124,17 +124,17 @@
124 124 int get_next_unprotected(int baddr = -1);
125 125  
126 126 int set_copy(const char *text);
127   - string * get_copy(void);
  127 + string get_copy(void);
128 128  
129   - string * get_clipboard(void);
  129 + string get_clipboard(void);
130 130 int set_clipboard(const char *text);
131 131  
132 132 int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...);
133   - string * file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename);
  133 + string file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename);
134 134  
135 135 int set_host_charset(const char *charset);
136   - string * get_host_charset(void);
137   - string * get_display_charset(void);
  136 + string get_host_charset(void);
  137 + string get_display_charset(void);
138 138  
139 139 const char * asc2ebc(unsigned char *str, int sz = -1);
140 140 const char * ebc2asc(unsigned char *str, int sz = -1);
... ... @@ -588,18 +588,18 @@ extern &quot;C&quot;
588 588 return lib3270_wait_for_ready(hSession,seconds);
589 589 }
590 590  
591   - string * plugin::get_text_at(int row, int col, size_t sz)
  591 + string plugin::get_text_at(int row, int col, size_t sz)
592 592 {
593   - char * ptr = lib3270_get_text_at(hSession,row,col,(int) sz);
  593 + string rc;
  594 + char * ptr = lib3270_get_text_at(hSession,row,col,(int) sz);
594 595  
595 596 if(ptr)
596 597 {
597   - string *s = new string(ptr);
  598 + rc.assign(ptr);
598 599 lib3270_free(ptr);
599   - return s;
600 600 }
601 601  
602   - return new string("");
  602 + return rc;
603 603 }
604 604  
605 605 int plugin::cmp_text_at(int row, int col, const char *text)
... ... @@ -632,17 +632,18 @@ extern &quot;C&quot;
632 632 lib3270_write_va_log(hSession,"REXX",fmt,args);
633 633 }
634 634  
635   - string * plugin::get_text(int baddr, size_t len)
  635 + string plugin::get_text(int baddr, size_t len)
636 636 {
637   - char *ptr = lib3270_get_text(hSession,baddr,len);
  637 + string rc;
  638 + char * ptr = lib3270_get_text(hSession,baddr,len);
  639 +
638 640 if(ptr)
639 641 {
640   - string *s = new string(ptr);
  642 + rc.assign(ptr);
641 643 lib3270_free(ptr);
642   - return s;
643 644 }
644 645  
645   - return new string("");
  646 + return rc;
646 647 }
647 648  
648 649 int plugin::get_field_start(int baddr)
... ... @@ -661,32 +662,32 @@ extern &quot;C&quot;
661 662 return 0;
662 663 }
663 664  
664   - string * plugin::get_copy(void)
  665 + string plugin::get_copy(void)
665 666 {
666   - gchar *ptr = v3270_get_copy(GTK_WIDGET(lib3270_get_widget(hSession)));
  667 + string rc;
  668 + gchar * ptr = v3270_get_copy(GTK_WIDGET(lib3270_get_widget(hSession)));
667 669  
668 670 if(ptr)
669 671 {
670   - string *ret = new string((char *) ptr);
  672 + rc.assign(ptr);
671 673 g_free(ptr);
672   - return ret;
673 674 }
674 675  
675   - return NULL;
  676 + return rc;
676 677 }
677 678  
678   - string * plugin::get_clipboard(void)
  679 + string plugin::get_clipboard(void)
679 680 {
680   - gchar *ptr = gtk_clipboard_wait_for_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD));
  681 + string rc;
  682 + gchar * ptr = gtk_clipboard_wait_for_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD));
681 683  
682 684 if(ptr)
683 685 {
684   - string *ret = new string((char *) ptr);
  686 + rc.assign(ptr);
685 687 g_free(ptr);
686   - return ret;
687 688 }
688 689  
689   - return NULL;
  690 + return rc;
690 691 }
691 692  
692 693 int plugin::set_clipboard(const char *text)
... ... @@ -729,18 +730,18 @@ int plugin::popup_dialog(LIB3270_NOTIFY id , const char *title, const char *mess
729 730 return 0;
730 731 }
731 732  
732   -string * plugin::file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename)
  733 +string plugin::file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename)
733 734 {
734   - gchar *ptr = pw3270_file_chooser(action, script_name ? script_name : "rexx", title, filename, extension);
  735 + string rc;
  736 + gchar * ptr = pw3270_file_chooser(action, script_name ? script_name : "rexx", title, filename, extension);
735 737  
736 738 if(ptr)
737 739 {
738   - string *s = new string((char *) ptr);
  740 + rc.assign((char *) ptr);
739 741 g_free(ptr);
740   - return s;
741 742 }
742 743  
743   - return NULL;
  744 + return rc;
744 745 }
745 746  
746 747 int plugin::quit(void)
... ... @@ -754,14 +755,14 @@ int plugin::set_host_charset(const char *charset)
754 755 return lib3270_set_host_charset(hSession,charset);
755 756 }
756 757  
757   -string * plugin::get_host_charset(void)
  758 +string plugin::get_host_charset(void)
758 759 {
759   - return new string(lib3270_get_host_charset(hSession));
  760 + return string(lib3270_get_host_charset(hSession));
760 761 }
761 762  
762   -string * plugin::get_display_charset(void)
  763 +string plugin::get_display_charset(void)
763 764 {
764   - return new string(lib3270_get_display_charset(hSession));
  765 + return string(lib3270_get_display_charset(hSession));
765 766 }
766 767  
767 768 int plugin::erase_eof(void)
... ...
src/plugins/rx3270/rexx_methods.cc
... ... @@ -207,14 +207,8 @@ RexxMethod4(RexxStringObject, rx3270_method_get_text_at, CSELF, sessionPtr, int,
207 207 try
208 208 {
209 209 session * hSession = (session *) sessionPtr;
210   - string * str = hSession->get_string_at(row,col,sz);
211   -
212   - if(str)
213   - {
214   - RexxStringObject ret = context->String((CSTRING) str->c_str());
215   - delete str;
216   - return ret;
217   - }
  210 + string str = hSession->get_string_at(row,col,sz);
  211 + return context->String((CSTRING) str.c_str());
218 212  
219 213 }
220 214 catch(std::exception &e)
... ... @@ -363,12 +357,8 @@ RexxMethod4(logical_t, rx3270_method_test, CSELF, sessionPtr, CSTRING, key, int,
363 357  
364 358 if(hSession->is_ready())
365 359 {
366   - bool rc = false;
367   - string * str = hSession->get_string_at(row,col,strlen(key));
368   - if(str)
369   - rc = (strcasecmp(str->c_str(),key) == 0);
370   - delete str;
371   - return rc;
  360 + string str = hSession->get_string_at(row,col,strlen(key));
  361 + return (strcasecmp(str.c_str(),key) == 0);
372 362 }
373 363  
374 364 }
... ... @@ -401,14 +391,8 @@ RexxMethod3(RexxStringObject, rx3270_method_get_text, CSELF, sessionPtr, OPTIONA
401 391 try
402 392 {
403 393 session * hSession = (session *) sessionPtr;
404   - string * str = hSession->get_string(baddr,sz > 0 ? sz : -1);
405   -
406   - if(str)
407   - {
408   - RexxStringObject ret = context->String((CSTRING) str->c_str());
409   - delete str;
410   - return ret;
411   - }
  394 + string str = hSession->get_string(baddr,sz > 0 ? sz : -1);
  395 + return context->String((CSTRING) str.c_str());
412 396 }
413 397 catch(std::exception &e)
414 398 {
... ... @@ -452,14 +436,8 @@ RexxMethod1(RexxStringObject, rx3270_method_get_selection, CSELF, sessionPtr)
452 436 {
453 437 try
454 438 {
455   - string *str = ((session *) sessionPtr)->get_copy();
456   -
457   - if(str)
458   - {
459   - RexxStringObject ret = context->String((CSTRING) str->c_str());
460   - delete str;
461   - return ret;
462   - }
  439 + string str = ((session *) sessionPtr)->get_copy();
  440 + return context->String((CSTRING) str.c_str());
463 441  
464 442 }
465 443 catch(std::exception &e)
... ... @@ -490,14 +468,8 @@ RexxMethod1(RexxStringObject, rx3270_method_get_clipboard, CSELF, sessionPtr)
490 468  
491 469 if(hSession)
492 470 {
493   - string *str = hSession->get_clipboard();
494   -
495   - if(str)
496   - {
497   - RexxStringObject ret = context->String((CSTRING) str->c_str());
498   - delete str;
499   - return ret;
500   - }
  471 + string str = hSession->get_clipboard();
  472 + return context->String((CSTRING) str.c_str());
501 473 }
502 474  
503 475 trace("%s","rx3270_method_get_clipboard: Clipboard is empty");
... ... @@ -560,7 +532,7 @@ RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CST
560 532 };
561 533  
562 534 GtkFileChooserAction id = GTK_FILE_CHOOSER_ACTION_OPEN;
563   - string * ret;
  535 + string ret;
564 536  
565 537 for(int f=0;f<5;f++)
566 538 {
... ... @@ -572,14 +544,8 @@ RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CST
572 544 }
573 545  
574 546 ret = ((session *) sessionPtr)->file_chooser_dialog(id, title, extension,filename);
575   - if(ret)
576   - {
577   - RexxStringObject obj = context->String(ret->c_str());
578   - delete ret;
579   - return obj;
580   - }
581 547  
582   - return context->String("");
  548 + return context->String(ret.c_str());
583 549 }
584 550  
585 551 RexxMethod2(int, rx3270_method_set_host_charset, CSELF, sessionPtr, CSTRING, text)
... ... @@ -589,17 +555,13 @@ RexxMethod2(int, rx3270_method_set_host_charset, CSELF, sessionPtr, CSTRING, tex
589 555  
590 556 RexxMethod1(RexxStringObject, rx3270_method_get_host_charset, CSELF, sessionPtr)
591 557 {
592   - string * ret = ((session *) sessionPtr)->get_host_charset();
593   - RexxStringObject obj = context->String(ret->c_str());
594   - delete ret;
595   - return obj;
  558 + string ret = ((session *) sessionPtr)->get_host_charset();
  559 + return context->String(ret.c_str());
596 560 }
597 561  
598 562 RexxMethod1(RexxStringObject, rx3270_method_get_display_charset, CSELF, sessionPtr)
599 563 {
600   - string * ret = ((session *) sessionPtr)->get_display_charset();
601   - RexxStringObject obj = context->String(ret->c_str());
602   - delete ret;
603   - return obj;
  564 + string ret = ((session *) sessionPtr)->get_display_charset();
  565 + return context->String(ret.c_str());
604 566 }
605 567  
... ...
src/plugins/rx3270/typed_routines.cc
... ... @@ -150,14 +150,8 @@ RexxRoutine3(RexxStringObject, rx3270GetStringAt, int, row, int, col, int, sz)
150 150 {
151 151 try
152 152 {
153   - string *str = session::get_default()->get_string_at(row,col,(int) sz);
154   -
155   - if(str)
156   - {
157   - RexxStringObject ret = context->String((CSTRING) str->c_str());
158   - delete str;
159   - return ret;
160   - }
  153 + string str = session::get_default()->get_string_at(row,col,(int) sz);
  154 + return context->String((CSTRING) str.c_str());
161 155 }
162 156 catch(std::exception &e)
163 157 {
... ...