📄 natgtkcomponentpeer.cc
字号:
// This file was created by `gcjh -stubs'. -*- c++ -*-//// This file is intended to give you a head start on implementing native// methods using CNI.// Be aware: running `gcjh -stubs ' once more for this class may// overwrite any edits you have made to this file.#include <config.h>#include <gcj/cni.h>#include <java/awt/Point.h>#include <java/awt/Dimension.h>#include <java/awt/Cursor.h>#include "gtkcommon.h"#include <gnu/awt/gtk/GtkComponentPeer.h>voidgnu::awt::gtk::GtkComponentPeer::dispose (){ GDK_THREADS_ENTER (); gtk_widget_destroy (GTK_WIDGET (ptr)); GDK_THREADS_LEAVE ();}::java::awt::Point *gnu::awt::gtk::GtkComponentPeer::getLocationOnScreen (){ gint x, y; _Jv_GdkThreadLock sync; gdk_window_get_root_origin (GTK_WIDGET (ptr)->window, &x, &y); return new ::java::awt::Point (x, y);}::java::awt::Dimension *gnu::awt::gtk::GtkComponentPeer::getMinimumSize (){ GtkRequisition req; ::java::awt::Dimension *dim = new ::java::awt::Dimension (); GDK_THREADS_ENTER (); gtk_widget_size_request (GTK_WIDGET (ptr), &req); GDK_THREADS_LEAVE (); dim->width = (jint) req.width; dim->height = (jint) req.height; return dim; }::java::awt::Dimension *gnu::awt::gtk::GtkComponentPeer::getPreferredSize (){ return getMinimumSize ();}voidgnu::awt::gtk::GtkComponentPeer::requestFocus (){ GDK_THREADS_ENTER (); gtk_widget_grab_focus (GTK_WIDGET (ptr)); GDK_THREADS_LEAVE ();}voidgnu::awt::gtk::GtkComponentPeer::setBounds (jint x, jint y, jint width, jint height){ GDK_THREADS_ENTER (); GtkWidget *widget = GTK_WIDGET (ptr); gtk_widget_set_usize (widget, width, height); //gtk_layout_move (GTK_LAYOUT (widget->parent), widget, x, y); GDK_THREADS_LEAVE ();}voidgnu::awt::gtk::GtkComponentPeer::setCursor (::java::awt::Cursor *cursor){ GdkCursorType type; switch (cursor->type) { case ::java::awt::Cursor::CROSSHAIR_CURSOR: type = GDK_CROSSHAIR; break; case ::java::awt::Cursor::TEXT_CURSOR: type = GDK_XTERM; break; case ::java::awt::Cursor::WAIT_CURSOR: type = GDK_WATCH; break; case ::java::awt::Cursor::SW_RESIZE_CURSOR: type = GDK_BOTTOM_LEFT_CORNER; break; case ::java::awt::Cursor::SE_RESIZE_CURSOR: type = GDK_BOTTOM_RIGHT_CORNER; break; case ::java::awt::Cursor::NW_RESIZE_CURSOR: type = GDK_TOP_LEFT_CORNER; break; case ::java::awt::Cursor::NE_RESIZE_CURSOR: type = GDK_TOP_RIGHT_CORNER; break; case ::java::awt::Cursor::N_RESIZE_CURSOR: type = GDK_TOP_SIDE; break; case ::java::awt::Cursor::S_RESIZE_CURSOR: type = GDK_RIGHT_SIDE; break; case ::java::awt::Cursor::W_RESIZE_CURSOR: type = GDK_LEFT_SIDE; break; case ::java::awt::Cursor::E_RESIZE_CURSOR: type = GDK_BOTTOM_SIDE; break; case ::java::awt::Cursor::HAND_CURSOR: type = GDK_HAND1; break; case ::java::awt::Cursor::MOVE_CURSOR: type = GDK_FLEUR; break; case ::java::awt::Cursor::CUSTOM_CURSOR: // FIXME: not implemented yet. We want a gtk-specific subclass // of Cursor which holds a new gdk cursor. For now, fall // through. case ::java::awt::Cursor::DEFAULT_CURSOR: default: type = GDK_LEFT_PTR; break; } _Jv_GdkThreadLock sync; GtkWidget *widget = GTK_WIDGET (ptr); GdkCursor *cursor = gdk_cursor_new (type); gdk_window_set_cursor (widget->window, cursor); gdk_cursor_destroy (cursor);}voidgnu::awt::gtk::GtkComponentPeer::setEnabled (jboolean enabled){ GDK_THREADS_ENTER (); gtk_widget_set_sensitive (GTK_WIDGET (ptr), enabled); GDK_THREADS_LEAVE ();}voidgnu::awt::gtk::GtkComponentPeer::setEventMask (jlong){ // TODO}voidgnu::awt::gtk::GtkComponentPeer::setFont (::java::awt::Font *){ // TODO}voidgnu::awt::gtk::GtkComponentPeer::setForeground (::java::awt::Color *color){ // FIXME: This doesn't work if component is already realized/visible GdkColor gcolor; _Jv_ConvertAwtColor(color, &gcolor); GDK_THREADS_ENTER (); GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (ptr)); style->bg[GTK_STATE_NORMAL] = gcolor; style->bg[GTK_STATE_ACTIVE] = gcolor; style->bg[GTK_STATE_PRELIGHT] = gcolor; style->bg[GTK_STATE_SELECTED] = gcolor; style->bg[GTK_STATE_INSENSITIVE] = gcolor; gtk_widget_set_style (GTK_WIDGET (ptr), style); GDK_THREADS_LEAVE ();}voidgnu::awt::gtk::GtkComponentPeer::setBackground (::java::awt::Color *color){ // FIXME: This doesn't work if component is already realized/visible GdkColor gcolor; _Jv_ConvertAwtColor(color, &gcolor); GDK_THREADS_ENTER (); GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (ptr)); style->bg[GTK_STATE_NORMAL] = gcolor; style->bg[GTK_STATE_ACTIVE] = gcolor; style->bg[GTK_STATE_PRELIGHT] = gcolor; style->bg[GTK_STATE_SELECTED] = gcolor; style->bg[GTK_STATE_INSENSITIVE] = gcolor; // gtk allows us to set color values for different states of the // widget. AWT only provides a single background color, so scale it // to get some reasonable values.// _Jv_GdkScaleColor (&gcolor, &style->bg[GTK_STATE_ACTIVE], -0.1);// _Jv_GdkScaleColor (&gcolor, &style->bg[GTK_STATE_PRELIGHT], 0.2);// _Jv_GdkScaleColor (&gcolor, &style->bg[GTK_STATE_SELECTED], -0.2);// _Jv_GdkScaleColor (&gcolor, &style->bg[GTK_STATE_INSENSITIVE], -0.2); gtk_widget_set_style (GTK_WIDGET (ptr), style); GDK_THREADS_LEAVE ();}voidgnu::awt::gtk::GtkComponentPeer::setVisible (jboolean visible){ GDK_THREADS_ENTER (); GtkWidget *widget = GTK_WIDGET (ptr); if (visible) gtk_widget_show (widget); else gtk_widget_hide (widget); _Jv_FlushRequests (); GDK_THREADS_LEAVE ();}voidgnu::awt::gtk::GtkComponentPeer::create (){}voidgnu::awt::gtk::GtkComponentPeer::realize (){ GDK_THREADS_ENTER (); gtk_widget_realize (GTK_WIDGET (ptr)); GDK_THREADS_LEAVE ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -