Commit 2f61dc6f0029038684306d2efaa7f0229e5c7272

Authored by perry.werneck@gmail.com
1 parent 20153f18

Implementando método is protected

src/classlib/local.cc
... ... @@ -146,6 +146,7 @@
146 146 int (*_get_cursor_addr)(H3270 *h);
147 147 int (*_emulate_input)(H3270 *session, const char *s, int len, int pasting);
148 148 int (*_get_next_unprotected)(H3270 *hSession, int baddr0);
  149 + int (*_get_is_protected)(H3270 *hSession, int baddr);
149 150 void (*_popup_va)(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, va_list);
150 151 void * (*_free)(void *);
151 152 const char * (*_get_display_charset)(H3270 *hSession);
... ... @@ -204,6 +205,7 @@
204 205 { (void **) & _get_cursor_addr, "lib3270_get_cursor_address" },
205 206 { (void **) & _emulate_input, "lib3270_emulate_input" },
206 207 { (void **) & _get_next_unprotected, "lib3270_get_next_unprotected" },
  208 + { (void **) & _get_is_protected, "lib3270_get_is_protected" },
207 209 { (void **) & _popup_va, "lib3270_popup_va" },
208 210 { (void **) & _free, "lib3270_free" },
209 211 { (void **) & _get_display_charset, "lib3270_get_display_charset" },
... ... @@ -394,6 +396,11 @@
394 396 return _get_next_unprotected(hSession,baddr);
395 397 }
396 398  
  399 + int get_is_protected(int baddr)
  400 + {
  401 + return _get_is_protected(hSession,baddr);
  402 + }
  403 +
397 404 int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...)
398 405 {
399 406 va_list args;
... ...
src/classlib/remote.cc
... ... @@ -1228,6 +1228,36 @@
1228 1228  
1229 1229 }
1230 1230  
  1231 + int get_is_protected(int baddr)
  1232 + {
  1233 +#if defined(WIN32)
  1234 +
  1235 + struct hllapi_packet_addr query = { HLLAPI_PACKET_IS_PROTECTED, (unsigned short) baddr };
  1236 +
  1237 + return query_intval((void *) &query, sizeof(query));
  1238 +
  1239 +#elif defined(HAVE_DBUS)
  1240 +
  1241 + dbus_int32_t k = (dbus_int32_t) baddr;
  1242 +
  1243 + DBusMessage * msg = create_message("getIsProtected");
  1244 + if(msg)
  1245 + {
  1246 + dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);
  1247 + return get_intval(call(msg));
  1248 + }
  1249 +
  1250 + return -1;
  1251 +
  1252 +#else
  1253 +
  1254 + return -1;
  1255 +
  1256 +#endif
  1257 +
  1258 + }
  1259 +
  1260 +
1231 1261 int set_host_charset(const char *charset)
1232 1262 {
1233 1263 #if defined(WIN32)
... ...
src/include/pw3270/class.h
... ... @@ -220,6 +220,7 @@
220 220 virtual int get_field_start(int baddr = -1) = 0;
221 221 virtual int get_field_len(int baddr = -1) = 0;
222 222 virtual int get_next_unprotected(int baddr = -1) = 0;
  223 + virtual int get_is_protected(int baddr = -1) = 0;
223 224  
224 225 // Clipboard management
225 226 virtual int set_copy(const char *text);
... ...
src/include/pw3270/ipcpackets.h
... ... @@ -58,6 +58,7 @@
58 58 HLLAPI_PACKET_FIELD_START,
59 59 HLLAPI_PACKET_FIELD_LEN,
60 60 HLLAPI_PACKET_NEXT_UNPROTECTED,
  61 + HLLAPI_PACKET_IS_PROTECTED,
61 62 HLLAPI_PACKET_QUIT,
62 63  
63 64 HLLAPI_PACKET_SET_HOST_CHARSET,
... ...
src/java/plugin.cc
... ... @@ -234,6 +234,10 @@
234 234 return lib3270_get_next_unprotected(hSession,baddr);
235 235 }
236 236  
  237 + int get_is_protected(int baddr = -1) {
  238 + return lib3270_is_protected(hSession,baddr);
  239 + }
  240 +
237 241 int set_copy(const char *text) {
238 242 v3270_set_copy(GTK_WIDGET(lib3270_get_user_data(hSession)),text);
239 243 return 0;
... ...
src/java/terminal.java
... ... @@ -306,6 +306,16 @@ public class terminal
306 306 public native int get_next_unprotected(int baddr);
307 307  
308 308 /**
  309 + * Check if the address is protected.
  310 + *
  311 + * @param baddr Field address.
  312 + *
  313 + * @return Protect state.
  314 + *
  315 + */
  316 + public native int get_is_protected(int baddr);
  317 +
  318 + /**
309 319 * Get next field address.
310 320 *
311 321 * @return Address of the next field.
... ...
src/plugins/rx3270/pluginmain.cc
... ... @@ -126,6 +126,7 @@
126 126 int get_field_start(int baddr = -1);
127 127 int get_field_len(int baddr = -1);
128 128 int get_next_unprotected(int baddr = -1);
  129 + int get_is_protected(int baddr = -1);
129 130  
130 131 int set_copy(const char *text);
131 132 string get_copy(void);
... ...
src/plugins/rx3270/rexx_methods.cc
... ... @@ -465,6 +465,15 @@ RexxMethod2(int, rx3270_method_get_next_unprotected, CSELF, sessionPtr, OPTIONAL
465 465 return baddr;
466 466 }
467 467  
  468 +RexxMethod2(int, rx3270_method_get_is_protected, CSELF, sessionPtr, OPTIONAL_int, baddr)
  469 +{
  470 + session *hSession = (session *) sessionPtr;
  471 + if(!hSession)
  472 + return -1;
  473 +
  474 + return hSession->get_is_protected(baddr);
  475 +}
  476 +
468 477 RexxMethod1(RexxStringObject, rx3270_method_get_selection, CSELF, sessionPtr)
469 478 {
470 479 try
... ...
src/plugins/rx3270/rx3270.cls
... ... @@ -82,6 +82,7 @@
82 82 ::METHOD GETFIELDSTART EXTERNAL "LIBRARY rx3270 rx3270_method_get_field_start"
83 83 ::METHOD GETFIELDLEN EXTERNAL "LIBRARY rx3270 rx3270_method_get_field_len"
84 84 ::METHOD GETNEXTUNPROTECTED EXTERNAL "LIBRARY rx3270 rx3270_method_get_next_unprotected"
  85 +::METHOD GETISPROTECTED EXTERNAL "LIBRARY rx3270 rx3270_method_get_is_protected"
85 86  
86 87 ::METHOD GETSELECTION EXTERNAL "LIBRARY rx3270 rx3270_method_get_selection"
87 88 ::METHOD SETSELECTION EXTERNAL "LIBRARY rx3270 rx3270_method_set_selection"
... ...
src/plugins/rx3270/rx3270.h
... ... @@ -124,6 +124,7 @@
124 124 REXX_METHOD_PROTOTYPE(rx3270_method_get_field_len);
125 125 REXX_METHOD_PROTOTYPE(rx3270_method_get_field_start);
126 126 REXX_METHOD_PROTOTYPE(rx3270_method_get_next_unprotected);
  127 + REXX_METHOD_PROTOTYPE(rx3270_method_get_is_protected);
127 128 REXX_METHOD_PROTOTYPE(rx3270_method_get_selection);
128 129 REXX_METHOD_PROTOTYPE(rx3270_method_set_selection);
129 130 REXX_METHOD_PROTOTYPE(rx3270_method_get_clipboard);
... ... @@ -141,114 +142,6 @@
141 142  
142 143 /*--[ 3270 Session ]-----------------------------------------------------------------------------------------*/
143 144  
144   -/*
145   -#if defined (HAVE_GNUC_VISIBILITY)
146   - class __attribute__((visibility("default"))) rx3270
147   -#elif defined(WIN32)
148   - class __declspec (dllexport) rx3270
149   -#else
150   - #error NOT_IMPLEMENTED
151   -#endif
152   - {
153   -
154   - protected:
155   -#ifdef HAVE_ICONV
156   - iconv_t conv2Local;
157   - iconv_t conv2Host;
158   -#endif
159   -
160   - public:
161   -
162   - class exception : public std::exception
163   - {
164   - public:
165   - exception(int code, const char *fmt, ...);
166   - exception(const char *fmt, ...);
167   -
168   - const char * getMessage(void);
169   - void logMessage(void);
170   -
171   - void RaiseException(RexxMethodContext *context);
172   - void RaiseException(RexxCallContext *context);
173   -
174   - virtual const char * what() const throw();
175   -
176   - private:
177   - int code;
178   - char msg[4096];
179   -
180   - };
181   -
182   - rx3270(const char *local = REXX_DEFAULT_CHARSET, const char *remote = "ISO-8859-1");
183   -
184   - virtual ~rx3270();
185   -
186   - virtual void free(void *ptr);
187   -
188   -
189   - static rx3270 * create(const char *name = NULL);
190   - static rx3270 * create_remote(const char *name);
191   - static rx3270 * create_local(void);
192   - static rx3270 * get_default(void);
193   -
194   - static void set_plugin(rx3270 * (*factory)(const char *name));
195   -
196   - char * get_3270_string(const char *str);
197   - char * get_local_string(const char *str);
198   -
199   - void log(const char *fmt, ...);
200   - virtual void logva(const char *fmt, va_list arg);
201   -
202   - virtual char * get_version(void);
203   - virtual char * get_revision(void);
204   - virtual LIB3270_CSTATE get_cstate(void) = 0;
205   -
206   - virtual int connect(const char *uri, bool wait = true) = 0;
207   - virtual int disconnect(void) = 0;
208   - virtual bool is_connected(void) = 0;
209   - virtual bool is_ready(void) = 0;
210   - virtual int iterate(bool wait = true) = 0;
211   - virtual int wait(int seconds) = 0;
212   - virtual int wait_for_ready(int seconds) = 0;
213   - virtual int wait_for_text_at(int row, int col, const char *key, int timeout);
214   -
215   - virtual int set_cursor_position(int row, int col) = 0;
216   - virtual int set_cursor_addr(int addr) = 0;
217   - virtual int get_cursor_addr(void) = 0;
218   -
219   - virtual int set_toggle(LIB3270_TOGGLE ix, bool value) = 0;
220   -
221   - virtual int enter(void) = 0;
222   - virtual int pfkey(int key) = 0;
223   - virtual int pakey(int key) = 0;
224   -
225   - virtual char * get_text_at(int row, int col, size_t sz) = 0;
226   - virtual char * get_text(int baddr, size_t len) = 0;
227   - virtual int cmp_text_at(int row, int col, const char *text) = 0;
228   - virtual int set_text_at(int row, int col, const char *str) = 0;
229   - virtual int emulate_input(const char *str) = 0;
230   -
231   - virtual int get_field_start(int baddr = -1) = 0;
232   - virtual int get_field_len(int baddr = -1) = 0;
233   - virtual int get_next_unprotected(int baddr = -1) = 0;
234   -
235   - virtual int set_copy(const char *text);
236   - virtual char * get_copy(void);
237   -
238   - virtual char * get_clipboard(void);
239   - virtual int set_clipboard(const char *text);
240   -
241   - virtual int quit(void) = 0;
242   -
243   - // Dialogs
244   - virtual int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...);
245   - virtual char * file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename);
246   -
247   - };
248   -
249   - rx3270 * create_lib3270_instance(void);
250   -*/
251   -
252 145 #ifdef __cplusplus
253 146 extern "C" {
254 147 #endif
... ...