/* Common Lisp bindings for GTK+ v2.0
- * Copyright (C) 1999-2000 Espen S. Johnsen <espejohn@online.no>
+ * Copyright (C) 1999-2002 Espen S. Johnsen <espen@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: gtkglue.c,v 1.3 2000-10-05 17:32:34 espen Exp $ */
+/* $Id: gtkglue.c,v 1.12 2002-04-02 15:05:44 espen Exp $ */
#include <gtk/gtk.h>
-#ifdef CMUCL
-#include "lisp.h"
-
-extern lispobj funcall1(lispobj function, lispobj arg0);
-extern lispobj funcall3(lispobj function, lispobj arg0,
- lispobj arg1, lispobj arg2);
-
-lispobj callback_trampoline;
-lispobj destroy_user_data;
-#endif
-
-
-void callback_marshal (GtkObject *object,
- gpointer data,
- guint n_args,
- GtkArg *args)
-{
-#ifdef CMUCL
- funcall3 (callback_trampoline, alloc_number ((unsigned long)data),
- alloc_number (n_args), alloc_sap (args));
-
- /* lispobj lisp_args[4];
-
- lisp_args[0] = alloc_sap (object);
- lisp_args[1] = alloc_number ((unsigned long)data);
- lisp_args[2] = alloc_number (n_args);
- lisp_args[3] = alloc_sap (args);
-
- call_into_lisp (callback_trampoline, lisp_args, 4);*/
-#elif defined(CLISP)
- callback_trampoline ((unsigned long)data, n_args, (unsigned int) args);
-#endif
-}
-
-
-void destroy_marshal (gpointer data)
-{
-#ifdef CMUCL
- funcall1 (destroy_user_data, alloc_number ((unsigned long)data));
-#elif defined(CLISP)
- destroy_user_data ((unsigned long)data);
-#endif
-}
-
-#ifndef CMUCL
-void*
-callback_marshal_address ()
-{
- return (void*)callback_marshal;
-}
-
-void*
-destroy_marshal_address ()
-{
- return (void*)destroy_marshal;
-}
-#endif
-
/*
*
}
-/* Is this necessary? */
-
-GtkType
-gtk_object_type (GtkObject *obj)
+void gtk_callback_marshal (GtkWidget *widget, gpointer data)
{
- return GTK_OBJECT_TYPE (obj);
+ GValue arg;
+
+ memset (&arg, 0, sizeof (GValue));
+ g_value_init (&arg, gtk_widget_get_type ());
+ g_value_set_object (&arg, widget);
+ callback_marshal ((guint)data, NULL, 1, &arg);
}
+void gtk_menu_position_callback_marshal (GtkMenu *menu, gint x, gint y,
+ gboolean push_in, gpointer data)
+{
+ GValue args[3];
+
+ memset (args, 0, 3 * sizeof (GValue));
+ g_value_init (&args[0], G_TYPE_INT);
+ g_value_set_int (&args[0], x);
+ g_value_init (&args[1], G_TYPE_INT);
+ g_value_set_int (&args[1], y);
+ g_value_init (&args[2], G_TYPE_BOOLEAN);
+ g_value_set_boolean (&args[2], push_in);
+
+ callback_marshal ((guint)data, NULL, 3, args);
+}
/* Widget */
}
void
-gtk_widget_allocation (GtkWidget *widget, int *width, int *height)
+gtk_widget_get_size_allocation (GtkWidget *widget, int *width, int *height)
{
*width = widget->allocation.width;
*height = widget->allocation.height;
}
-
-/* Menu item */
+/* Dialog */
GtkWidget*
-gtk_menu_item_get_submenu (GtkMenuItem* menu_item)
+gtk_dialog_get_vbox (GtkDialog *dialog)
{
- return menu_item->submenu;
+ return dialog->vbox;
}
-GtkSubmenuPlacement
-gtk_menu_item_get_placement (GtkMenuItem* menu_item)
-{
- return menu_item->submenu_placement;
-}
-
-gint
-gtk_menu_item_get_show_toggle (GtkMenuItem* menu_item)
-{
- return menu_item->show_toggle_indicator;
-}
-
-gint
-gtk_menu_item_get_show_submenu (GtkMenuItem* menu_item)
+GtkWidget*
+gtk_dialog_get_action_area (GtkDialog *dialog)
{
- return menu_item->show_submenu_indicator;
+ return dialog->action_area;
}
}
-/* Tree item */
-
-GtkWidget*
-gtk_tree_item_get_subtree (GtkTreeItem* tree_item)
-{
- return GTK_TREE_ITEM_SUBTREE (tree_item);
-}
-
/* Window */
-void
-gtk_window_wmclass (GtkWindow* window, gchar* name, gchar* class)
+GtkWidget*
+gtk_window_get_default (GtkWindow *window)
{
- name = window->wmclass_name;
- class = window->wmclass_class;
+ return window->default_widget;
}
}
-/* CList */
-
-#ifdef CLIST
-GList*
-gtk_clist_selection (GtkCList *clist)
-{
- return clist->selection;
-}
-
-gint
-gtk_clist_get_titles_visible (GtkCList *clist)
-{
- return (clist->title_window && GTK_WIDGET_VISIBLE (clist->title_window));
-}
-
-gint
-gtk_clist_get_n_rows (GtkCList *clist)
-{
- return clist->rows;
-}
-
-gint
-gtk_clist_get_focus_row (GtkCList *clist)
-{
- return clist->focus_row;
-}
-
-gint
-gtk_clist_get_sort_column (GtkCList *clist)
-{
- return clist->sort_column;
-}
-
-GtkJustification
-gtk_clist_column_justification (GtkCList *clist,
- gint column)
-{
- return clist->column[column].justification;
-}
-
-gboolean
-gtk_clist_column_visible_p (GtkCList *clist,
- gint column)
-{
- return clist->column[column].visible;
-}
-
-gboolean
-gtk_clist_column_resizeable_p (GtkCList *clist,
- gint column)
-{
- return clist->column[column].resizeable;
-}
-
-gboolean
-gtk_clist_column_auto_resize_p (GtkCList *clist,
- gint column)
-{
- return clist->column[column].auto_resize;
-}
-
-gint
-gtk_clist_column_width (GtkCList *clist,
- gint column)
-{
- return clist->column[column].width;
-}
-
-gboolean
-gtk_clist_auto_sort_p (GtkCList *clist)
-{
- return GTK_CLIST_AUTO_SORT (clist);
-}
-#endif
-
-/* CTree */
-
-#ifdef CTREE
-gboolean
-gtk_ctree_node_leaf_p (GtkCTreeNode* node)
-{
- return GTK_CTREE_ROW (node)->is_leaf;
-}
-
-GtkCTreeNode*
-gtk_ctree_node_child (GtkCTreeNode* node)
-{
- return GTK_CTREE_ROW (node)->children;
-}
-
-GtkCTreeNode*
-gtk_ctree_node_parent (GtkCTreeNode* node)
-{
- return GTK_CTREE_ROW (node)->parent;
-}
-
-GtkCTreeNode*
-gtk_ctree_node_sibling (GtkCTreeNode* node)
-{
- return GTK_CTREE_ROW (node)->sibling;
-}
-
-gint
-gtk_ctree_node_level (GtkCTreeNode* node)
-{
- return GTK_CTREE_ROW (node)->level;
-}
-#endif
-
/* Paned */
GtkWidget*
return paned->child2;
}
-gint
-gtk_paned_get_position (GtkPaned *paned)
-{
- if (paned->position_set == TRUE)
- return paned->child1_size;
- else
- return -1;
-}
-
/* Layout */
-gint
-gtk_layout_get_size (GtkLayout *layout, gint *width, gint *height)
-
-{
- *width = layout->width;
- *height = layout->height;
-}
-
GdkWindow*
gtk_layout_get_bin_window (GtkLayout *layout)
{
}
-/* Menu */
-
-gboolean
-gtk_menu_get_tearoff_state (GtkMenu *menu)
-{
- return menu->torn_off;
-}
-
-gchar*
-gtk_menu_get_title (GtkMenu *menu)
-{
- return g_strdup (gtk_object_get_data (GTK_OBJECT (menu), "gtk-menu-title"));
-}
-
-
-/* Table */
-
-guint
-gtk_table_row_spacing (GtkTable *table,
- guint row)
-{
- return table->rows[row].spacing;
-}
-
-guint
-gtk_table_column_spacing (GtkTable *table,
- guint col)
-{
- return table->cols[col].spacing;
-}
-
/* Toolbar */
gint
-gtk_toolbar_num_children (GtkToolbar *toolbar)
-{
- return toolbar->num_children;
-}
-
-gint
gtk_toolbar_get_tooltips (GtkToolbar *toolbar)
{
return toolbar->tooltips->enabled;
}
-/* Tree */
-
-GtkSelectionMode
-gtk_tree_get_selection_mode (GtkTree *tree)
-{
- return tree->selection_mode;
-}
-
-GtkSelectionMode
-gtk_tree_get_view_mode (GtkTree *tree)
-{
- return tree->view_mode;
-}
-
-GtkSelectionMode
-gtk_tree_get_view_lines (GtkTree *tree)
-{
- return tree->view_mode;
-}
-
-GtkTree*
-gtk_tree_get_root_tree (GtkTree *tree)
-{
- return GTK_TREE_ROOT_TREE (tree);
-}
-
-GList*
-gtk_tree_selection (GtkTree *tree)
-{
- return GTK_TREE_SELECTION (tree);
-}
-
-
/* Drawing area */
void
}
-/* Scrolled window */
-
-GtkWidget*
-gtk_scrolled_window_get_hscrollbar (GtkScrolledWindow *window)
-{
- return window->hscrollbar;
-}
-
-GtkWidget*
-gtk_scrolled_window_get_vscrollbar (GtkScrolledWindow *window)
-{
- return window->vscrollbar;
-}
-
-
-
/* Tooltips */
-guint
-gtk_tooltips_get_delay (GtkTooltips *tooltips)
-{
- return tooltips->delay;
-}
-
gboolean
gtk_tooltips_get_enabled (GtkTooltips *tooltips)
{
return gtk_style_get_color (style, color_type, state);
}
-
+/*
GdkFont*
gtk_style_get_font (GtkStyle *style)
{
{
return style->font = font;
}
-
+*/
GdkGC*
gtk_style_get_gc (GtkStyle *style, GtkColorType color_type, GtkStateType state)