chiark / gitweb /
Moved from main gtk source directory
authorespen <espen>
Sun, 31 Oct 2004 12:14:47 +0000 (12:14 +0000)
committerespen <espen>
Sun, 31 Oct 2004 12:14:47 +0000 (12:14 +0000)
gtk/alien/glue.c [new file with mode: 0644]

diff --git a/gtk/alien/glue.c b/gtk/alien/glue.c
new file mode 100644 (file)
index 0000000..6cd334c
--- /dev/null
@@ -0,0 +1,426 @@
+/* Common Lisp bindings for GTK+ v2.0
+ * 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
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/* $Id: glue.c,v 1.1 2004-10-31 12:14:47 espen Exp $ */
+
+
+#include <gtk/gtk.h>
+
+
+/*
+ *
+ * Gtk helper functions
+ *
+ */
+
+void
+gtk_query_version (guint *major, guint *minor, guint *micro)
+{
+  *major = gtk_major_version;
+  *minor = gtk_minor_version;
+  *micro = gtk_micro_version;
+}
+
+
+void gtk_callback_marshal (GtkWidget *widget, gpointer data)
+{
+  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 */
+
+GdkWindow*
+gtk_widget_get_window (GtkWidget *widget)
+{
+  return widget->window;
+}
+
+GtkStateType
+gtk_widget_get_state (GtkWidget *widget)
+{
+  return widget->state;
+}
+
+gboolean
+gtk_widget_mapped_p (GtkWidget *widget)
+{
+  return GTK_WIDGET_MAPPED (widget);
+}
+
+void
+gtk_widget_get_size_allocation (GtkWidget *widget, int *width, int *height)
+{
+  *width = widget->allocation.width;
+  *height = widget->allocation.height;
+}
+
+
+/* Container */
+
+GtkWidget*
+gtk_container_get_focus_child (GtkContainer *container)
+{
+  return container->focus_child;
+}
+
+
+/* Dialog */
+
+GtkWidget*
+gtk_dialog_get_vbox (GtkDialog *dialog)
+{
+  return dialog->vbox;
+}
+
+GtkWidget*
+gtk_dialog_get_action_area (GtkDialog *dialog)
+{
+  return dialog->action_area;
+}
+
+
+
+/* Check menu item */
+
+gboolean
+gtk_check_menu_item_get_active (GtkCheckMenuItem* check_menu_item)
+{
+  return check_menu_item->active;
+}
+
+gboolean
+gtk_check_menu_item_get_show_toggle (GtkCheckMenuItem* check_menu_item)
+{
+  return check_menu_item->always_show_toggle;
+}
+
+
+
+/* Window */
+
+GtkWidget*
+gtk_window_get_default (GtkWindow *window)
+{
+  return window->default_widget;
+}
+
+
+/* File selection */
+
+GtkWidget*
+gtk_file_selection_get_action_area (GtkFileSelection *filesel)
+{
+  return filesel->action_area;
+}
+
+GtkWidget*
+gtk_file_selection_get_ok_button (GtkFileSelection *filesel)
+{
+  return filesel->ok_button;
+}
+
+GtkWidget*
+gtk_file_selection_get_cancel_button (GtkFileSelection *filesel)
+{
+  return filesel->cancel_button;
+}
+
+
+/* Color selection */
+
+gtk_color_selection_set_color_by_values (GtkColorSelection *colorsel,
+                                        gdouble red,
+                                        gdouble green,
+                                        gdouble blue,
+                                        gdouble opacity)
+{
+  gdouble color[4];
+
+  color[0] = red;
+  color[1] = green;
+  color[2] = blue;
+  color[3] = opacity;
+
+  gtk_color_selection_set_color (colorsel, color);
+}
+
+void
+gtk_color_selection_get_color_as_values (GtkColorSelection *colorsel,
+                                        gdouble *red,
+                                        gdouble *green,
+                                        gdouble *blue,
+                                        gdouble *opacity)
+{
+  gdouble color[4];
+
+  gtk_color_selection_get_color (colorsel, color);
+
+  *red = color[0];
+  *green = color[1];
+  *blue = color[2];
+  *opacity = color[3];
+}
+
+
+/* Combo */
+
+GtkWidget*
+gtk_combo_get_entry (GtkCombo *combo)
+{
+  return combo->entry;
+}
+
+gboolean
+gtk_combo_get_use_arrows (GtkCombo *combo)
+{
+  return combo->use_arrows;
+}
+
+gboolean
+gtk_combo_get_use_arrows_always (GtkCombo *combo)
+{
+  return combo->use_arrows_always;
+}
+
+gboolean
+gtk_combo_get_case_sensitive (GtkCombo *combo)
+{
+  return combo->case_sensitive;
+}
+
+
+/* Paned */
+
+GtkWidget*
+gtk_paned_child1 (GtkPaned *paned, guint *resize, guint *shrink)
+{
+  *resize = paned->child1_resize;
+  *shrink = paned->child1_shrink;
+  
+  return paned->child1;
+}
+
+
+GtkWidget*
+gtk_paned_child2 (GtkPaned *paned, guint *resize, guint *shrink)
+{
+  *resize = paned->child2_resize;
+  *shrink = paned->child2_shrink;
+  
+  return paned->child2;
+}
+
+
+/* Layout */
+
+GdkWindow*
+gtk_layout_get_bin_window (GtkLayout *layout)
+{
+  return layout->bin_window;
+}
+
+
+/* List */
+
+GList*
+gtk_list_selection (GtkList *list)
+{
+  return list->selection;
+}
+
+
+
+/* Toolbar */
+
+gint
+gtk_toolbar_get_tooltips (GtkToolbar *toolbar)
+{
+  return toolbar->tooltips->enabled;
+}
+
+
+/* Drawing area */
+
+void
+gtk_drawing_area_get_size (GtkDrawingArea *darea, gint *width, gint *height)
+{
+  GtkWidget *widget;
+
+  widget = GTK_WIDGET (darea);
+  *width = widget->allocation.width;
+  *height = widget->allocation.height;
+}
+
+
+/* Progress */
+
+gchar*
+gtk_progress_get_format_string (GtkProgress *progress)
+{
+  return progress->format;
+}
+
+GtkAdjustment*
+gtk_progress_get_adjustment (GtkProgress *progress)
+{
+  return progress->adjustment;
+}
+
+
+/* Tooltips */
+
+gboolean
+gtk_tooltips_get_enabled (GtkTooltips *tooltips)
+{
+  return tooltips->enabled;
+}
+
+
+/* GtkStyle accessor functions */
+
+typedef enum {
+  GTK_COLOR_FG,
+  GTK_COLOR_BG,
+  GTK_COLOR_LIGHT,
+  GTK_COLOR_DARK,
+  GTK_COLOR_MID,
+  GTK_COLOR_TEXT,
+  GTK_COLOR_BASE,
+  GTK_COLOR_WHITE,
+  GTK_COLOR_BLACK
+} GtkColorType;
+
+GdkColor*
+gtk_style_get_color (GtkStyle *style, GtkColorType color_type,
+                    GtkStateType state)
+{
+  switch (color_type)
+    {
+    case GTK_COLOR_WHITE:
+      return &style->white;
+    case GTK_COLOR_BLACK:
+      return &style->black;
+    case GTK_COLOR_FG:
+      return &style->fg[state];
+    case GTK_COLOR_BG:
+      return &style->bg[state];
+    case GTK_COLOR_LIGHT:
+      return &style->light[state];
+    case GTK_COLOR_DARK:
+      return &style->dark[state];
+    case GTK_COLOR_MID:
+      return &style->mid[state];
+    case GTK_COLOR_TEXT:
+      return &style->text[state];
+    case GTK_COLOR_BASE:
+      return &style->base[state];
+    }
+}
+
+
+GdkColor*
+gtk_style_set_color (GtkStyle *style, GtkColorType color_type,
+                    GtkStateType state, GdkColor *color)
+{
+  switch (color_type)
+    {
+    case GTK_COLOR_WHITE:
+      style->white = *color; break;
+    case GTK_COLOR_BLACK:
+      style->black = *color; break;
+    case GTK_COLOR_FG:
+      style->fg[state] = *color; break;
+    case GTK_COLOR_BG:
+      style->bg[state]  = *color; break;
+    case GTK_COLOR_LIGHT:
+      style->light[state]  = *color; break;
+    case GTK_COLOR_DARK:
+      style->dark[state]  = *color; break;
+    case GTK_COLOR_MID:
+      style->mid[state]  = *color; break;
+    case GTK_COLOR_TEXT:
+      style->text[state]  = *color; break;
+    case GTK_COLOR_BASE:
+      style->base[state]  = *color; break;
+    }
+
+  return gtk_style_get_color (style, color_type, state);
+}
+
+/*
+GdkFont*
+gtk_style_get_font (GtkStyle *style)
+{
+  return style->font;
+}
+
+
+GdkFont*
+gtk_style_set_font (GtkStyle *style, GdkFont *font)
+{
+  return style->font = font;
+}
+*/
+
+GdkGC*
+gtk_style_get_gc (GtkStyle *style, GtkColorType color_type, GtkStateType state)
+{
+  switch (color_type)
+    {
+    case GTK_COLOR_WHITE:
+      return style->white_gc;
+    case GTK_COLOR_BLACK:
+      return style->black_gc;
+    case GTK_COLOR_FG:
+      return style->fg_gc[state];
+    case GTK_COLOR_BG:
+      return style->bg_gc[state];
+    case GTK_COLOR_LIGHT:
+      return style->light_gc[state];
+    case GTK_COLOR_DARK:
+      return style->dark_gc[state];
+    case GTK_COLOR_MID:
+      return style->mid_gc[state];
+    case GTK_COLOR_TEXT:
+      return style->text_gc[state];
+    case GTK_COLOR_BASE:
+      return style->base_gc[state];
+    }
+}