/* Copyright (C) 2001-2006, William Joseph. All Rights Reserved. This file is part of GtkRadiant. GtkRadiant is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GtkRadiant 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 General Public License for more details. You should have received a copy of the GNU General Public License along with GtkRadiant; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #if !defined(INCLUDED_GTKUTIL_DIALOG_H) #define INCLUDED_GTKUTIL_DIALOG_H #include "generic/callback.h" #include "generic/arrayrange.h" #include "qerplugin.h" #include typedef int gint; typedef gint gboolean; typedef struct _GdkEventAny GdkEventAny; typedef struct _GtkWidget GtkWidget; typedef struct _GtkHBox GtkHBox; typedef struct _GtkVBox GtkVBox; typedef struct _GtkRadioButton GtkRadioButton; typedef struct _GtkFrame GtkFrame; typedef struct _GtkEntry GtkEntry; typedef struct _GtkButton GtkButton; typedef struct _GtkLabel GtkLabel; typedef struct _GtkTable GtkTable; struct ModalDialog { ModalDialog() : loop(true), ret(eIDCANCEL) { } bool loop; EMessageBoxReturn ret; }; struct ModalDialogButton { ModalDialogButton(ModalDialog& dialog, EMessageBoxReturn value) : m_dialog(dialog), m_value(value) { } ModalDialog& m_dialog; EMessageBoxReturn m_value; }; typedef void (*GCallback)(void); typedef void* gpointer; typedef struct _GtkWindow GtkWindow; typedef struct _GtkTable GtkTable; typedef struct _GtkButton GtkButton; typedef struct _GtkVBox GtkVBox; typedef struct _GtkHBox GtkHBox; typedef struct _GtkFrame GtkFrame; GtkWindow* create_fixedsize_modal_window(GtkWindow* parent, const char* title, int width, int height); GtkWindow* create_dialog_window(GtkWindow* parent, const char* title, GCallback func, gpointer data, int default_w = -1, int default_h = -1); GtkTable* create_dialog_table(unsigned int rows, unsigned int columns, unsigned int row_spacing, unsigned int col_spacing, int border = 0); GtkButton* create_dialog_button(const char* label, GCallback func, gpointer data); GtkVBox* create_dialog_vbox(int spacing, int border = 0); GtkHBox* create_dialog_hbox(int spacing, int border = 0); GtkFrame* create_dialog_frame(const char* label, GtkShadowType shadow = GTK_SHADOW_ETCHED_IN); GtkButton* create_modal_dialog_button(const char* label, ModalDialogButton& button); GtkWindow* create_modal_dialog_window(GtkWindow* parent, const char* title, ModalDialog& dialog, int default_w = -1, int default_h = -1); GtkWindow* create_fixedsize_modal_dialog_window(GtkWindow* parent, const char* title, ModalDialog& dialog, int width = -1, int height = -1); EMessageBoxReturn modal_dialog_show(GtkWindow* window, ModalDialog& dialog); gboolean dialog_button_ok(GtkWidget *widget, ModalDialog* data); gboolean dialog_button_cancel(GtkWidget *widget, ModalDialog* data); gboolean dialog_button_yes(GtkWidget *widget, ModalDialog* data); gboolean dialog_button_no(GtkWidget *widget, ModalDialog* data); gboolean dialog_delete_callback(GtkWidget *widget, GdkEventAny* event, ModalDialog* data); GtkWindow* create_simple_modal_dialog_window(const char* title, ModalDialog& dialog, GtkWidget* contents); class RadioHBox { public: GtkHBox* m_hbox; GtkRadioButton* m_radio; RadioHBox(GtkHBox* hbox, GtkRadioButton* radio) : m_hbox(hbox), m_radio(radio) { } }; RadioHBox RadioHBox_new(StringArrayRange names); class PathEntry { public: GtkFrame* m_frame; GtkEntry* m_entry; GtkButton* m_button; PathEntry(GtkFrame* frame, GtkEntry* entry, GtkButton* button) : m_frame(frame), m_entry(entry), m_button(button) { } }; PathEntry PathEntry_new(); class BrowsedPathEntry { public: typedef Callback1 SetPathCallback; typedef Callback1 BrowseCallback; PathEntry m_entry; BrowseCallback m_browse; BrowsedPathEntry(const BrowseCallback& browse); }; GtkLabel* DialogLabel_new(const char* name); GtkTable* DialogRow_new(const char* name, GtkWidget* widget); typedef struct _GtkVBox GtkVBox; void DialogVBox_packRow(GtkVBox* vbox, GtkWidget* row); #endif