diff dynamin/c/gtk.d @ 18:836a064828e8

Implement FileDialog/DirectoryDialog with GTK and start a glib/gdk/gtk binding. Add invoke/invokeNow stubs to fix build on X.
author Jordan Miner <jminer7@gmail.com>
date Fri, 24 Jul 2009 00:35:42 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dynamin/c/gtk.d	Fri Jul 24 00:35:42 2009 -0500
@@ -0,0 +1,592 @@
+module dynamin.c.gtk;
+
+/*
+ * A binding to at least the part of GTK that Dynamin uses.
+ */
+
+import dynamin.c.glib;
+import dynamin.c.gdk;
+import tango.sys.SharedLib;
+
+extern(C):
+
+alias void GtkWidget;
+alias void GtkWindow;
+
+//{{{ gtkmain
+/*const*/ gchar* function(guint required_major,
+	guint required_minor,
+	guint required_micro) gtk_check_version;
+
+gboolean function(int* argc,
+	char*** argv) gtk_parse_args;
+
+void function(int* argc,
+	char*** argv) gtk_init;
+
+gboolean function(int* argc,
+	char*** argv) gtk_init_check;
+
+// leaving some out
+
+gboolean function() gtk_events_pending;
+//void function(GdkEvent* event) gtk_main_do_event;
+void function() gtk_main;
+guint function() gtk_main_level;
+void function() gtk_main_quit;
+gboolean function() gtk_main_iteration;
+gboolean function(gboolean blocking) gtk_main_iteration_do;
+//}}}
+
+//{{{ gtkwidget
+void function(GtkWidget* widget) gtk_widget_destroy;
+//}}}
+
+//{{{ gtkdialog
+enum {
+	GTK_DIALOG_MODAL               = 1 << 0,
+	GTK_DIALOG_DESTROY_WITH_PARENT = 1 << 1,
+	GTK_DIALOG_NO_SEPARATOR        = 1 << 2
+}
+alias uint GtkDialogFlags;
+
+enum {
+	GTK_RESPONSE_NONE = -1,
+
+	GTK_RESPONSE_REJECT = -2,
+	GTK_RESPONSE_ACCEPT = -3,
+
+	GTK_RESPONSE_DELETE_EVENT = -4,
+
+	GTK_RESPONSE_OK     = -5,
+	GTK_RESPONSE_CANCEL = -6,
+	GTK_RESPONSE_CLOSE  = -7,
+	GTK_RESPONSE_YES    = -8,
+	GTK_RESPONSE_NO     = -9,
+	GTK_RESPONSE_APPLY  = -10,
+	GTK_RESPONSE_HELP   = -11
+}
+alias uint GtkResponseType;
+
+alias void GtkDialog;
+
+GType function() gtk_dialog_get_type;
+alias gtk_dialog_get_type GTK_TYPE_DIALOG;
+GtkWidget* function() gtk_dialog_new;
+
+GtkWidget* function(/*const*/ gchar* title,
+	GtkWindow* parent,
+	GtkDialogFlags flags,
+	/*const*/ gchar* first_button_text,
+	...) gtk_dialog_new_with_buttons;
+
+void function(GtkDialog* dialog,
+	GtkWidget* child,
+	gint response_id) gtk_dialog_add_action_widget;
+GtkWidget* function(GtkDialog* dialog,
+	/*const*/ gchar* button_text,
+	gint response_id) gtk_dialog_add_button;
+void function(GtkDialog* dialog,
+	/*const*/ gchar* first_button_text,
+	...) gtk_dialog_add_buttons;
+
+void function(GtkDialog* dialog,
+	gint response_id,
+	gboolean setting) gtk_dialog_set_response_sensitive;
+void function(GtkDialog* dialog,
+	gint response_id) gtk_dialog_set_default_response;
+gint function(GtkDialog* dialog,
+	GtkWidget* widget) gtk_dialog_get_response_for_widget;
+
+void function(GtkDialog* dialog,
+	gboolean setting) gtk_dialog_set_has_separator;
+gboolean function(GtkDialog* dialog) gtk_dialog_get_has_separator;
+
+//gboolean function(GdkScreen* screen) gtk_alternative_dialog_button_order;
+void function(GtkDialog* dialog,
+	gint first_response_id,
+	...) gtk_dialog_set_alternative_button_order;
+void function(GtkDialog* dialog,
+	gint n_params,
+	gint* new_order) gtk_dialog_set_alternative_button_order_from_array;
+
+void function(GtkDialog* dialog,
+	gint response_id) gtk_dialog_response;
+
+gint function(GtkDialog* dialog) gtk_dialog_run;
+
+GtkWidget*  function(GtkDialog* dialog) gtk_dialog_get_action_area;
+GtkWidget*  function(GtkDialog* dialog) gtk_dialog_get_content_area;
+//}}}
+
+//{{{ gtkfilefilter
+alias void GtkFileFilter;
+
+enum {
+	GTK_FILE_FILTER_FILENAME     = 1 << 0,
+	GTK_FILE_FILTER_URI          = 1 << 1,
+	GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2,
+	GTK_FILE_FILTER_MIME_TYPE    = 1 << 3
+}
+alias uint GtkFileFilterFlags;
+
+alias gboolean function(/*const*/ GtkFileFilterInfo* filter_info,
+	gpointer data) GtkFileFilterFunc;
+
+struct GtkFileFilterInfo {
+	GtkFileFilterFlags contains;
+
+	/*const*/ gchar* filename;
+	/*const*/ gchar* uri;
+	/*const*/ gchar* display_name;
+	/*const*/ gchar* mime_type;
+}
+
+GType function() gtk_file_filter_get_type;
+
+alias gtk_file_filter_get_type GTK_TYPE_FILE_FILTER;
+
+GtkFileFilter*  function() gtk_file_filter_new;
+void function(GtkFileFilter* filter,
+	/*const*/ gchar* name) gtk_file_filter_set_name;
+gchar* function(GtkFileFilter* filter) gtk_file_filter_get_name;
+
+void function(GtkFileFilter* filter,
+	/*const*/ gchar* mime_type) gtk_file_filter_add_mime_type;
+void function(GtkFileFilter* filter,
+	/*const*/ gchar* pattern) gtk_file_filter_add_pattern;
+void function(GtkFileFilter* filter) gtk_file_filter_add_pixbuf_formats;
+void function(GtkFileFilter* filter,
+	GtkFileFilterFlags needed,
+	GtkFileFilterFunc func,
+	gpointer data,
+	GDestroyNotify notify) gtk_file_filter_add_custom;
+
+GtkFileFilterFlags function(GtkFileFilter* filter) gtk_file_filter_get_needed;
+gboolean function(GtkFileFilter* filter,
+	/*const*/ GtkFileFilterInfo* filter_info) gtk_file_filter_filter;
+//}}}
+
+//{{{ gtkfilechooser
+alias void GtkFileChooser;
+
+enum {
+	GTK_FILE_CHOOSER_ACTION_OPEN,
+	GTK_FILE_CHOOSER_ACTION_SAVE,
+	GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+	GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
+}
+alias uint GtkFileChooserAction;
+
+enum {
+	GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM,
+	GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME,
+	GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN
+}
+alias uint GtkFileChooserConfirmation;
+
+GType function() gtk_file_chooser_get_type;
+
+alias gtk_file_chooser_get_type GTK_TYPE_FILE_CHOOSER;
+
+enum {
+	GTK_FILE_CHOOSER_ERROR_NONEXISTENT,
+	GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
+	GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS,
+	GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME
+}
+alias uint GtkFileChooserError;
+
+GQuark function() gtk_file_chooser_error_quark;
+
+alias gtk_file_chooser_error_quark GTK_FILE_CHOOSER_ERROR;
+
+void function(GtkFileChooser* chooser,
+	GtkFileChooserAction action) gtk_file_chooser_set_action;
+GtkFileChooserAction function(GtkFileChooser* chooser) gtk_file_chooser_get_action;
+void function(GtkFileChooser* chooser,
+	gboolean local_only) gtk_file_chooser_set_local_only;
+gboolean function(GtkFileChooser* chooser) gtk_file_chooser_get_local_only;
+void function(GtkFileChooser* chooser,
+	gboolean select_multiple) gtk_file_chooser_set_select_multiple;
+gboolean function(GtkFileChooser* chooser) gtk_file_chooser_get_select_multiple;
+void function(GtkFileChooser* chooser,
+	gboolean show_hidden) gtk_file_chooser_set_show_hidden;
+gboolean function(GtkFileChooser* chooser) gtk_file_chooser_get_show_hidden;
+void function(GtkFileChooser* chooser,
+	gboolean do_overwrite_confirmation) gtk_file_chooser_set_do_overwrite_confirmation;
+gboolean function(GtkFileChooser* chooser) gtk_file_chooser_get_do_overwrite_confirmation;
+
+void function(GtkFileChooser* chooser,
+	/*const*/ gchar* name) gtk_file_chooser_set_current_name;
+
+gchar* function(GtkFileChooser* chooser) gtk_file_chooser_get_filename;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* filename) gtk_file_chooser_set_filename;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* filename) gtk_file_chooser_select_filename;
+void function(GtkFileChooser* chooser,
+	/*const*/ char* filename) gtk_file_chooser_unselect_filename;
+void function(GtkFileChooser* chooser) gtk_file_chooser_select_all;
+void function(GtkFileChooser* chooser) gtk_file_chooser_unselect_all;
+GSList* function(GtkFileChooser* chooser) gtk_file_chooser_get_filenames;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ gchar* filename) gtk_file_chooser_set_current_folder;
+gchar* function(GtkFileChooser* chooser) gtk_file_chooser_get_current_folder;
+
+gchar* function(GtkFileChooser* chooser) gtk_file_chooser_get_uri;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* uri) gtk_file_chooser_set_uri;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* uri) gtk_file_chooser_select_uri;
+void function(GtkFileChooser* chooser,
+	/*const*/ char* uri) gtk_file_chooser_unselect_uri;
+GSList* function(GtkFileChooser* chooser) gtk_file_chooser_get_uris;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ gchar* uri) gtk_file_chooser_set_current_folder_uri;
+gchar* function(GtkFileChooser* chooser) gtk_file_chooser_get_current_folder_uri;
+/*
+GFile* function(GtkFileChooser* chooser) gtk_file_chooser_get_file;
+gboolean function(GtkFileChooser* chooser,
+	GFile* file,
+	GError** error) gtk_file_chooser_set_file;
+gboolean function(GtkFileChooser* chooser,
+	GFile* file,
+	GError** error) gtk_file_chooser_select_file;
+void function(GtkFileChooser* chooser,
+	GFile* file) gtk_file_chooser_unselect_file;
+GSList* function(GtkFileChooser* chooser) gtk_file_chooser_get_files;
+gboolean function(GtkFileChooser* chooser,
+	GFile* file,
+	GError** error) gtk_file_chooser_set_current_folder_file;
+GFile* function(GtkFileChooser* chooser) gtk_file_chooser_get_current_folder_file;
+*/
+/*
+void function(GtkFileChooser* chooser,
+	GtkWidget* preview_widget) gtk_file_chooser_set_preview_widget;
+GtkWidget* function(GtkFileChooser* chooser) gtk_file_chooser_get_preview_widget;
+void function(GtkFileChooser* chooser,
+	gboolean active) gtk_file_chooser_set_preview_widget_active;
+gboolean function(GtkFileChooser* chooser) gtk_file_chooser_get_preview_widget_active;
+void function(GtkFileChooser* chooser,
+	gboolean use_label) gtk_file_chooser_set_use_preview_label;
+gboolean function(GtkFileChooser* chooser) gtk_file_chooser_get_use_preview_label;
+
+char* function(GtkFileChooser* chooser) gtk_file_chooser_get_preview_filename;
+char* function(GtkFileChooser* chooser) gtk_file_chooser_get_preview_uri;
+GFile* function(GtkFileChooser* chooser) gtk_file_chooser_get_preview_file;
+
+void function(GtkFileChooser* chooser,
+	GtkWidget* extra_widget) gtk_file_chooser_set_extra_widget;
+GtkWidget* function(GtkFileChooser* chooser) gtk_file_chooser_get_extra_widget;
+*/
+void function(GtkFileChooser* chooser,
+	GtkFileFilter* filter) gtk_file_chooser_add_filter;
+void function(GtkFileChooser* chooser,
+	GtkFileFilter* filter) gtk_file_chooser_remove_filter;
+GSList* function(GtkFileChooser* chooser) gtk_file_chooser_list_filters;
+
+void function(GtkFileChooser* chooser,
+	GtkFileFilter* filter) gtk_file_chooser_set_filter;
+GtkFileFilter* function(GtkFileChooser* chooser) gtk_file_chooser_get_filter;
+
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* folder,
+	GError** error) gtk_file_chooser_add_shortcut_folder;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* folder,
+	GError** error) gtk_file_chooser_remove_shortcut_folder;
+GSList* function(GtkFileChooser* chooser) gtk_file_chooser_list_shortcut_folders;
+
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* uri,
+	GError** error) gtk_file_chooser_add_shortcut_folder_uri;
+gboolean function(GtkFileChooser* chooser,
+	/*const*/ char* uri,
+	GError** error) gtk_file_chooser_remove_shortcut_folder_uri;
+GSList* function(GtkFileChooser* chooser) gtk_file_chooser_list_shortcut_folder_uris;
+//}}}
+
+//{{{ gtkfilechooserdialog
+alias void GtkFileChooserDialog;
+
+GType function() gtk_file_chooser_dialog_get_type;
+alias gtk_file_chooser_dialog_get_type GTK_TYPE_FILE_CHOOSER_DIALOG;
+GtkWidget* function(/*const*/ gchar* title,
+	GtkWindow* parent,
+	GtkFileChooserAction action,
+	/*const*/ gchar* first_button_text,
+	...) gtk_file_chooser_dialog_new;
+//}}}
+
+//{{{ gtkstock
+struct GtkStockItem {
+	gchar* stock_id;
+	gchar* label;
+	GdkModifierType modifier;
+	guint keyval;
+	gchar* translation_domain;
+}
+
+void function(/*const*/ GtkStockItem* items,
+	guint n_items) gtk_stock_add;
+void function(/*const*/ GtkStockItem* items,
+	guint n_items) gtk_stock_add_static;
+gboolean function(/*const*/ gchar* stock_id,
+	GtkStockItem* item) gtk_stock_lookup;
+
+GSList* function() gtk_stock_list_ids;
+
+GtkStockItem* function(/*const*/ GtkStockItem* item) gtk_stock_item_copy;
+void function(GtkStockItem* item) gtk_stock_item_free;
+
+//void function(/*const*/ gchar* domain,
+//	GtkTranslateFunc func,
+//	gpointer data,
+//	GDestroyNotify notify) gtk_stock_set_translate_func;
+
+const gchar* GTK_STOCK_DIALOG_AUTHENTICATION = "gtk-dialog-authentication";
+const gchar* GTK_STOCK_DIALOG_INFO      = "gtk-dialog-info";
+const gchar* GTK_STOCK_DIALOG_WARNING   = "gtk-dialog-warning";
+const gchar* GTK_STOCK_DIALOG_ERROR     = "gtk-dialog-error";
+const gchar* GTK_STOCK_DIALOG_QUESTION  = "gtk-dialog-question";
+
+const gchar* GTK_STOCK_DND              = "gtk-dnd";
+const gchar* GTK_STOCK_DND_MULTIPLE     = "gtk-dnd-multiple";
+
+const gchar* GTK_STOCK_ABOUT            = "gtk-about";
+const gchar* GTK_STOCK_ADD              = "gtk-add";
+const gchar* GTK_STOCK_APPLY            = "gtk-apply";
+const gchar* GTK_STOCK_BOLD             = "gtk-bold";
+const gchar* GTK_STOCK_CANCEL           = "gtk-cancel";
+const gchar* GTK_STOCK_CAPS_LOCK_WARNING = "gtk-caps-lock-warning";
+const gchar* GTK_STOCK_CDROM            = "gtk-cdrom";
+const gchar* GTK_STOCK_CLEAR            = "gtk-clear";
+const gchar* GTK_STOCK_CLOSE            = "gtk-close";
+const gchar* GTK_STOCK_COLOR_PICKER     = "gtk-color-picker";
+const gchar* GTK_STOCK_CONVERT          = "gtk-convert";
+const gchar* GTK_STOCK_CONNECT          = "gtk-connect";
+const gchar* GTK_STOCK_COPY             = "gtk-copy";
+const gchar* GTK_STOCK_CUT              = "gtk-cut";
+const gchar* GTK_STOCK_DELETE           = "gtk-delete";
+const gchar* GTK_STOCK_DIRECTORY        = "gtk-directory";
+const gchar* GTK_STOCK_DISCARD          = "gtk-discard";
+const gchar* GTK_STOCK_DISCONNECT       = "gtk-disconnect";
+const gchar* GTK_STOCK_EDIT             = "gtk-edit";
+const gchar* GTK_STOCK_EXECUTE          = "gtk-execute";
+const gchar* GTK_STOCK_FILE             = "gtk-file";
+const gchar* GTK_STOCK_FIND             = "gtk-find";
+const gchar* GTK_STOCK_FIND_AND_REPLACE = "gtk-find-and-replace";
+const gchar* GTK_STOCK_FLOPPY           = "gtk-floppy";
+const gchar* GTK_STOCK_FULLSCREEN       = "gtk-fullscreen";
+const gchar* GTK_STOCK_GOTO_BOTTOM      = "gtk-goto-bottom";
+const gchar* GTK_STOCK_GOTO_FIRST       = "gtk-goto-first";
+const gchar* GTK_STOCK_GOTO_LAST        = "gtk-goto-last";
+const gchar* GTK_STOCK_GOTO_TOP         = "gtk-goto-top";
+const gchar* GTK_STOCK_GO_BACK          = "gtk-go-back";
+const gchar* GTK_STOCK_GO_DOWN          = "gtk-go-down";
+const gchar* GTK_STOCK_GO_FORWARD       = "gtk-go-forward";
+const gchar* GTK_STOCK_GO_UP            = "gtk-go-up";
+const gchar* GTK_STOCK_HARDDISK         = "gtk-harddisk";
+const gchar* GTK_STOCK_HELP             = "gtk-help";
+const gchar* GTK_STOCK_HOME             = "gtk-home";
+const gchar* GTK_STOCK_INDEX            = "gtk-index";
+const gchar* GTK_STOCK_INDENT           = "gtk-indent";
+const gchar* GTK_STOCK_INFO             = "gtk-info";
+const gchar* GTK_STOCK_UNINDENT         = "gtk-unindent";
+const gchar* GTK_STOCK_ITALIC           = "gtk-italic";
+const gchar* GTK_STOCK_JUMP_TO          = "gtk-jump-to";
+const gchar* GTK_STOCK_JUSTIFY_CENTER   = "gtk-justify-center";
+const gchar* GTK_STOCK_JUSTIFY_FILL     = "gtk-justify-fill";
+const gchar* GTK_STOCK_JUSTIFY_LEFT     = "gtk-justify-left";
+const gchar* GTK_STOCK_JUSTIFY_RIGHT    = "gtk-justify-right";
+const gchar* GTK_STOCK_LEAVE_FULLSCREEN = "gtk-leave-fullscreen";
+const gchar* GTK_STOCK_MISSING_IMAGE    = "gtk-missing-image";
+const gchar* GTK_STOCK_MEDIA_FORWARD    = "gtk-media-forward";
+const gchar* GTK_STOCK_MEDIA_NEXT       = "gtk-media-next";
+const gchar* GTK_STOCK_MEDIA_PAUSE      = "gtk-media-pause";
+const gchar* GTK_STOCK_MEDIA_PLAY       = "gtk-media-play";
+const gchar* GTK_STOCK_MEDIA_PREVIOUS   = "gtk-media-previous";
+const gchar* GTK_STOCK_MEDIA_RECORD     = "gtk-media-record";
+const gchar* GTK_STOCK_MEDIA_REWIND     = "gtk-media-rewind";
+const gchar* GTK_STOCK_MEDIA_STOP       = "gtk-media-stop";
+const gchar* GTK_STOCK_NETWORK          = "gtk-network";
+const gchar* GTK_STOCK_NEW              = "gtk-new";
+const gchar* GTK_STOCK_NO               = "gtk-no";
+const gchar* GTK_STOCK_OK               = "gtk-ok";
+const gchar* GTK_STOCK_OPEN             = "gtk-open";
+const gchar* GTK_STOCK_ORIENTATION_PORTRAIT = "gtk-orientation-portrait";
+const gchar* GTK_STOCK_ORIENTATION_LANDSCAPE = "gtk-orientation-landscape";
+const gchar* GTK_STOCK_ORIENTATION_REVERSE_LANDSCAPE = "gtk-orientation-reverse-landscape";
+const gchar* GTK_STOCK_ORIENTATION_REVERSE_PORTRAIT = "gtk-orientation-reverse-portrait";
+const gchar* GTK_STOCK_PAGE_SETUP       = "gtk-page-setup";
+const gchar* GTK_STOCK_PASTE            = "gtk-paste";
+const gchar* GTK_STOCK_PREFERENCES      = "gtk-preferences";
+const gchar* GTK_STOCK_PRINT            = "gtk-print";
+const gchar* GTK_STOCK_PRINT_ERROR      = "gtk-print-error";
+const gchar* GTK_STOCK_PRINT_PAUSED     = "gtk-print-paused";
+const gchar* GTK_STOCK_PRINT_PREVIEW    = "gtk-print-preview";
+const gchar* GTK_STOCK_PRINT_REPORT     = "gtk-print-report";
+const gchar* GTK_STOCK_PRINT_WARNING    = "gtk-print-warning";
+const gchar* GTK_STOCK_PROPERTIES       = "gtk-properties";
+const gchar* GTK_STOCK_QUIT             = "gtk-quit";
+const gchar* GTK_STOCK_REDO             = "gtk-redo";
+const gchar* GTK_STOCK_REFRESH          = "gtk-refresh";
+const gchar* GTK_STOCK_REMOVE           = "gtk-remove";
+const gchar* GTK_STOCK_REVERT_TO_SAVED  = "gtk-revert-to-saved";
+const gchar* GTK_STOCK_SAVE             = "gtk-save";
+const gchar* GTK_STOCK_SAVE_AS          = "gtk-save-as";
+const gchar* GTK_STOCK_SELECT_ALL       = "gtk-select-all";
+const gchar* GTK_STOCK_SELECT_COLOR     = "gtk-select-color";
+const gchar* GTK_STOCK_SELECT_FONT      = "gtk-select-font";
+const gchar* GTK_STOCK_SORT_ASCENDING   = "gtk-sort-ascending";
+const gchar* GTK_STOCK_SORT_DESCENDING  = "gtk-sort-descending";
+const gchar* GTK_STOCK_SPELL_CHECK      = "gtk-spell-check";
+const gchar* GTK_STOCK_STOP             = "gtk-stop";
+const gchar* GTK_STOCK_STRIKETHROUGH    = "gtk-strikethrough";
+const gchar* GTK_STOCK_UNDELETE         = "gtk-undelete";
+const gchar* GTK_STOCK_UNDERLINE        = "gtk-underline";
+const gchar* GTK_STOCK_UNDO             = "gtk-undo";
+const gchar* GTK_STOCK_YES              = "gtk-yes";
+const gchar* GTK_STOCK_ZOOM_100         = "gtk-zoom-100";
+const gchar* GTK_STOCK_ZOOM_FIT         = "gtk-zoom-fit";
+const gchar* GTK_STOCK_ZOOM_IN          = "gtk-zoom-in";
+const gchar* GTK_STOCK_ZOOM_OUT         = "gtk-zoom-out";
+//}}}
+
+static this() {
+	auto lib = SharedLib.load("libgtk-x11-2.0.so.0");
+
+	//{{{ gtkmain
+	gtk_check_version = cast(typeof(gtk_check_version))lib.getSymbol("gtk_check_version");
+	gtk_parse_args = cast(typeof(gtk_parse_args))lib.getSymbol("gtk_parse_args");
+	gtk_init = cast(typeof(gtk_init))lib.getSymbol("gtk_init");
+	gtk_init_check = cast(typeof(gtk_init_check))lib.getSymbol("gtk_init_check");
+
+	gtk_events_pending = cast(typeof(gtk_events_pending))lib.getSymbol("gtk_events_pending");
+	//gtk_main_do_event = cast(typeof(gtk_main_do_event))lib.getSymbol("gtk_main_do_event");
+	gtk_main = cast(typeof(gtk_main))lib.getSymbol("gtk_main");
+	gtk_main_level = cast(typeof(gtk_main_level))lib.getSymbol("gtk_main_level");
+	gtk_main_quit = cast(typeof(gtk_main_quit))lib.getSymbol("gtk_main_quit");
+	gtk_main_iteration = cast(typeof(gtk_main_iteration))lib.getSymbol("gtk_main_iteration");
+	gtk_main_iteration_do = cast(typeof(gtk_main_iteration_do))lib.getSymbol("gtk_main_iteration_do");
+	//}}}
+
+	//{{{ gtkwidget
+	gtk_widget_destroy = cast(typeof(gtk_widget_destroy))lib.getSymbol("gtk_widget_destroy");
+	//}}}
+
+	//{{{ gtkdialog
+	gtk_dialog_get_type = cast(typeof(gtk_dialog_get_type))lib.getSymbol("gtk_dialog_get_type");
+	gtk_dialog_new = cast(typeof(gtk_dialog_new))lib.getSymbol("gtk_dialog_new");
+	gtk_dialog_new_with_buttons = cast(typeof(gtk_dialog_new_with_buttons))lib.getSymbol("gtk_dialog_new_with_buttons");
+	gtk_dialog_add_action_widget = cast(typeof(gtk_dialog_add_action_widget))lib.getSymbol("gtk_dialog_add_action_widget");
+	gtk_dialog_add_button = cast(typeof(gtk_dialog_add_button))lib.getSymbol("gtk_dialog_add_button");
+	gtk_dialog_add_buttons = cast(typeof(gtk_dialog_add_buttons))lib.getSymbol("gtk_dialog_add_buttons");
+	gtk_dialog_set_response_sensitive = cast(typeof(gtk_dialog_set_response_sensitive))lib.getSymbol("gtk_dialog_set_response_sensitive");
+	gtk_dialog_set_default_response = cast(typeof(gtk_dialog_set_default_response))lib.getSymbol("gtk_dialog_set_default_response");
+	gtk_dialog_get_response_for_widget = cast(typeof(gtk_dialog_get_response_for_widget))lib.getSymbol("gtk_dialog_get_response_for_widget");
+	gtk_dialog_set_has_separator = cast(typeof(gtk_dialog_set_has_separator))lib.getSymbol("gtk_dialog_set_has_separator");
+	gtk_dialog_get_has_separator = cast(typeof(gtk_dialog_get_has_separator))lib.getSymbol("gtk_dialog_get_has_separator");
+	//gtk_alternative_dialog_button_order = cast(typeof(gtk_alternative_dialog_button_order))lib.getSymbol("gtk_alternative_dialog_button_order");
+	gtk_dialog_set_alternative_button_order = cast(typeof(gtk_dialog_set_alternative_button_order))lib.getSymbol("gtk_dialog_set_alternative_button_order");
+	gtk_dialog_set_alternative_button_order_from_array = cast(typeof(gtk_dialog_set_alternative_button_order_from_array))lib.getSymbol("gtk_dialog_set_alternative_button_order_from_array");
+	gtk_dialog_response = cast(typeof(gtk_dialog_response))lib.getSymbol("gtk_dialog_response");
+	gtk_dialog_run = cast(typeof(gtk_dialog_run))lib.getSymbol("gtk_dialog_run");
+	//gtk_dialog_get_action_area = cast(typeof(gtk_dialog_get_action_area))lib.getSymbol("gtk_dialog_get_action_area");
+	//gtk_dialog_get_content_area = cast(typeof(gtk_dialog_get_content_area))lib.getSymbol("gtk_dialog_get_content_area");
+	//}}}
+
+	//{{{ gtkfilefilter
+	gtk_file_filter_get_type = cast(typeof(gtk_file_filter_get_type))lib.getSymbol("gtk_file_filter_get_type");
+	gtk_file_filter_new = cast(typeof(gtk_file_filter_new))lib.getSymbol("gtk_file_filter_new");
+	gtk_file_filter_set_name = cast(typeof(gtk_file_filter_set_name))lib.getSymbol("gtk_file_filter_set_name");
+	gtk_file_filter_get_name = cast(typeof(gtk_file_filter_get_name))lib.getSymbol("gtk_file_filter_get_name");
+	gtk_file_filter_add_mime_type = cast(typeof(gtk_file_filter_add_mime_type))lib.getSymbol("gtk_file_filter_add_mime_type");
+	gtk_file_filter_add_pattern = cast(typeof(gtk_file_filter_add_pattern))lib.getSymbol("gtk_file_filter_add_pattern");
+	gtk_file_filter_add_pixbuf_formats = cast(typeof(gtk_file_filter_add_pixbuf_formats))lib.getSymbol("gtk_file_filter_add_pixbuf_formats");
+	gtk_file_filter_add_custom = cast(typeof(gtk_file_filter_add_custom))lib.getSymbol("gtk_file_filter_add_custom");
+	gtk_file_filter_get_needed = cast(typeof(gtk_file_filter_get_needed))lib.getSymbol("gtk_file_filter_get_needed");
+	gtk_file_filter_filter = cast(typeof(gtk_file_filter_filter))lib.getSymbol("gtk_file_filter_filter");
+	//}}}
+
+	//{{{ gtkfilechooser
+	gtk_file_chooser_get_type = cast(typeof(gtk_file_chooser_get_type))lib.getSymbol("gtk_file_chooser_get_type");
+	gtk_file_chooser_error_quark = cast(typeof(gtk_file_chooser_error_quark))lib.getSymbol("gtk_file_chooser_error_quark");
+	gtk_file_chooser_set_action = cast(typeof(gtk_file_chooser_set_action))lib.getSymbol("gtk_file_chooser_set_action");
+	gtk_file_chooser_get_action = cast(typeof(gtk_file_chooser_get_action))lib.getSymbol("gtk_file_chooser_get_action");
+	gtk_file_chooser_set_local_only = cast(typeof(gtk_file_chooser_set_local_only))lib.getSymbol("gtk_file_chooser_set_local_only");
+	gtk_file_chooser_get_local_only = cast(typeof(gtk_file_chooser_get_local_only))lib.getSymbol("gtk_file_chooser_get_local_only");
+	gtk_file_chooser_set_select_multiple = cast(typeof(gtk_file_chooser_set_select_multiple))lib.getSymbol("gtk_file_chooser_set_select_multiple");
+	gtk_file_chooser_get_select_multiple = cast(typeof(gtk_file_chooser_get_select_multiple))lib.getSymbol("gtk_file_chooser_get_select_multiple");
+	gtk_file_chooser_set_show_hidden = cast(typeof(gtk_file_chooser_set_show_hidden))lib.getSymbol("gtk_file_chooser_set_show_hidden");
+	gtk_file_chooser_get_show_hidden = cast(typeof(gtk_file_chooser_get_show_hidden))lib.getSymbol("gtk_file_chooser_get_show_hidden");
+	gtk_file_chooser_set_do_overwrite_confirmation = cast(typeof(gtk_file_chooser_set_do_overwrite_confirmation))lib.getSymbol("gtk_file_chooser_set_do_overwrite_confirmation");
+	gtk_file_chooser_get_do_overwrite_confirmation = cast(typeof(gtk_file_chooser_get_do_overwrite_confirmation))lib.getSymbol("gtk_file_chooser_get_do_overwrite_confirmation");
+	gtk_file_chooser_set_current_name = cast(typeof(gtk_file_chooser_set_current_name))lib.getSymbol("gtk_file_chooser_set_current_name");
+	gtk_file_chooser_get_filename = cast(typeof(gtk_file_chooser_get_filename))lib.getSymbol("gtk_file_chooser_get_filename");
+	gtk_file_chooser_set_filename = cast(typeof(gtk_file_chooser_set_filename))lib.getSymbol("gtk_file_chooser_set_filename");
+	gtk_file_chooser_select_filename = cast(typeof(gtk_file_chooser_select_filename))lib.getSymbol("gtk_file_chooser_select_filename");
+	gtk_file_chooser_unselect_filename = cast(typeof(gtk_file_chooser_unselect_filename))lib.getSymbol("gtk_file_chooser_unselect_filename");
+	gtk_file_chooser_select_all = cast(typeof(gtk_file_chooser_select_all))lib.getSymbol("gtk_file_chooser_select_all");
+	gtk_file_chooser_unselect_all = cast(typeof(gtk_file_chooser_unselect_all))lib.getSymbol("gtk_file_chooser_unselect_all");
+	gtk_file_chooser_get_filenames = cast(typeof(gtk_file_chooser_get_filenames))lib.getSymbol("gtk_file_chooser_get_filenames");
+	gtk_file_chooser_set_current_folder = cast(typeof(gtk_file_chooser_set_current_folder))lib.getSymbol("gtk_file_chooser_set_current_folder");
+	gtk_file_chooser_get_current_folder = cast(typeof(gtk_file_chooser_get_current_folder))lib.getSymbol("gtk_file_chooser_get_current_folder");
+	gtk_file_chooser_get_uri = cast(typeof(gtk_file_chooser_get_uri))lib.getSymbol("gtk_file_chooser_get_uri");
+	gtk_file_chooser_set_uri = cast(typeof(gtk_file_chooser_set_uri))lib.getSymbol("gtk_file_chooser_set_uri");
+	gtk_file_chooser_select_uri = cast(typeof(gtk_file_chooser_select_uri))lib.getSymbol("gtk_file_chooser_select_uri");
+	gtk_file_chooser_unselect_uri = cast(typeof(gtk_file_chooser_unselect_uri))lib.getSymbol("gtk_file_chooser_unselect_uri");
+	gtk_file_chooser_get_uris = cast(typeof(gtk_file_chooser_get_uris))lib.getSymbol("gtk_file_chooser_get_uris");
+	gtk_file_chooser_set_current_folder_uri = cast(typeof(gtk_file_chooser_set_current_folder_uri))lib.getSymbol("gtk_file_chooser_set_current_folder_uri");
+	gtk_file_chooser_get_current_folder_uri = cast(typeof(gtk_file_chooser_get_current_folder_uri))lib.getSymbol("gtk_file_chooser_get_current_folder_uri");
+	/*
+	gtk_file_chooser_get_file = cast(typeof(gtk_file_chooser_get_file))lib.getSymbol("gtk_file_chooser_get_file");
+	gtk_file_chooser_set_file = cast(typeof(gtk_file_chooser_set_file))lib.getSymbol("gtk_file_chooser_set_file");
+	gtk_file_chooser_select_file = cast(typeof(gtk_file_chooser_select_file))lib.getSymbol("gtk_file_chooser_select_file");
+	gtk_file_chooser_unselect_file = cast(typeof(gtk_file_chooser_unselect_file))lib.getSymbol("gtk_file_chooser_unselect_file");
+	gtk_file_chooser_get_files = cast(typeof(gtk_file_chooser_get_files))lib.getSymbol("gtk_file_chooser_get_files");
+	gtk_file_chooser_set_current_folder_file = cast(typeof(gtk_file_chooser_set_current_folder_file))lib.getSymbol("gtk_file_chooser_set_current_folder_file");
+	gtk_file_chooser_get_current_folder_file = cast(typeof(gtk_file_chooser_get_current_folder_file))lib.getSymbol("gtk_file_chooser_get_current_folder_file");
+	gtk_file_chooser_set_preview_widget = cast(typeof(gtk_file_chooser_set_preview_widget))lib.getSymbol("gtk_file_chooser_set_preview_widget");
+	gtk_file_chooser_get_preview_widget = cast(typeof(gtk_file_chooser_get_preview_widget))lib.getSymbol("gtk_file_chooser_get_preview_widget");
+	gtk_file_chooser_set_preview_widget_active = cast(typeof(gtk_file_chooser_set_preview_widget_active))lib.getSymbol("gtk_file_chooser_set_preview_widget_active");
+	gtk_file_chooser_get_preview_widget_active = cast(typeof(gtk_file_chooser_get_preview_widget_active))lib.getSymbol("gtk_file_chooser_get_preview_widget_active");
+	gtk_file_chooser_set_use_preview_label = cast(typeof(gtk_file_chooser_set_use_preview_label))lib.getSymbol("gtk_file_chooser_set_use_preview_label");
+	gtk_file_chooser_get_use_preview_label = cast(typeof(gtk_file_chooser_get_use_preview_label))lib.getSymbol("gtk_file_chooser_get_use_preview_label");
+	gtk_file_chooser_get_preview_filename = cast(typeof(gtk_file_chooser_get_preview_filename))lib.getSymbol("gtk_file_chooser_get_preview_filename");
+	gtk_file_chooser_get_preview_uri = cast(typeof(gtk_file_chooser_get_preview_uri))lib.getSymbol("gtk_file_chooser_get_preview_uri");
+	gtk_file_chooser_get_preview_file = cast(typeof(gtk_file_chooser_get_preview_file))lib.getSymbol("gtk_file_chooser_get_preview_file");
+	gtk_file_chooser_set_extra_widget = cast(typeof(gtk_file_chooser_set_extra_widget))lib.getSymbol("gtk_file_chooser_set_extra_widget");
+	gtk_file_chooser_get_extra_widget = cast(typeof(gtk_file_chooser_get_extra_widget))lib.getSymbol("gtk_file_chooser_get_extra_widget");
+	*/
+	gtk_file_chooser_add_filter = cast(typeof(gtk_file_chooser_add_filter))lib.getSymbol("gtk_file_chooser_add_filter");
+	gtk_file_chooser_remove_filter = cast(typeof(gtk_file_chooser_remove_filter))lib.getSymbol("gtk_file_chooser_remove_filter");
+	gtk_file_chooser_list_filters = cast(typeof(gtk_file_chooser_list_filters))lib.getSymbol("gtk_file_chooser_list_filters");
+	gtk_file_chooser_set_filter = cast(typeof(gtk_file_chooser_set_filter))lib.getSymbol("gtk_file_chooser_set_filter");
+	gtk_file_chooser_get_filter = cast(typeof(gtk_file_chooser_get_filter))lib.getSymbol("gtk_file_chooser_get_filter");
+	gtk_file_chooser_add_shortcut_folder = cast(typeof(gtk_file_chooser_add_shortcut_folder))lib.getSymbol("gtk_file_chooser_add_shortcut_folder");
+	gtk_file_chooser_remove_shortcut_folder = cast(typeof(gtk_file_chooser_remove_shortcut_folder))lib.getSymbol("gtk_file_chooser_remove_shortcut_folder");
+	gtk_file_chooser_list_shortcut_folders = cast(typeof(gtk_file_chooser_list_shortcut_folders))lib.getSymbol("gtk_file_chooser_list_shortcut_folders");
+	gtk_file_chooser_add_shortcut_folder_uri = cast(typeof(gtk_file_chooser_add_shortcut_folder_uri))lib.getSymbol("gtk_file_chooser_add_shortcut_folder_uri");
+	gtk_file_chooser_remove_shortcut_folder_uri = cast(typeof(gtk_file_chooser_remove_shortcut_folder_uri))lib.getSymbol("gtk_file_chooser_remove_shortcut_folder_uri");
+	gtk_file_chooser_list_shortcut_folder_uris = cast(typeof(gtk_file_chooser_list_shortcut_folder_uris))lib.getSymbol("gtk_file_chooser_list_shortcut_folder_uris");
+	//}}}
+
+	//{{{ gtkfilechooserdialog
+	gtk_file_chooser_dialog_get_type = cast(typeof(gtk_file_chooser_dialog_get_type))lib.getSymbol("gtk_file_chooser_dialog_get_type");
+	gtk_file_chooser_dialog_new = cast(typeof(gtk_file_chooser_dialog_new))lib.getSymbol("gtk_file_chooser_dialog_new");
+	//}}}
+
+	//{{{ gtkstock
+	gtk_stock_add = cast(typeof(gtk_stock_add))lib.getSymbol("gtk_stock_add");
+	gtk_stock_add_static = cast(typeof(gtk_stock_add_static))lib.getSymbol("gtk_stock_add_static");
+	gtk_stock_lookup = cast(typeof(gtk_stock_lookup))lib.getSymbol("gtk_stock_lookup");
+	gtk_stock_list_ids = cast(typeof(gtk_stock_list_ids))lib.getSymbol("gtk_stock_list_ids");
+	gtk_stock_item_copy = cast(typeof(gtk_stock_item_copy))lib.getSymbol("gtk_stock_item_copy");
+	gtk_stock_item_free = cast(typeof(gtk_stock_item_free))lib.getSymbol("gtk_stock_item_free");
+	//gtk_stock_set_translate_func = cast(typeof(gtk_stock_set_translate_func))lib.getSymbol("gtk_stock_set_translate_func");
+	//}}}
+
+	gtk_init(null, null);
+}