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)>K_REALIZED) != 0)
337 #define GTK_WIDGET_SENSITIVE(wid) ((GTK_WIDGET_FLAGS(wid)>K_SENSITIVE) != 0)
338 #define GTK_WIDGET_CAN_FOCUS(wid) ((GTK_WIDGET_FLAGS(wid)>K_CAN_FOCUS) != 0)
339 #define GTK_WIDGET_HAS_FOCUS(wid) ((GTK_WIDGET_FLAGS(wid)>K_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__ */