debug.c needs dylib.h.
[SquirrelJME.git] / nanocoat / include / lib / scritchui / gtk2 / gtk2.h
blob7f46fd99dd780474481f14318ffee8c27790ae9d
1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
10 /**
11 * GTK2 ScritchUI Header.
13 * @since 2024/04/02
16 #ifndef SQUIRRELJME_GTK2_H
17 #define SQUIRRELJME_GTK2_H
19 #include <gtk/gtk.h>
20 #include <gdk/gdk.h>
22 #include "lib/scritchui/scritchui.h"
23 #include "lib/scritchui/scritchuiImpl.h"
24 #include "lib/scritchui/scritchuiPencil.h"
25 #include "sjme/config.h"
26 #include "sjme/debug.h"
28 /* Anti-C++. */
29 #ifdef __cplusplus
30 #ifndef SJME_CXX_IS_EXTERNED
31 #define SJME_CXX_IS_EXTERNED
32 #define SJME_CXX_SQUIRRELJME_GTK2_H
33 extern "C" {
34 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
35 #endif /* #ifdef __cplusplus */
37 /*--------------------------------------------------------------------------*/
39 /** Maps a @c sjme_jboolean to @c gboolean . */
40 #define SJME_JBOOLEAN_TO_GBOOLEAN(b) \
41 ((b) == SJME_JNI_FALSE ? FALSE : TRUE)
43 /** Maps a @c gboolean to @c sjme_jboolean . */
44 #define GBOOLEAN_TO_SJME_JBOOLEAN(b) \
45 ((b) == FALSE ? SJME_JNI_FALSE : SJME_JNI_TRUE)
47 /** Standard widget handle. */
48 #define SJME_SUI_GTK2_H_WIDGET 0
50 /** Top most widget, to be added to container. */
51 #define SJME_SUI_GTK2_H_TOP_WIDGET 1
53 /** The table box for a window. */
54 #define SJME_SUI_GTK2_H_WINTABLE 1
56 /** Storage for the current menu bar in a window. */
57 #define SJME_SUI_GTK2_H_WINBAR 2
59 /** The global state accelerator group. */
60 #define SJME_SUI_GTK2_H_ACCELG 3
62 /** The accelerator key. */
63 #define SJME_SUI_GTK2_V_ACCELKEY 2
65 /** The accelerator modifier. */
66 #define SJME_SUI_GTK2_V_ACCELMOD 3
68 /** Pencil functions for GTK2. */
69 extern const sjme_scritchui_pencilImplFunctions
70 sjme_scritchui_gtk2_pencilFunctions;
72 sjme_errorCode sjme_scritchui_gtk2_apiInit(
73 sjme_attrInNotNull sjme_scritchui inState);
75 sjme_errorCode sjme_scritchui_gtk2_componentFocusGrab(
76 sjme_attrInNotNull sjme_scritchui inState,
77 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent);
79 sjme_errorCode sjme_scritchui_gtk2_componentFocusHas(
80 sjme_attrInNotNull sjme_scritchui inState,
81 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
82 sjme_attrOutNotNull sjme_jboolean* outHasFocus);
84 sjme_errorCode sjme_scritchui_gtk2_componentRepaint(
85 sjme_attrInNotNull sjme_scritchui inState,
86 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
87 sjme_attrInPositive sjme_jint x,
88 sjme_attrInPositive sjme_jint y,
89 sjme_attrInPositiveNonZero sjme_jint width,
90 sjme_attrInPositiveNonZero sjme_jint height);
92 sjme_errorCode sjme_scritchui_gtk2_componentRevalidate(
93 sjme_attrInNotNull sjme_scritchui inState,
94 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent);
96 sjme_errorCode sjme_scritchui_gtk2_componentSetInputListener(
97 sjme_attrInNotNull sjme_scritchui inState,
98 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
99 SJME_SCRITCHUI_SET_LISTENER_ARGS(input));
101 sjme_errorCode sjme_scritchui_gtk2_componentSetPaintListener(
102 sjme_attrInNotNull sjme_scritchui inState,
103 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
104 SJME_SCRITCHUI_SET_LISTENER_ARGS(paint));
106 sjme_errorCode sjme_scritchui_gtk2_componentSetSizeListener(
107 sjme_attrInNotNull sjme_scritchui inState,
108 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
109 SJME_SCRITCHUI_SET_LISTENER_ARGS(size));
111 sjme_errorCode sjme_scritchui_gtk2_componentSize(
112 sjme_attrInNotNull sjme_scritchui inState,
113 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
114 sjme_attrOutNullable sjme_jint* outWidth,
115 sjme_attrOutNullable sjme_jint* outHeight);
117 sjme_errorCode sjme_scritchui_gtk2_containerAdd(
118 sjme_attrInNotNull sjme_scritchui inState,
119 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer,
120 sjme_attrInNotNull sjme_scritchui_uiContainer inContainerData,
121 sjme_attrInNotNull sjme_scritchui_uiComponent addComponent);
123 sjme_errorCode sjme_scritchui_gtk2_containerRemove(
124 sjme_attrInNotNull sjme_scritchui inState,
125 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer,
126 sjme_attrInNotNull sjme_scritchui_uiContainer inContainerData,
127 sjme_attrInNotNull sjme_scritchui_uiComponent removeComponent);
129 sjme_errorCode sjme_scritchui_gtk2_containerSetBounds(
130 sjme_attrInNotNull sjme_scritchui inState,
131 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer,
132 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
133 sjme_attrInPositive sjme_jint x,
134 sjme_attrInPositive sjme_jint y,
135 sjme_attrInPositiveNonZero sjme_jint width,
136 sjme_attrInPositiveNonZero sjme_jint height);
138 sjme_errorCode sjme_scritchui_gtk2_labelSetString(
139 sjme_attrInNotNull sjme_scritchui inState,
140 sjme_attrInNotNull sjme_scritchui_uiCommon inCommon,
141 sjme_attrInNullable sjme_lpcstr inString);
143 sjme_errorCode sjme_scritchui_gtk2_lafElementColor(
144 sjme_attrInNotNull sjme_scritchui inState,
145 sjme_attrInNullable sjme_scritchui_uiComponent inContext,
146 sjme_attrOutNotNull sjme_jint* outRGB,
147 sjme_attrInValue sjme_scritchui_lafElementColorType elementColor);
149 sjme_errorCode sjme_scritchui_gtk2_loopExecuteLater(
150 sjme_attrInNotNull sjme_scritchui inState,
151 sjme_attrInNotNull sjme_thread_mainFunc callback,
152 sjme_attrInNullable sjme_thread_parameter anything);
154 sjme_errorCode sjme_scritchui_gtk2_menuBarNew(
155 sjme_attrInNotNull sjme_scritchui inState,
156 sjme_attrInNotNull sjme_scritchui_uiMenuBar inMenuBar,
157 sjme_attrInNullable sjme_pointer ignored);
159 sjme_errorCode sjme_scritchui_gtk2_menuInsert(
160 sjme_attrInNotNull sjme_scritchui inState,
161 sjme_attrInNotNull sjme_scritchui_uiMenuKind intoMenu,
162 sjme_attrInPositive sjme_jint atIndex,
163 sjme_attrInNotNull sjme_scritchui_uiMenuKind childItem);
165 sjme_errorCode sjme_scritchui_gtk2_menuItemNew(
166 sjme_attrInNotNull sjme_scritchui inState,
167 sjme_attrInNotNull sjme_scritchui_uiMenuItem inMenuItem,
168 sjme_attrInNotNull const sjme_scritchui_impl_initParamMenuItem* init);
170 sjme_errorCode sjme_scritchui_gtk2_menuNew(
171 sjme_attrInNotNull sjme_scritchui inState,
172 sjme_attrInNotNull sjme_scritchui_uiMenu inMenu,
173 sjme_attrInNullable sjme_pointer ignored);
175 sjme_errorCode sjme_scritchui_gtk2_menuRemove(
176 sjme_attrInNotNull sjme_scritchui inState,
177 sjme_attrInNotNull sjme_scritchui_uiMenuKind fromMenu,
178 sjme_attrInPositive sjme_jint atIndex);
180 sjme_errorCode sjme_scritchui_gtk2_panelEnableFocus(
181 sjme_attrInNotNull sjme_scritchui inState,
182 sjme_attrInNotNull sjme_scritchui_uiPanel inPanel,
183 sjme_attrInValue sjme_jboolean enableFocus,
184 sjme_attrInValue sjme_jboolean defaultFocus);
186 sjme_errorCode sjme_scritchui_gtk2_panelNew(
187 sjme_attrInNotNull sjme_scritchui inState,
188 sjme_attrInNotNull sjme_scritchui_uiPanel inPanel,
189 sjme_attrInNullable sjme_pointer ignored);
191 sjme_errorCode sjme_scritchui_gtk2_screens(
192 sjme_attrInNotNull sjme_scritchui inState,
193 sjme_attrOutNotNull sjme_scritchui_uiScreen* outScreens,
194 sjme_attrInOutNotNull sjme_jint* inOutNumScreens);
196 sjme_errorCode sjme_scritchui_gtk2_scrollPanelNew(
197 sjme_attrInNotNull sjme_scritchui inState,
198 sjme_attrInNotNull sjme_scritchui_uiScrollPanel inScrollPanel,
199 sjme_attrInNullable sjme_pointer ignored);
201 sjme_errorCode sjme_scritchui_gtk2_viewGetView(
202 sjme_attrInNotNull sjme_scritchui inState,
203 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
204 sjme_attrOutNotNull sjme_scritchui_rect* outViewRect);
206 sjme_errorCode sjme_scritchui_gtk2_viewSetArea(
207 sjme_attrInNotNull sjme_scritchui inState,
208 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
209 sjme_attrInNotNull const sjme_scritchui_dim* inViewArea,
210 sjme_attrInNotNull const sjme_scritchui_dim* inViewPage);
212 sjme_errorCode sjme_scritchui_gtk2_viewSetView(
213 sjme_attrInNotNull sjme_scritchui inState,
214 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
215 sjme_attrInNotNull const sjme_scritchui_point* inViewPos);
217 sjme_errorCode sjme_scritchui_gtk2_viewSetViewListener(
218 sjme_attrInNotNull sjme_scritchui inState,
219 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
220 SJME_SCRITCHUI_SET_LISTENER_ARGS(view));
222 sjme_errorCode sjme_scritchui_gtk2_windowContentMinimumSize(
223 sjme_attrInNotNull sjme_scritchui inState,
224 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
225 sjme_attrInPositiveNonZero sjme_jint width,
226 sjme_attrInPositiveNonZero sjme_jint height);
228 sjme_errorCode sjme_scritchui_gtk2_windowNew(
229 sjme_attrInNotNull sjme_scritchui inState,
230 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
231 sjme_attrInNullable sjme_pointer ignored);
233 sjme_errorCode sjme_scritchui_gtk2_windowSetCloseListenerFunc(
234 sjme_attrInNotNull sjme_scritchui inState,
235 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
236 SJME_SCRITCHUI_SET_LISTENER_ARGS(close));
238 sjme_errorCode sjme_scritchui_gtk2_windowSetMenuBar(
239 sjme_attrInNotNull sjme_scritchui inState,
240 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
241 sjme_attrInNullable sjme_scritchui_uiMenuBar inMenuBar);
243 sjme_errorCode sjme_scritchui_gtk2_windowSetVisible(
244 sjme_attrInNotNull sjme_scritchui inState,
245 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
246 sjme_attrInValue sjme_jboolean isVisible);
248 /*--------------------------------------------------------------------------*/
250 /* Anti-C++. */
251 #ifdef __cplusplus
252 #ifdef SJME_CXX_SQUIRRELJME_GTK2_H
254 #undef SJME_CXX_SQUIRRELJME_GTK2_H
255 #undef SJME_CXX_IS_EXTERNED
256 #endif /* #ifdef SJME_CXX_SQUIRRELJME_GTK2_H */
257 #endif /* #ifdef __cplusplus */
259 #endif /* SQUIRRELJME_GTK2_H */