bare-gtk 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +16 -2
- package/README.md +35 -1
- package/binding.c +350 -1
- package/index.d.ts +65 -0
- package/index.js +32 -0
- package/lib/adjustment.d.ts +21 -0
- package/lib/adjustment.h +112 -0
- package/lib/adjustment.js +24 -0
- package/lib/bridging.h +347 -0
- package/lib/clipboard.d.ts +22 -0
- package/lib/clipboard.h +176 -0
- package/lib/clipboard.js +18 -0
- package/lib/constants.d.ts +40 -0
- package/lib/constants.js +51 -0
- package/lib/css-provider.d.ts +13 -0
- package/lib/css-provider.h +56 -0
- package/lib/css-provider.js +14 -0
- package/lib/cursor.d.ts +35 -0
- package/lib/cursor.h +220 -0
- package/lib/cursor.js +45 -0
- package/lib/device.d.ts +13 -0
- package/lib/device.h +35 -0
- package/lib/device.js +8 -0
- package/lib/dialog.d.ts +41 -0
- package/lib/dialog.js +37 -0
- package/lib/display.d.ts +25 -0
- package/lib/display.h +86 -0
- package/lib/display.js +23 -0
- package/lib/editable.h +160 -0
- package/lib/entry.d.ts +93 -0
- package/lib/entry.h +340 -0
- package/lib/entry.js +118 -0
- package/lib/event-controller-focus.d.ts +17 -0
- package/lib/event-controller-focus.h +55 -0
- package/lib/event-controller-focus.js +13 -0
- package/lib/event-controller-motion.d.ts +18 -0
- package/lib/event-controller-motion.h +66 -0
- package/lib/event-controller-motion.js +14 -0
- package/lib/event-controller.d.ts +17 -0
- package/lib/event-controller.h +103 -0
- package/lib/event-controller.js +22 -0
- package/lib/events.js +23 -0
- package/lib/fixed.d.ts +10 -0
- package/lib/fixed.h +28 -0
- package/lib/fixed.js +8 -0
- package/lib/frame-fixed.d.ts +10 -0
- package/lib/frame-fixed.js +12 -0
- package/lib/frame-layout-child.d.ts +17 -0
- package/lib/frame-layout-child.js +16 -0
- package/lib/frame-layout.d.ts +27 -0
- package/lib/frame-layout.h +291 -0
- package/lib/frame-layout.js +19 -0
- package/lib/gesture-click.d.ts +19 -0
- package/lib/gesture-click.h +66 -0
- package/lib/gesture-click.js +14 -0
- package/lib/gesture-drag.d.ts +25 -0
- package/lib/gesture-drag.h +165 -0
- package/lib/gesture-drag.js +23 -0
- package/lib/gesture-single.d.ts +13 -0
- package/lib/gesture-single.js +12 -0
- package/lib/gesture.d.ts +13 -0
- package/lib/gesture.h +73 -0
- package/lib/gesture.js +8 -0
- package/lib/handle.d.ts +5 -0
- package/lib/handle.js +6 -0
- package/lib/label.d.ts +36 -0
- package/lib/label.h +269 -0
- package/lib/label.js +78 -0
- package/lib/layout-child.d.ts +13 -0
- package/lib/layout-child.h +35 -0
- package/lib/layout-child.js +10 -0
- package/lib/layout-manager.d.ts +15 -0
- package/lib/layout-manager.h +42 -0
- package/lib/layout-manager.js +15 -0
- package/lib/message-dialog.d.ts +26 -0
- package/lib/message-dialog.h +190 -0
- package/lib/message-dialog.js +22 -0
- package/lib/monitor.d.ts +32 -0
- package/lib/monitor.h +143 -0
- package/lib/monitor.js +40 -0
- package/lib/native.h +31 -0
- package/lib/object.d.ts +18 -0
- package/lib/object.js +38 -0
- package/lib/paintable.d.ts +10 -0
- package/lib/paintable.js +3 -0
- package/lib/picture.d.ts +22 -0
- package/lib/picture.h +127 -0
- package/lib/picture.js +35 -0
- package/lib/reachable.js +11 -0
- package/lib/runtime.c +21 -4
- package/lib/scrolled-window.d.ts +22 -0
- package/lib/scrolled-window.h +142 -0
- package/lib/scrolled-window.js +37 -0
- package/lib/settings.d.ts +25 -0
- package/lib/settings.h +163 -0
- package/lib/settings.js +34 -0
- package/lib/spinner.d.ts +12 -0
- package/lib/spinner.h +61 -0
- package/lib/spinner.js +22 -0
- package/lib/style-context.d.ts +15 -0
- package/lib/style-context.h +67 -0
- package/lib/style-context.js +9 -0
- package/lib/surface.d.ts +19 -0
- package/lib/surface.h +61 -0
- package/lib/surface.js +22 -0
- package/lib/switch.d.ts +19 -0
- package/lib/switch.h +114 -0
- package/lib/switch.js +30 -0
- package/lib/text-buffer.d.ts +31 -0
- package/lib/text-buffer.h +246 -0
- package/lib/text-buffer.js +33 -0
- package/lib/text-view.d.ts +39 -0
- package/lib/text-view.h +247 -0
- package/lib/text-view.js +63 -0
- package/lib/text.d.ts +18 -0
- package/lib/text.h +189 -0
- package/lib/text.js +31 -0
- package/lib/texture.d.ts +20 -0
- package/lib/texture.h +100 -0
- package/lib/texture.js +17 -0
- package/lib/viewport.d.ts +22 -0
- package/lib/viewport.h +151 -0
- package/lib/viewport.js +38 -0
- package/lib/widget.d.ts +102 -0
- package/lib/widget.h +695 -17
- package/lib/widget.js +176 -11
- package/lib/window.d.ts +31 -0
- package/lib/window.h +142 -61
- package/lib/window.js +32 -11
- package/lib/wrap.js +7 -0
- package/package.json +12 -3
- package/prebuilds/linux-arm64/bare +2 -2
- package/prebuilds/linux-arm64/bare-gtk.bare +0 -0
- package/prebuilds/linux-x64/bare +2 -2
- package/prebuilds/linux-x64/bare-gtk.bare +0 -0
package/lib/gesture.h
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#ifndef BARE_GTK_GESTURE_H
|
|
2
|
+
#define BARE_GTK_GESTURE_H
|
|
3
|
+
|
|
4
|
+
#include <assert.h>
|
|
5
|
+
#include <js.h>
|
|
6
|
+
|
|
7
|
+
#include <gtk/gtk.h>
|
|
8
|
+
|
|
9
|
+
#include "bridging.h"
|
|
10
|
+
|
|
11
|
+
static js_value_t *
|
|
12
|
+
bare_gtk_gesture_set_state(js_env_t *env, js_callback_info_t *info) {
|
|
13
|
+
int err;
|
|
14
|
+
|
|
15
|
+
size_t argc = 2;
|
|
16
|
+
js_value_t *argv[2];
|
|
17
|
+
|
|
18
|
+
bare_gtk_state_t *state;
|
|
19
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
20
|
+
assert(err == 0);
|
|
21
|
+
|
|
22
|
+
assert(argc == 2);
|
|
23
|
+
|
|
24
|
+
GtkGesture *gesture;
|
|
25
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "gesture", (gpointer *) &gesture);
|
|
26
|
+
if (err < 0) return NULL;
|
|
27
|
+
|
|
28
|
+
uint32_t sequence_state;
|
|
29
|
+
err = bare_gtk__read_uint32(env, argv[1], "state", &sequence_state);
|
|
30
|
+
if (err < 0) return NULL;
|
|
31
|
+
|
|
32
|
+
js_value_t *result;
|
|
33
|
+
err = js_get_boolean(env, gtk_gesture_set_state(gesture, sequence_state), &result);
|
|
34
|
+
assert(err == 0);
|
|
35
|
+
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static js_value_t *
|
|
40
|
+
bare_gtk_gesture_single_button(js_env_t *env, js_callback_info_t *info) {
|
|
41
|
+
int err;
|
|
42
|
+
|
|
43
|
+
size_t argc = 2;
|
|
44
|
+
js_value_t *argv[2];
|
|
45
|
+
|
|
46
|
+
bare_gtk_state_t *state;
|
|
47
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
48
|
+
assert(err == 0);
|
|
49
|
+
|
|
50
|
+
assert(argc == 1 || argc == 2);
|
|
51
|
+
|
|
52
|
+
GtkGestureSingle *gesture;
|
|
53
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "gesture", (gpointer *) &gesture);
|
|
54
|
+
if (err < 0) return NULL;
|
|
55
|
+
|
|
56
|
+
if (argc == 1) {
|
|
57
|
+
js_value_t *result;
|
|
58
|
+
err = js_create_uint32(env, gtk_gesture_single_get_button(gesture), &result);
|
|
59
|
+
assert(err == 0);
|
|
60
|
+
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
uint32_t button;
|
|
65
|
+
err = bare_gtk__read_uint32(env, argv[1], "button", &button);
|
|
66
|
+
if (err < 0) return NULL;
|
|
67
|
+
|
|
68
|
+
gtk_gesture_single_set_button(gesture, button);
|
|
69
|
+
|
|
70
|
+
return NULL;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#endif // BARE_GTK_GESTURE_H
|
package/lib/gesture.js
ADDED
package/lib/handle.d.ts
ADDED
package/lib/handle.js
ADDED
package/lib/label.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import GTKWidget = require('./widget')
|
|
2
|
+
|
|
3
|
+
/** A widget that shows text, as a `GtkLabel`. */
|
|
4
|
+
interface GTKLabel extends GTKWidget {
|
|
5
|
+
text: string
|
|
6
|
+
|
|
7
|
+
/** Show Pango markup, such as `'<b>bold</b>'`. */
|
|
8
|
+
setMarkup(markup: string): this
|
|
9
|
+
|
|
10
|
+
/** Whether long lines wrap. */
|
|
11
|
+
wrap: boolean
|
|
12
|
+
|
|
13
|
+
/** How lines wrap, as a `WRAP_*` constant. */
|
|
14
|
+
wrapMode: number
|
|
15
|
+
|
|
16
|
+
/** Where the text sits horizontally, from 0 (left) to 1 (right). */
|
|
17
|
+
xalign: number
|
|
18
|
+
|
|
19
|
+
/** Where the text sits vertically, from 0 (top) to 1 (bottom). */
|
|
20
|
+
yalign: number
|
|
21
|
+
|
|
22
|
+
/** How lines line up with each other, as a `JUSTIFY_*` constant. */
|
|
23
|
+
justify: number
|
|
24
|
+
|
|
25
|
+
/** The most lines to show when `ellipsize` is set. -1 means no limit. */
|
|
26
|
+
lines: number
|
|
27
|
+
|
|
28
|
+
/** Where text that does not fit is cut off with "...", as an `ELLIPSIZE_*` constant. */
|
|
29
|
+
ellipsize: number
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
declare class GTKLabel {
|
|
33
|
+
constructor()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export = GTKLabel
|
package/lib/label.h
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
#ifndef BARE_GTK_LABEL_H
|
|
2
|
+
#define BARE_GTK_LABEL_H
|
|
3
|
+
|
|
4
|
+
#include <assert.h>
|
|
5
|
+
#include <js.h>
|
|
6
|
+
#include <utf.h>
|
|
7
|
+
|
|
8
|
+
#include <gtk/gtk.h>
|
|
9
|
+
|
|
10
|
+
#include "bridging.h"
|
|
11
|
+
|
|
12
|
+
static js_value_t *
|
|
13
|
+
bare_gtk_label_init(js_env_t *env, js_callback_info_t *info) {
|
|
14
|
+
int err;
|
|
15
|
+
|
|
16
|
+
bare_gtk_state_t *state;
|
|
17
|
+
err = js_get_callback_info(env, info, NULL, NULL, NULL, (void **) &state);
|
|
18
|
+
assert(err == 0);
|
|
19
|
+
|
|
20
|
+
GtkWidget *label = gtk_label_new(NULL);
|
|
21
|
+
|
|
22
|
+
js_value_t *result;
|
|
23
|
+
err = js_create_uint32(env, bare_gobject_tag(state->registry, label), &result);
|
|
24
|
+
assert(err == 0);
|
|
25
|
+
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static js_value_t *
|
|
30
|
+
bare_gtk_label_text(js_env_t *env, js_callback_info_t *info) {
|
|
31
|
+
int err;
|
|
32
|
+
|
|
33
|
+
size_t argc = 2;
|
|
34
|
+
js_value_t *argv[2];
|
|
35
|
+
|
|
36
|
+
bare_gtk_state_t *state;
|
|
37
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
38
|
+
assert(err == 0);
|
|
39
|
+
|
|
40
|
+
assert(argc == 1 || argc == 2);
|
|
41
|
+
|
|
42
|
+
GtkLabel *label;
|
|
43
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label);
|
|
44
|
+
if (err < 0) return NULL;
|
|
45
|
+
|
|
46
|
+
js_value_t *result = NULL;
|
|
47
|
+
|
|
48
|
+
if (argc == 1) {
|
|
49
|
+
const char *text = gtk_label_get_text(label);
|
|
50
|
+
|
|
51
|
+
err = js_create_string_utf8(env, (const utf8_t *) text, (size_t) -1, &result);
|
|
52
|
+
assert(err == 0);
|
|
53
|
+
} else {
|
|
54
|
+
char *text;
|
|
55
|
+
err = bare_gtk__read_string(env, argv[1], "text", &text);
|
|
56
|
+
if (err < 0) return NULL;
|
|
57
|
+
|
|
58
|
+
gtk_label_set_text(label, text);
|
|
59
|
+
|
|
60
|
+
g_free(text);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static js_value_t *
|
|
67
|
+
bare_gtk_label_wrap(js_env_t *env, js_callback_info_t *info) {
|
|
68
|
+
int err;
|
|
69
|
+
|
|
70
|
+
size_t argc = 2;
|
|
71
|
+
js_value_t *argv[2];
|
|
72
|
+
|
|
73
|
+
bare_gtk_state_t *state;
|
|
74
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
75
|
+
assert(err == 0);
|
|
76
|
+
|
|
77
|
+
assert(argc == 1 || argc == 2);
|
|
78
|
+
|
|
79
|
+
GtkLabel *label;
|
|
80
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label);
|
|
81
|
+
if (err < 0) return NULL;
|
|
82
|
+
|
|
83
|
+
js_value_t *result = NULL;
|
|
84
|
+
|
|
85
|
+
if (argc == 1) {
|
|
86
|
+
err = js_get_boolean(env, gtk_label_get_wrap(label), &result);
|
|
87
|
+
assert(err == 0);
|
|
88
|
+
} else {
|
|
89
|
+
bool wrap;
|
|
90
|
+
err = bare_gtk__read_bool(env, argv[1], "wrap", &wrap);
|
|
91
|
+
if (err < 0) return NULL;
|
|
92
|
+
|
|
93
|
+
gtk_label_set_wrap(label, wrap);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
static js_value_t *
|
|
100
|
+
bare_gtk_label_wrap_mode(js_env_t *env, js_callback_info_t *info) {
|
|
101
|
+
int err;
|
|
102
|
+
|
|
103
|
+
size_t argc = 2;
|
|
104
|
+
js_value_t *argv[2];
|
|
105
|
+
|
|
106
|
+
bare_gtk_state_t *state;
|
|
107
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
108
|
+
assert(err == 0);
|
|
109
|
+
|
|
110
|
+
assert(argc == 1 || argc == 2);
|
|
111
|
+
|
|
112
|
+
GtkLabel *label;
|
|
113
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label);
|
|
114
|
+
if (err < 0) return NULL;
|
|
115
|
+
|
|
116
|
+
js_value_t *result = NULL;
|
|
117
|
+
|
|
118
|
+
if (argc == 1) {
|
|
119
|
+
err = js_create_int32(env, gtk_label_get_wrap_mode(label), &result);
|
|
120
|
+
assert(err == 0);
|
|
121
|
+
} else {
|
|
122
|
+
int32_t mode;
|
|
123
|
+
err = bare_gtk__read_int32(env, argv[1], "wrapMode", &mode);
|
|
124
|
+
if (err < 0) return NULL;
|
|
125
|
+
|
|
126
|
+
gtk_label_set_wrap_mode(label, mode);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
#define V(name, get, set) \
|
|
133
|
+
static js_value_t * \
|
|
134
|
+
name(js_env_t *env, js_callback_info_t *info) { \
|
|
135
|
+
int err; \
|
|
136
|
+
\
|
|
137
|
+
size_t argc = 2; \
|
|
138
|
+
js_value_t *argv[2]; \
|
|
139
|
+
\
|
|
140
|
+
bare_gtk_state_t *state; \
|
|
141
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state); \
|
|
142
|
+
assert(err == 0); \
|
|
143
|
+
\
|
|
144
|
+
assert(argc == 1 || argc == 2); \
|
|
145
|
+
\
|
|
146
|
+
GtkLabel *label; \
|
|
147
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label); \
|
|
148
|
+
if (err < 0) return NULL; \
|
|
149
|
+
\
|
|
150
|
+
js_value_t *result = NULL; \
|
|
151
|
+
\
|
|
152
|
+
if (argc == 1) { \
|
|
153
|
+
err = js_create_double(env, get(label), &result); \
|
|
154
|
+
assert(err == 0); \
|
|
155
|
+
} else { \
|
|
156
|
+
double align; \
|
|
157
|
+
err = bare_gtk__read_double(env, argv[1], "align", &align); \
|
|
158
|
+
if (err < 0) return NULL; \
|
|
159
|
+
\
|
|
160
|
+
set(label, (float) align); \
|
|
161
|
+
} \
|
|
162
|
+
\
|
|
163
|
+
return result; \
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
V(bare_gtk_label_xalign, gtk_label_get_xalign, gtk_label_set_xalign)
|
|
167
|
+
V(bare_gtk_label_yalign, gtk_label_get_yalign, gtk_label_set_yalign)
|
|
168
|
+
#undef V
|
|
169
|
+
|
|
170
|
+
static js_value_t *
|
|
171
|
+
bare_gtk_label_justify(js_env_t *env, js_callback_info_t *info) {
|
|
172
|
+
int err;
|
|
173
|
+
|
|
174
|
+
size_t argc = 2;
|
|
175
|
+
js_value_t *argv[2];
|
|
176
|
+
|
|
177
|
+
bare_gtk_state_t *state;
|
|
178
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
179
|
+
assert(err == 0);
|
|
180
|
+
|
|
181
|
+
assert(argc == 1 || argc == 2);
|
|
182
|
+
|
|
183
|
+
GtkLabel *label;
|
|
184
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label);
|
|
185
|
+
if (err < 0) return NULL;
|
|
186
|
+
|
|
187
|
+
js_value_t *result = NULL;
|
|
188
|
+
|
|
189
|
+
if (argc == 1) {
|
|
190
|
+
err = js_create_int32(env, gtk_label_get_justify(label), &result);
|
|
191
|
+
assert(err == 0);
|
|
192
|
+
} else {
|
|
193
|
+
int32_t justify;
|
|
194
|
+
err = bare_gtk__read_int32(env, argv[1], "justify", &justify);
|
|
195
|
+
if (err < 0) return NULL;
|
|
196
|
+
|
|
197
|
+
gtk_label_set_justify(label, justify);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
static js_value_t *
|
|
204
|
+
bare_gtk_label_set_markup(js_env_t *env, js_callback_info_t *info) {
|
|
205
|
+
int err;
|
|
206
|
+
|
|
207
|
+
size_t argc = 2;
|
|
208
|
+
js_value_t *argv[2];
|
|
209
|
+
|
|
210
|
+
bare_gtk_state_t *state;
|
|
211
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
212
|
+
assert(err == 0);
|
|
213
|
+
|
|
214
|
+
assert(argc == 2);
|
|
215
|
+
|
|
216
|
+
GtkLabel *label;
|
|
217
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label);
|
|
218
|
+
if (err < 0) return NULL;
|
|
219
|
+
|
|
220
|
+
char *markup;
|
|
221
|
+
err = bare_gtk__read_string(env, argv[1], "markup", &markup);
|
|
222
|
+
if (err < 0) return NULL;
|
|
223
|
+
|
|
224
|
+
gtk_label_set_markup(label, markup);
|
|
225
|
+
|
|
226
|
+
g_free(markup);
|
|
227
|
+
|
|
228
|
+
return NULL;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
#define V(name, get, set, type) \
|
|
232
|
+
static js_value_t * \
|
|
233
|
+
name(js_env_t *env, js_callback_info_t *info) { \
|
|
234
|
+
int err; \
|
|
235
|
+
\
|
|
236
|
+
size_t argc = 2; \
|
|
237
|
+
js_value_t *argv[2]; \
|
|
238
|
+
\
|
|
239
|
+
bare_gtk_state_t *state; \
|
|
240
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state); \
|
|
241
|
+
assert(err == 0); \
|
|
242
|
+
\
|
|
243
|
+
assert(argc == 1 || argc == 2); \
|
|
244
|
+
\
|
|
245
|
+
GtkLabel *label; \
|
|
246
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "label", (gpointer *) &label); \
|
|
247
|
+
if (err < 0) return NULL; \
|
|
248
|
+
\
|
|
249
|
+
js_value_t *result = NULL; \
|
|
250
|
+
\
|
|
251
|
+
if (argc == 1) { \
|
|
252
|
+
err = js_create_int32(env, get(label), &result); \
|
|
253
|
+
assert(err == 0); \
|
|
254
|
+
} else { \
|
|
255
|
+
int32_t value; \
|
|
256
|
+
err = bare_gtk__read_int32(env, argv[1], #name, &value); \
|
|
257
|
+
if (err < 0) return NULL; \
|
|
258
|
+
\
|
|
259
|
+
set(label, (type) value); \
|
|
260
|
+
} \
|
|
261
|
+
\
|
|
262
|
+
return result; \
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
V(bare_gtk_label_lines, gtk_label_get_lines, gtk_label_set_lines, int)
|
|
266
|
+
V(bare_gtk_label_ellipsize, gtk_label_get_ellipsize, gtk_label_set_ellipsize, PangoEllipsizeMode)
|
|
267
|
+
#undef V
|
|
268
|
+
|
|
269
|
+
#endif // BARE_GTK_LABEL_H
|
package/lib/label.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
const GTKWidget = require('./widget')
|
|
3
|
+
|
|
4
|
+
module.exports = exports = class GTKLabel extends GTKWidget {
|
|
5
|
+
_init(opts) {
|
|
6
|
+
return binding.labelInit()
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
get text() {
|
|
10
|
+
return binding.labelText(this._tag)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
set text(value) {
|
|
14
|
+
binding.labelText(this._tag, value)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
setMarkup(markup) {
|
|
18
|
+
binding.labelSetMarkup(this._tag, markup)
|
|
19
|
+
|
|
20
|
+
return this
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get wrap() {
|
|
24
|
+
return binding.labelWrap(this._tag)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
set wrap(value) {
|
|
28
|
+
binding.labelWrap(this._tag, value)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
get wrapMode() {
|
|
32
|
+
return binding.labelWrapMode(this._tag)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
set wrapMode(value) {
|
|
36
|
+
binding.labelWrapMode(this._tag, value)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
get xalign() {
|
|
40
|
+
return binding.labelXalign(this._tag)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
set xalign(value) {
|
|
44
|
+
binding.labelXalign(this._tag, value)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
get yalign() {
|
|
48
|
+
return binding.labelYalign(this._tag)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
set yalign(value) {
|
|
52
|
+
binding.labelYalign(this._tag, value)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
get justify() {
|
|
56
|
+
return binding.labelJustify(this._tag)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
set justify(value) {
|
|
60
|
+
binding.labelJustify(this._tag, value)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get lines() {
|
|
64
|
+
return binding.labelLines(this._tag)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
set lines(value) {
|
|
68
|
+
binding.labelLines(this._tag, value)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
get ellipsize() {
|
|
72
|
+
return binding.labelEllipsize(this._tag)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
set ellipsize(value) {
|
|
76
|
+
binding.labelEllipsize(this._tag, value)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import GObject = require('./object')
|
|
2
|
+
import GTKWidget = require('./widget')
|
|
3
|
+
|
|
4
|
+
/** What a layout manager keeps about one child, as a `GtkLayoutChild`. */
|
|
5
|
+
interface GTKLayoutChild extends GObject {
|
|
6
|
+
readonly childWidget: GTKWidget | null
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
declare class GTKLayoutChild {
|
|
10
|
+
protected constructor()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export = GTKLayoutChild
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#ifndef BARE_GTK_LAYOUT_CHILD_H
|
|
2
|
+
#define BARE_GTK_LAYOUT_CHILD_H
|
|
3
|
+
|
|
4
|
+
#include <assert.h>
|
|
5
|
+
#include <js.h>
|
|
6
|
+
|
|
7
|
+
#include <gtk/gtk.h>
|
|
8
|
+
|
|
9
|
+
#include "bridging.h"
|
|
10
|
+
|
|
11
|
+
#define V(name, fn) \
|
|
12
|
+
static js_value_t * \
|
|
13
|
+
name(js_env_t *env, js_callback_info_t *info) { \
|
|
14
|
+
int err; \
|
|
15
|
+
\
|
|
16
|
+
size_t argc = 1; \
|
|
17
|
+
js_value_t *argv[1]; \
|
|
18
|
+
\
|
|
19
|
+
bare_gtk_state_t *state; \
|
|
20
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state); \
|
|
21
|
+
assert(err == 0); \
|
|
22
|
+
\
|
|
23
|
+
assert(argc == 1); \
|
|
24
|
+
\
|
|
25
|
+
GtkLayoutChild *layout_child; \
|
|
26
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "layoutChild", (gpointer *) &layout_child); \
|
|
27
|
+
if (err < 0) return NULL; \
|
|
28
|
+
\
|
|
29
|
+
return bare_gtk__create_tag(env, state, fn(layout_child)); \
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
V(bare_gtk_layout_child_child_widget, gtk_layout_child_get_child_widget)
|
|
33
|
+
#undef V
|
|
34
|
+
|
|
35
|
+
#endif // BARE_GTK_LAYOUT_CHILD_H
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
const GObject = require('./object')
|
|
3
|
+
const GTKWidget = require('./widget')
|
|
4
|
+
const wrap = require('./wrap')
|
|
5
|
+
|
|
6
|
+
module.exports = exports = class GTKLayoutChild extends GObject {
|
|
7
|
+
get childWidget() {
|
|
8
|
+
return wrap(GTKWidget, binding.layoutChildChildWidget(this._tag))
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import GObject = require('./object')
|
|
2
|
+
import GTKLayoutChild = require('./layout-child')
|
|
3
|
+
import GTKWidget = require('./widget')
|
|
4
|
+
|
|
5
|
+
/** Places the children of a widget, as a `GtkLayoutManager`. */
|
|
6
|
+
interface GTKLayoutManager<M extends Record<keyof M, unknown[]> = {}> extends GObject<M> {
|
|
7
|
+
/** What the manager keeps about `widget`, which must be a child of its widget. */
|
|
8
|
+
getLayoutChild(widget: GTKWidget): GTKLayoutChild | null
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare class GTKLayoutManager<M extends Record<keyof M, unknown[]> = {}> {
|
|
12
|
+
protected constructor()
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export = GTKLayoutManager
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#ifndef BARE_GTK_LAYOUT_MANAGER_H
|
|
2
|
+
#define BARE_GTK_LAYOUT_MANAGER_H
|
|
3
|
+
|
|
4
|
+
#include <assert.h>
|
|
5
|
+
#include <js.h>
|
|
6
|
+
|
|
7
|
+
#include <gtk/gtk.h>
|
|
8
|
+
|
|
9
|
+
#include "bridging.h"
|
|
10
|
+
|
|
11
|
+
static js_value_t *
|
|
12
|
+
bare_gtk_layout_manager_layout_child(js_env_t *env, js_callback_info_t *info) {
|
|
13
|
+
int err;
|
|
14
|
+
|
|
15
|
+
size_t argc = 2;
|
|
16
|
+
js_value_t *argv[2];
|
|
17
|
+
|
|
18
|
+
bare_gtk_state_t *state;
|
|
19
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
20
|
+
assert(err == 0);
|
|
21
|
+
|
|
22
|
+
assert(argc == 2);
|
|
23
|
+
|
|
24
|
+
GtkLayoutManager *manager;
|
|
25
|
+
err = bare_gobject_read_tag(env, state->registry, argv[0], "layoutManager", (gpointer *) &manager);
|
|
26
|
+
if (err < 0) return NULL;
|
|
27
|
+
|
|
28
|
+
GtkWidget *child;
|
|
29
|
+
err = bare_gobject_read_tag(env, state->registry, argv[1], "child", (gpointer *) &child);
|
|
30
|
+
if (err < 0) return NULL;
|
|
31
|
+
|
|
32
|
+
if (gtk_widget_get_parent(child) == NULL) {
|
|
33
|
+
err = js_throw_error(env, NULL, "Widget has no parent");
|
|
34
|
+
assert(err == 0);
|
|
35
|
+
|
|
36
|
+
return NULL;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return bare_gtk__create_tag(env, state, gtk_layout_manager_get_layout_child(manager, child));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#endif // BARE_GTK_LAYOUT_MANAGER_H
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
const GObject = require('./object')
|
|
3
|
+
const GTKLayoutChild = require('./layout-child')
|
|
4
|
+
const wrap = require('./wrap')
|
|
5
|
+
|
|
6
|
+
module.exports = exports = class GTKLayoutManager extends GObject {
|
|
7
|
+
static layoutChild = GTKLayoutChild
|
|
8
|
+
|
|
9
|
+
getLayoutChild(widget) {
|
|
10
|
+
return wrap(
|
|
11
|
+
this.constructor.layoutChild,
|
|
12
|
+
binding.layoutManagerLayoutChild(this._tag, widget._tag)
|
|
13
|
+
)
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import GTKDialog = require('./dialog')
|
|
2
|
+
import GTKWindow = require('./window')
|
|
3
|
+
|
|
4
|
+
/** A dialog that shows a message, as a `GtkMessageDialog`. Add its buttons with `addButton()`. */
|
|
5
|
+
interface GTKMessageDialog extends GTKDialog {
|
|
6
|
+
/** Text shown below the main message. */
|
|
7
|
+
set secondaryText(text: string)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare class GTKMessageDialog {
|
|
11
|
+
/**
|
|
12
|
+
* Create a message dialog. `messageType` is a `MESSAGE_TYPE` constant and defaults to
|
|
13
|
+
* `MESSAGE_TYPE.OTHER`.
|
|
14
|
+
*/
|
|
15
|
+
constructor(opts?: { parent?: GTKWindow | null; messageType?: number; text?: string })
|
|
16
|
+
|
|
17
|
+
static readonly MESSAGE_TYPE: {
|
|
18
|
+
readonly INFO: number
|
|
19
|
+
readonly WARNING: number
|
|
20
|
+
readonly QUESTION: number
|
|
21
|
+
readonly ERROR: number
|
|
22
|
+
readonly OTHER: number
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export = GTKMessageDialog
|