[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] support Save file dialogs in GTK peers
From: |
Thomas Fitzsimmons |
Subject: |
[cp-patches] support Save file dialogs in GTK peers |
Date: |
Fri, 26 Aug 2005 00:35:28 -0400 |
Hi,
This patch adds support for Save file dialogs in the GTK peers.
Tom
2005-08-26 Thomas Fitzsimmons <address@hidden>
PR classpath/21660:
* gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(AWT_FILEDIALOG_LOAD): New macro.
(AWT_FILEDIALOG_SAVE): Likewise.
(create(GtkContainerPeer,int)): Add mode parameter. Create Save
dialog if mode is AWT_FILEDIALOG_SAVE. Remove workaround for
http://bugzilla.gnome.org/show_bug.cgi?id=166852.
(create()): Add mode argument to create call.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java,
native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(setVisibleNative): Override method.
(setVisibleNativeUnlocked): Override method. Call gdk_flush after
showing or hiding window.
* include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: Regenerate.
* include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: Regenerate.
Index: gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,v
retrieving revision 1.27
diff -u -r1.27 GtkFileDialogPeer.java
--- gnu/java/awt/peer/gtk/GtkFileDialogPeer.java 25 Aug 2005 02:26:49
-0000 1.27
+++ gnu/java/awt/peer/gtk/GtkFileDialogPeer.java 26 Aug 2005 04:33:08
-0000
@@ -55,7 +55,7 @@
private String currentDirectory = null;
private FilenameFilter filter;
- native void create (GtkContainerPeer parent);
+ native void create (GtkContainerPeer parent, int mode);
native void connectSignals ();
native void nativeSetFile (String file);
public native String nativeGetDirectory();
@@ -64,7 +64,8 @@
public void create()
{
- create((GtkContainerPeer) awtComponent.getParent().getPeer());
+ create((GtkContainerPeer) awtComponent.getParent().getPeer(),
+ ((FileDialog) awtComponent).getMode());
FileDialog fd = (FileDialog) awtComponent;
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.40
diff -u -r1.40 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java 25 Aug 2005 02:26:49 -0000
1.40
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java 26 Aug 2005 04:33:08 -0000
@@ -105,6 +105,9 @@
{
}
+ public native void setVisibleNative (boolean b);
+ public native void setVisibleNativeUnlocked (boolean b);
+
native void connectSignals ();
public GtkWindowPeer (Window window)
Index: include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h
===================================================================
RCS file:
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h,v
retrieving revision 1.8
diff -u -r1.8 gnu_java_awt_peer_gtk_GtkFileDialogPeer.h
--- include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h 8 Oct 2004 22:16:09
-0000 1.8
+++ include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h 26 Aug 2005 04:33:08
-0000
@@ -10,7 +10,7 @@
{
#endif
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_create
(JNIEnv *env, jobject, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_create
(JNIEnv *env, jobject, jobject, jint);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectSignals (JNIEnv *env,
jobject);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFile (JNIEnv *env,
jobject, jstring);
JNIEXPORT jstring JNICALL
Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeGetDirectory (JNIEnv *env,
jobject);
Index: include/gnu_java_awt_peer_gtk_GtkWindowPeer.h
===================================================================
RCS file:
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h,v
retrieving revision 1.18
diff -u -r1.18 gnu_java_awt_peer_gtk_GtkWindowPeer.h
--- include/gnu_java_awt_peer_gtk_GtkWindowPeer.h 25 Aug 2005 02:26:49
-0000 1.18
+++ include/gnu_java_awt_peer_gtk_GtkWindowPeer.h 26 Aug 2005 04:33:08
-0000
@@ -15,6 +15,8 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetModal (JNIEnv *env,
jobject, jboolean);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_realize
(JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create (JNIEnv
*env, jobject, jint, jboolean, jobject);
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNative (JNIEnv *env,
jobject, jboolean);
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNativeUnlocked (JNIEnv *env,
jobject, jboolean);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectSignals
(JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toBack (JNIEnv
*env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toFront
(JNIEnv *env, jobject);
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c,v
retrieving revision 1.23
diff -u -r1.23 gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c 18 Aug
2005 01:22:00 -0000 1.23
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c 26 Aug
2005 04:33:09 -0000
@@ -40,6 +40,9 @@
#include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"
#include "gnu_java_awt_peer_gtk_GtkFileDialogPeer.h"
+#define AWT_FILEDIALOG_LOAD 0
+#define AWT_FILEDIALOG_SAVE 1
+
static void handle_response_cb (GtkDialog *dialog,
gint responseId,
jobject peer_obj);
@@ -87,7 +90,7 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_create
- (JNIEnv *env, jobject obj, jobject parent)
+ (JNIEnv *env, jobject obj, jobject parent, int mode)
{
void *parentp;
gpointer widget;
@@ -99,19 +102,29 @@
parentp = NSA_GET_PTR(env, parent);
- /* FIXME: we should be using the default gnome-vfs backend but it is
- not currently thread-safe. See:
- http://bugzilla.gnome.org/show_bug.cgi?id=166852 */
- widget = gtk_file_chooser_dialog_new_with_backend
- ("Open File",
- GTK_WINDOW(parentp),
- GTK_FILE_CHOOSER_ACTION_OPEN,
- "gtk+",
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
- NULL);
+ if (mode == AWT_FILEDIALOG_LOAD)
+ widget = gtk_file_chooser_dialog_new
+ ("Open File",
+ GTK_WINDOW(parentp),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+ else
+ {
+ widget = gtk_file_chooser_dialog_new
+ ("Save File",
+ GTK_WINDOW(parentp),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_file_chooser_set_do_overwrite_confirmation
+ (GTK_FILE_CHOOSER (widget), TRUE);
+ }
+
- /* GtkFileSelect is not modal by default */
+ /* GtkFileChooserDialog is not modal by default */
gtk_window_set_modal (GTK_WINDOW (widget), TRUE);
/* We must add this window to the group so input in the others are
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.55
diff -u -r1.55 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 25 Aug 2005
02:26:50 -0000 1.55
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 26 Aug 2005
04:33:09 -0000
@@ -1198,6 +1198,34 @@
}
JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNative
+ (JNIEnv *env, jobject obj, jboolean visible)
+{
+ gdk_threads_enter ();
+
+ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNativeUnlocked
+ (env, obj, visible);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNativeUnlocked
+ (JNIEnv *env, jobject obj, jboolean visible)
+{
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ if (visible)
+ gtk_widget_show (GTK_WIDGET (ptr));
+ else
+ gtk_widget_hide (GTK_WIDGET (ptr));
+
+ gdk_flush ();
+}
+
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectSignals
(JNIEnv *env, jobject obj)
{
- [cp-patches] support Save file dialogs in GTK peers,
Thomas Fitzsimmons <=