Commit 827dae935478547caa5df47aff018e33eb3fae3b
1 parent
fc25275f
Exists in
master
and in
5 other branches
Incluindo api de charset na versao windows
Showing
3 changed files
with
61 additions
and
9 deletions
Show diff stats
src/classlib/remote.cc
... | ... | @@ -986,25 +986,58 @@ |
986 | 986 | |
987 | 987 | } |
988 | 988 | |
989 | -#if defined(HAVE_DBUS) | |
990 | - string * get_clipboard(void) | |
989 | + int set_host_charset(const char *charset) | |
991 | 990 | { |
992 | - return query_string("getClipboard"); | |
991 | +#if defined(WIN32) | |
992 | + | |
993 | + size_t len = strlen(charset); | |
994 | + struct hllapi_packet_set_text * query; | |
995 | + size_t cbSize = sizeof(struct hllapi_packet_set_text)+len; | |
996 | + | |
997 | + query = (struct hllapi_packet_set_text *) malloc(cbSize); | |
998 | + query->packet_id = HLLAPI_PACKET_SET_HOST_CHARSET; | |
999 | + query->len = len; | |
1000 | + strcpy(query->text,charset); | |
1001 | + | |
1002 | + return query_intval((void *) query, cbSize, true); | |
1003 | + | |
1004 | +#elif defined(HAVE_DBUS) | |
1005 | + | |
1006 | + return query_intval("setHostCharset", DBUS_TYPE_STRING, &charset, DBUS_TYPE_INVALID); | |
1007 | + | |
1008 | +#else | |
1009 | + return -1; | |
1010 | +#endif | |
993 | 1011 | } |
994 | 1012 | |
995 | - int set_clipboard(const char *text) | |
1013 | + string * get_host_charset(void) | |
996 | 1014 | { |
997 | - return query_intval("setClipboard", DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); | |
1015 | +#if defined(WIN32) | |
1016 | + | |
1017 | + struct hllapi_packet_query query = { HLLAPI_PACKET_GET_HOST_CHARSET }; | |
1018 | + return query_string(&query,sizeof(query),100); | |
1019 | + | |
1020 | +#elif defined(HAVE_DBUS) | |
1021 | + | |
1022 | + return query_string("getHostCharset"); | |
1023 | + | |
1024 | +#else | |
1025 | + | |
1026 | + return NULL; | |
1027 | + | |
1028 | +#endif | |
998 | 1029 | } |
999 | 1030 | |
1000 | - int set_host_charset(const char *charset) | |
1031 | + | |
1032 | +#if defined(HAVE_DBUS) | |
1033 | + string * get_clipboard(void) | |
1001 | 1034 | { |
1002 | - return query_intval("setHostCharset", DBUS_TYPE_STRING, &charset, DBUS_TYPE_INVALID); | |
1035 | + return query_string("getClipboard"); | |
1003 | 1036 | } |
1004 | 1037 | |
1005 | - string * get_host_charset(void) | |
1038 | + int set_clipboard(const char *text) | |
1006 | 1039 | { |
1007 | - return query_string("getHostCharset"); | |
1040 | + return query_intval("setClipboard", DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); | |
1008 | 1041 | } |
1009 | 1042 | |
1010 | 1043 | string * get_display_charset(void) | ... | ... |
src/include/pw3270/ipcpackets.h
... | ... | @@ -56,6 +56,9 @@ |
56 | 56 | HLLAPI_PACKET_NEXT_UNPROTECTED, |
57 | 57 | HLLAPI_PACKET_QUIT, |
58 | 58 | |
59 | + HLLAPI_PACKET_SET_HOST_CHARSET, | |
60 | + HLLAPI_PACKET_GET_HOST_CHARSET, | |
61 | + | |
59 | 62 | HLLAPI_PACKET_INVALID |
60 | 63 | |
61 | 64 | } HLLAPI_PACKET; |
... | ... | @@ -162,6 +165,13 @@ struct hllapi_packet_set |
162 | 165 | unsigned short value; |
163 | 166 | }; |
164 | 167 | |
168 | +struct hllapi_packet_set_text | |
169 | +{ | |
170 | + unsigned char packet_id; | |
171 | + unsigned short len; | |
172 | + char text[1]; | |
173 | +}; | |
174 | + | |
165 | 175 | |
166 | 176 | #pragma pack() |
167 | 177 | ... | ... |
src/plugins/hllapi/pluginmain.c
... | ... | @@ -304,6 +304,15 @@ |
304 | 304 | send_result(source,0); |
305 | 305 | break; |
306 | 306 | |
307 | + case HLLAPI_PACKET_SET_HOST_CHARSET: | |
308 | + send_result(source,lib3270_set_host_charset( lib3270_get_default_session_handle(), | |
309 | + (unsigned char *) ((struct hllapi_packet_set_text *) source->buffer)->text)); | |
310 | + break; | |
311 | + | |
312 | + case HLLAPI_PACKET_GET_HOST_CHARSET: | |
313 | + send_text(source,lib3270_get_host_charset(lib3270_get_default_session_handle())); | |
314 | + break; | |
315 | + | |
307 | 316 | default: |
308 | 317 | send_result(source, EINVAL); |
309 | 318 | g_message("Invalid remote request (id=%d)",source->buffer[0]); | ... | ... |