JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_connectSignals (JNIEnv *env, jobject obj, jobject comp) { jobject *gref; void *ptr; gdk_threads_enter (); ptr = NSA_GET_GLOBAL_REF (env, obj); gref = NSA_GET_GLOBAL_REF (env, comp); /* Uncomment when needed: g_signal_connect (G_OBJECT (widget), "drag_motion", G_CALLBACK (drag_motion_cb), *gref); g_signal_connect (G_OBJECT (widget), "drag_begin", G_CALLBACK (drag_begin_cb), *gref); g_signal_connect (G_OBJECT (widget), "drag_end", G_CALLBACK (drag_end_cb), *gref); g_signal_connect (G_OBJECT (widget), "drag_data_get", G_CALLBACK (drag_data_get_cb), *gref); g_signal_connect (G_OBJECT (widget), "drag_drop", G_CALLBACK (drag_drop_cb), *gref); g_signal_connect (G_OBJECT (widget), "drag_data_delete", G_CALLBACK (drag_data_delete_cb), *gref); g_signal_connect (G_OBJECT (widget), "drag_data_received", G_CALLBACK (drag_data_received_cb), *gref); */ gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_connectSignals (JNIEnv *env, jobject obj) { GtkWidget *text = NULL; GtkTextBuffer *buf; void *ptr; jobject *gref; gdk_threads_enter (); ptr = NSA_GET_PTR (env, obj); gref = NSA_GET_GLOBAL_REF (env, obj); /* Unwrap the text view from the scrolled window */ text = gtk_bin_get_child (GTK_BIN (ptr)); buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); /* TextComponent signals */ cp_gtk_textcomponent_connect_signals (G_OBJECT (buf), gref); /* Component signals */ cp_gtk_component_connect_signals (G_OBJECT (text), gref); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_connectSignals (JNIEnv *env, jobject obj) { struct range_scrollbar *rs; void *ptr = NSA_GET_PTR (env, obj); jobject *gref = NSA_GET_GLOBAL_REF (env, obj); g_assert (gref); rs = (struct range_scrollbar *) malloc (sizeof (struct range_scrollbar)); gdk_threads_enter (); gtk_widget_realize (GTK_WIDGET (ptr)); rs->range = GTK_RANGE (ptr); rs->scrollbar = gref; g_signal_connect (G_OBJECT (GTK_RANGE (ptr)), "move-slider", GTK_SIGNAL_FUNC (post_adjustment_event), rs); g_signal_connect (G_OBJECT (GTK_RANGE (ptr)), "value-changed", GTK_SIGNAL_FUNC (post_change_event), rs); gdk_threads_leave (); /* Connect the superclass signals. */ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectSignals (JNIEnv *env, jobject obj) { void *ptr = NSA_GET_PTR (env, obj); jobject *gref = NSA_GET_GLOBAL_REF (env, obj); g_assert (gref); gdk_threads_enter (); gtk_widget_realize (GTK_WIDGET (ptr)); /* connect buttons to handlers */ g_signal_connect (G_OBJECT (GTK_DIALOG (ptr)), "response", GTK_SIGNAL_FUNC (window_closed), *gref); g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (ptr)->ok_button), "clicked", GTK_SIGNAL_FUNC (ok_clicked), *gref); g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (ptr)->cancel_button), "clicked", GTK_SIGNAL_FUNC (cancel_clicked), *gref); gdk_threads_leave (); /* Connect the superclass signals. */ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj); }
JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeStartDrag (JNIEnv *env, jobject obj, jobject img, jint x, jint y, jint act, jstring target) { void *ptr; const gchar *data; GtkTargetEntry tar[1]; GdkEvent *event; GdkPixbuf *image = NULL; GdkDragContext *context = NULL; GdkDragAction action = GDK_ACTION_DEFAULT; gdk_threads_enter (); ptr = NSA_GET_GLOBAL_REF (env, obj); data = (*env)->GetStringUTFChars (env, target, NULL); tar[0].target = (gchar *) data; event = gdk_event_new (GDK_ALL_EVENTS_MASK); switch (act) { case ACTION_COPY: action = GDK_ACTION_COPY; break; case ACTION_MOVE: action = GDK_ACTION_MOVE; break; case ACTION_COPY_OR_MOVE: action = GDK_ACTION_COPY | GDK_ACTION_MOVE; break; case ACTION_LINK: action = GDK_ACTION_LINK; break; default: action = GDK_ACTION_DEFAULT; } gtk_drag_highlight (widget); context = gtk_drag_begin (widget, gtk_target_list_new (tar, sizeof (tar) / sizeof (GtkTargetEntry)), action, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK, event); if (img != NULL) { image = cp_gtk_image_get_pixbuf (env, img); gtk_drag_set_icon_pixbuf (context, image, x, y); } gdk_event_free (event); (*env)->ReleaseStringUTFChars (env, target, data); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_connectSignals (JNIEnv *env, jobject obj) { void *ptr = NSA_GET_PTR (env, obj); jobject *gref = NSA_GET_GLOBAL_REF (env, obj); g_assert (gref); gdk_threads_enter (); g_signal_connect (G_OBJECT (ptr), "toggled", GTK_SIGNAL_FUNC (item_toggled), *gref); gdk_threads_leave (); /* Connect the superclass signals. */ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_connectSignals (JNIEnv *env, jobject obj, jobject peer) { void *ptr; jobject *gref; NSA_SET_GLOBAL_REF (env, obj); gref = NSA_GET_GLOBAL_REF (env, obj); ptr = NSA_GET_PTR (env, peer); gdk_threads_enter (); g_signal_connect_after (G_OBJECT (ptr), "realize", G_CALLBACK (realize_cb), *gref); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectSignals (JNIEnv *env, jobject obj) { void *ptr = NULL; jobject *gref = NULL; gdk_threads_enter (); ptr = NSA_GET_PTR (env, obj); gref = NSA_GET_GLOBAL_REF (env, obj); /* FileDialog signals */ g_signal_connect (G_OBJECT (ptr), "response", G_CALLBACK (handle_response_cb), *gref); /* Component signals */ cp_gtk_component_connect_signals (G_OBJECT (ptr), gref); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_connectSignals (JNIEnv *env, jobject obj) { void *ptr = NULL; jobject *gref = NULL; gdk_threads_enter (); ptr = NSA_GET_PTR (env, obj); gref = NSA_GET_GLOBAL_REF (env, obj); /* Checkbox signals */ g_signal_connect (G_OBJECT (ptr), "toggled", G_CALLBACK (item_toggled_cb), *gref); /* Component signals */ cp_gtk_component_connect_signals (G_OBJECT (ptr), gref); gdk_threads_leave (); }
void connect_awt_hook (JNIEnv *env, jobject peer_obj, int nwindows, ...) { va_list ap; jobject *obj; //void *ptr = NSA_GET_PTR (env, peer_obj); obj = NSA_GET_GLOBAL_REF (env, peer_obj); //g_print("Connection obj %s\n", gtk_widget_get_name (GTK_WIDGET (ptr))); g_assert (obj); va_start (ap, nwindows); { int i; for (i = 0; i < nwindows; i++) { GdkWindow* attach = (va_arg (ap, GdkWindow *)); attach_jobject(attach, obj); } } va_end (ap); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_create (JNIEnv *env, jobject obj) { GtkWidget *combobox; GtkWidget *eventbox; jobject *gref; gdk_threads_enter (); NSA_SET_GLOBAL_REF (env, obj); gref = NSA_GET_GLOBAL_REF (env, obj); eventbox = gtk_event_box_new (); combobox = gtk_combo_box_new_text (); gtk_container_add (GTK_CONTAINER (eventbox), combobox); gtk_widget_show (combobox); NSA_SET_PTR (env, obj, eventbox); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_connectSignals (JNIEnv *env, jobject obj) { void *ptr = NULL; jobject *gref = NULL; GtkWidget *bin; gdk_threads_enter (); ptr = NSA_GET_PTR (env, obj); gref = NSA_GET_GLOBAL_REF (env, obj); bin = choice_get_widget (GTK_WIDGET (ptr)); /* Choice signals */ g_signal_connect (G_OBJECT (bin), "changed", G_CALLBACK (selection_changed_cb), *gref); /* Component signals */ cp_gtk_component_connect_signals (G_OBJECT (bin), gref); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeSetCursor (JNIEnv *env, jobject obj, jint type) { void *ptr; GdkWindow *win; GdkCursorType gdk_cursor_type; GdkCursor *gdk_cursor; gdk_threads_enter (); ptr = NSA_GET_GLOBAL_REF (env, obj); switch (type) { case AWT_CROSSHAIR_CURSOR: gdk_cursor_type = GDK_CROSSHAIR; break; case AWT_TEXT_CURSOR: gdk_cursor_type = GDK_XTERM; break; case AWT_WAIT_CURSOR: gdk_cursor_type = GDK_WATCH; break; case AWT_SW_RESIZE_CURSOR: gdk_cursor_type = GDK_BOTTOM_LEFT_CORNER; break; case AWT_SE_RESIZE_CURSOR: gdk_cursor_type = GDK_BOTTOM_RIGHT_CORNER; break; case AWT_NW_RESIZE_CURSOR: gdk_cursor_type = GDK_TOP_LEFT_CORNER; break; case AWT_NE_RESIZE_CURSOR: gdk_cursor_type = GDK_TOP_RIGHT_CORNER; break; case AWT_N_RESIZE_CURSOR: gdk_cursor_type = GDK_TOP_SIDE; break; case AWT_S_RESIZE_CURSOR: gdk_cursor_type = GDK_BOTTOM_SIDE; break; case AWT_W_RESIZE_CURSOR: gdk_cursor_type = GDK_LEFT_SIDE; break; case AWT_E_RESIZE_CURSOR: gdk_cursor_type = GDK_RIGHT_SIDE; break; case AWT_HAND_CURSOR: gdk_cursor_type = GDK_HAND2; break; case AWT_MOVE_CURSOR: gdk_cursor_type = GDK_FLEUR; break; default: gdk_cursor_type = GDK_LEFT_PTR; } win = widget->window; if ((widget->window) == NULL) win = widget->window; gdk_cursor = gdk_cursor_new (gdk_cursor_type); gdk_window_set_cursor (win, gdk_cursor); gdk_cursor_unref (gdk_cursor); gdk_flush(); gdk_threads_leave (); }