blob: 39279e3354db992bcefca93aa9e00682d0762e3f [file] [log] [blame]
/*
* Copyright (c) IBM Corp. 2000, 2002. All rights reserved.
*
* The contents of this file are made available under the terms
* of the GNU Lesser General Public License (LGPL) Version 2.1 that
* accompanies this distribution (lgpl-v21.txt). The LGPL is also
* available at http://www.gnu.org/licenses/lgpl.html. If the version
* of the LGPL at http://www.gnu.org is different to the version of
* the LGPL accompanying this distribution and there is any conflict
* between the two license versions, the terms of the LGPL accompanying
* this distribution shall govern.
*/
/**
* SWT OS natives implementation: gtk_window_* functions.
* This file also contains all dialog functions (e.g.,
* gtk_color_selection_*).
*/
#include "swt.h"
#include "structs.h"
#include <stdio.h>
#include <assert.h>
/*
* gtk_window_*
*/
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1new
(JNIEnv *env, jclass that, jint type)
{
return (jint)gtk_window_new((GtkWindowType)type);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1set_1title
(JNIEnv *env, jclass that, jint window, jbyteArray title)
{
jbyte *title1 = NULL;
if (title) {
title1 = (*env)->GetByteArrayElements(env, title, NULL);
}
gtk_window_set_title((GtkWindow*)window, (gchar*)title1);
if (title) {
(*env)->ReleaseByteArrayElements(env, title, title1, 0);
}
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1set_1policy
(JNIEnv *env, jclass that, jint window, jint allow_shrink, jint allow_grow, jint auto_shrink)
{
gtk_window_set_policy((GtkWindow*)window, (gint)allow_shrink, (gint)allow_grow, (gint)auto_shrink);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1set_1resizable
(JNIEnv *env, jclass that, jint window, jboolean resizable)
{
gtk_window_set_resizable((GtkWindow*)window, (gboolean)resizable);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1get_1position
(JNIEnv *env, jclass that, jint window, jintArray px, jintArray py)
{
jint *px1 = NULL;
jint *py1 = NULL;
if (px) px1 = (*env)->GetIntArrayElements(env, px, NULL);
if (py) py1 = (*env)->GetIntArrayElements(env, py, NULL);
gtk_window_get_position((GtkWindow*)window, (gint*)px1, (gint*)py1);
if (px) (*env)->ReleaseIntArrayElements(env, px, px1, 0);
if (py) (*env)->ReleaseIntArrayElements(env, py, py1, 0);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1get_1size
(JNIEnv *env, jclass that, jint window, jintArray px, jintArray py)
{
jint *px1 = NULL;
jint *py1 = NULL;
if (px) px1 = (*env)->GetIntArrayElements(env, px, NULL);
if (py) py1 = (*env)->GetIntArrayElements(env, py, NULL);
gtk_window_get_size((GtkWindow*)window, (gint*)px1, (gint*)py1);
if (px) (*env)->ReleaseIntArrayElements(env, px, px1, 0);
if (py) (*env)->ReleaseIntArrayElements(env, py, py1, 0);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1move
(JNIEnv *env, jclass that, jint window, jint x, jint y)
{
gtk_window_move((GtkWindow*)window, x, y);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1resize
(JNIEnv *env, jclass that, jint window, jint width, jint height)
{
gtk_window_resize((GtkWindow*)window, width, height);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1set_1transient_1for
(JNIEnv *env, jclass that, jint window, jint parent)
{
gtk_window_set_transient_for((GtkWindow*)window, (GtkWindow*)parent);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1set_1modal
(JNIEnv *env, jclass that, jint window, jboolean modal)
{
gtk_window_set_modal((GtkWindow*)window, modal);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1add_1accel_1group
(JNIEnv *env, jclass that, jint window, jint accel_group)
{
gtk_window_add_accel_group((GtkWindow*)window, (GtkAccelGroup*)accel_group);
}
/*
* DIALOGS
*/
/*
* Color selection
*/
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1color_1selection_1set_1color
(JNIEnv *env, jclass that, jint colorsel, jdoubleArray color)
{
jdouble *color1 = NULL;
if (color) {
color1 = (*env)->GetDoubleArrayElements(env, color, NULL);
}
gtk_color_selection_set_color((GtkColorSelection*)colorsel, (gdouble*)color1);
if (color) {
(*env)->ReleaseDoubleArrayElements(env, color, color1, 0);
}
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1color_1selection_1get_1color
(JNIEnv *env, jclass that, jint colorsel, jdoubleArray color)
{
jdouble *color1 = NULL;
if (color) {
color1 = (*env)->GetDoubleArrayElements(env, color, NULL);
}
gtk_color_selection_get_color((GtkColorSelection*)colorsel, (gdouble*)color1);
if (color) {
(*env)->ReleaseDoubleArrayElements(env, color, color1, 0);
}
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1color_1selection_1dialog_1new
(JNIEnv *env, jclass that, jbyteArray title)
{
jint rc;
jbyte *title1 = NULL;
if (title) {
title1 = (*env)->GetByteArrayElements(env, title, NULL);
}
rc = (jint)gtk_color_selection_dialog_new((gchar*)title1);
if (title) {
(*env)->ReleaseByteArrayElements(env, title, title1, 0);
}
return rc;
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1COLOR_1SELECTION_1DIALOG_1OK_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bug 70745
*/
return (jint) (((GtkColorSelectionDialog*)fsd)->ok_button);
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1COLOR_1SELECTION_1DIALOG_1CANCEL_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bug 70745
*/
return (jint) (((GtkColorSelectionDialog*)fsd)->cancel_button);
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1COLOR_1SELECTION_1DIALOG_1HELP_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bug 70745
*/
return (jint) (((GtkColorSelectionDialog*)fsd)->help_button);
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1COLOR_1SELECTION_1DIALOG_1COLORSEL
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bug 70745
*/
return (jint) (((GtkColorSelectionDialog*)fsd)->colorsel);
}
/*
* gtk_dialog_*
*/
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1dialog_1new
(JNIEnv *env, jclass that)
{
return (jint)gtk_dialog_new();
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1DIALOG_1VBOX
(JNIEnv *env, jclass that, jint fsd)
{
return (jint) (((GtkDialog*)fsd)->vbox);
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1DIALOG_1ACTION_1AREA
(JNIEnv *env, jclass that, jint fsd)
{
return (jint) (((GtkDialog*)fsd)->action_area);
}
/*
* gtk_file_selection_*
*/
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1file_1selection_1new
(JNIEnv *env, jclass that, jbyteArray title)
{
jint rc;
jbyte *title1 = NULL;
if (title) {
title1 = (*env)->GetByteArrayElements(env, title, NULL);
}
rc = (jint)gtk_file_selection_new((gchar*)title1);
if (title) {
(*env)->ReleaseByteArrayElements(env, title, title1, 0);
}
return rc;
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1file_1selection_1set_1filename
(JNIEnv *env, jclass that, jint filesel, jbyteArray filename)
{
jbyte *filename1 = NULL;
if (filename) {
filename1 = (*env)->GetByteArrayElements(env, filename, NULL);
}
gtk_file_selection_set_filename((GtkFileSelection*)filesel, (gchar*)filename1);
if (filename) {
(*env)->ReleaseByteArrayElements(env, filename, filename1, 0);
}
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1file_1selection_1get_1filename
(JNIEnv *env, jclass that, jint filesel)
{
return (jint)gtk_file_selection_get_filename((GtkFileSelection*)filesel);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1file_1selection_1complete
(JNIEnv *env, jclass that, jint filesel, jbyteArray pattern)
{
jbyte *pattern1 = NULL;
if (pattern) {
pattern1 = (*env)->GetByteArrayElements(env, pattern, NULL);
}
gtk_file_selection_complete((GtkFileSelection*)filesel, (gchar*)pattern1);
if (pattern) {
(*env)->ReleaseByteArrayElements(env, pattern, pattern1, 0);
}
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1FILE_1SELECTION_1OK_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bug 70745
*/
return (jint) (((GtkFileSelection*)fsd)->ok_button);
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1FILE_1SELECTION_1CANCEL_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bug 70745
*/
return (jint) (((GtkFileSelection*)fsd)->cancel_button);
}
/*
* gtk_font_selection_*
*/
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1font_1selection_1dialog_1new
(JNIEnv *env, jclass that, jbyteArray title)
{
jint rc;
jbyte *title1 = NULL;
if (title) {
title1 = (*env)->GetByteArrayElements(env, title, NULL);
}
rc = (jint)gtk_font_selection_dialog_new((gchar*)title1);
if (title) {
(*env)->ReleaseByteArrayElements(env, title, title1, 0);
}
return rc;
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1font_1selection_1dialog_1get_1font_1name
(JNIEnv *env, jclass that, jint fsd)
{
return (jint)gtk_font_selection_dialog_get_font_name((GtkFontSelectionDialog*)fsd);
}
JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1font_1selection_1dialog_1set_1font_1name
(JNIEnv *env, jclass that, jint fsd, jbyteArray fontname)
{
jboolean rc;
jbyte *fontname1 = NULL;
if (fontname) {
fontname1 = (*env)->GetByteArrayElements(env, fontname, NULL);
}
rc = (jboolean)gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog*)fsd, (gchar*)fontname1);
if (fontname) {
(*env)->ReleaseByteArrayElements(env, fontname, fontname1, 0);
}
return rc;
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1FONT_1SELECTION_1DIALOG_1OK_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bugs 70742, 70745
*/
return (jint) (((GtkFontSelectionDialog*)fsd)->ok_button);
}
JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_gtk_OS_GTK_1FONT_1SELECTION_1DIALOG_1CANCEL_1BUTTON
(JNIEnv *env, jclass that, jint fsd)
{
/*
* GTK bugs 70742, 70745
*/
return (jint) (((GtkFontSelectionDialog*)fsd)->cancel_button);
}
JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_gtk_OS_gtk_1window_1set_1default
(JNIEnv *env, jclass that, jint window, jint widget)
{
gtk_window_set_default((GtkWindow*)window, (GtkWidget*)widget);
}