Commit 203516849d2ccd61eb3d51703a9b786c0e5a8da1
1 parent
8996b7f3
Exists in
master
and in
5 other branches
Implementando método que faltava na interface dbus
Showing
4 changed files
with
46 additions
and
3 deletions
Show diff stats
src/classlib/remote.cc
... | ... | @@ -780,8 +780,17 @@ |
780 | 780 | struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, (unsigned short) baddr, (unsigned short) len }; |
781 | 781 | return query_string(&query,sizeof(query),len); |
782 | 782 | #else |
783 | - #warning IMPLEMENTAR | |
784 | - return NULL; | |
783 | + dbus_int32_t b = (dbus_int32_t) baddr; | |
784 | + dbus_int32_t l = (dbus_int32_t) len; | |
785 | + | |
786 | + DBusMessage * msg = create_message("getText"); | |
787 | + if(!msg) | |
788 | + return NULL; | |
789 | + | |
790 | + trace("%s(%d,%d)",__FUNCTION__,b,l); | |
791 | + dbus_message_append_args(msg, DBUS_TYPE_INT32, &b, DBUS_TYPE_INT32, &l, DBUS_TYPE_INVALID); | |
792 | + | |
793 | + return get_string(call(msg)); | |
785 | 794 | #endif |
786 | 795 | } |
787 | 796 | ... | ... |
src/plugins/dbus3270/gobject.c
... | ... | @@ -268,9 +268,36 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBus |
268 | 268 | |
269 | 269 | g_free(utftext); |
270 | 270 | } |
271 | + } | |
271 | 272 | |
273 | + void pw3270_dbus_get_text(PW3270Dbus *object, int offset, int len, DBusGMethodInvocation *context) | |
274 | + { | |
275 | + gchar * text; | |
276 | + H3270 * hSession = pw3270_dbus_get_session_handle(object); | |
272 | 277 | |
273 | -} | |
278 | + trace("%s object=%p context=%p",__FUNCTION__,object,context); | |
279 | + if(pw3270_dbus_check_valid_state(object,context)) | |
280 | + return; | |
281 | + | |
282 | + text = lib3270_get_text(hSession,offset,len); | |
283 | + if(!text) | |
284 | + { | |
285 | + GError *error = pw3270_dbus_get_error_from_errno(errno); | |
286 | + dbus_g_method_return_error(context,error); | |
287 | + g_error_free(error); | |
288 | + } | |
289 | + else | |
290 | + { | |
291 | + gchar * utftext = g_convert_with_fallback(text,-1,"UTF-8",lib3270_get_charset(hSession),"?",NULL,NULL,NULL); | |
292 | + | |
293 | + lib3270_free(text); | |
294 | + | |
295 | + dbus_g_method_return(context,utftext); | |
296 | + | |
297 | + g_free(utftext); | |
298 | + } | |
299 | + | |
300 | + } | |
274 | 301 | |
275 | 302 | void pw3270_dbus_is_connected(PW3270Dbus *object, DBusGMethodInvocation *context) |
276 | 303 | { | ... | ... |
src/plugins/dbus3270/pw3270dbus.xml
... | ... | @@ -61,6 +61,12 @@ |
61 | 61 | <arg type="i" name="len" direction="in" /> |
62 | 62 | <arg type="s" name="text" direction="out" /> |
63 | 63 | </method> |
64 | + <method name="getText"> | |
65 | + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> | |
66 | + <arg type="i" name="addr" direction="in" /> | |
67 | + <arg type="i" name="len" direction="in" /> | |
68 | + <arg type="s" name="text" direction="out" /> | |
69 | + </method> | |
64 | 70 | <method name="setClipboard"> |
65 | 71 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> |
66 | 72 | <arg type="s" name="text" direction="in" /> | ... | ... |
src/plugins/dbus3270/service.h
... | ... | @@ -97,6 +97,7 @@ |
97 | 97 | void pw3270_dbus_pa_key(PW3270Dbus *object, int key, DBusGMethodInvocation *context); |
98 | 98 | void pw3270_dbus_set_text_at(PW3270Dbus *object, int row, int col, const gchar *text, DBusGMethodInvocation *context); |
99 | 99 | void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context); |
100 | + void pw3270_dbus_get_text(PW3270Dbus *object, int offset, int len, DBusGMethodInvocation *context); | |
100 | 101 | void pw3270_dbus_cmp_text_at(PW3270Dbus *object, int row, int col, const gchar *text, DBusGMethodInvocation *context); |
101 | 102 | void pw3270_dbus_input(PW3270Dbus *object, const gchar *utftext, DBusGMethodInvocation *context); |
102 | 103 | ... | ... |