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,18 +454,18 @@
454 return 0; 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 char * ptr = _get_text_at(hSession,row,col,sz); 460 char * ptr = _get_text_at(hSession,row,col,sz);
460 461
461 if(ptr) 462 if(ptr)
462 { 463 {
463 - string *s = new string(ptr); 464 + rc.assign(ptr);
464 _free(ptr); 465 _free(ptr);
465 - return s;  
466 } 466 }
467 467
468 - return new string(""); 468 + return rc;
469 } 469 }
470 470
471 int set_text_at(int row, int col, const char *str) 471 int set_text_at(int row, int col, const char *str)
@@ -478,18 +478,18 @@ @@ -478,18 +478,18 @@
478 return _cmp_text_at(hSession,row,col,text); 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 if(ptr) 486 if(ptr)
486 { 487 {
487 - string *s = new string(ptr); 488 + rc.assign(ptr);
488 _free(ptr); 489 _free(ptr);
489 - return s;  
490 } 490 }
491 491
492 - return new string(""); 492 + return rc;
493 } 493 }
494 494
495 int set_cursor_position(int row, int col) 495 int set_cursor_position(int row, int col)
@@ -561,9 +561,9 @@ @@ -561,9 +561,9 @@
561 return 0; 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 int set_host_charset(const char *charset) 569 int set_host_charset(const char *charset)
@@ -571,9 +571,9 @@ @@ -571,9 +571,9 @@
571 return _set_host_charset(hSession,charset); 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 int erase_eof(void) 579 int erase_eof(void)
src/classlib/remote.cc
@@ -214,8 +214,10 @@ @@ -214,8 +214,10 @@
214 return reply; 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 if(msg) 221 if(msg)
220 { 222 {
221 DBusMessageIter iter; 223 DBusMessageIter iter;
@@ -224,11 +226,10 @@ @@ -224,11 +226,10 @@
224 { 226 {
225 if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING) 227 if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING)
226 { 228 {
227 - string * rc;  
228 const char * str; 229 const char * str;
229 dbus_message_iter_get_basic(&iter, &str); 230 dbus_message_iter_get_basic(&iter, &str);
230 trace("Response: [%s]",str); 231 trace("Response: [%s]",str);
231 - rc = new string(str); 232 + rc.assign(str);
232 dbus_message_unref(msg); 233 dbus_message_unref(msg);
233 return rc; 234 return rc;
234 } 235 }
@@ -242,10 +243,10 @@ @@ -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 return get_string(call(create_message(method))); 251 return get_string(call(create_message(method)));
251 } 252 }
@@ -863,7 +864,7 @@ @@ -863,7 +864,7 @@
863 #endif 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 #if defined(WIN32) 869 #if defined(WIN32)
869 870
@@ -888,7 +889,7 @@ @@ -888,7 +889,7 @@
888 889
889 #else 890 #else
890 891
891 - return NULL; 892 + return string();
892 893
893 #endif 894 #endif
894 895
@@ -978,7 +979,7 @@ @@ -978,7 +979,7 @@
978 return ETIMEDOUT; 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 #if defined(WIN32) 984 #if defined(WIN32)
984 struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, (unsigned short) baddr, (unsigned short) len }; 985 struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, (unsigned short) baddr, (unsigned short) len };
@@ -999,7 +1000,7 @@ @@ -999,7 +1000,7 @@
999 return get_string(call(msg)); 1000 return get_string(call(msg));
1000 #else 1001 #else
1001 throw exception("%s","IPC support is unavailable"); 1002 throw exception("%s","IPC support is unavailable");
1002 - return NULL; 1003 + return string();
1003 #endif 1004 #endif
1004 } 1005 }
1005 1006
@@ -1248,7 +1249,7 @@ @@ -1248,7 +1249,7 @@
1248 #endif 1249 #endif
1249 } 1250 }
1250 1251
1251 - string * get_host_charset(void) 1252 + string get_host_charset(void)
1252 { 1253 {
1253 #if defined(WIN32) 1254 #if defined(WIN32)
1254 1255
@@ -1268,7 +1269,7 @@ @@ -1268,7 +1269,7 @@
1268 1269
1269 1270
1270 #if defined(HAVE_DBUS) 1271 #if defined(HAVE_DBUS)
1271 - string * get_clipboard(void) 1272 + string get_clipboard(void)
1272 { 1273 {
1273 return query_string("getClipboard"); 1274 return query_string("getClipboard");
1274 } 1275 }
@@ -1278,7 +1279,7 @@ @@ -1278,7 +1279,7 @@
1278 return query_intval("setClipboard", DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); 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 return query_string("getDisplayCharset"); 1284 return query_string("getDisplayCharset");
1284 } 1285 }
src/classlib/session.cc
@@ -124,7 +124,7 @@ @@ -124,7 +124,7 @@
124 void session::set_display_charset(const char *remote, const char *local) 124 void session::set_display_charset(const char *remote, const char *local)
125 { 125 {
126 #ifdef HAVE_ICONV 126 #ifdef HAVE_ICONV
127 - string *display_charset = this->get_display_charset(); 127 + string display_charset = this->get_display_charset();
128 128
129 if(this->conv2Local != (iconv_t) (-1)) 129 if(this->conv2Local != (iconv_t) (-1))
130 iconv_close(this->conv2Local); 130 iconv_close(this->conv2Local);
@@ -133,7 +133,7 @@ @@ -133,7 +133,7 @@
133 iconv_close(this->conv2Host); 133 iconv_close(this->conv2Host);
134 134
135 if(!remote) 135 if(!remote)
136 - remote = display_charset->c_str(); 136 + remote = display_charset.c_str();
137 137
138 if(strcmp(local,remote)) 138 if(strcmp(local,remote))
139 { 139 {
@@ -146,14 +146,18 @@ @@ -146,14 +146,18 @@
146 conv2Local = conv2Host = (iconv_t)(-1); 146 conv2Local = conv2Host = (iconv_t)(-1);
147 } 147 }
148 148
149 - delete display_charset;  
150 #endif 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 // 3270 methods 163 // 3270 methods
@@ -209,13 +213,13 @@ @@ -209,13 +213,13 @@
209 return EINVAL; 213 return EINVAL;
210 } 214 }
211 215
212 - string * session::get_copy(void) 216 + string session::get_copy(void)
213 { 217 {
214 errno = EINVAL; 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 #if defined(WIN32) 224 #if defined(WIN32)
221 225
@@ -239,7 +243,7 @@ @@ -239,7 +243,7 @@
239 return NULL; 243 return NULL;
240 } 244 }
241 245
242 - string *text = new string ( pszText ); 246 + string text = string ( pszText );
243 247
244 GlobalUnlock( hData ); 248 GlobalUnlock( hData );
245 249
@@ -294,69 +298,75 @@ @@ -294,69 +298,75 @@
294 return -1; 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 #ifdef HAVE_ICONV 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 size_t out = (in << 1); 315 size_t out = (in << 1);
309 char * ptr; 316 char * ptr;
310 char * outBuffer = (char *) malloc(out); 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 memset(ptr=outBuffer,0,out); 320 memset(ptr=outBuffer,0,out);
314 321
315 iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state 322 iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state
316 323
317 if(iconv(conv2Host,&inBuffer,&in,&ptr,&out) != ((size_t) -1)) 324 if(iconv(conv2Host,&inBuffer,&in,&ptr,&out) != ((size_t) -1))
318 - str->assign(outBuffer); 325 + rc.assign(outBuffer);
319 326
320 free(outBuffer); 327 free(outBuffer);
321 } 328 }
  329 +#else
  330 + rc = str;
322 #endif // HAVE_ICONV 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 #ifdef HAVE_ICONV 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 size_t out = (in << 1); 345 size_t out = (in << 1);
334 char * ptr; 346 char * ptr;
335 char * outBuffer = (char *) malloc(out); 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 memset(ptr=outBuffer,0,out); 350 memset(ptr=outBuffer,0,out);
339 351
340 iconv(conv2Local,NULL,NULL,NULL,NULL); // Reset state 352 iconv(conv2Local,NULL,NULL,NULL,NULL); // Reset state
341 353
342 if(iconv(conv2Local,&inBuffer,&in,&ptr,&out) != ((size_t) -1)) 354 if(iconv(conv2Local,&inBuffer,&in,&ptr,&out) != ((size_t) -1))
343 - str->assign(outBuffer); 355 + rc.assign(outBuffer);
344 356
345 free(outBuffer); 357 free(outBuffer);
346 } 358 }
  359 +#else
  360 + rc = str;
347 #endif // HAVE_ICONV 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 int session::set_string_at(int row, int col, const char *str) 372 int session::set_string_at(int row, int col, const char *str)
@@ -427,23 +437,17 @@ @@ -427,23 +437,17 @@
427 437
428 int session::cmp_string_at(int row, int col, const char *text) 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 int session::wait_for_string_at(int row, int col, const char *key, int timeout) 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 string session::asc2ebc(string &str) 453 string session::asc2ebc(string &str)
src/classlib/testprogram.cc
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 { 40 {
41 41
42 { 42 {
43 - string *s; 43 + string s;
44 session *session = session::start("pw3270:a"); 44 session *session = session::start("pw3270:a");
45 // session *session = session::start("new"); 45 // session *session = session::start("new");
46 46
@@ -55,12 +55,10 @@ @@ -55,12 +55,10 @@
55 cout << "\tSession state: " << session->get_cstate() << endl; 55 cout << "\tSession state: " << session->get_cstate() << endl;
56 56
57 s = session->get_display_charset(); 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 s = session->get_host_charset(); 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 session->connect(false); 63 session->connect(false);
66 delete session; 64 delete session;
src/include/pw3270/class.h
@@ -130,8 +130,8 @@ @@ -130,8 +130,8 @@
130 #endif // WIN32 130 #endif // WIN32
131 131
132 virtual int set_host_charset(const char *charset) = 0; 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 // Connection & Network 136 // Connection & Network
137 int connect(const char *host, bool wait = true); 137 int connect(const char *host, bool wait = true);
@@ -144,8 +144,8 @@ @@ -144,8 +144,8 @@
144 virtual int iterate(bool wait = true) = 0; 144 virtual int iterate(bool wait = true) = 0;
145 145
146 // Get/Set/Test without charset translation 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 virtual int set_text_at(int row, int col, const char *str) = 0; 149 virtual int set_text_at(int row, int col, const char *str) = 0;
150 virtual int cmp_text_at(int row, int col, const char *text) = 0; 150 virtual int cmp_text_at(int row, int col, const char *text) = 0;
151 virtual int wait_for_text_at(int row, int col, const char *key, int timeout); 151 virtual int wait_for_text_at(int row, int col, const char *key, int timeout);
@@ -158,8 +158,8 @@ @@ -158,8 +158,8 @@
158 string ebc2asc(string &str); 158 string ebc2asc(string &str);
159 159
160 // Get/Set/Test with charset translation 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 int set_string_at(int row, int col, const char *str); 163 int set_string_at(int row, int col, const char *str);
164 int cmp_string_at(int row, int col, const char *text); 164 int cmp_string_at(int row, int col, const char *text);
165 int wait_for_string_at(int row, int col, const char *key, int timeout); 165 int wait_for_string_at(int row, int col, const char *key, int timeout);
@@ -190,21 +190,23 @@ @@ -190,21 +190,23 @@
190 190
191 // Clipboard management 191 // Clipboard management
192 virtual int set_copy(const char *text); 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 virtual int set_clipboard(const char *text); 196 virtual int set_clipboard(const char *text);
197 197
198 // Dialogs 198 // Dialogs
199 virtual int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...); 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 // File transfer 202 // File transfer
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); 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 // Charset translation 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 protected: 211 protected:
210 session(); 212 session();
src/loffice/Makefile.in 0 → 100644
@@ -0,0 +1,192 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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,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,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,2 +0,0 @@
1 -Uno/OpenOffice library allowing 3270 access from StarBasic  
2 -  
src/openoffice/description.xml.in
@@ -1,30 +0,0 @@ @@ -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,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,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,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,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,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,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,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,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,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,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,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,7 +481,8 @@ void pw3270_dbus_get_host_charset(PW3270Dbus *object, DBusGMethodInvocation *con
481 481
482 void pw3270_dbus_get_display_charset(PW3270Dbus *object, DBusGMethodInvocation *context) 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 void pw3270_dbus_set_host_charset(PW3270Dbus *object, const gchar *charset, DBusGMethodInvocation *context) 488 void pw3270_dbus_set_host_charset(PW3270Dbus *object, const gchar *charset, DBusGMethodInvocation *context)
src/plugins/rx3270/pluginmain.cc
@@ -100,8 +100,8 @@ @@ -100,8 +100,8 @@
100 int wait(int seconds); 100 int wait(int seconds);
101 int wait_for_ready(int seconds); 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 int cmp_text_at(int row, int col, const char *text); 105 int cmp_text_at(int row, int col, const char *text);
106 int set_text_at(int row, int col, const char *str); 106 int set_text_at(int row, int col, const char *str);
107 107
@@ -124,17 +124,17 @@ @@ -124,17 +124,17 @@
124 int get_next_unprotected(int baddr = -1); 124 int get_next_unprotected(int baddr = -1);
125 125
126 int set_copy(const char *text); 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 int set_clipboard(const char *text); 130 int set_clipboard(const char *text);
131 131
132 int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...); 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 int set_host_charset(const char *charset); 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 const char * asc2ebc(unsigned char *str, int sz = -1); 139 const char * asc2ebc(unsigned char *str, int sz = -1);
140 const char * ebc2asc(unsigned char *str, int sz = -1); 140 const char * ebc2asc(unsigned char *str, int sz = -1);
@@ -588,18 +588,18 @@ extern &quot;C&quot; @@ -588,18 +588,18 @@ extern &quot;C&quot;
588 return lib3270_wait_for_ready(hSession,seconds); 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 if(ptr) 596 if(ptr)
596 { 597 {
597 - string *s = new string(ptr); 598 + rc.assign(ptr);
598 lib3270_free(ptr); 599 lib3270_free(ptr);
599 - return s;  
600 } 600 }
601 601
602 - return new string(""); 602 + return rc;
603 } 603 }
604 604
605 int plugin::cmp_text_at(int row, int col, const char *text) 605 int plugin::cmp_text_at(int row, int col, const char *text)
@@ -632,17 +632,18 @@ extern &quot;C&quot; @@ -632,17 +632,18 @@ extern &quot;C&quot;
632 lib3270_write_va_log(hSession,"REXX",fmt,args); 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 if(ptr) 640 if(ptr)
639 { 641 {
640 - string *s = new string(ptr); 642 + rc.assign(ptr);
641 lib3270_free(ptr); 643 lib3270_free(ptr);
642 - return s;  
643 } 644 }
644 645
645 - return new string(""); 646 + return rc;
646 } 647 }
647 648
648 int plugin::get_field_start(int baddr) 649 int plugin::get_field_start(int baddr)
@@ -661,32 +662,32 @@ extern &quot;C&quot; @@ -661,32 +662,32 @@ extern &quot;C&quot;
661 return 0; 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 if(ptr) 670 if(ptr)
669 { 671 {
670 - string *ret = new string((char *) ptr); 672 + rc.assign(ptr);
671 g_free(ptr); 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 if(ptr) 684 if(ptr)
683 { 685 {
684 - string *ret = new string((char *) ptr); 686 + rc.assign(ptr);
685 g_free(ptr); 687 g_free(ptr);
686 - return ret;  
687 } 688 }
688 689
689 - return NULL; 690 + return rc;
690 } 691 }
691 692
692 int plugin::set_clipboard(const char *text) 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,18 +730,18 @@ int plugin::popup_dialog(LIB3270_NOTIFY id , const char *title, const char *mess
729 return 0; 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 if(ptr) 738 if(ptr)
737 { 739 {
738 - string *s = new string((char *) ptr); 740 + rc.assign((char *) ptr);
739 g_free(ptr); 741 g_free(ptr);
740 - return s;  
741 } 742 }
742 743
743 - return NULL; 744 + return rc;
744 } 745 }
745 746
746 int plugin::quit(void) 747 int plugin::quit(void)
@@ -754,14 +755,14 @@ int plugin::set_host_charset(const char *charset) @@ -754,14 +755,14 @@ int plugin::set_host_charset(const char *charset)
754 return lib3270_set_host_charset(hSession,charset); 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 int plugin::erase_eof(void) 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,14 +207,8 @@ RexxMethod4(RexxStringObject, rx3270_method_get_text_at, CSELF, sessionPtr, int,
207 try 207 try
208 { 208 {
209 session * hSession = (session *) sessionPtr; 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 catch(std::exception &e) 214 catch(std::exception &e)
@@ -363,12 +357,8 @@ RexxMethod4(logical_t, rx3270_method_test, CSELF, sessionPtr, CSTRING, key, int, @@ -363,12 +357,8 @@ RexxMethod4(logical_t, rx3270_method_test, CSELF, sessionPtr, CSTRING, key, int,
363 357
364 if(hSession->is_ready()) 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,14 +391,8 @@ RexxMethod3(RexxStringObject, rx3270_method_get_text, CSELF, sessionPtr, OPTIONA
401 try 391 try
402 { 392 {
403 session * hSession = (session *) sessionPtr; 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 catch(std::exception &e) 397 catch(std::exception &e)
414 { 398 {
@@ -452,14 +436,8 @@ RexxMethod1(RexxStringObject, rx3270_method_get_selection, CSELF, sessionPtr) @@ -452,14 +436,8 @@ RexxMethod1(RexxStringObject, rx3270_method_get_selection, CSELF, sessionPtr)
452 { 436 {
453 try 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 catch(std::exception &e) 443 catch(std::exception &e)
@@ -490,14 +468,8 @@ RexxMethod1(RexxStringObject, rx3270_method_get_clipboard, CSELF, sessionPtr) @@ -490,14 +468,8 @@ RexxMethod1(RexxStringObject, rx3270_method_get_clipboard, CSELF, sessionPtr)
490 468
491 if(hSession) 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 trace("%s","rx3270_method_get_clipboard: Clipboard is empty"); 475 trace("%s","rx3270_method_get_clipboard: Clipboard is empty");
@@ -560,7 +532,7 @@ RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CST @@ -560,7 +532,7 @@ RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CST
560 }; 532 };
561 533
562 GtkFileChooserAction id = GTK_FILE_CHOOSER_ACTION_OPEN; 534 GtkFileChooserAction id = GTK_FILE_CHOOSER_ACTION_OPEN;
563 - string * ret; 535 + string ret;
564 536
565 for(int f=0;f<5;f++) 537 for(int f=0;f<5;f++)
566 { 538 {
@@ -572,14 +544,8 @@ RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CST @@ -572,14 +544,8 @@ RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CST
572 } 544 }
573 545
574 ret = ((session *) sessionPtr)->file_chooser_dialog(id, title, extension,filename); 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 RexxMethod2(int, rx3270_method_set_host_charset, CSELF, sessionPtr, CSTRING, text) 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,17 +555,13 @@ RexxMethod2(int, rx3270_method_set_host_charset, CSELF, sessionPtr, CSTRING, tex
589 555
590 RexxMethod1(RexxStringObject, rx3270_method_get_host_charset, CSELF, sessionPtr) 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 RexxMethod1(RexxStringObject, rx3270_method_get_display_charset, CSELF, sessionPtr) 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,14 +150,8 @@ RexxRoutine3(RexxStringObject, rx3270GetStringAt, int, row, int, col, int, sz)
150 { 150 {
151 try 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 catch(std::exception &e) 156 catch(std::exception &e)
163 { 157 {