// C functions to bypass zinc limitations // // * zinc does not implements floats and doubles yet // these functions convert floats to ints // * zinc does not support variable argument number // * Access to gtk structure attributes #include #include #include #include "gdk/gdkprivate.h" #include "gdk/gdkx.h" /////////////////////////////////////////////////////////////////////////////// // Stubs for glib /////////////////////////////////////////////////////////////////////////////// gpointer g_object_new_0 (GType t) { return g_object_new(t, 0); } /////////////////////////////////////////////////////////////////////////////// // // gdk events // /////////////////////////////////////////////////////////////////////////////// guint gdk_event_button_button (GdkEventButton* e) { return e->button; } int gdk_event_button_get_x (GdkEventButton* e) { return (int)e->x; } int gdk_event_button_get_y (GdkEventButton* e) { return (int)e->y; } int gdk_event_motion_get_x (GdkEventMotion* e) { return (int)e->x; } int gdk_event_motion_get_y (GdkEventMotion* e) { return (int)e->y; } int gdk_event_scroll_get_x (GdkEventScroll* e) { return (int)e->x; } int gdk_event_scroll_get_y (GdkEventScroll* e) { return (int)e->y; } /////////////////////////////////////////////////////////////////////////////// // // alignment // /////////////////////////////////////////////////////////////////////////////// void gtk_misc_set_align (GtkMisc *misc, gint xalign, gint yalign) { gtk_misc_set_alignment (misc, ((gfloat)xalign)/100.0, ((gfloat)yalign)/100.0); } void gtk_misc_get_align (GtkMisc *misc, gint *xalign, gint *yalign) { gfloat xa; gfloat ya; gtk_misc_get_alignment (misc, &xa, &ya); *xalign = (gint) (xa*100.0); *yalign = (gint) (ya*100.0); } /////////////////////////////////////////////////////////////////////////////// // // Adjustment // /////////////////////////////////////////////////////////////////////////////// GtkObject* gtk_adjustment_new_int( gint value, gint lower, gint upper, gint step_increment, gint page_increment, gint page_size) { return gtk_adjustment_new( (gdouble)value, (gdouble)lower, (gdouble)upper, (gdouble)step_increment, (gdouble)page_increment, (gdouble)page_size); } void gtk_adjustment_clamp_page_int(GtkAdjustment *adjustment, gint lower, gint upper) { gtk_adjustment_clamp_page(adjustment, (gdouble)lower, (gdouble)upper); } gint gtk_adjustment_get_value_int(GtkAdjustment *adjustment) { return (gint)gtk_adjustment_get_value(adjustment); } void gtk_adjustment_set_value_int(GtkAdjustment *adjustment, gint value) { gtk_adjustment_set_value(adjustment, (gdouble)value); } /////////////////////////////////////////////////////////////////////////////// // // range // /////////////////////////////////////////////////////////////////////////////// void gtk_range_set_increments_int(GtkRange *range, gint step, gint page) { gtk_range_set_increments(range, (gdouble)step, (gdouble)page); } void gtk_range_set_range_int(GtkRange *range, gint min, gint max) { gtk_range_set_range (range, (gdouble)min, (gdouble)max); } void gtk_range_set_value_int(GtkRange *range, gint value) { gtk_range_set_value(range, (gdouble)value); } gint gtk_range_get_value_int (GtkRange *range) { return (gint)gtk_range_get_value(range); } /////////////////////////////////////////////////////////////////////////////// // // access to widget attributes // /////////////////////////////////////////////////////////////////////////////// guint32 gtk_widget_get_flags (GtkWidget* w) { return GTK_WIDGET_FLAGS (w); } void gtk_widget_set_flags (GtkWidget* w, guint flags) { GTK_WIDGET_SET_FLAGS (w, flags); } void gtk_widget_unset_flags (GtkWidget* w, guint flags) { GTK_WIDGET_UNSET_FLAGS (w, flags); } GdkWindow* gtk_widget_get_window (GtkWidget *widget) { return widget->window; } GtkType* gtk_widget_type(GtkWidget* w) { return (GtkType*)GTK_WIDGET_TYPE(w); } /////////////////////////////////////////////////////////////////////////////// // // access to style attributes // /////////////////////////////////////////////////////////////////////////////// GdkColor* gtk_style_get_fg (GtkStyle* s, int state) { return &(s->fg[state]); } GdkColor* gtk_style_get_bg (GtkStyle* s, int state) { return &(s->bg[state]); } GdkColor* gtk_style_get_light (GtkStyle* s, int state) { return &(s->light[state]); } GdkColor* gtk_style_get_dark (GtkStyle* s, int state) { return &(s->dark[state]); } GdkColor* gtk_style_get_mid (GtkStyle* s, int state) { return &(s->mid[state]); } GdkColor* gtk_style_get_text (GtkStyle* s, int state) { return &(s->text[state]); } GdkColor* gtk_style_get_base (GtkStyle* s, int state) { return &(s->base[state]); } GdkPixmap* gtk_style_get_pixmap (GtkStyle* s, int state) { return s->bg_pixmap[state]; } /////////////////////////////////////////////////////////////////////////////// // // message box // /////////////////////////////////////////////////////////////////////////////// GtkWidget* gtk_message_dialog_new_nofmt(GtkWindow *parent, GtkDialogFlags flags, GtkMessageType type, GtkButtonsType buttons, const gchar *message) { return gtk_message_dialog_new (parent, flags, type, buttons, "%s", message); } /////////////////////////////////////////////////////////////////////////////// // // File selector attributes // /////////////////////////////////////////////////////////////////////////////// GtkButton* gtk_file_selection_get_ok_button (GtkFileSelection* fs) { return GTK_BUTTON (GTK_FILE_SELECTION (fs)->ok_button); } GtkButton* gtk_file_selection_get_cancel_button (GtkFileSelection* fs) { return GTK_BUTTON (GTK_FILE_SELECTION (fs)->cancel_button); } GtkWidget* gtk_file_chooser_dialog_new_1(const gchar *title, GtkWindow *parent, GtkFileChooserAction action, const gchar *button_1, const gchar *button_2, const gchar *button_3, const gchar *button_4) { return gtk_file_chooser_dialog_new(title, parent, action, button_1, button_2, button_3, button_4, 0); } void gtk_list_store_set_1(GtkListStore* store,GtkTreeIter* iter, int v1,gchar* v2,int v3) { gtk_list_store_set(store, iter, v1, v2, v3); } GtkWidget* gtk_widget_new_0 (GtkType t) { return gtk_widget_new(t, 0); } /////////////////////////////////////////////////////////////////////////////// // // GDK // /////////////////////////////////////////////////////////////////////////////// // gdk_selection_owner_get cannot be used to check if a window from // another process owns the selection (it fails with the xwindow -> gdkwindow // conversion) int check_selection_owner_get(GdkAtom atom) { GdkDisplay *display; Atom xatom; Window xwindow; display = gdk_display_get_default(); xatom = gdk_x11_atom_to_xatom_for_display(display, atom); xwindow = XGetSelectionOwner (gdk_display, xatom); return xwindow != None; }