URI:
       tgtkport.h - vaccinewars - be a doctor and try to vaccinate the world
  HTML git clone git://src.adamsgaard.dk/vaccinewars
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tgtkport.h (24656B)
       ---
            1 /************************************************************************
            2  * gtkport.h      Portable "almost-GTK+" for Unix/Win32                 *
            3  * Copyright (C)  1998-2021  Ben Webb                                   *
            4  *                Email: benwebb@users.sf.net                           *
            5  *                WWW: https://dopewars.sourceforge.io/                 *
            6  *                                                                      *
            7  * This program is free software; you can redistribute it and/or        *
            8  * modify it under the terms of the GNU General Public License          *
            9  * as published by the Free Software Foundation; either version 2       *
           10  * of the License, or (at your option) any later version.               *
           11  *                                                                      *
           12  * This program is distributed in the hope that it will be useful,      *
           13  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
           14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
           15  * GNU General Public License for more details.                         *
           16  *                                                                      *
           17  * You should have received a copy of the GNU General Public License    *
           18  * along with this program; if not, write to the Free Software          *
           19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
           20  *                   MA  02111-1307, USA.                               *
           21  ************************************************************************/
           22 
           23 #ifndef __GTKPORT_H__
           24 #define __GTKPORT_H__
           25 
           26 #ifdef HAVE_CONFIG_H
           27 #include <config.h>
           28 #endif
           29 
           30 #include "itemfactory.h"
           31 
           32 #ifdef CYGWIN
           33 
           34 /* GTK+ emulation prototypes etc. for Win32 platform */
           35 
           36 /* Provide prototypes compatible with GTK+3 */
           37 #define GTK_MAJOR_VERSION 3
           38 
           39 #include <winsock2.h>
           40 #include <windows.h>
           41 #include <glib.h>
           42 #include <stdarg.h>
           43 
           44 #include "gtkenums.h"
           45 #include "gtktypes.h"
           46 
           47 #include "treeview.h"
           48 
           49 struct _GtkMisc {
           50   GtkWidget widget;
           51 };
           52 
           53 struct _GtkProgressBar {
           54   GtkWidget widget;
           55   GtkProgressBarOrientation orient;
           56   gfloat position;
           57 };
           58 
           59 struct _GtkSeparator {
           60   GtkWidget widget;
           61 };
           62 
           63 struct _GtkHSeparator {
           64   GtkSeparator separator;
           65 };
           66 
           67 struct _GtkVSeparator {
           68   GtkSeparator separator;
           69 };
           70 
           71 struct _GtkMenuItem {
           72   GtkWidget widget;
           73   GtkMenu *submenu;
           74   gint ID;
           75   gint accelind;
           76   gchar *text;
           77   gint check:1;
           78   gint active:1;
           79 };
           80 
           81 struct _GtkMenuShell {
           82   GtkWidget widget;
           83   HMENU menu;
           84   GSList *children;
           85 };
           86 
           87 struct _GtkMenu {
           88   GtkMenuShell menushell;
           89   guint active;
           90 };
           91 
           92 struct _GtkMenuBar {
           93   GtkMenuShell menushell;
           94   gint LastID;
           95 };
           96 
           97 typedef struct _GtkEditable GtkEditable;
           98 typedef struct _GtkEntry GtkEntry;
           99 typedef struct _GtkText GtkText;
          100 typedef struct _GtkTextBuffer GtkTextBuffer;
          101 typedef struct _GtkSpinButton GtkSpinButton;
          102 
          103 struct _GtkEditable {
          104   GtkWidget widget;
          105   GString *text;
          106   gint is_editable:1;
          107 };
          108 
          109 struct _GtkEntry {
          110   GtkEditable editable;
          111   gint is_visible:1;
          112 };
          113 
          114 struct _GtkSpinButton {
          115   GtkEntry entry;
          116   GtkAdjustment *adj;
          117   HWND updown;
          118 };
          119 
          120 struct _GtkTextBuffer {
          121   GData *tags;
          122 };
          123 
          124 struct _GtkText {
          125   GtkEditable editable;
          126   gint word_wrap:1;
          127   GtkTextBuffer *buffer;
          128 };
          129 
          130 typedef struct _GtkLabel GtkLabel;
          131 
          132 struct _GtkLabel {
          133   GtkWidget widget;
          134   gchar *text;
          135 };
          136 
          137 typedef struct _GtkUrl GtkUrl;
          138 
          139 struct _GtkUrl {
          140   GtkLabel label;
          141   gchar *target;
          142 };
          143 
          144 struct _GtkPanedChild {
          145   GtkWidget *widget;
          146   gint resize:1;
          147   gint shrink:1;
          148 };
          149 
          150 struct _GtkPaned {
          151   GtkContainer container;
          152   GtkPanedChild children[2];
          153   GtkAllocation true_alloc;
          154   gint handle_size, gutter_size;
          155   gint handle_pos;
          156   gint Tracking:1;
          157 };
          158 
          159 struct _GtkVPaned {
          160   GtkPaned paned;
          161 };
          162 
          163 struct _GtkHPaned {
          164   GtkPaned paned;
          165 };
          166 
          167 typedef struct _GtkBox GtkBox;
          168 typedef struct _GtkBoxChild GtkBoxChild;
          169 typedef struct _GtkHBox GtkHBox;
          170 typedef struct _GtkVBox GtkVBox;
          171 typedef struct _GtkNotebookChild GtkNotebookChild;
          172 typedef struct _GtkNotebook GtkNotebook;
          173 
          174 struct _GtkBoxChild {
          175   GtkWidget *widget;
          176   guint expand:1;
          177   guint fill:1;
          178 };
          179 
          180 struct _GtkBox {
          181   GtkContainer container;
          182   GList *children;
          183   guint16 spacing;
          184   gint maxreq;
          185   guint homogeneous:1;
          186 };
          187 
          188 struct _GtkHBox {
          189   GtkBox box;
          190 };
          191 
          192 struct _GtkVBox {
          193   GtkBox box;
          194 };
          195 
          196 struct _GtkNotebookChild {
          197   GtkWidget *child, *tab_label;
          198   HWND tabpage;
          199 };
          200 
          201 struct _GtkNotebook {
          202   GtkContainer container;
          203   GSList *children;
          204   gint selection;
          205 };
          206 
          207 typedef struct _GtkBin GtkBin;
          208 
          209 struct _GtkBin {
          210   GtkContainer container;
          211   GtkWidget *child;
          212 };
          213 
          214 typedef struct _GtkFrame GtkFrame;
          215 typedef struct _GtkButton GtkButton;
          216 typedef struct _GtkToggleButton GtkToggleButton;
          217 typedef struct _GtkCheckButton GtkCheckButton;
          218 typedef struct _GtkRadioButton GtkRadioButton;
          219 
          220 struct _GtkFrame {
          221   GtkBin bin;
          222   gchar *text;
          223   GtkRequisition label_req;
          224 };
          225 
          226 struct _GtkButton {
          227   GtkWidget widget;
          228   gchar *text;
          229 };
          230 
          231 struct _GtkComboBox {
          232   GtkWidget widget;
          233   GtkTreeModel *model;
          234   gint model_column;
          235   gint active;
          236 };
          237 
          238 struct _GtkToggleButton {
          239   GtkButton button;
          240   gboolean toggled;
          241 };
          242 
          243 struct _GtkCheckButton {
          244   GtkToggleButton toggle;
          245 };
          246 
          247 struct _GtkRadioButton {
          248   GtkCheckButton check;
          249   GSList *group;
          250 };
          251 
          252 typedef struct _GtkWindow GtkWindow;
          253 
          254 struct _GtkWindow {
          255   GtkBin bin;
          256   GtkWindowType type;
          257   gchar *title;
          258   gint default_width, default_height;
          259   GtkMenuBar *menu_bar;
          260   GtkAccelGroup *accel_group;
          261   GtkWidget *focus;
          262   HACCEL hAccel;
          263   guint modal:1;
          264   guint allow_shrink:1;
          265   guint allow_grow:1;
          266   guint auto_shrink:1;
          267 };
          268 
          269 typedef struct _GtkTable GtkTable;
          270 typedef struct _GtkTableChild GtkTableChild;
          271 typedef struct _GtkTableRowCol GtkTableRowCol;
          272 
          273 struct _GtkTable {
          274   GtkContainer container;
          275   GList *children;
          276   GtkTableRowCol *rows, *cols;
          277   guint16 nrows, ncols;
          278   guint16 column_spacing, row_spacing;
          279   guint homogeneous:1;
          280 };
          281 
          282 struct _GtkTableChild {
          283   GtkWidget *widget;
          284   guint16 left_attach, right_attach, top_attach, bottom_attach;
          285   GtkAttachOptions xoptions, yoptions;
          286 };
          287 
          288 struct _GtkTableRowCol {
          289   guint16 requisition;
          290   guint16 allocation;
          291   gint16 spacing;
          292 };
          293 
          294 extern GtkClass GtkContainerClass;
          295 extern GtkClass GtkObjectClass;
          296 extern HFONT defFont;
          297 extern HINSTANCE hInst;
          298 
          299 #define G_OBJECT(obj) ((GObject *)(obj))
          300 #define GTK_CONTAINER(obj) ((GtkContainer *)(obj))
          301 #define GTK_PANED(obj) ((GtkPaned *)(obj))
          302 #define GTK_VPANED(obj) ((GtkVPaned *)(obj))
          303 #define GTK_HPANED(obj) ((GtkHPaned *)(obj))
          304 #define GTK_BIN(obj) ((GtkBin *)(obj))
          305 #define GTK_FRAME(obj) ((GtkFrame *)(obj))
          306 #define GTK_BOX(obj) ((GtkBox *)(obj))
          307 #define GTK_HBOX(obj) ((GtkHBox *)(obj))
          308 #define GTK_VBOX(obj) ((GtkVBox *)(obj))
          309 #define GTK_NOTEBOOK(obj) ((GtkNotebook *)(obj))
          310 #define GTK_WIDGET(obj) ((GtkWidget *)(obj))
          311 #define GTK_EDITABLE(obj) ((GtkEditable *)(obj))
          312 #define GTK_ENTRY(obj) ((GtkEntry *)(obj))
          313 #define GTK_SPIN_BUTTON(obj) ((GtkSpinButton *)(obj))
          314 #define GTK_TEXT(obj) ((GtkText *)(obj))
          315 #define GTK_WINDOW(obj) ((GtkWindow *)(obj))
          316 #define GTK_BUTTON(obj) ((GtkButton *)(obj))
          317 #define GTK_COMBO_BOX(obj) ((GtkComboBox *)(obj))
          318 #define GTK_CELL_LAYOUT(obj) ((GtkCellLayout *)(obj))
          319 #define GTK_TOGGLE_BUTTON(obj) ((GtkToggleButton *)(obj))
          320 #define GTK_RADIO_BUTTON(obj) ((GtkRadioButton *)(obj))
          321 #define GTK_CHECK_BUTTON(obj) ((GtkCheckButton *)(obj))
          322 #define GTK_LABEL(obj) ((GtkLabel *)(obj))
          323 #define GTK_URL(obj) ((GtkUrl *)(obj))
          324 #define GTK_TABLE(obj) ((GtkTable *)(obj))
          325 #define GTK_MENU_SHELL(obj) ((GtkMenuShell *)(obj))
          326 #define GTK_MENU_BAR(obj) ((GtkMenuBar *)(obj))
          327 #define GTK_MENU_ITEM(obj) ((GtkMenuItem *)(obj))
          328 #define GTK_CHECK_MENU_ITEM(obj) ((GtkMenuItem *)(obj))
          329 #define GTK_MENU(obj) ((GtkMenu *)(obj))
          330 #define GTK_MISC(obj) ((GtkMisc *)(obj))
          331 #define GTK_PROGRESS_BAR(obj) ((GtkProgressBar *)(obj))
          332 #define G_CALLBACK(f) ((GCallback) (f))
          333 
          334 #define GTK_OBJECT_FLAGS(obj) (G_OBJECT(obj)->flags)
          335 #define GTK_WIDGET_FLAGS(wid) (GTK_OBJECT_FLAGS(wid))
          336 #define GTK_WIDGET_REALIZED(wid) ((GTK_WIDGET_FLAGS(wid)&GTK_REALIZED) != 0)
          337 #define GTK_WIDGET_SENSITIVE(wid) ((GTK_WIDGET_FLAGS(wid)&GTK_SENSITIVE) != 0)
          338 #define GTK_WIDGET_CAN_FOCUS(wid) ((GTK_WIDGET_FLAGS(wid)&GTK_CAN_FOCUS) != 0)
          339 #define GTK_WIDGET_HAS_FOCUS(wid) ((GTK_WIDGET_FLAGS(wid)&GTK_HAS_FOCUS) != 0)
          340 #define GTK_WIDGET_SET_FLAGS(wid,flag) (GTK_WIDGET_FLAGS(wid) |= (flag))
          341 #define GTK_WIDGET_UNSET_FLAGS(wid,flag) (GTK_WIDGET_FLAGS(wid) &= ~(flag))
          342 
          343 void gtk_widget_set_can_default(GtkWidget *wid, gboolean flag);
          344 
          345 typedef int GdkEvent;
          346 
          347 gboolean gtk_widget_get_visible(GtkWidget *widget);
          348 void gtk_widget_show(GtkWidget *widget);
          349 void gtk_widget_show_all(GtkWidget *widget);
          350 void gtk_widget_hide_all(GtkWidget *widget);
          351 void gtk_widget_hide(GtkWidget *widget);
          352 void gtk_widget_destroy(GtkWidget *widget);
          353 void gtk_widget_realize(GtkWidget *widget);
          354 void gtk_widget_set_sensitive(GtkWidget *widget, gboolean sensitive);
          355 void gtk_widget_size_request(GtkWidget *widget,
          356                              GtkRequisition *requisition);
          357 void gtk_widget_set_size(GtkWidget *widget, GtkAllocation *allocation);
          358 GtkWidget *gtk_widget_get_ancestor(GtkWidget *widget, GtkType type);
          359 GtkWidget *gtk_window_new(GtkWindowType type);
          360 void gtk_window_set_title(GtkWindow *window, const gchar *title);
          361 void gtk_window_set_default_size(GtkWindow *window, gint width,
          362                                  gint height);
          363 void gtk_window_set_transient_for(GtkWindow *window, GtkWindow *parent);
          364 void gtk_window_set_policy(GtkWindow *window, gint allow_shrink,
          365                            gint allow_grow, gint auto_shrink);
          366 void gtk_container_add(GtkContainer *container, GtkWidget *widget);
          367 void gtk_container_set_border_width(GtkContainer *container,
          368                                     guint border_width);
          369 GtkWidget *gtk_button_new_with_label(const gchar *label);
          370 GtkWidget *gtk_button_new_with_mnemonic(const gchar *label);
          371 GtkWidget *gtk_label_new(const gchar *text);
          372 GtkWidget *gtk_box_new(GtkOrientation orientation, gint spacing);
          373 void gtk_box_set_homogeneous(GtkBox *box, gboolean homogeneous);
          374 GtkWidget *gtk_check_button_new_with_label(const gchar *label);
          375 GtkWidget *gtk_radio_button_new_with_label(GSList *group,
          376                                            const gchar *label);
          377 GtkWidget *gtk_radio_button_new_with_label_from_widget(GtkRadioButton *group,
          378                                                        const gchar *label);
          379 GtkWidget *gtk_frame_new(const gchar *text);
          380 void gtk_frame_set_shadow_type(GtkFrame *frame, GtkShadowType type);
          381 GtkWidget *gtk_text_new(GtkAdjustment *hadj, GtkAdjustment *vadj);
          382 GtkWidget *gtk_entry_new();
          383 void gtk_entry_set_visibility(GtkEntry *entry, gboolean visible);
          384 
          385 /* GtkTable implementation */
          386 GtkWidget *gtk_table_new(guint rows, guint cols, gboolean homogeneous);
          387 void gtk_table_resize(GtkTable *table, guint rows, guint cols);
          388 void gtk_table_attach(GtkTable *table, GtkWidget *widget,
          389                       guint left_attach, guint right_attach,
          390                       guint top_attach, guint bottom_attach,
          391                       GtkAttachOptions xoptions, GtkAttachOptions yoptions,
          392                       guint xpadding, guint ypadding);
          393 void gtk_table_attach_defaults(GtkTable *table, GtkWidget *widget,
          394                                guint left_attach, guint right_attach,
          395                                guint top_attach, guint bottom_attach);
          396 void gtk_table_set_row_spacing(GtkTable *table, guint row, guint spacing);
          397 void gtk_table_set_col_spacing(GtkTable *table, guint column,
          398                                guint spacing);
          399 void gtk_table_set_row_spacings(GtkTable *table, guint spacing);
          400 void gtk_table_set_col_spacings(GtkTable *table, guint spacing);
          401 
          402 GSList *gtk_radio_button_get_group(GtkRadioButton *radio_button);
          403 void gtk_editable_insert_text(GtkEditable *editable, const gchar *new_text,
          404                               gint new_text_length, gint *position);
          405 void gtk_editable_delete_text(GtkEditable *editable,
          406                               gint start_pos, gint end_pos);
          407 gchar *gtk_editable_get_chars(GtkEditable *editable,
          408                               gint start_pos, gint end_pos);
          409 void gtk_editable_set_editable(GtkEditable *editable,
          410                                gboolean is_editable);
          411 void gtk_editable_set_position(GtkEditable *editable, gint position);
          412 gint gtk_editable_get_position(GtkEditable *editable);
          413 guint gtk_text_get_length(GtkText *text);
          414 void gtk_text_set_editable(GtkText *text, gboolean is_editable);
          415 void gtk_text_set_word_wrap(GtkText *text, gboolean word_wrap);
          416 void gtk_text_freeze(GtkText *text);
          417 void gtk_text_thaw(GtkText *text);
          418 GtkTextBuffer *gtk_text_view_get_buffer(GtkText *text);
          419 void gtk_text_buffer_create_tag(GtkTextBuffer *buffer, const gchar *name, ...);
          420 void gtk_box_pack_start(GtkBox *box, GtkWidget *child, gboolean Expand,
          421                         gboolean Fill, gint Padding);
          422 void gtk_toggle_button_toggled(GtkToggleButton *toggle_button);
          423 gboolean gtk_toggle_button_get_active(GtkToggleButton *toggle_button);
          424 void gtk_toggle_button_set_active(GtkToggleButton *toggle_button,
          425                                   gboolean is_active);
          426 void gtk_main_quit();
          427 void gtk_main();
          428 guint g_signal_connect(GObject *object, const gchar *name,
          429                        GCallback func, gpointer func_data);
          430 guint g_signal_connect_swapped(GObject *object, const gchar *name,
          431                                GCallback func,
          432                                GObject *slot_object);
          433 void gtk_signal_emit(GObject *object, const gchar *name, ...);
          434 void SetCustomWndProc(WNDPROC wndproc);
          435 void win32_init(HINSTANCE hInstance, HINSTANCE hPrevInstance,
          436                 char *MainIcon);
          437 void gtk_menu_shell_insert(GtkMenuShell *menu_shell, GtkWidget *child,
          438                            gint position);
          439 void gtk_menu_shell_append(GtkMenuShell *menu_shell, GtkWidget *child);
          440 void gtk_menu_shell_prepend(GtkMenuShell *menu_shell, GtkWidget *child);
          441 GtkWidget *gtk_menu_bar_new();
          442 void gtk_menu_bar_insert(GtkMenuBar *menu_bar, GtkWidget *child,
          443                          gint position);
          444 void gtk_menu_bar_append(GtkMenuBar *menu_bar, GtkWidget *child);
          445 void gtk_menu_bar_prepend(GtkMenuBar *menu_bar, GtkWidget *child);
          446 GtkWidget *gtk_menu_new();
          447 void gtk_menu_insert(GtkMenu *menu, GtkWidget *child, gint position);
          448 void gtk_menu_append(GtkMenu *menu, GtkWidget *child);
          449 void gtk_menu_prepend(GtkMenu *menu, GtkWidget *child);
          450 GtkWidget *gtk_menu_item_new_with_label(const gchar *label);
          451 #define gtk_menu_item_new_with_mnemonic gtk_menu_item_new_with_label
          452 #define gtk_check_menu_item_new_with_mnemonic gtk_menu_item_new_with_label
          453 GtkMenu *gtk_menu_item_get_submenu(GtkMenuItem *menu_item);
          454 void gtk_menu_item_set_submenu(GtkMenuItem *menu_item, GtkWidget *submenu);
          455 void gtk_check_menu_item_set_active(GtkMenuItem *menu_item, gboolean active);
          456 gboolean gtk_check_menu_item_get_active(GtkMenuItem *menu_item);
          457 void gtk_menu_set_active(GtkMenu *menu, guint index);
          458 GtkWidget *gtk_notebook_new();
          459 void gtk_notebook_append_page(GtkNotebook *notebook, GtkWidget *child,
          460                               GtkWidget *tab_label);
          461 void gtk_notebook_insert_page(GtkNotebook *notebook, GtkWidget *child,
          462                               GtkWidget *tab_label, gint position);
          463 void gtk_notebook_set_current_page(GtkNotebook *notebook, gint page_num);
          464 gint gtk_notebook_get_current_page(GtkNotebook *notebook);
          465 GObject *gtk_adjustment_new(gfloat value, gfloat lower, gfloat upper,
          466                             gfloat step_increment, gfloat page_increment,
          467                             gfloat page_size);
          468 GtkWidget *gtk_spin_button_new(GtkAdjustment *adjustment,
          469                                gfloat climb_rate, guint digits);
          470 
          471 guint dp_g_io_add_watch(GIOChannel *channel, GIOCondition condition,
          472                         GIOFunc func, gpointer user_data);
          473 guint dp_g_timeout_add(guint interval, GSourceFunc function, gpointer data);
          474 gboolean dp_g_source_remove(guint tag);
          475 
          476 GtkWidget *gtk_separator_new(GtkOrientation orientation);
          477 void g_object_set_data(GObject *object, const gchar *key,
          478                        gpointer data);
          479 gpointer g_object_get_data(GObject *object, const gchar *key);
          480 GtkAccelGroup *gtk_accel_group_new();
          481 void gtk_accel_group_destroy(GtkAccelGroup *accel_group);
          482 gint gtk_accel_group_add(GtkAccelGroup *accel_group,
          483                          ACCEL *newaccel);
          484 void gtk_widget_grab_default(GtkWidget *widget);
          485 void gtk_widget_grab_focus(GtkWidget *widget);
          486 void gtk_window_set_modal(GtkWindow *window, gboolean modal);
          487 void gtk_window_add_accel_group(GtkWindow *window,
          488                                 GtkAccelGroup *accel_group);
          489 void gtk_entry_set_text(GtkEntry *entry, const gchar *text);
          490 void gtk_widget_add_accelerator(GtkWidget *widget,
          491                                 const gchar *accel_signal,
          492                                 GtkAccelGroup *accel_group,
          493                                 guint accel_key, guint accel_mods,
          494                                 GtkAccelFlags accel_flags);
          495 void gtk_widget_remove_accelerator(GtkWidget *widget,
          496                                    GtkAccelGroup *accel_group,
          497                                    guint accel_key, guint accel_mods);
          498 extern const GtkType GTK_TYPE_WINDOW, GTK_TYPE_MENU_BAR;
          499 GtkWidget *gtk_paned_new(GtkOrientation orientation);
          500 void gtk_paned_add1(GtkPaned *paned, GtkWidget *child);
          501 void gtk_paned_add2(GtkPaned *paned, GtkWidget *child);
          502 void gtk_paned_pack1(GtkPaned *paned, GtkWidget *child, gboolean resize,
          503                      gboolean shrink);
          504 void gtk_paned_pack2(GtkPaned *paned, GtkWidget *child, gboolean resize,
          505                      gboolean shrink);
          506 void gtk_paned_set_position(GtkPaned *paned, gint position);
          507 
          508 #define gtk_container_border_width gtk_container_set_border_width
          509 GtkWidget *gtk_button_box_new(GtkOrientation orientation);
          510 void gtk_box_set_spacing(GtkBox *box, gint spacing);
          511 #define gtk_button_box_set_layout(box, layout) {}
          512 GtkWidget *gtk_combo_box_new_with_model(GtkTreeModel *model);
          513 void gtk_combo_box_set_model(GtkComboBox *combo_box, GtkTreeModel *model);
          514 void gtk_combo_box_set_active(GtkComboBox *combo_box, gint index);
          515 void gtk_cell_layout_set_attributes(GtkCellLayout *cell_layout,
          516                                     GtkCellRenderer *cell, ...);
          517 #define gtk_cell_layout_pack_start(layout, renderer, expand) {}
          518 GtkTreeModel *gtk_combo_box_get_model(GtkComboBox *combo_box);
          519 gboolean gtk_combo_box_get_active_iter(GtkComboBox *combo_box,
          520                                        GtkTreeIter *iter);
          521 void gtk_label_set_text(GtkLabel *label, const gchar *str);
          522 /* Not currently supported */
          523 #define gtk_label_set_text_with_mnemonic gtk_label_set_text
          524 #define gtk_label_set_mnemonic_widget(label, widget) {}
          525 const gchar *gtk_label_get_text(GtkLabel *label);
          526 void gtk_text_set_point(GtkText *text, guint index);
          527 void gtk_widget_set_size_request(GtkWidget *widget, gint width, gint height);
          528 gint gtk_spin_button_get_value_as_int(GtkSpinButton *spin_button);
          529 void gtk_spin_button_set_value(GtkSpinButton *spin_button, gfloat value);
          530 void gtk_spin_button_set_adjustment(GtkSpinButton *spin_button,
          531                                     GtkAdjustment *adjustment);
          532 void gtk_spin_button_update(GtkSpinButton *spin_button);
          533 void gtk_misc_set_alignment(GtkMisc *misc, gfloat xalign, gfloat yalign);
          534 GtkWidget *gtk_progress_bar_new();
          535 void gtk_progress_bar_set_fraction(GtkProgressBar *pbar, gfloat percentage);
          536 guint gtk_main_level(void);
          537 GObject *GtkNewObject(GtkClass *klass);
          538 BOOL GetTextSize(HWND hWnd, char *text, LPSIZE lpSize, HFONT hFont);
          539 void gtk_container_realize(GtkWidget *widget);
          540 void gtk_set_default_font(HWND hWnd);
          541 HWND gtk_get_parent_hwnd(GtkWidget *widget);
          542 GtkStyle *gtk_style_new(void);
          543 void gtk_widget_set_style(GtkWidget *widget, GtkStyle *style);
          544 void gtk_window_set_type_hint(GtkWindow *window, GdkWindowTypeHint hint);
          545 void gtk_window_set_position(GtkWindow *window, GtkWindowPosition position);
          546 
          547 /* Functions for handling emitted signals */
          548 void gtk_marshal_BOOL__GPOIN(GObject *object, GSList *actions,
          549                              GCallback default_action,
          550                              va_list args);
          551 void gtk_marshal_BOOL__GINT(GObject *object, GSList *actions,
          552                             GCallback default_action,
          553                             va_list args);
          554 void gtk_marshal_VOID__VOID(GObject *object, GSList *actions,
          555                             GCallback default_action,
          556                             va_list args);
          557 void gtk_marshal_VOID__BOOL(GObject *object, GSList *actions,
          558                             GCallback default_action,
          559                             va_list args);
          560 void gtk_marshal_VOID__GPOIN(GObject *object, GSList *actions,
          561                              GCallback default_action,
          562                              va_list args);
          563 void gtk_marshal_VOID__GINT(GObject *object, GSList *actions,
          564                             GCallback default_action,
          565                             va_list args);
          566 void gtk_marshal_VOID__GINT_GINT_EVENT(GObject *object, GSList *actions,
          567                                        GCallback default_action,
          568                                        va_list args);
          569 
          570 /* Private functions */
          571 void gtk_container_set_size(GtkWidget *widget, GtkAllocation *allocation);
          572 void MapWidgetOrigin(GtkWidget *widget, POINT *pt);
          573 
          574 #else /* CYGWIN */
          575 
          576 /* Include standard GTK+ headers on Unix systems */
          577 
          578 /* We'd like to do this under GTK+2, but we can't until we get rid of
          579    clists, gtk_object, etc.
          580    #define GTK_DISABLE_DEPRECATED 1
          581  */
          582 #include <gtk/gtk.h>
          583 #include <gdk/gdkkeysyms.h>
          584 
          585 /* Provide compatibility functions for GTK+2 so we can use GTK+3 syntax */
          586 #if GTK_MAJOR_VERSION == 2
          587 GtkWidget *gtk_button_box_new(GtkOrientation orientation);
          588 GtkWidget *gtk_box_new(GtkOrientation orientation, gint spacing);
          589 GtkWidget *gtk_separator_new(GtkOrientation orientation);
          590 GtkWidget *gtk_paned_new(GtkOrientation orientation);
          591 #endif
          592 
          593 /* Defines for GtkMessageBox options */
          594 #define MB_OK     1
          595 #define MB_CANCEL 2
          596 #define MB_YES    4
          597 #define MB_NO     8
          598 #define MB_MAX    4
          599 #define MB_YESNO  (MB_YES|MB_NO)
          600 
          601 #define IDOK      GTK_RESPONSE_OK
          602 #define IDCANCEL  GTK_RESPONSE_CANCEL
          603 #define IDYES     GTK_RESPONSE_YES
          604 #define IDNO      GTK_RESPONSE_NO
          605 
          606 /* Other flags */
          607 #define MB_IMMRETURN 16
          608 
          609 typedef struct _GtkUrl GtkUrl;
          610 
          611 struct _GtkUrl {
          612   GtkLabel *label;
          613   gchar *target, *bin;
          614 };
          615 
          616 #endif /* CYGWIN */
          617 
          618 #if CYGWIN
          619 typedef enum
          620 {
          621   GTK_MESSAGE_INFO,
          622   GTK_MESSAGE_WARNING,
          623   GTK_MESSAGE_QUESTION,
          624   GTK_MESSAGE_ERROR
          625 } GtkMessageType;
          626 
          627 #define gtk_text_view_set_editable(text, edit) gtk_text_set_editable(text, edit)
          628 #define gtk_text_view_set_wrap_mode(text, wrap) gtk_text_set_word_wrap(text, wrap)
          629 #define GTK_WRAP_WORD TRUE
          630 #define GTK_TEXT_VIEW(wid) GTK_TEXT(wid)
          631 #define GtkTextView GtkText
          632 #endif
          633 
          634 /* Global functions */
          635 gint GtkMessageBox(GtkWidget *parent, const gchar *Text,
          636                    const gchar *Title, GtkMessageType type, gint Options);
          637 guint SetAccelerator(GtkWidget *labelparent, gchar *Text,
          638                      GtkWidget *sendto, gchar *signal,
          639                      GtkAccelGroup *accel_group, gboolean needalt);
          640 GtkWidget *gtk_scrolled_text_view_new(GtkWidget **pack_widg);
          641 void TextViewAppend(GtkTextView *textview, const gchar *text,
          642                     const gchar *tagname, gboolean scroll);
          643 void TextViewClear(GtkTextView *textview);
          644 GtkWidget *gtk_url_new(const gchar *text, const gchar *target,
          645                        const gchar *bin);
          646 gchar *GtkGetFile(const GtkWidget *parent, const gchar *oldname,
          647                   const gchar *title);
          648 void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target);
          649 GtkWidget *gtk_scrolled_tree_view_new(GtkWidget **pack_widg);
          650 
          651 /* GtkTable is used in GTK2 (and early GTK3) but GtkGrid is used in later
          652  * GTK3 and GTK4. Provide an interface similar to GtkGrid that internally
          653  * uses either GtkTable or GtkGrid. Use a dp_ prefix to avoid clashes with
          654  * the real GtkTable */
          655 #if CYGWIN || GTK_MAJOR_VERSION < 3 \
          656     || (GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 4)
          657 #define GTK_GRID GTK_TABLE
          658 typedef GtkTable GtkGrid;
          659 #define gtk_grid_set_row_spacing(grid, spacing) gtk_table_set_row_spacings(grid, spacing)
          660 #define gtk_grid_set_column_spacing(grid, spacing) gtk_table_set_col_spacings(grid, spacing)
          661 #define dp_gtk_grid_resize(grid, rows, cols) gtk_table_resize(grid, rows, cols)
          662 #else
          663 #define dp_gtk_grid_resize(grid, rows, cols) {}
          664 #endif
          665 
          666 GtkWidget *dp_gtk_grid_new(guint rows, guint columns, gboolean homogeneous);
          667 void dp_gtk_grid_attach(GtkGrid *grid, GtkWidget *child,
          668                         gint left, gint top,
          669                         gint width, gint height, gboolean expand);
          670 
          671 void set_label_alignment(GtkWidget *widget, gfloat xalign, gfloat yalign);
          672 
          673 /* Make a new GtkLabel, with the text possibly bold */
          674 GtkWidget *make_bold_label(const char *text, gboolean bold);
          675 
          676 #endif /* __GTKPORT_H__ */