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 ();
}
예제 #8
0
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 ();
}
예제 #10
0
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 ();
}
예제 #13
0
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 ();
}