Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 6e2cd52bd5f176f9fbaff27ef4c0ba0e58bf4574 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*******************************************************************************
 * Copyright (c) 2007, 2010 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at 
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
#ifndef ECLIPSE_GTK_H
#define ECLIPSE_GTK_H

#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk/gdkx.h>

struct GTK_PTRS { 
	short 		not_initialized;
	void		(*gtk_container_add)		(GtkContainer*, GtkWidget*);
	gint		(*gtk_dialog_run)			(GtkDialog *);
	GtkWidget*	(*gtk_image_new_from_pixbuf)(GdkPixbuf*);
	gboolean	(*gtk_init_check)			(int*, char***);
	gboolean	(*gtk_init_with_args)		(int*, char***, const char *, void *, const char *, GError **);
	GtkWidget*	(*gtk_message_dialog_new)	(GtkWindow*, GtkDialogFlags, GtkMessageType, GtkButtonsType, const gchar*, ...);
	gchar*		(*gtk_set_locale)			();
	void		(*gtk_widget_destroy)		(GtkWidget*);
	void		(*gtk_widget_destroyed)		(GtkWidget*, GtkWidget**);
	void		(*gtk_widget_show_all)		(GtkWidget*);
	GtkWidget*	(*gtk_window_new)			(GtkWindowType);
	void		(*gtk_window_resize)		(GtkWindow*, gint, gint);
	void		(*gtk_window_set_title)		(GtkWindow*, const gchar*);
	void		(*gtk_window_set_decorated)	(GtkWindow*, gboolean);
	void		(*gtk_window_set_type_hint)	(GtkWindow*, int);
	void		(*gtk_window_set_position)	(GtkWindow*, GtkWindowPosition);

	gulong 		(*g_signal_connect_data)	(gpointer, const gchar*, GCallback, gpointer, GClosureNotify, GConnectFlags);
	gboolean	(*g_main_context_iteration)	(GMainContext*, gboolean);
	void		(*g_object_unref)			(gpointer);
	GObject*	(*g_object_new)				(GType, const gchar*, ...);
	guint       (*g_timeout_add)			(guint, GSourceFunc, gpointer);
	void		(*g_error_free)				(GError *);

#ifdef SOLARIS
	GString* 	(*g_string_insert_c) 		(GString *, gssize, gchar);
#endif	
		
	GdkDisplay* (*gdk_display_get_default)  		();
	Display*	(*gdk_x11_display_get_xdisplay)  	(GdkDisplay*);
	GdkPixbuf*	(*gdk_pixbuf_new_from_file)			(const char*, GError **);
	GdkPixbuf*	(*gdk_pixbuf_scale_simple)			(const GdkPixbuf*, int, int, GdkInterpType);
	int			(*gdk_pixbuf_get_width)				(const GdkPixbuf*);
	int			(*gdk_pixbuf_get_height)			(const GdkPixbuf*);
	void		(*gdk_set_program_class)			(const char*);
	GdkScreen *	(*gdk_screen_get_default)			();
	double		(*gdk_screen_get_resolution)		(GdkScreen *);
	
	Window 		(*XGetSelectionOwner)		(Display*, Atom);
	void		(*XSetSelectionOwner)		(Display*, Atom, Window, Time);
	void 		(*XChangeProperty)			(Display*, Window, Atom, Atom, int, int, unsigned char *, int);
	Window 		(*XCreateWindow)			(Display*, Window, int, int, unsigned int, unsigned int, unsigned int, int, unsigned int, Visual*, unsigned long, XSetWindowAttributes*);
	void		(*XSync)					(Display*, Bool);
	int			(*XDefaultScreen)			(Display*);
	Window		(*XRootWindow)				(Display*, int);
	Atom 		(*XInternAtom)				(Display*, _Xconst char*, Bool	);
};

#define gtk_GDK_DISPLAY gtk.gdk_x11_display_get_xdisplay(gtk.gdk_display_get_default())
extern struct GTK_PTRS gtk;

#define FN_TABLE_ENTRY(fn, required) { (void**)& gtk.fn, #fn, required }
typedef struct {
	void ** fnPtr;
	char * fnName;
	int required;
} FN_TABLE;

/* load the gtk libraries and initialize the function pointers */
extern int loadGtk();

#endif

Back to the top