diff --git a/src/classlib/remote.cc b/src/classlib/remote.cc
index e695184..4699486 100644
--- a/src/classlib/remote.cc
+++ b/src/classlib/remote.cc
@@ -780,8 +780,17 @@
struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, (unsigned short) baddr, (unsigned short) len };
return query_string(&query,sizeof(query),len);
#else
- #warning IMPLEMENTAR
- return NULL;
+ dbus_int32_t b = (dbus_int32_t) baddr;
+ dbus_int32_t l = (dbus_int32_t) len;
+
+ DBusMessage * msg = create_message("getText");
+ if(!msg)
+ return NULL;
+
+ trace("%s(%d,%d)",__FUNCTION__,b,l);
+ dbus_message_append_args(msg, DBUS_TYPE_INT32, &b, DBUS_TYPE_INT32, &l, DBUS_TYPE_INVALID);
+
+ return get_string(call(msg));
#endif
}
diff --git a/src/plugins/dbus3270/gobject.c b/src/plugins/dbus3270/gobject.c
index e500fad..1be7787 100644
--- a/src/plugins/dbus3270/gobject.c
+++ b/src/plugins/dbus3270/gobject.c
@@ -268,9 +268,36 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBus
g_free(utftext);
}
+ }
+ void pw3270_dbus_get_text(PW3270Dbus *object, int offset, int len, DBusGMethodInvocation *context)
+ {
+ gchar * text;
+ H3270 * hSession = pw3270_dbus_get_session_handle(object);
-}
+ trace("%s object=%p context=%p",__FUNCTION__,object,context);
+ if(pw3270_dbus_check_valid_state(object,context))
+ return;
+
+ text = lib3270_get_text(hSession,offset,len);
+ if(!text)
+ {
+ GError *error = pw3270_dbus_get_error_from_errno(errno);
+ dbus_g_method_return_error(context,error);
+ g_error_free(error);
+ }
+ else
+ {
+ gchar * utftext = g_convert_with_fallback(text,-1,"UTF-8",lib3270_get_charset(hSession),"?",NULL,NULL,NULL);
+
+ lib3270_free(text);
+
+ dbus_g_method_return(context,utftext);
+
+ g_free(utftext);
+ }
+
+ }
void pw3270_dbus_is_connected(PW3270Dbus *object, DBusGMethodInvocation *context)
{
diff --git a/src/plugins/dbus3270/pw3270dbus.xml b/src/plugins/dbus3270/pw3270dbus.xml
index e627749..921eee1 100644
--- a/src/plugins/dbus3270/pw3270dbus.xml
+++ b/src/plugins/dbus3270/pw3270dbus.xml
@@ -61,6 +61,12 @@
+
+
+
+
+
+
diff --git a/src/plugins/dbus3270/service.h b/src/plugins/dbus3270/service.h
index 43fc7cc..342f0b2 100644
--- a/src/plugins/dbus3270/service.h
+++ b/src/plugins/dbus3270/service.h
@@ -97,6 +97,7 @@
void pw3270_dbus_pa_key(PW3270Dbus *object, int key, DBusGMethodInvocation *context);
void pw3270_dbus_set_text_at(PW3270Dbus *object, int row, int col, const gchar *text, DBusGMethodInvocation *context);
void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context);
+ void pw3270_dbus_get_text(PW3270Dbus *object, int offset, int len, DBusGMethodInvocation *context);
void pw3270_dbus_cmp_text_at(PW3270Dbus *object, int row, int col, const gchar *text, DBusGMethodInvocation *context);
void pw3270_dbus_input(PW3270Dbus *object, const gchar *utftext, DBusGMethodInvocation *context);
--
libgit2 0.21.2