Commit 70fe145b4cdfa3f054600e78b41857228d748cf6
1 parent
9cc790e6
Exists in
master
and in
5 other branches
Incluindo plugin java
Showing
15 changed files
with
861 additions
and
11 deletions
Show diff stats
Makefile.in
@@ -136,6 +136,12 @@ $(BINDIR)/Debug/plugins/%@DLLEXT@: src/plugins/%/* $(BINDIR)/Debug/$(PACKAGE_TAR | @@ -136,6 +136,12 @@ $(BINDIR)/Debug/plugins/%@DLLEXT@: src/plugins/%/* $(BINDIR)/Debug/$(PACKAGE_TAR | ||
136 | $(BINDIR)/Release/plugins/%@DLLEXT@: src/plugins/%/* $(BINDIR)/Release/$(PACKAGE_TARNAME)$(EXEEXT) | 136 | $(BINDIR)/Release/plugins/%@DLLEXT@: src/plugins/%/* $(BINDIR)/Release/$(PACKAGE_TARNAME)$(EXEEXT) |
137 | @make $(PLUGIN_RELEASE_ARGS) -C $(dir $<) Release | 137 | @make $(PLUGIN_RELEASE_ARGS) -C $(dir $<) Release |
138 | 138 | ||
139 | +$(BINDIR)/Debug/plugins/j3270@DLLEXT@: src/java/* $(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT) | ||
140 | + @make BINDIR="../../$(BINDIR)" PW3270_LIBS="-L../../$(BINDIR)/Debug@DLLDIR@ -l3270 -lpw3270" PW3270_CFLAGS="-I../include" -C $(dir $<) Debug | ||
141 | + | ||
142 | +$(BINDIR)/Release/plugins/j3270@DLLEXT@: src/java/* $(BINDIR)/Release/$(PACKAGE_TARNAME)$(EXEEXT) | ||
143 | + @make BINDIR="../../$(BINDIR)" PW3270_LIBS="-L../../$(BINDIR)/Release@DLLDIR@ -l3270 -lpw3270" PW3270_CFLAGS="-I../include" -C $(dir $<) Release | ||
144 | + | ||
139 | #---[ Release targets ]-------------------------------------------------------- | 145 | #---[ Release targets ]-------------------------------------------------------- |
140 | 146 | ||
141 | all: Release | 147 | all: Release |
configure.ac
@@ -345,12 +345,67 @@ if test "$app_cv_java" = "yes" ; then | @@ -345,12 +345,67 @@ if test "$app_cv_java" = "yes" ; then | ||
345 | AC_PATH_TOOL([JAVADOC], [javadoc], [no], [$JDK_HOME/bin:$JRE_HOME/bin:$PATH]) | 345 | AC_PATH_TOOL([JAVADOC], [javadoc], [no], [$JDK_HOME/bin:$JRE_HOME/bin:$PATH]) |
346 | 346 | ||
347 | EXTENSIONS="$EXTENSIONS java" | 347 | EXTENSIONS="$EXTENSIONS java" |
348 | + PLUGINS="$PLUGINS j3270" | ||
348 | 349 | ||
349 | fi | 350 | fi |
350 | 351 | ||
352 | +# Set JVM arch | ||
353 | +case $host_cpu in | ||
354 | + | ||
355 | +x86_64) | ||
356 | + jvm_arch=amd64 | ||
357 | + ;; | ||
358 | + | ||
359 | +i?86) | ||
360 | + jvm_arch=i386 | ||
361 | + ;; | ||
362 | + | ||
363 | +*) | ||
364 | + jvm_arch="$host_cpu" | ||
365 | + ;; | ||
366 | + | ||
367 | +esac | ||
368 | + | ||
369 | +# JVMDIR | ||
370 | +if test "_$JVMDIR" = "_" ; then | ||
371 | + | ||
372 | + case "$host" in | ||
373 | + *-mingw32) | ||
374 | + JVMDIR="\$(JRE_HOME)/bin" | ||
375 | + ;; | ||
376 | + | ||
377 | + *-apple-*) | ||
378 | + JVMDIR="\$(JRE_HOME)/lib/$jvm_arch/server" | ||
379 | + ;; | ||
380 | + | ||
381 | + *) | ||
382 | + JVMDIR="\$(JRE_HOME)/lib/$jvm_arch/server" | ||
383 | + esac | ||
384 | + | ||
385 | +fi | ||
386 | + | ||
387 | + | ||
388 | +# Java link options depends on OS | ||
389 | +case "$host" in | ||
390 | + *-mingw32) | ||
391 | + jvm_libs="-L\$(JVMDIR) -Wl,-rpath,\$(JVMDIR) -ljvm" | ||
392 | + ;; | ||
393 | + | ||
394 | + *-apple-*) | ||
395 | + jvm_libs="-L\$(JVMDIR) -Wl,-rpath,\$(JVMDIR) -ljvm" | ||
396 | + ;; | ||
397 | + | ||
398 | + *) | ||
399 | + jvm_libs="-L\$(JVMDIR) -Wl,-rpath,\$(JVMDIR) -ljvm" | ||
400 | +esac | ||
401 | + | ||
402 | + | ||
403 | +AC_SUBST(JVM_LIBS,$jvm_libs) | ||
404 | + | ||
351 | AC_SUBST(JAVAC) | 405 | AC_SUBST(JAVAC) |
352 | AC_SUBST(JAVAH) | 406 | AC_SUBST(JAVAH) |
353 | AC_SUBST(JAVADOC) | 407 | AC_SUBST(JAVADOC) |
408 | +AC_SUBST(JVMDIR) | ||
354 | AC_SUBST(jnidir) | 409 | AC_SUBST(jnidir) |
355 | AC_SUBST(jvmjardir) | 410 | AC_SUBST(jvmjardir) |
356 | AC_SUBST(javadocdir) | 411 | AC_SUBST(javadocdir) |
pw3270.cbp
@@ -102,6 +102,62 @@ | @@ -102,6 +102,62 @@ | ||
102 | <Unit filename="src/include/pw3270/trace.h" /> | 102 | <Unit filename="src/include/pw3270/trace.h" /> |
103 | <Unit filename="src/include/pw3270/v3270.h" /> | 103 | <Unit filename="src/include/pw3270/v3270.h" /> |
104 | <Unit filename="src/include/rules.mak.in" /> | 104 | <Unit filename="src/include/rules.mak.in" /> |
105 | + <Unit filename="src/java/Makefile.in"> | ||
106 | + <Option target="Debug" /> | ||
107 | + <Option target="Release" /> | ||
108 | + </Unit> | ||
109 | + <Unit filename="src/java/actions.cc"> | ||
110 | + <Option target="Debug" /> | ||
111 | + <Option target="Release" /> | ||
112 | + </Unit> | ||
113 | + <Unit filename="src/java/connect.cc"> | ||
114 | + <Option target="Debug" /> | ||
115 | + <Option target="Release" /> | ||
116 | + </Unit> | ||
117 | + <Unit filename="src/java/cursor.cc"> | ||
118 | + <Option target="Debug" /> | ||
119 | + <Option target="Release" /> | ||
120 | + </Unit> | ||
121 | + <Unit filename="src/java/getset.cc"> | ||
122 | + <Option target="Debug" /> | ||
123 | + <Option target="Release" /> | ||
124 | + </Unit> | ||
125 | + <Unit filename="src/java/info.cc"> | ||
126 | + <Option target="Debug" /> | ||
127 | + <Option target="Release" /> | ||
128 | + </Unit> | ||
129 | + <Unit filename="src/java/keyboard.cc"> | ||
130 | + <Option target="Debug" /> | ||
131 | + <Option target="Release" /> | ||
132 | + </Unit> | ||
133 | + <Unit filename="src/java/main.cc"> | ||
134 | + <Option target="Debug" /> | ||
135 | + <Option target="Release" /> | ||
136 | + </Unit> | ||
137 | + <Unit filename="src/java/plugin.cc"> | ||
138 | + <Option target="Debug" /> | ||
139 | + <Option target="Release" /> | ||
140 | + </Unit> | ||
141 | + <Unit filename="src/java/private.h"> | ||
142 | + <Option target="Debug" /> | ||
143 | + <Option target="Release" /> | ||
144 | + </Unit> | ||
145 | + <Unit filename="src/java/sample/bbsample.java"> | ||
146 | + <Option target="Debug" /> | ||
147 | + <Option target="Release" /> | ||
148 | + </Unit> | ||
149 | + <Unit filename="src/java/sample/efglobe.java"> | ||
150 | + <Option target="Debug" /> | ||
151 | + <Option target="Release" /> | ||
152 | + </Unit> | ||
153 | + <Unit filename="src/java/terminal.java"> | ||
154 | + <Option target="Debug" /> | ||
155 | + <Option target="Release" /> | ||
156 | + </Unit> | ||
157 | + <Unit filename="src/java/testprogram.java"> | ||
158 | + <Option target="Debug" /> | ||
159 | + <Option target="Release" /> | ||
160 | + </Unit> | ||
105 | <Unit filename="src/lib3270/3270ds.h" /> | 161 | <Unit filename="src/lib3270/3270ds.h" /> |
106 | <Unit filename="src/lib3270/Makefile.in" /> | 162 | <Unit filename="src/lib3270/Makefile.in" /> |
107 | <Unit filename="src/lib3270/X11keysym.h" /> | 163 | <Unit filename="src/lib3270/X11keysym.h" /> |
src/java/Makefile.in
@@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
25 | # | 25 | # |
26 | 26 | ||
27 | PACKAGE_NAME=@PACKAGE_NAME@ | 27 | PACKAGE_NAME=@PACKAGE_NAME@ |
28 | -SOURCES=main.cc info.cc connect.cc getset.cc cursor.cc keyboard.cc actions.cc | 28 | +SOURCES=main.cc info.cc connect.cc getset.cc cursor.cc keyboard.cc actions.cc field.cc dialog.cc clipboard.cc |
29 | PLUGIN_SRC=plugin.cc | 29 | PLUGIN_SRC=plugin.cc |
30 | 30 | ||
31 | #---[ Paths ]------------------------------------------------------------------ | 31 | #---[ Paths ]------------------------------------------------------------------ |
@@ -55,6 +55,7 @@ JAR=@JAR@ | @@ -55,6 +55,7 @@ JAR=@JAR@ | ||
55 | JAVADOC=@JAVADOC@ | 55 | JAVADOC=@JAVADOC@ |
56 | JDK_HOME=@JDK_HOME@ | 56 | JDK_HOME=@JDK_HOME@ |
57 | JRE_HOME=@JRE_HOME@ | 57 | JRE_HOME=@JRE_HOME@ |
58 | +JVMDIR=@JVMDIR@ | ||
58 | 59 | ||
59 | #---[ Paths ]------------------------------------------------------------------ | 60 | #---[ Paths ]------------------------------------------------------------------ |
60 | 61 | ||
@@ -78,8 +79,14 @@ include $(CLASSLIBDIR)/class.mak | @@ -78,8 +79,14 @@ include $(CLASSLIBDIR)/class.mak | ||
78 | #---[ Build options ]---------------------------------------------------------- | 79 | #---[ Build options ]---------------------------------------------------------- |
79 | 80 | ||
80 | CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ -I../include | 81 | CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ -I../include |
81 | -PLUGIN_CFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ @GTK_CFLAGS@ @GTKMAC_CFLAGS@ -I../include | ||
82 | -PLUGINS_LIBS=@GTK_LIBS@ @GTKMAC_LIBS@ | 82 | + |
83 | +PW3270_LIBS ?= -L../../.bin/Debug@DLLDIR@ -l3270 -lpw3270 | ||
84 | +PW3270_CFLAGS ?= -I../include | ||
85 | + | ||
86 | +PLUGIN_CFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ -DJNIDIR="\"$(jnidir)\"" \ | ||
87 | + -DJARDIR="\"$(jvmjardir)\"" @GTK_CFLAGS@ @GTKMAC_CFLAGS@ $(PW3270_CFLAGS) | ||
88 | + | ||
89 | +PLUGIN_LIBS=@GTK_LIBS@ @GTKMAC_LIBS@ $(PW3270_LIBS) @JVM_LIBS@ | ||
83 | 90 | ||
84 | #---[ Rules ]------------------------------------------------------------------ | 91 | #---[ Rules ]------------------------------------------------------------------ |
85 | 92 | ||
@@ -146,14 +153,14 @@ $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \ | @@ -146,14 +153,14 @@ $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \ | ||
146 | 153 | ||
147 | @echo " LD `basename $@`" | 154 | @echo " LD `basename $@`" |
148 | @$(MKDIR) `dirname $@` | 155 | @$(MKDIR) `dirname $@` |
149 | - @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -o $@ $^ $(CLASS_LIBS) | 156 | + @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -Wl,-soname,`basename $@` -o $@ $^ $(CLASS_LIBS) |
150 | 157 | ||
151 | $(BINRLS)/plugins/j3270@DLLEXT@: \ | 158 | $(BINRLS)/plugins/j3270@DLLEXT@: \ |
152 | $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/j3270/$(SRC)@OBJEXT@) | 159 | $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/j3270/$(SRC)@OBJEXT@) |
153 | 160 | ||
154 | @echo " LD `basename $@`" | 161 | @echo " LD `basename $@`" |
155 | @$(MKDIR) `dirname $@` | 162 | @$(MKDIR) `dirname $@` |
156 | - @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -o $@ $^ $(CLASS_LIBS) $(PLUGIN_LIBS) -ljni3270 | 163 | + @$(CXX) @SYSDLL_FLAGS@ -Wl,--rpath,$(jnidir) $(LDFLAGS) -o $@ $^ $(CLASS_LIBS) $(PLUGIN_LIBS) -L$(BINDBG)@DLLDIR@ -ljni3270 |
157 | 164 | ||
158 | #---[ Debug targets ]---------------------------------------------------------- | 165 | #---[ Debug targets ]---------------------------------------------------------- |
159 | 166 | ||
@@ -167,7 +174,7 @@ $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \ | @@ -167,7 +174,7 @@ $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \ | ||
167 | 174 | ||
168 | @echo " LD `basename $@`" | 175 | @echo " LD `basename $@`" |
169 | @$(MKDIR) `dirname $@` | 176 | @$(MKDIR) `dirname $@` |
170 | - @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -o $@ $^ $(CLASS_LIBS) | 177 | + @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -Wl,-soname,`basename $@` -o $@ $^ $(CLASS_LIBS) |
171 | 178 | ||
172 | $(BINDBG)/plugins/j3270@DLLEXT@: \ | 179 | $(BINDBG)/plugins/j3270@DLLEXT@: \ |
173 | $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \ | 180 | $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \ |
@@ -175,10 +182,10 @@ $(BINDBG)/plugins/j3270@DLLEXT@: \ | @@ -175,10 +182,10 @@ $(BINDBG)/plugins/j3270@DLLEXT@: \ | ||
175 | 182 | ||
176 | @echo " LD `basename $@`" | 183 | @echo " LD `basename $@`" |
177 | @$(MKDIR) `dirname $@` | 184 | @$(MKDIR) `dirname $@` |
178 | - @$(CXX) @SYSDLL_FLAGS@ @DBGRPATH@ $(LDFLAGS) -o $@ $^ $(CLASS_LIBS) $(PLUGIN_LIBS) -L$(BINDBG)@DLLDIR@ -ljni3270 | 185 | + $(CXX) @SYSDLL_FLAGS@ -Wl,--rpath,.bin/Debug@DLLDIR@ $(LDFLAGS) -Wl,-soname,`basename $@` -o $@ $^ $(CLASS_LIBS) $(PLUGIN_LIBS) -L$(BINDBG)@DLLDIR@ -ljni3270 |
179 | 186 | ||
180 | run: $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINDIR)/java/testprogram.class | 187 | run: $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINDIR)/java/testprogram.class |
181 | - @LD_LIBRARY_PATH=../../.bin/Debug/lib/ java -Djava.library.path=$(BINDBG)@DLLDIR@ -cp .bin/java/ testprogram | 188 | + @LD_LIBRARY_PATH=../../.bin/Debug@DLLDIR@/ java -Djava.library.path=$(BINDBG)@DLLDIR@ -cp .bin/java/ testprogram |
182 | 189 | ||
183 | #---[ Misc targets ]----------------------------------------------------------- | 190 | #---[ Misc targets ]----------------------------------------------------------- |
184 | 191 |
@@ -0,0 +1,117 @@ | @@ -0,0 +1,117 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple | ||
19 | + * Place, Suite 330, Boston, MA, 02111-1307, USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como dialog.cc e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + */ | ||
29 | + | ||
30 | + #include "jni3270.h" | ||
31 | + #include "private.h" | ||
32 | + | ||
33 | +/*---[ Implement ]----------------------------------------------------------------------------------*/ | ||
34 | + | ||
35 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_set_1copy(JNIEnv *env, jobject obj, jstring j_str) { | ||
36 | + | ||
37 | + const char * str = env->GetStringUTFChars(j_str, 0); | ||
38 | + jint rc = -1; | ||
39 | + | ||
40 | + try { | ||
41 | + | ||
42 | + rc = getHandle(env,obj)->set_copy(str); | ||
43 | + | ||
44 | + } catch(std::exception &e) { | ||
45 | + | ||
46 | + env->ReleaseStringUTFChars( j_str, str); | ||
47 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
48 | + return -1; | ||
49 | + | ||
50 | + } | ||
51 | + | ||
52 | + env->ReleaseStringUTFChars( j_str, str); | ||
53 | + return rc; | ||
54 | + | ||
55 | +} | ||
56 | + | ||
57 | +JNIEXPORT jstring JNICALL Java_pw3270_terminal_get_1copy(JNIEnv *env, jobject obj) { | ||
58 | + | ||
59 | + string str; | ||
60 | + | ||
61 | + try { | ||
62 | + | ||
63 | + str = getHandle(env,obj)->get_copy(); | ||
64 | + | ||
65 | + | ||
66 | + } catch(std::exception &e) { | ||
67 | + | ||
68 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
69 | + | ||
70 | + } | ||
71 | + | ||
72 | + return env->NewStringUTF(str.c_str()); | ||
73 | + | ||
74 | + | ||
75 | +} | ||
76 | + | ||
77 | +JNIEXPORT jstring JNICALL Java_pw3270_terminal_get_1clipboard(JNIEnv *env, jobject obj) { | ||
78 | + | ||
79 | + string str; | ||
80 | + | ||
81 | + try { | ||
82 | + | ||
83 | + str = getHandle(env,obj)->get_clipboard(); | ||
84 | + | ||
85 | + | ||
86 | + } catch(std::exception &e) { | ||
87 | + | ||
88 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | + return env->NewStringUTF(str.c_str()); | ||
93 | + | ||
94 | +} | ||
95 | + | ||
96 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_set_1clipboard(JNIEnv *env, jobject obj, jstring j_str) { | ||
97 | + | ||
98 | + const char * str = env->GetStringUTFChars(j_str, 0); | ||
99 | + jint rc = -1; | ||
100 | + | ||
101 | + try { | ||
102 | + | ||
103 | + rc = getHandle(env,obj)->set_clipboard(str); | ||
104 | + | ||
105 | + } catch(std::exception &e) { | ||
106 | + | ||
107 | + env->ReleaseStringUTFChars( j_str, str); | ||
108 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
109 | + return -1; | ||
110 | + | ||
111 | + } | ||
112 | + | ||
113 | + env->ReleaseStringUTFChars( j_str, str); | ||
114 | + return rc; | ||
115 | + | ||
116 | + | ||
117 | +} |
@@ -0,0 +1,91 @@ | @@ -0,0 +1,91 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple | ||
19 | + * Place, Suite 330, Boston, MA, 02111-1307, USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como dialog.cc e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + */ | ||
29 | + | ||
30 | + #include "jni3270.h" | ||
31 | + #include "private.h" | ||
32 | + | ||
33 | +/*---[ Implement ]----------------------------------------------------------------------------------*/ | ||
34 | + | ||
35 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_popup_1dialog(JNIEnv *env, jobject obj, jint id, jstring j_title, jstring j_message, jstring j_secondary) { | ||
36 | + | ||
37 | + const char * title = env->GetStringUTFChars(j_title, 0); | ||
38 | + const char * message = env->GetStringUTFChars(j_message, 0); | ||
39 | + const char * secondary = env->GetStringUTFChars(j_secondary, 0); | ||
40 | + jint rc; | ||
41 | + | ||
42 | + try { | ||
43 | + | ||
44 | + rc = (jint) getHandle(env,obj)->popup_dialog((LIB3270_NOTIFY) id, title, message, secondary); | ||
45 | + | ||
46 | + } catch(std::exception &e) { | ||
47 | + | ||
48 | + env->ReleaseStringUTFChars( j_title, title); | ||
49 | + env->ReleaseStringUTFChars( j_message, message); | ||
50 | + env->ReleaseStringUTFChars( j_secondary, secondary); | ||
51 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
52 | + | ||
53 | + } | ||
54 | + | ||
55 | + env->ReleaseStringUTFChars( j_title, title); | ||
56 | + env->ReleaseStringUTFChars( j_message, message); | ||
57 | + env->ReleaseStringUTFChars( j_secondary, secondary); | ||
58 | + | ||
59 | + return rc; | ||
60 | + | ||
61 | +} | ||
62 | + | ||
63 | +JNIEXPORT jstring JNICALL Java_pw3270_terminal_file_1chooser_1dialog(JNIEnv *env, jobject obj, jint action, jstring j_title, jstring j_extension, jstring j_filename) { | ||
64 | + | ||
65 | + string str; | ||
66 | + const char * title = env->GetStringUTFChars(j_title, 0); | ||
67 | + const char * extension = env->GetStringUTFChars(j_extension, 0); | ||
68 | + const char * filename = env->GetStringUTFChars(j_filename, 0); | ||
69 | + jint rc; | ||
70 | + | ||
71 | + try { | ||
72 | + | ||
73 | + str = getHandle(env,obj)->file_chooser_dialog((int) action, title, extension, filename); | ||
74 | + | ||
75 | + } catch(std::exception &e) { | ||
76 | + | ||
77 | + env->ReleaseStringUTFChars( j_title, title); | ||
78 | + env->ReleaseStringUTFChars( j_extension, extension); | ||
79 | + env->ReleaseStringUTFChars( j_filename, filename); | ||
80 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
81 | + | ||
82 | + } | ||
83 | + | ||
84 | + env->ReleaseStringUTFChars( j_title, title); | ||
85 | + env->ReleaseStringUTFChars( j_extension, extension); | ||
86 | + env->ReleaseStringUTFChars( j_filename, filename); | ||
87 | + | ||
88 | + return env->NewStringUTF(str.c_str()); | ||
89 | + | ||
90 | + | ||
91 | +} |
@@ -0,0 +1,91 @@ | @@ -0,0 +1,91 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple | ||
19 | + * Place, Suite 330, Boston, MA, 02111-1307, USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como field.cc e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + */ | ||
29 | + | ||
30 | + #include "jni3270.h" | ||
31 | + #include "private.h" | ||
32 | + | ||
33 | +/*---[ Implement ]----------------------------------------------------------------------------------*/ | ||
34 | + | ||
35 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_get_1field_1start (JNIEnv *env, jobject obj, jint baddr) { | ||
36 | + | ||
37 | + jint rc; | ||
38 | + | ||
39 | + try { | ||
40 | + | ||
41 | + rc = getHandle(env,obj)->get_field_start((int) baddr); | ||
42 | + | ||
43 | + | ||
44 | + } catch(std::exception &e) { | ||
45 | + | ||
46 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
47 | + | ||
48 | + } | ||
49 | + | ||
50 | + return rc; | ||
51 | + | ||
52 | +} | ||
53 | + | ||
54 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_get_1field_1len (JNIEnv *env, jobject obj, jint baddr) { | ||
55 | + | ||
56 | + jint rc; | ||
57 | + | ||
58 | + try { | ||
59 | + | ||
60 | + rc = getHandle(env,obj)->get_field_len((int) baddr); | ||
61 | + | ||
62 | + | ||
63 | + } catch(std::exception &e) { | ||
64 | + | ||
65 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
66 | + | ||
67 | + } | ||
68 | + | ||
69 | + return rc; | ||
70 | + | ||
71 | +} | ||
72 | + | ||
73 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_get_1next_1unprotected(JNIEnv *env, jobject obj, jint baddr) { | ||
74 | + | ||
75 | + jint rc; | ||
76 | + | ||
77 | + try { | ||
78 | + | ||
79 | + rc = getHandle(env,obj)->get_next_unprotected((int) baddr); | ||
80 | + | ||
81 | + | ||
82 | + } catch(std::exception &e) { | ||
83 | + | ||
84 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
85 | + | ||
86 | + } | ||
87 | + | ||
88 | + return rc; | ||
89 | + | ||
90 | + | ||
91 | +} |
src/java/getset.cc
@@ -138,3 +138,43 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_input_1string(JNIEnv *env, jobject o | @@ -138,3 +138,43 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_input_1string(JNIEnv *env, jobject o | ||
138 | 138 | ||
139 | } | 139 | } |
140 | 140 | ||
141 | +JNIEXPORT jboolean JNICALL Java_pw3270_terminal_is_1connected(JNIEnv *env, jobject obj) { | ||
142 | + | ||
143 | + jboolean rc = false; | ||
144 | + | ||
145 | + try { | ||
146 | + | ||
147 | + rc = getHandle(env,obj)->is_connected(); | ||
148 | + | ||
149 | + } catch(std::exception &e) { | ||
150 | + | ||
151 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
152 | + return rc; | ||
153 | + | ||
154 | + } | ||
155 | + | ||
156 | + | ||
157 | + return rc; | ||
158 | + | ||
159 | +} | ||
160 | + | ||
161 | +JNIEXPORT jboolean JNICALL Java_pw3270_terminal_is_1ready(JNIEnv *env, jobject obj) { | ||
162 | + | ||
163 | + jboolean rc = false; | ||
164 | + | ||
165 | + try { | ||
166 | + | ||
167 | + rc = getHandle(env,obj)->is_ready(); | ||
168 | + | ||
169 | + } catch(std::exception &e) { | ||
170 | + | ||
171 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
172 | + return rc; | ||
173 | + | ||
174 | + } | ||
175 | + | ||
176 | + | ||
177 | + return rc; | ||
178 | + | ||
179 | +} | ||
180 | + |
src/java/jni3270.cbp
@@ -39,12 +39,20 @@ | @@ -39,12 +39,20 @@ | ||
39 | <Add option="-Wall" /> | 39 | <Add option="-Wall" /> |
40 | </Compiler> | 40 | </Compiler> |
41 | <Unit filename="../../configure.ac" /> | 41 | <Unit filename="../../configure.ac" /> |
42 | + <Unit filename="../classlib/exception.cc" /> | ||
43 | + <Unit filename="../classlib/local.cc" /> | ||
44 | + <Unit filename="../classlib/remote.cc" /> | ||
45 | + <Unit filename="../classlib/session.cc" /> | ||
46 | + <Unit filename="../classlib/testprogram.cc" /> | ||
42 | <Unit filename="../include/lib3270.h" /> | 47 | <Unit filename="../include/lib3270.h" /> |
43 | <Unit filename="../include/pw3270/class.h" /> | 48 | <Unit filename="../include/pw3270/class.h" /> |
44 | <Unit filename="Makefile.in" /> | 49 | <Unit filename="Makefile.in" /> |
45 | <Unit filename="actions.cc" /> | 50 | <Unit filename="actions.cc" /> |
51 | + <Unit filename="clipboard.cc" /> | ||
46 | <Unit filename="connect.cc" /> | 52 | <Unit filename="connect.cc" /> |
47 | <Unit filename="cursor.cc" /> | 53 | <Unit filename="cursor.cc" /> |
54 | + <Unit filename="dialog.cc" /> | ||
55 | + <Unit filename="field.cc" /> | ||
48 | <Unit filename="getset.cc" /> | 56 | <Unit filename="getset.cc" /> |
49 | <Unit filename="info.cc" /> | 57 | <Unit filename="info.cc" /> |
50 | <Unit filename="jni3270.h" /> | 58 | <Unit filename="jni3270.h" /> |
src/java/main.cc
@@ -121,3 +121,23 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_wait_1for_1ready(JNIEnv *env, jobjec | @@ -121,3 +121,23 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_wait_1for_1ready(JNIEnv *env, jobjec | ||
121 | return 0; | 121 | return 0; |
122 | 122 | ||
123 | } | 123 | } |
124 | + | ||
125 | +JNIEXPORT void JNICALL Java_pw3270_terminal_log(JNIEnv *env, jobject obj, jstring j_str) { | ||
126 | + | ||
127 | + const char * str = env->GetStringUTFChars(j_str, 0); | ||
128 | + | ||
129 | + try { | ||
130 | + | ||
131 | + getHandle(env,obj)->log("%s", str); | ||
132 | + | ||
133 | + } catch(std::exception &e) { | ||
134 | + | ||
135 | + env->ReleaseStringUTFChars( j_str, str); | ||
136 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | ||
137 | + return; | ||
138 | + | ||
139 | + } | ||
140 | + | ||
141 | + env->ReleaseStringUTFChars( j_str, str); | ||
142 | + | ||
143 | +} |
src/java/plugin.cc
@@ -313,7 +313,7 @@ | @@ -313,7 +313,7 @@ | ||
313 | 313 | ||
314 | LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window) | 314 | LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window) |
315 | { | 315 | { |
316 | - trace("%s",__FUNCTION__); | 316 | + trace("JAVA: %s",__FUNCTION__); |
317 | #if GTK_CHECK_VERSION(2,32,0) | 317 | #if GTK_CHECK_VERSION(2,32,0) |
318 | g_mutex_init(&mutex); | 318 | g_mutex_init(&mutex); |
319 | #endif // GTK_CHECK_VERSION | 319 | #endif // GTK_CHECK_VERSION |
@@ -326,7 +326,224 @@ | @@ -326,7 +326,224 @@ | ||
326 | #if GTK_CHECK_VERSION(2,32,0) | 326 | #if GTK_CHECK_VERSION(2,32,0) |
327 | g_mutex_clear(&mutex); | 327 | g_mutex_clear(&mutex); |
328 | #endif // GTK_CHECK_VERSION | 328 | #endif // GTK_CHECK_VERSION |
329 | - trace("%s",__FUNCTION__); | 329 | + trace("JAVA: %s",__FUNCTION__); |
330 | return 0; | 330 | return 0; |
331 | } | 331 | } |
332 | 332 | ||
333 | + void call_java_program(GtkAction *action, GtkWidget *widget, const gchar *filename) | ||
334 | + { | ||
335 | + | ||
336 | +#if GTK_CHECK_VERSION(2,32,0) | ||
337 | + if(!g_mutex_trylock(&mutex)) { | ||
338 | +#else | ||
339 | + if(!g_static_mutex_trylock(&mutex)) { | ||
340 | +#endif // GTK_CHECK_VERSION | ||
341 | + | ||
342 | + GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), | ||
343 | + GTK_DIALOG_DESTROY_WITH_PARENT, | ||
344 | + GTK_MESSAGE_ERROR, | ||
345 | + GTK_BUTTONS_CANCEL, | ||
346 | + _( "Can't start %s program" ), "java" ); | ||
347 | + | ||
348 | + gtk_window_set_title(GTK_WINDOW(dialog),_( "JVM busy" )); | ||
349 | + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),_( "%s interpreter is busy" ), "java"); | ||
350 | + | ||
351 | + gtk_dialog_run(GTK_DIALOG (dialog)); | ||
352 | + gtk_widget_destroy(dialog); | ||
353 | + | ||
354 | + return; | ||
355 | + } | ||
356 | + | ||
357 | + v3270_set_script(widget,'J',TRUE); | ||
358 | + | ||
359 | + // Start JNI | ||
360 | + JavaVMInitArgs vm_args; | ||
361 | + JavaVMOption options[5]; | ||
362 | + | ||
363 | + JavaVM * jvm = NULL; | ||
364 | + JNIEnv * env = NULL; | ||
365 | + jint rc = 0; | ||
366 | + | ||
367 | + memset(&vm_args,0,sizeof(vm_args)); | ||
368 | + memset(options,0,sizeof(options)); | ||
369 | + | ||
370 | + vm_args.version = JNI_VERSION_1_2; | ||
371 | + vm_args.nOptions = 0; | ||
372 | + vm_args.options = options; | ||
373 | + | ||
374 | +#ifdef DEBUG | ||
375 | + options[vm_args.nOptions++].optionString = g_strdup("-verbose"); | ||
376 | +#endif | ||
377 | + | ||
378 | + gchar * dirname = g_path_get_dirname(filename); | ||
379 | + | ||
380 | +#if defined( WIN32 ) | ||
381 | + | ||
382 | + options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.library.path=%s","."); | ||
383 | + options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.class.path=.;%s",dirname); | ||
384 | + | ||
385 | +#else | ||
386 | + | ||
387 | + options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.library.path=%s",JNIDIR); | ||
388 | + options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.class.path=%s:%s",JARDIR,dirname); | ||
389 | + | ||
390 | +#endif // JNIDIR | ||
391 | + | ||
392 | + g_free(dirname); | ||
393 | + | ||
394 | + rc = JNI_CreateJavaVM(&jvm,(void **)&env,&vm_args); | ||
395 | + | ||
396 | + // Release options | ||
397 | + for(size_t f=0;f<vm_args.nOptions;f++) { | ||
398 | + trace("Releasing option %d: %s",f,options[f].optionString); | ||
399 | + g_free(options[f].optionString); | ||
400 | + } | ||
401 | + | ||
402 | + if(rc < 0) { | ||
403 | + | ||
404 | + GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), | ||
405 | + GTK_DIALOG_DESTROY_WITH_PARENT, | ||
406 | + GTK_MESSAGE_ERROR, | ||
407 | + GTK_BUTTONS_CANCEL, | ||
408 | + "%s", _( "Can't create java VM" )); | ||
409 | + | ||
410 | + gtk_window_set_title(GTK_WINDOW(dialog), _( "Script startup failure" )); | ||
411 | + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),_( "The error code was %d" ), (int) rc); | ||
412 | + | ||
413 | + gtk_dialog_run(GTK_DIALOG (dialog)); | ||
414 | + gtk_widget_destroy(dialog); | ||
415 | + | ||
416 | + } else { | ||
417 | + | ||
418 | + gchar * classname = g_path_get_basename(filename); | ||
419 | + | ||
420 | + gchar * ptr = strchr(classname,'.'); | ||
421 | + if(ptr) { | ||
422 | + *ptr = 0; | ||
423 | + } | ||
424 | + | ||
425 | + jclass cls = env->FindClass(classname); | ||
426 | + | ||
427 | + if(cls == 0) { | ||
428 | + | ||
429 | + GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), | ||
430 | + GTK_DIALOG_DESTROY_WITH_PARENT, | ||
431 | + GTK_MESSAGE_ERROR, | ||
432 | + GTK_BUTTONS_CANCEL, | ||
433 | + _( "Can't find class %s" ), classname ); | ||
434 | + | ||
435 | + gtk_window_set_title(GTK_WINDOW(dialog), _( "Java script failure" )); | ||
436 | + if(gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL) | ||
437 | + gtk_main_quit(); | ||
438 | + gtk_widget_destroy(dialog); | ||
439 | + | ||
440 | + } else { | ||
441 | + | ||
442 | + jmethodID mid = env->GetStaticMethodID(cls, "main", "([Ljava/lang/String;)V"); | ||
443 | + | ||
444 | + if(mid == 0) { | ||
445 | + | ||
446 | + GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), | ||
447 | + GTK_DIALOG_DESTROY_WITH_PARENT, | ||
448 | + GTK_MESSAGE_ERROR, | ||
449 | + GTK_BUTTONS_OK_CANCEL, | ||
450 | + _( "Can't find class \"%s\"" ), classname ); | ||
451 | + | ||
452 | + gtk_window_set_title(GTK_WINDOW(dialog), _( "Java script failure" )); | ||
453 | + if(gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL) | ||
454 | + gtk_main_quit(); | ||
455 | + gtk_widget_destroy(dialog); | ||
456 | + | ||
457 | + } else { | ||
458 | + | ||
459 | + jobjectArray args = env->NewObjectArray(0, env->FindClass("java/lang/String"), env->NewStringUTF("")); | ||
460 | + | ||
461 | + env->CallStaticVoidMethod(cls, mid, args); | ||
462 | + | ||
463 | + } | ||
464 | + | ||
465 | + } | ||
466 | + | ||
467 | + g_free(classname); | ||
468 | + | ||
469 | + | ||
470 | + jvm->DestroyJavaVM(); | ||
471 | + } | ||
472 | + | ||
473 | + // And release | ||
474 | + v3270_set_script(widget,'J',FALSE); | ||
475 | + | ||
476 | +#if GTK_CHECK_VERSION(2,32,0) | ||
477 | + g_mutex_unlock(&mutex); | ||
478 | +#else | ||
479 | + g_static_mutex_unlock(&mutex); | ||
480 | +#endif // GTK_CHECK_VERSION | ||
481 | + | ||
482 | + | ||
483 | + } | ||
484 | + | ||
485 | + | ||
486 | +extern "C" | ||
487 | +{ | ||
488 | + LIB3270_EXPORT void pw3270_action_java_activated(GtkAction *action, GtkWidget *widget) | ||
489 | + { | ||
490 | + gchar *filename = (gchar *) g_object_get_data(G_OBJECT(action),"src"); | ||
491 | + | ||
492 | + lib3270_trace_event(v3270_get_session(widget),"Action %s activated on widget %p",gtk_action_get_name(action),widget); | ||
493 | + | ||
494 | +#if GTK_CHECK_VERSION(3,10,0) | ||
495 | + g_simple_action_set_enabled(G_SIMPLE_ACTION(action),FALSE); | ||
496 | +#else | ||
497 | + gtk_action_set_sensitive(action,FALSE); | ||
498 | +#endif // GTK(3,10) | ||
499 | + | ||
500 | + if(filename) | ||
501 | + { | ||
502 | + // Has filename, call it directly | ||
503 | + call_java_program(action,widget,filename); | ||
504 | + } | ||
505 | + else | ||
506 | + { | ||
507 | + // No filename, ask user | ||
508 | + static const struct _list | ||
509 | + { | ||
510 | + const gchar *name; | ||
511 | + const gchar *pattern; | ||
512 | + } list[] = | ||
513 | + { | ||
514 | + { N_( "Java class file" ), "*.class" } | ||
515 | + }; | ||
516 | + | ||
517 | + GtkFileFilter * filter[G_N_ELEMENTS(list)+1]; | ||
518 | + unsigned int f; | ||
519 | + | ||
520 | + memset(filter,0,sizeof(filter)); | ||
521 | + | ||
522 | + for(f=0;f<G_N_ELEMENTS(list);f++) | ||
523 | + { | ||
524 | + filter[f] = gtk_file_filter_new(); | ||
525 | + gtk_file_filter_set_name(filter[f],gettext(list[f].name)); | ||
526 | + gtk_file_filter_add_pattern(filter[f],list[f].pattern); | ||
527 | + } | ||
528 | + | ||
529 | + filename = pw3270_get_filename(widget,"java","script",filter,_( "Select script to run" )); | ||
530 | + | ||
531 | + if(filename) | ||
532 | + { | ||
533 | + call_java_program(action,widget,filename); | ||
534 | + g_free(filename); | ||
535 | + } | ||
536 | + | ||
537 | + | ||
538 | + } | ||
539 | + | ||
540 | +#if GTK_CHECK_VERSION(3,10,0) | ||
541 | + g_simple_action_set_enabled(G_SIMPLE_ACTION(action),TRUE); | ||
542 | +#else | ||
543 | + gtk_action_set_sensitive(action,TRUE); | ||
544 | +#endif // GTK(3,10) | ||
545 | + | ||
546 | + } | ||
547 | + | ||
548 | +} | ||
549 | + |
src/java/terminal.java
@@ -251,6 +251,103 @@ public class terminal | @@ -251,6 +251,103 @@ public class terminal | ||
251 | } | 251 | } |
252 | 252 | ||
253 | /** | 253 | /** |
254 | + * Get the field start address. | ||
255 | + * | ||
256 | + * @param baddr address of the field. | ||
257 | + * | ||
258 | + * @return Address of current field start. | ||
259 | + * | ||
260 | + */ | ||
261 | + public native int get_field_start(int baddr); | ||
262 | + | ||
263 | + /** | ||
264 | + * Get the current field start address. | ||
265 | + * | ||
266 | + * @return Current field start address. | ||
267 | + * | ||
268 | + */ | ||
269 | + public int get_field_start() { | ||
270 | + return get_field_start(-1); | ||
271 | + } | ||
272 | + | ||
273 | + /** | ||
274 | + * Get the field length. | ||
275 | + * | ||
276 | + * @param baddr Address of the field. | ||
277 | + * | ||
278 | + * @return Field length. | ||
279 | + * | ||
280 | + */ | ||
281 | + public native int get_field_len(int baddr); | ||
282 | + | ||
283 | + /** | ||
284 | + * Get the current field length. | ||
285 | + * | ||
286 | + * @return Current field length. | ||
287 | + * | ||
288 | + */ | ||
289 | + public int get_field_len() { | ||
290 | + return get_field_len(-1); | ||
291 | + } | ||
292 | + | ||
293 | + /** | ||
294 | + * Get next field address. | ||
295 | + * | ||
296 | + * @param Field address. | ||
297 | + * | ||
298 | + * @return Address of the next field. | ||
299 | + * | ||
300 | + */ | ||
301 | + public native int get_next_unprotected(int baddr); | ||
302 | + | ||
303 | + /** | ||
304 | + * Get next field address. | ||
305 | + * | ||
306 | + * @return Address of the next field. | ||
307 | + * | ||
308 | + */ | ||
309 | + public int get_next_unprotected() { | ||
310 | + return get_next_unprotected(-1); | ||
311 | + } | ||
312 | + | ||
313 | + /** | ||
314 | + * Open popup dialog. | ||
315 | + * | ||
316 | + * @param id Dialog type. | ||
317 | + * @param title Window title. | ||
318 | + * @param message Dialog message. | ||
319 | + * @param secondary Dialog secondary text. | ||
320 | + * | ||
321 | + * @return reserved. | ||
322 | + * | ||
323 | + */ | ||
324 | + public native int popup_dialog(int id, String title, String message, String secondary); | ||
325 | + | ||
326 | + /** | ||
327 | + * File selection dialog. | ||
328 | + * | ||
329 | + * @param action Dialog action. | ||
330 | + * @param title Window title. | ||
331 | + * @param extension File extension. | ||
332 | + * @param filename Default file name; | ||
333 | + * | ||
334 | + * @return Selected file name. | ||
335 | + * | ||
336 | + */ | ||
337 | + public native String file_chooser_dialog(int action, String title, String extension, String filename); | ||
338 | + | ||
339 | + public native int set_copy(String text); | ||
340 | + public native String get_copy(); | ||
341 | + | ||
342 | + public native String get_clipboard(); | ||
343 | + public native int set_clipboard(String text); | ||
344 | + | ||
345 | + public native boolean is_connected(); | ||
346 | + public native boolean is_ready(); | ||
347 | + | ||
348 | + public native void log(String msg); | ||
349 | + | ||
350 | + /** | ||
254 | * Creates a tn3270 terminal associated with a | 351 | * Creates a tn3270 terminal associated with a |
255 | * pw3270 window. | 352 | * pw3270 window. |
256 | * | 353 | * |
src/java/testprogram.java
@@ -38,6 +38,9 @@ public class testprogram | @@ -38,6 +38,9 @@ public class testprogram | ||
38 | System.err.println("Begin"); | 38 | System.err.println("Begin"); |
39 | 39 | ||
40 | terminal host = new terminal(); | 40 | terminal host = new terminal(); |
41 | + | ||
42 | + host.log("Sample message"); | ||
43 | + | ||
41 | System.err.println("pw3270 version " + host.get_version() + " revision " + host.get_revision() + " encoding " + host.get_encoding()); | 44 | System.err.println("pw3270 version " + host.get_version() + " revision " + host.get_revision() + " encoding " + host.get_encoding()); |
42 | 45 | ||
43 | 46 |
src/pw3270/Makefile.in
@@ -148,7 +148,7 @@ $(BINDBG)/$(PACKAGE_TARNAME)$(EXEEXT): $(LIBDBG)/@DLLPREFIX@$(PACKAGE_TARNAME)@D | @@ -148,7 +148,7 @@ $(BINDBG)/$(PACKAGE_TARNAME)$(EXEEXT): $(LIBDBG)/@DLLPREFIX@$(PACKAGE_TARNAME)@D | ||
148 | $(foreach SRC, $(basename $(APP_SOURCES)), $(OBJDBG)/$(SRC)$(OBJEXT)) | 148 | $(foreach SRC, $(basename $(APP_SOURCES)), $(OBJDBG)/$(SRC)$(OBJEXT)) |
149 | @echo " CCLD `basename $@`" | 149 | @echo " CCLD `basename $@`" |
150 | @$(MKDIR) `dirname $@` | 150 | @$(MKDIR) `dirname $@` |
151 | - $(LD) @LDARCH@ @DBGRPATH@ -o $@ $(foreach SRC, $(basename $(APP_SOURCES)), $(OBJDBG)/$(SRC)$(OBJEXT)) $(LIBS) $(LIB3270_LIBS) -l$(PACKAGE_TARNAME) | 151 | + @$(LD) @LDARCH@ @DBGRPATH@ -o $@ $(foreach SRC, $(basename $(APP_SOURCES)), $(OBJDBG)/$(SRC)$(OBJEXT)) $(LIBS) $(LIB3270_LIBS) -l$(PACKAGE_TARNAME) |
152 | 152 | ||
153 | $(LIBDBG)/@DLLPREFIX@$(PACKAGE_TARNAME)@DLLEXT@: $(LIBDBG)/@DLLPREFIX@$(PACKAGE_TARNAME)@DLLEXT@.@VERSION@ | 153 | $(LIBDBG)/@DLLPREFIX@$(PACKAGE_TARNAME)@DLLEXT@: $(LIBDBG)/@DLLPREFIX@$(PACKAGE_TARNAME)@DLLEXT@.@VERSION@ |
154 | @rm -f $@ | 154 | @rm -f $@ |
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +<!----------------------------------------------------------------------------- | ||
2 | + | ||
3 | + Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
4 | + (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
5 | + aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
6 | + | ||
7 | + Copyright (C) <2008> <Banco do Brasil S.A.> | ||
8 | + | ||
9 | + Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
10 | + os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
11 | + Free Software Foundation. | ||
12 | + | ||
13 | + Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
14 | + GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
15 | + A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
16 | + obter mais detalhes. | ||
17 | + | ||
18 | + Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
19 | + programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
20 | + St, Fifth Floor, Boston, MA 02110-1301 USA | ||
21 | + | ||
22 | + | ||
23 | + Contatos: | ||
24 | + | ||
25 | + perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + licinio@bb.com.br (Licínio Luis Branco) | ||
28 | + kraucer@bb.com.br (Kraucer Fernandes Mazuco) | ||
29 | + | ||
30 | +------------------------------------------------------------------------------> | ||
31 | + | ||
32 | +<ui> | ||
33 | + <menubar name='topmenu' topmenu='yes'> | ||
34 | + <menu name='FileMenu' label='_File' /> | ||
35 | + <menu name='EditMenu' label='_Edit' /> | ||
36 | + <menu name='View' label='_View' /> | ||
37 | + <menu name='ScriptsMenu' label='Scripts' visible='yes' > | ||
38 | + <menuitem action='java' label='External Java Application'/> | ||
39 | + </menu> | ||
40 | + </menubar> | ||
41 | +</ui> | ||
42 | + |