Commit 07f0e9594eeb302e95c5a2e80edf666f7036b118

Authored by Perry Werneck
1 parent 9858e82f

Incluindo métodos para pegar o tamanho da tela.

src/classlib/local.cc
@@ -166,6 +166,10 @@ @@ -166,6 +166,10 @@
166 int (*_action)(H3270 *hSession, const char *name); 166 int (*_action)(H3270 *hSession, const char *name);
167 int (*_set_unlock_delay)(H3270 *hSession, unsigned short ms); 167 int (*_set_unlock_delay)(H3270 *hSession, unsigned short ms);
168 168
  169 + int (*_get_width)(H3270 *hSession);
  170 + int (*_get_height)(H3270 *hSession);
  171 + int (*_get_length)(H3270 *hSession);
  172 +
169 const char * (*_ebc2asc)(H3270 *hSession, unsigned char *buffer, int sz); 173 const char * (*_ebc2asc)(H3270 *hSession, unsigned char *buffer, int sz);
170 const char * (*_asc2ebc)(H3270 *hSession, unsigned char *buffer, int sz); 174 const char * (*_asc2ebc)(H3270 *hSession, unsigned char *buffer, int sz);
171 175
@@ -235,6 +239,10 @@ @@ -235,6 +239,10 @@
235 { (void **) & _action, "lib3270_action" }, 239 { (void **) & _action, "lib3270_action" },
236 { (void **) & _set_unlock_delay, "lib3270_set_unlock_delay" }, 240 { (void **) & _set_unlock_delay, "lib3270_set_unlock_delay" },
237 241
  242 + { (void **) & _get_width, "lib3270_get_width" },
  243 + { (void **) & _get_height, "lib3270_get_height" },
  244 + { (void **) & _get_length, "lib3270_get_length" },
  245 +
238 }; 246 };
239 247
240 for(unsigned int f = 0; f < (sizeof (call) / sizeof ((call)[0]));f++) 248 for(unsigned int f = 0; f < (sizeof (call) / sizeof ((call)[0]));f++)
@@ -519,6 +527,18 @@ @@ -519,6 +527,18 @@
519 _set_unlock_delay(hSession,ms); 527 _set_unlock_delay(hSession,ms);
520 } 528 }
521 529
  530 + int get_width(void) {
  531 + return _get_width(hSession);
  532 + }
  533 +
  534 + int get_height(void) {
  535 + return _get_height(hSession);
  536 + }
  537 +
  538 + int get_length(void) {
  539 + return _get_length(hSession);
  540 + }
  541 +
522 }; 542 };
523 543
524 session * session::create_local(void) throw (std::exception) 544 session * session::create_local(void) throw (std::exception)
src/classlib/remote.cc
@@ -57,6 +57,9 @@ @@ -57,6 +57,9 @@
57 #define HLLAPI_PACKET_IS_READY "isReady" 57 #define HLLAPI_PACKET_IS_READY "isReady"
58 #define HLLAPI_PACKET_DISCONNECT "disconnect" 58 #define HLLAPI_PACKET_DISCONNECT "disconnect"
59 #define HLLAPI_PACKET_GET_CURSOR "getCursorAddress" 59 #define HLLAPI_PACKET_GET_CURSOR "getCursorAddress"
  60 + #define HLLAPI_PACKET_GET_WIDTH "getScreenWidth"
  61 + #define HLLAPI_PACKET_GET_HEIGHT "getScreenHeight"
  62 + #define HLLAPI_PACKET_GET_LENGTH "getScreenLength"
60 #define HLLAPI_PACKET_ENTER "enter" 63 #define HLLAPI_PACKET_ENTER "enter"
61 #define HLLAPI_PACKET_QUIT "quit" 64 #define HLLAPI_PACKET_QUIT "quit"
62 #define HLLAPI_PACKET_ERASE "erase" 65 #define HLLAPI_PACKET_ERASE "erase"
@@ -1139,6 +1142,17 @@ @@ -1139,6 +1142,17 @@
1139 return query_intval(HLLAPI_PACKET_GET_CURSOR); 1142 return query_intval(HLLAPI_PACKET_GET_CURSOR);
1140 } 1143 }
1141 1144
  1145 + int get_width(void) {
  1146 + return query_intval(HLLAPI_PACKET_GET_WIDTH);
  1147 + }
  1148 +
  1149 + int get_height(void) {
  1150 + return query_intval(HLLAPI_PACKET_GET_HEIGHT);
  1151 + }
  1152 +
  1153 + int get_length(void) {
  1154 + return query_intval(HLLAPI_PACKET_GET_LENGTH);
  1155 + }
1142 1156
1143 int enter(void) 1157 int enter(void)
1144 { 1158 {
src/include/lib3270.h
@@ -372,6 +372,16 @@ @@ -372,6 +372,16 @@
372 */ 372 */
373 LIB3270_EXPORT int lib3270_get_width(H3270 *h); 373 LIB3270_EXPORT int lib3270_get_width(H3270 *h);
374 374
  375 + /**
  376 + * Get current screen width in rows.
  377 + *
  378 + * @param h Handle of the desired session.
  379 + *
  380 + * @return screen rows.
  381 + *
  382 + */
  383 + LIB3270_EXPORT int lib3270_get_height(H3270 *h);
  384 +
375 LIB3270_EXPORT unsigned int lib3270_get_length(H3270 *h); 385 LIB3270_EXPORT unsigned int lib3270_get_length(H3270 *h);
376 386
377 /** 387 /**
src/include/pw3270/class.h
@@ -154,6 +154,10 @@ @@ -154,6 +154,10 @@
154 virtual LIB3270_MESSAGE get_program_message(void) = 0; 154 virtual LIB3270_MESSAGE get_program_message(void) = 0;
155 virtual LIB3270_SSL_STATE get_secure(void) = 0; 155 virtual LIB3270_SSL_STATE get_secure(void) = 0;
156 156
  157 + virtual int get_width(void) = 0;
  158 + virtual int get_height(void) = 0;
  159 + virtual int get_length(void) = 0;
  160 +
157 // Misc 161 // Misc
158 virtual void set_unlock_delay(unsigned short ms) = 0; 162 virtual void set_unlock_delay(unsigned short ms) = 0;
159 163
src/include/pw3270/ipcpackets.h
@@ -74,6 +74,10 @@ @@ -74,6 +74,10 @@
74 HLLAPI_PACKET_GET_SSL_STATE, 74 HLLAPI_PACKET_GET_SSL_STATE,
75 HLLAPI_PACKET_SET_UNLOCK_DELAY, 75 HLLAPI_PACKET_SET_UNLOCK_DELAY,
76 76
  77 + HLLAPI_PACKET_GET_WIDTH,
  78 + HLLAPI_PACKET_GET_HEIGHT,
  79 + HLLAPI_PACKET_GET_LENGTH,
  80 +
77 HLLAPI_PACKET_INVALID 81 HLLAPI_PACKET_INVALID
78 82
79 } HLLAPI_PACKET; 83 } HLLAPI_PACKET;
src/lib3270/screen.c
@@ -247,6 +247,12 @@ LIB3270_EXPORT int lib3270_get_width(H3270 *h) @@ -247,6 +247,12 @@ LIB3270_EXPORT int lib3270_get_width(H3270 *h)
247 return h->cols; 247 return h->cols;
248 } 248 }
249 249
  250 +LIB3270_EXPORT int lib3270_get_height(H3270 *h)
  251 +{
  252 + CHECK_SESSION_HANDLE(h);
  253 + return h->rows;
  254 +}
  255 +
250 void update_model_info(H3270 *session, int model, int cols, int rows) 256 void update_model_info(H3270 *session, int model, int cols, int rows)
251 { 257 {
252 if(model == session->model_num && session->maxROWS == rows && session->maxCOLS == cols) 258 if(model == session->model_num && session->maxROWS == rows && session->maxCOLS == cols)
src/plugins/dbus3270/gobject.c
@@ -367,6 +367,24 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBus @@ -367,6 +367,24 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBus
367 dbus_g_method_return(context,lib3270_get_cursor_address(pw3270_dbus_get_session_handle(object))); 367 dbus_g_method_return(context,lib3270_get_cursor_address(pw3270_dbus_get_session_handle(object)));
368 } 368 }
369 369
  370 + void pw3270_dbus_get_screen_width(PW3270Dbus *object, DBusGMethodInvocation *context)
  371 + {
  372 + trace("%s object=%p context=%p",__FUNCTION__,object,context);
  373 + dbus_g_method_return(context,lib3270_get_width(pw3270_dbus_get_session_handle(object)));
  374 + }
  375 +
  376 + void pw3270_dbus_get_screen_height(PW3270Dbus *object, DBusGMethodInvocation *context)
  377 + {
  378 + trace("%s object=%p context=%p",__FUNCTION__,object,context);
  379 + dbus_g_method_return(context,lib3270_get_height(pw3270_dbus_get_session_handle(object)));
  380 + }
  381 +
  382 + void pw3270_dbus_get_screen_length(PW3270Dbus *object, DBusGMethodInvocation *context)
  383 + {
  384 + trace("%s object=%p context=%p",__FUNCTION__,object,context);
  385 + dbus_g_method_return(context,lib3270_get_width(pw3270_dbus_get_session_handle(object)));
  386 + }
  387 +
370 void pw3270_dbus_set_toggle(PW3270Dbus *object, int id, int value, DBusGMethodInvocation *context) 388 void pw3270_dbus_set_toggle(PW3270Dbus *object, int id, int value, DBusGMethodInvocation *context)
371 { 389 {
372 trace("%s object=%p context=%p",__FUNCTION__,object,context); 390 trace("%s object=%p context=%p",__FUNCTION__,object,context);
src/plugins/dbus3270/pw3270dbus.xml
@@ -117,6 +117,18 @@ @@ -117,6 +117,18 @@
117 <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> 117 <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
118 <arg type="i" name="addr" direction="out" /> 118 <arg type="i" name="addr" direction="out" />
119 </method> 119 </method>
  120 + <method name="getScreenWidth">
  121 + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
  122 + <arg type="i" name="width" direction="out" />
  123 + </method>
  124 + <method name="getScreenHeight">
  125 + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
  126 + <arg type="i" name="height" direction="out" />
  127 + </method>
  128 + <method name="getScreenLength">
  129 + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
  130 + <arg type="i" name="len" direction="out" />
  131 + </method>
120 <method name="getNextUnprotected"> 132 <method name="getNextUnprotected">
121 <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> 133 <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
122 <arg type="i" name="addr" direction="in" /> 134 <arg type="i" name="addr" direction="in" />
src/plugins/dbus3270/service.h
@@ -85,6 +85,10 @@ @@ -85,6 +85,10 @@
85 void pw3270_dbus_set_cursor_address(PW3270Dbus *object, int addr, DBusGMethodInvocation *context); 85 void pw3270_dbus_set_cursor_address(PW3270Dbus *object, int addr, DBusGMethodInvocation *context);
86 void pw3270_dbus_get_cursor_address(PW3270Dbus *object, DBusGMethodInvocation *context); 86 void pw3270_dbus_get_cursor_address(PW3270Dbus *object, DBusGMethodInvocation *context);
87 87
  88 + void pw3270_dbus_get_screen_width(PW3270Dbus *object, DBusGMethodInvocation *context);
  89 + void pw3270_dbus_get_screen_height(PW3270Dbus *object, DBusGMethodInvocation *context);
  90 + void pw3270_dbus_get_screen_length(PW3270Dbus *object, DBusGMethodInvocation *context);
  91 +
88 void pw3270_dbus_set_toggle(PW3270Dbus *object, int id, int value, DBusGMethodInvocation *context); 92 void pw3270_dbus_set_toggle(PW3270Dbus *object, int id, int value, DBusGMethodInvocation *context);
89 93
90 void pw3270_dbus_wait_for_ready(PW3270Dbus *object, int timeout, DBusGMethodInvocation *context); 94 void pw3270_dbus_wait_for_ready(PW3270Dbus *object, int timeout, DBusGMethodInvocation *context);
src/plugins/hllapi/pluginmain.c
@@ -319,8 +319,20 @@ @@ -319,8 +319,20 @@
319 send_result(source,lib3270_get_cursor_address(lib3270_get_default_session_handle())); 319 send_result(source,lib3270_get_cursor_address(lib3270_get_default_session_handle()));
320 break; 320 break;
321 321
322 - case HLLAPI_PACKET_GET_CSTATE:  
323 - send_result(source,lib3270_get_connection_state(lib3270_get_default_session_handle())); 322 + case HLLAPI_PACKET_GET_CURSOR:
  323 + send_result(source,lib3270_get_cursor_address(lib3270_get_default_session_handle()));
  324 + break;
  325 +
  326 + case HLLAPI_PACKET_GET_WIDTH:
  327 + send_result(source,lib3270_get_width(lib3270_get_default_session_handle()));
  328 + break;
  329 +
  330 + case HLLAPI_PACKET_GET_HEIGHT:
  331 + send_result(source,lib3270_get_height(lib3270_get_default_session_handle()));
  332 + break;
  333 +
  334 + case HLLAPI_PACKET_GET_LENGTH:
  335 + send_result(source,lib3270_get_length(lib3270_get_default_session_handle()));
324 break; 336 break;
325 337
326 case HLLAPI_PACKET_GET_PROGRAM_MESSAGE: 338 case HLLAPI_PACKET_GET_PROGRAM_MESSAGE:
src/plugins/rx3270/pluginmain.cc
@@ -112,6 +112,7 @@ @@ -112,6 +112,7 @@
112 int set_cursor_position(int row, int col); 112 int set_cursor_position(int row, int col);
113 int set_cursor_addr(int addr); 113 int set_cursor_addr(int addr);
114 int get_cursor_addr(void); 114 int get_cursor_addr(void);
  115 +
115 int emulate_input(const char *str); 116 int emulate_input(const char *str);
116 117
117 int set_toggle(LIB3270_TOGGLE ix, bool value); 118 int set_toggle(LIB3270_TOGGLE ix, bool value);
@@ -146,6 +147,10 @@ @@ -146,6 +147,10 @@
146 string get_host_charset(void); 147 string get_host_charset(void);
147 string get_display_charset(void); 148 string get_display_charset(void);
148 149
  150 + int get_width(void);
  151 + int get_height(void);
  152 + int get_length(void);
  153 +
149 const char * asc2ebc(unsigned char *str, int sz = -1); 154 const char * asc2ebc(unsigned char *str, int sz = -1);
150 const char * ebc2asc(unsigned char *str, int sz = -1); 155 const char * ebc2asc(unsigned char *str, int sz = -1);
151 156
@@ -710,6 +715,21 @@ extern &quot;C&quot; @@ -710,6 +715,21 @@ extern &quot;C&quot;
710 return lib3270_get_cursor_address(hSession); 715 return lib3270_get_cursor_address(hSession);
711 } 716 }
712 717
  718 + int plugin::get_width(void)
  719 + {
  720 + return lib3270_get_width(hSession);
  721 + }
  722 +
  723 + int plugin::get_height(void)
  724 + {
  725 + return lib3270_get_height(hSession);
  726 + }
  727 +
  728 + int plugin::get_length(void)
  729 + {
  730 + return lib3270_get_length(hSession);
  731 + }
  732 +
713 int plugin::emulate_input(const char *str) 733 int plugin::emulate_input(const char *str)
714 { 734 {
715 return lib3270_emulate_input(hSession, str, -1, 1); 735 return lib3270_emulate_input(hSession, str, -1, 1);