Commit 1e786740cfd5944d63a7628baebae17dfdce0328
1 parent
a319240b
Exists in
master
and in
5 other branches
Iniciando implementação da função que permite selecionar um arquivo no plugin rexx
Showing
5 changed files
with
50 additions
and
0 deletions
Show diff stats
src/plugins/rx3270/rexx_methods.cc
... | ... | @@ -33,6 +33,7 @@ |
33 | 33 | */ |
34 | 34 | |
35 | 35 | #include "rx3270.h" |
36 | + #include <gtk/gtk.h> | |
36 | 37 | #include <time.h> |
37 | 38 | #include <string.h> |
38 | 39 | #include <ctype.h> |
... | ... | @@ -527,3 +528,41 @@ RexxMethod5(int, rx3270_method_popup, CSELF, sessionPtr, CSTRING, s_id, CSTRING, |
527 | 528 | |
528 | 529 | return hSession->popup_dialog(id, title, message, "%s", det ? det : ""); |
529 | 530 | } |
531 | + | |
532 | +RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CSTRING, action_name, CSTRING, title, OPTIONAL_CSTRING, extension, OPTIONAL_CSTRING, filename) | |
533 | +{ | |
534 | + static const struct _action | |
535 | + { | |
536 | + const gchar * action_name; | |
537 | + GtkFileChooserAction id; | |
538 | + } action[] = | |
539 | + { | |
540 | + { "open", GTK_FILE_CHOOSER_ACTION_OPEN }, | |
541 | + { "save", GTK_FILE_CHOOSER_ACTION_SAVE }, | |
542 | + { "folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER }, | |
543 | + { "select_folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER }, | |
544 | + { "create_folder", GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER } | |
545 | + }; | |
546 | + | |
547 | + GtkFileChooserAction id = GTK_FILE_CHOOSER_ACTION_OPEN; | |
548 | + char * ret; | |
549 | + | |
550 | + for(int f=0;f<5;f++) | |
551 | + { | |
552 | + if(!strcasecmp(action_name,action[f].action_name)) | |
553 | + { | |
554 | + id = action[f].id; | |
555 | + } | |
556 | + } | |
557 | + | |
558 | + ret = ((rx3270 *) sessionPtr)->file_chooser_dialog(id, title, extension,filename); | |
559 | + if(ret) | |
560 | + { | |
561 | + RexxStringObject obj = context->String(ret); | |
562 | + ((rx3270 *) sessionPtr)->free(ret); | |
563 | + return obj; | |
564 | + } | |
565 | + | |
566 | + return context->String(""); | |
567 | +} | |
568 | + | ... | ... |
src/plugins/rx3270/rx3270.cc
... | ... | @@ -203,3 +203,8 @@ int rx3270::popup_dialog(LIB3270_NOTIFY id , const char *title, const char *mess |
203 | 203 | return -1; |
204 | 204 | } |
205 | 205 | |
206 | +char * rx3270::file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename) | |
207 | +{ | |
208 | + return NULL; | |
209 | +} | |
210 | + | ... | ... |
src/plugins/rx3270/rx3270.cls
... | ... | @@ -83,6 +83,7 @@ |
83 | 83 | ::METHOD SETCLIPBOARD EXTERNAL "LIBRARY rx3270 rx3270_method_set_clipboard" |
84 | 84 | |
85 | 85 | ::METHOD POPUP EXTERNAL "LIBRARY rx3270 rx3270_method_popup" |
86 | +::METHOD GETFILENAME EXTERNAL "LIBRARY rx3270 rx3270_method_get_filename" | |
86 | 87 | |
87 | 88 | ::method waitForStringAt |
88 | 89 | use arg row, col, key, timeout | ... | ... |
src/plugins/rx3270/rx3270.h
... | ... | @@ -48,6 +48,7 @@ |
48 | 48 | #include <lib3270/log.h> |
49 | 49 | #include <lib3270/popup.h> |
50 | 50 | #include <stdarg.h> |
51 | + #include <gtk/gtk.h> | |
51 | 52 | |
52 | 53 | #ifndef ETIMEDOUT |
53 | 54 | #define ETIMEDOUT -1 |
... | ... | @@ -116,6 +117,7 @@ |
116 | 117 | REXX_METHOD_PROTOTYPE(rx3270_method_get_clipboard); |
117 | 118 | REXX_METHOD_PROTOTYPE(rx3270_method_set_clipboard); |
118 | 119 | REXX_METHOD_PROTOTYPE(rx3270_method_popup); |
120 | + REXX_METHOD_PROTOTYPE(rx3270_method_get_filename); | |
119 | 121 | REXX_METHOD_PROTOTYPE(rx3270_method_get_cursor_addr); |
120 | 122 | REXX_METHOD_PROTOTYPE(rx3270_method_set_cursor_addr); |
121 | 123 | REXX_METHOD_PROTOTYPE(rx3270_method_input_text); |
... | ... | @@ -200,7 +202,9 @@ |
200 | 202 | virtual char * get_clipboard(void); |
201 | 203 | virtual int set_clipboard(const char *text); |
202 | 204 | |
205 | + // Dialogs | |
203 | 206 | virtual int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...); |
207 | + virtual char * file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename); | |
204 | 208 | |
205 | 209 | }; |
206 | 210 | ... | ... |
src/plugins/rx3270/rxapimain.cc
... | ... | @@ -154,6 +154,7 @@ RexxMethodEntry rx3270_methods[] = |
154 | 154 | REXX_METHOD(rx3270_method_set_clipboard, rx3270_method_set_clipboard ), |
155 | 155 | |
156 | 156 | REXX_METHOD(rx3270_method_popup, rx3270_method_popup ), |
157 | + REXX_METHOD(rx3270_method_get_filename, rx3270_method_get_filename ), | |
157 | 158 | |
158 | 159 | REXX_METHOD(rx3270_method_get_cursor_addr, rx3270_method_get_cursor_addr ), |
159 | 160 | REXX_METHOD(rx3270_method_set_cursor_addr, rx3270_method_set_cursor_addr ), | ... | ... |