bare-gtk 0.2.0 → 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.
Files changed (135) hide show
  1. package/CMakeLists.txt +16 -2
  2. package/README.md +35 -1
  3. package/binding.c +350 -1
  4. package/index.d.ts +65 -0
  5. package/index.js +32 -0
  6. package/lib/adjustment.d.ts +21 -0
  7. package/lib/adjustment.h +112 -0
  8. package/lib/adjustment.js +24 -0
  9. package/lib/bridging.h +347 -0
  10. package/lib/clipboard.d.ts +22 -0
  11. package/lib/clipboard.h +176 -0
  12. package/lib/clipboard.js +18 -0
  13. package/lib/constants.d.ts +40 -0
  14. package/lib/constants.js +51 -0
  15. package/lib/css-provider.d.ts +13 -0
  16. package/lib/css-provider.h +56 -0
  17. package/lib/css-provider.js +14 -0
  18. package/lib/cursor.d.ts +35 -0
  19. package/lib/cursor.h +220 -0
  20. package/lib/cursor.js +45 -0
  21. package/lib/device.d.ts +13 -0
  22. package/lib/device.h +35 -0
  23. package/lib/device.js +8 -0
  24. package/lib/dialog.d.ts +41 -0
  25. package/lib/dialog.js +37 -0
  26. package/lib/display.d.ts +25 -0
  27. package/lib/display.h +86 -0
  28. package/lib/display.js +23 -0
  29. package/lib/editable.h +160 -0
  30. package/lib/entry.d.ts +93 -0
  31. package/lib/entry.h +340 -0
  32. package/lib/entry.js +118 -0
  33. package/lib/event-controller-focus.d.ts +17 -0
  34. package/lib/event-controller-focus.h +55 -0
  35. package/lib/event-controller-focus.js +13 -0
  36. package/lib/event-controller-motion.d.ts +18 -0
  37. package/lib/event-controller-motion.h +66 -0
  38. package/lib/event-controller-motion.js +14 -0
  39. package/lib/event-controller.d.ts +17 -0
  40. package/lib/event-controller.h +103 -0
  41. package/lib/event-controller.js +22 -0
  42. package/lib/events.js +23 -0
  43. package/lib/fixed.d.ts +10 -0
  44. package/lib/fixed.h +28 -0
  45. package/lib/fixed.js +8 -0
  46. package/lib/frame-fixed.d.ts +10 -0
  47. package/lib/frame-fixed.js +12 -0
  48. package/lib/frame-layout-child.d.ts +17 -0
  49. package/lib/frame-layout-child.js +16 -0
  50. package/lib/frame-layout.d.ts +27 -0
  51. package/lib/frame-layout.h +291 -0
  52. package/lib/frame-layout.js +19 -0
  53. package/lib/gesture-click.d.ts +19 -0
  54. package/lib/gesture-click.h +66 -0
  55. package/lib/gesture-click.js +14 -0
  56. package/lib/gesture-drag.d.ts +25 -0
  57. package/lib/gesture-drag.h +165 -0
  58. package/lib/gesture-drag.js +23 -0
  59. package/lib/gesture-single.d.ts +13 -0
  60. package/lib/gesture-single.js +12 -0
  61. package/lib/gesture.d.ts +13 -0
  62. package/lib/gesture.h +73 -0
  63. package/lib/gesture.js +8 -0
  64. package/lib/handle.d.ts +5 -0
  65. package/lib/handle.js +6 -0
  66. package/lib/label.d.ts +36 -0
  67. package/lib/label.h +269 -0
  68. package/lib/label.js +78 -0
  69. package/lib/layout-child.d.ts +13 -0
  70. package/lib/layout-child.h +35 -0
  71. package/lib/layout-child.js +10 -0
  72. package/lib/layout-manager.d.ts +15 -0
  73. package/lib/layout-manager.h +42 -0
  74. package/lib/layout-manager.js +15 -0
  75. package/lib/message-dialog.d.ts +26 -0
  76. package/lib/message-dialog.h +190 -0
  77. package/lib/message-dialog.js +22 -0
  78. package/lib/monitor.d.ts +32 -0
  79. package/lib/monitor.h +143 -0
  80. package/lib/monitor.js +40 -0
  81. package/lib/native.h +31 -0
  82. package/lib/object.d.ts +18 -0
  83. package/lib/object.js +38 -0
  84. package/lib/paintable.d.ts +10 -0
  85. package/lib/paintable.js +3 -0
  86. package/lib/picture.d.ts +22 -0
  87. package/lib/picture.h +127 -0
  88. package/lib/picture.js +35 -0
  89. package/lib/reachable.js +11 -0
  90. package/lib/runtime.c +21 -4
  91. package/lib/scrolled-window.d.ts +22 -0
  92. package/lib/scrolled-window.h +142 -0
  93. package/lib/scrolled-window.js +37 -0
  94. package/lib/settings.d.ts +25 -0
  95. package/lib/settings.h +163 -0
  96. package/lib/settings.js +34 -0
  97. package/lib/spinner.d.ts +12 -0
  98. package/lib/spinner.h +61 -0
  99. package/lib/spinner.js +22 -0
  100. package/lib/style-context.d.ts +15 -0
  101. package/lib/style-context.h +67 -0
  102. package/lib/style-context.js +9 -0
  103. package/lib/surface.d.ts +19 -0
  104. package/lib/surface.h +61 -0
  105. package/lib/surface.js +22 -0
  106. package/lib/switch.d.ts +19 -0
  107. package/lib/switch.h +114 -0
  108. package/lib/switch.js +30 -0
  109. package/lib/text-buffer.d.ts +31 -0
  110. package/lib/text-buffer.h +246 -0
  111. package/lib/text-buffer.js +33 -0
  112. package/lib/text-view.d.ts +39 -0
  113. package/lib/text-view.h +247 -0
  114. package/lib/text-view.js +63 -0
  115. package/lib/text.d.ts +18 -0
  116. package/lib/text.h +189 -0
  117. package/lib/text.js +31 -0
  118. package/lib/texture.d.ts +20 -0
  119. package/lib/texture.h +100 -0
  120. package/lib/texture.js +17 -0
  121. package/lib/viewport.d.ts +22 -0
  122. package/lib/viewport.h +151 -0
  123. package/lib/viewport.js +38 -0
  124. package/lib/widget.d.ts +102 -0
  125. package/lib/widget.h +695 -17
  126. package/lib/widget.js +176 -11
  127. package/lib/window.d.ts +31 -0
  128. package/lib/window.h +142 -61
  129. package/lib/window.js +32 -11
  130. package/lib/wrap.js +7 -0
  131. package/package.json +12 -3
  132. package/prebuilds/linux-arm64/bare +2 -2
  133. package/prebuilds/linux-arm64/bare-gtk.bare +0 -0
  134. package/prebuilds/linux-x64/bare +2 -2
  135. package/prebuilds/linux-x64/bare-gtk.bare +0 -0
@@ -0,0 +1,40 @@
1
+ export const ORIENTATION_HORIZONTAL: number
2
+ export const ORIENTATION_VERTICAL: number
3
+ export const OVERFLOW_VISIBLE: number
4
+ export const OVERFLOW_HIDDEN: number
5
+ export const WRAP_WORD: number
6
+ export const WRAP_CHAR: number
7
+ export const WRAP_WORD_CHAR: number
8
+ export const ELLIPSIZE_NONE: number
9
+ export const ELLIPSIZE_START: number
10
+ export const ELLIPSIZE_MIDDLE: number
11
+ export const ELLIPSIZE_END: number
12
+ export const JUSTIFY_LEFT: number
13
+ export const JUSTIFY_RIGHT: number
14
+ export const JUSTIFY_CENTER: number
15
+ export const JUSTIFY_FILL: number
16
+ export const STYLE_PROVIDER_PRIORITY_FALLBACK: number
17
+ export const STYLE_PROVIDER_PRIORITY_THEME: number
18
+ export const STYLE_PROVIDER_PRIORITY_SETTINGS: number
19
+ export const STYLE_PROVIDER_PRIORITY_APPLICATION: number
20
+ export const STYLE_PROVIDER_PRIORITY_USER: number
21
+ export const PROPAGATION_PHASE_NONE: number
22
+ export const PROPAGATION_PHASE_CAPTURE: number
23
+ export const PROPAGATION_PHASE_BUBBLE: number
24
+ export const PROPAGATION_PHASE_TARGET: number
25
+ export const EVENT_SEQUENCE_STATE_NONE: number
26
+ export const EVENT_SEQUENCE_STATE_CLAIMED: number
27
+ export const EVENT_SEQUENCE_STATE_DENIED: number
28
+ export const INPUT_SOURCE_MOUSE: number
29
+ export const INPUT_SOURCE_PEN: number
30
+ export const INPUT_SOURCE_KEYBOARD: number
31
+ export const INPUT_SOURCE_TOUCHSCREEN: number
32
+ export const INPUT_SOURCE_TOUCHPAD: number
33
+ export const INPUT_SOURCE_TRACKPOINT: number
34
+ export const INPUT_SOURCE_TABLET_PAD: number
35
+ export const POLICY_ALWAYS: number
36
+ export const POLICY_AUTOMATIC: number
37
+ export const POLICY_NEVER: number
38
+ export const POLICY_EXTERNAL: number
39
+ export const SCROLL_MINIMUM: number
40
+ export const SCROLL_NATURAL: number
@@ -0,0 +1,51 @@
1
+ const binding = require('../binding')
2
+
3
+ exports.ORIENTATION_HORIZONTAL = binding.ORIENTATION_HORIZONTAL
4
+ exports.ORIENTATION_VERTICAL = binding.ORIENTATION_VERTICAL
5
+
6
+ exports.OVERFLOW_VISIBLE = binding.OVERFLOW_VISIBLE
7
+ exports.OVERFLOW_HIDDEN = binding.OVERFLOW_HIDDEN
8
+
9
+ exports.WRAP_WORD = binding.WRAP_WORD
10
+ exports.WRAP_CHAR = binding.WRAP_CHAR
11
+ exports.WRAP_WORD_CHAR = binding.WRAP_WORD_CHAR
12
+
13
+ exports.ELLIPSIZE_NONE = binding.ELLIPSIZE_NONE
14
+ exports.ELLIPSIZE_START = binding.ELLIPSIZE_START
15
+ exports.ELLIPSIZE_MIDDLE = binding.ELLIPSIZE_MIDDLE
16
+ exports.ELLIPSIZE_END = binding.ELLIPSIZE_END
17
+ exports.JUSTIFY_LEFT = binding.JUSTIFY_LEFT
18
+ exports.JUSTIFY_RIGHT = binding.JUSTIFY_RIGHT
19
+ exports.JUSTIFY_CENTER = binding.JUSTIFY_CENTER
20
+ exports.JUSTIFY_FILL = binding.JUSTIFY_FILL
21
+
22
+ exports.STYLE_PROVIDER_PRIORITY_FALLBACK = binding.STYLE_PROVIDER_PRIORITY_FALLBACK
23
+ exports.STYLE_PROVIDER_PRIORITY_THEME = binding.STYLE_PROVIDER_PRIORITY_THEME
24
+ exports.STYLE_PROVIDER_PRIORITY_SETTINGS = binding.STYLE_PROVIDER_PRIORITY_SETTINGS
25
+ exports.STYLE_PROVIDER_PRIORITY_APPLICATION = binding.STYLE_PROVIDER_PRIORITY_APPLICATION
26
+ exports.STYLE_PROVIDER_PRIORITY_USER = binding.STYLE_PROVIDER_PRIORITY_USER
27
+
28
+ exports.PROPAGATION_PHASE_NONE = binding.PROPAGATION_PHASE_NONE
29
+ exports.PROPAGATION_PHASE_CAPTURE = binding.PROPAGATION_PHASE_CAPTURE
30
+ exports.PROPAGATION_PHASE_BUBBLE = binding.PROPAGATION_PHASE_BUBBLE
31
+ exports.PROPAGATION_PHASE_TARGET = binding.PROPAGATION_PHASE_TARGET
32
+
33
+ exports.EVENT_SEQUENCE_STATE_NONE = binding.EVENT_SEQUENCE_STATE_NONE
34
+ exports.EVENT_SEQUENCE_STATE_CLAIMED = binding.EVENT_SEQUENCE_STATE_CLAIMED
35
+ exports.EVENT_SEQUENCE_STATE_DENIED = binding.EVENT_SEQUENCE_STATE_DENIED
36
+
37
+ exports.INPUT_SOURCE_MOUSE = binding.INPUT_SOURCE_MOUSE
38
+ exports.INPUT_SOURCE_PEN = binding.INPUT_SOURCE_PEN
39
+ exports.INPUT_SOURCE_KEYBOARD = binding.INPUT_SOURCE_KEYBOARD
40
+ exports.INPUT_SOURCE_TOUCHSCREEN = binding.INPUT_SOURCE_TOUCHSCREEN
41
+ exports.INPUT_SOURCE_TOUCHPAD = binding.INPUT_SOURCE_TOUCHPAD
42
+ exports.INPUT_SOURCE_TRACKPOINT = binding.INPUT_SOURCE_TRACKPOINT
43
+ exports.INPUT_SOURCE_TABLET_PAD = binding.INPUT_SOURCE_TABLET_PAD
44
+
45
+ exports.POLICY_ALWAYS = binding.POLICY_ALWAYS
46
+ exports.POLICY_AUTOMATIC = binding.POLICY_AUTOMATIC
47
+ exports.POLICY_NEVER = binding.POLICY_NEVER
48
+ exports.POLICY_EXTERNAL = binding.POLICY_EXTERNAL
49
+
50
+ exports.SCROLL_MINIMUM = binding.SCROLL_MINIMUM
51
+ exports.SCROLL_NATURAL = binding.SCROLL_NATURAL
@@ -0,0 +1,13 @@
1
+ import GObject = require('./object')
2
+
3
+ /** A style sheet, as a `GtkCssProvider`. Apply it with `StyleContext.addProviderForDisplay()`. */
4
+ interface GTKCssProvider extends GObject {
5
+ /** Load the style sheet from CSS source. */
6
+ loadFromData(data: string): this
7
+ }
8
+
9
+ declare class GTKCssProvider {
10
+ constructor()
11
+ }
12
+
13
+ export = GTKCssProvider
@@ -0,0 +1,56 @@
1
+ #ifndef BARE_GTK_CSS_PROVIDER_H
2
+ #define BARE_GTK_CSS_PROVIDER_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_css_provider_init(js_env_t *env, js_callback_info_t *info) {
13
+ int err;
14
+
15
+ bare_gtk_state_t *state;
16
+ err = js_get_callback_info(env, info, NULL, NULL, NULL, (void **) &state);
17
+ assert(err == 0);
18
+
19
+ GtkCssProvider *provider = gtk_css_provider_new();
20
+
21
+ js_value_t *result;
22
+ err = js_create_uint32(env, bare_gobject_tag(state->registry, provider), &result);
23
+ assert(err == 0);
24
+
25
+ return result;
26
+ }
27
+
28
+ static js_value_t *
29
+ bare_gtk_css_provider_load_from_data(js_env_t *env, js_callback_info_t *info) {
30
+ int err;
31
+
32
+ size_t argc = 2;
33
+ js_value_t *argv[2];
34
+
35
+ bare_gtk_state_t *state;
36
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
37
+ assert(err == 0);
38
+
39
+ assert(argc == 2);
40
+
41
+ GtkCssProvider *provider;
42
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "cssProvider", (gpointer *) &provider);
43
+ if (err < 0) return NULL;
44
+
45
+ char *data;
46
+ err = bare_gtk__read_string(env, argv[1], "data", &data);
47
+ if (err < 0) return NULL;
48
+
49
+ gtk_css_provider_load_from_data(provider, data, -1);
50
+
51
+ g_free(data);
52
+
53
+ return NULL;
54
+ }
55
+
56
+ #endif // BARE_GTK_CSS_PROVIDER_H
@@ -0,0 +1,14 @@
1
+ const binding = require('../binding')
2
+ const GObject = require('./object')
3
+
4
+ module.exports = exports = class GTKCssProvider extends GObject {
5
+ _init(opts) {
6
+ return binding.cssProviderInit()
7
+ }
8
+
9
+ loadFromData(data) {
10
+ binding.cssProviderLoadFromData(this._tag, data)
11
+
12
+ return this
13
+ }
14
+ }
@@ -0,0 +1,35 @@
1
+ import GObject = require('./object')
2
+ import GDKTexture = require('./texture')
3
+
4
+ /** A mouse cursor, as a `GdkCursor`. */
5
+ interface GDKCursor extends GObject {
6
+ readonly name: string | null
7
+
8
+ readonly fallback: GDKCursor | null
9
+
10
+ readonly texture: GDKTexture | null
11
+
12
+ readonly hotspotX: number
13
+
14
+ readonly hotspotY: number
15
+ }
16
+
17
+ declare class GDKCursor {
18
+ protected constructor()
19
+
20
+ /**
21
+ * Create the cursor called `name`, such as `'pointer'`. `fallback` is shown where that cursor
22
+ * does not exist.
23
+ */
24
+ static newFromName(name: string, fallback?: GDKCursor | null): GDKCursor | null
25
+
26
+ /** Create a cursor from a texture, with its hotspot at `hotspotX`, `hotspotY`. */
27
+ static newFromTexture(
28
+ texture: GDKTexture,
29
+ hotspotX: number,
30
+ hotspotY: number,
31
+ fallback?: GDKCursor | null
32
+ ): GDKCursor | null
33
+ }
34
+
35
+ export = GDKCursor
package/lib/cursor.h ADDED
@@ -0,0 +1,220 @@
1
+ #ifndef BARE_GTK_CURSOR_H
2
+ #define BARE_GTK_CURSOR_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
+ // A new cursor is not floating, so the registry takes its own reference and the
13
+ // one from this call is dropped.
14
+ static js_value_t *
15
+ bare_gtk_cursor_new_from_name(js_env_t *env, js_callback_info_t *info) {
16
+ int err;
17
+
18
+ size_t argc = 2;
19
+ js_value_t *argv[2];
20
+
21
+ bare_gtk_state_t *state;
22
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
23
+ assert(err == 0);
24
+
25
+ assert(argc == 2);
26
+
27
+ char *name;
28
+ err = bare_gtk__read_string(env, argv[0], "name", &name);
29
+ if (err < 0) return NULL;
30
+
31
+ GdkCursor *fallback;
32
+ err = bare_gtk__read_tag_or_null(env, state->registry, argv[1], "fallback", (gpointer *) &fallback);
33
+ if (err < 0) {
34
+ g_free(name);
35
+
36
+ return NULL;
37
+ }
38
+
39
+ GdkCursor *cursor = gdk_cursor_new_from_name(name, fallback);
40
+
41
+ g_free(name);
42
+
43
+ js_value_t *result;
44
+
45
+ if (cursor == NULL) {
46
+ err = js_get_null(env, &result);
47
+ assert(err == 0);
48
+
49
+ return result;
50
+ }
51
+
52
+ err = js_create_uint32(env, bare_gobject_tag(state->registry, cursor), &result);
53
+ assert(err == 0);
54
+
55
+ g_object_unref(cursor);
56
+
57
+ return result;
58
+ }
59
+
60
+ static js_value_t *
61
+ bare_gtk_cursor_new_from_texture(js_env_t *env, js_callback_info_t *info) {
62
+ int err;
63
+
64
+ size_t argc = 4;
65
+ js_value_t *argv[4];
66
+
67
+ bare_gtk_state_t *state;
68
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
69
+ assert(err == 0);
70
+
71
+ assert(argc == 4);
72
+
73
+ GdkTexture *texture;
74
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "texture", (gpointer *) &texture);
75
+ if (err < 0) return NULL;
76
+
77
+ int32_t hotspot_x;
78
+ err = bare_gtk__read_int32(env, argv[1], "hotspot_x", &hotspot_x);
79
+ if (err < 0) return NULL;
80
+
81
+ int32_t hotspot_y;
82
+ err = bare_gtk__read_int32(env, argv[2], "hotspot_y", &hotspot_y);
83
+ if (err < 0) return NULL;
84
+
85
+ GdkCursor *fallback;
86
+ err = bare_gtk__read_tag_or_null(env, state->registry, argv[3], "fallback", (gpointer *) &fallback);
87
+ if (err < 0) return NULL;
88
+
89
+ GdkCursor *cursor = gdk_cursor_new_from_texture(texture, hotspot_x, hotspot_y, fallback);
90
+
91
+ js_value_t *result;
92
+ err = js_create_uint32(env, bare_gobject_tag(state->registry, cursor), &result);
93
+ assert(err == 0);
94
+
95
+ g_object_unref(cursor);
96
+
97
+ return result;
98
+ }
99
+
100
+ static js_value_t *
101
+ bare_gtk_cursor_name(js_env_t *env, js_callback_info_t *info) {
102
+ int err;
103
+
104
+ size_t argc = 1;
105
+ js_value_t *argv[1];
106
+
107
+ bare_gtk_state_t *state;
108
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
109
+ assert(err == 0);
110
+
111
+ assert(argc == 1);
112
+
113
+ GdkCursor *cursor;
114
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "cursor", (gpointer *) &cursor);
115
+ if (err < 0) return NULL;
116
+
117
+ const char *name = gdk_cursor_get_name(cursor);
118
+
119
+ js_value_t *result;
120
+
121
+ if (name == NULL) {
122
+ err = js_get_null(env, &result);
123
+ assert(err == 0);
124
+ } else {
125
+ err = js_create_string_utf8(env, (const utf8_t *) name, (size_t) -1, &result);
126
+ assert(err == 0);
127
+ }
128
+
129
+ return result;
130
+ }
131
+
132
+ static js_value_t *
133
+ bare_gtk_cursor_fallback(js_env_t *env, js_callback_info_t *info) {
134
+ int err;
135
+
136
+ size_t argc = 1;
137
+ js_value_t *argv[1];
138
+
139
+ bare_gtk_state_t *state;
140
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
141
+ assert(err == 0);
142
+
143
+ assert(argc == 1);
144
+
145
+ GdkCursor *cursor;
146
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "cursor", (gpointer *) &cursor);
147
+ if (err < 0) return NULL;
148
+
149
+ return bare_gtk__create_tag(env, state, gdk_cursor_get_fallback(cursor));
150
+ }
151
+
152
+ static js_value_t *
153
+ bare_gtk_cursor_texture(js_env_t *env, js_callback_info_t *info) {
154
+ int err;
155
+
156
+ size_t argc = 1;
157
+ js_value_t *argv[1];
158
+
159
+ bare_gtk_state_t *state;
160
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
161
+ assert(err == 0);
162
+
163
+ assert(argc == 1);
164
+
165
+ GdkCursor *cursor;
166
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "cursor", (gpointer *) &cursor);
167
+ if (err < 0) return NULL;
168
+
169
+ return bare_gtk__create_tag(env, state, gdk_cursor_get_texture(cursor));
170
+ }
171
+
172
+ static js_value_t *
173
+ bare_gtk_cursor_hotspot_x(js_env_t *env, js_callback_info_t *info) {
174
+ int err;
175
+
176
+ size_t argc = 1;
177
+ js_value_t *argv[1];
178
+
179
+ bare_gtk_state_t *state;
180
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
181
+ assert(err == 0);
182
+
183
+ assert(argc == 1);
184
+
185
+ GdkCursor *cursor;
186
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "cursor", (gpointer *) &cursor);
187
+ if (err < 0) return NULL;
188
+
189
+ js_value_t *result;
190
+ err = js_create_int32(env, gdk_cursor_get_hotspot_x(cursor), &result);
191
+ assert(err == 0);
192
+
193
+ return result;
194
+ }
195
+
196
+ static js_value_t *
197
+ bare_gtk_cursor_hotspot_y(js_env_t *env, js_callback_info_t *info) {
198
+ int err;
199
+
200
+ size_t argc = 1;
201
+ js_value_t *argv[1];
202
+
203
+ bare_gtk_state_t *state;
204
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
205
+ assert(err == 0);
206
+
207
+ assert(argc == 1);
208
+
209
+ GdkCursor *cursor;
210
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "cursor", (gpointer *) &cursor);
211
+ if (err < 0) return NULL;
212
+
213
+ js_value_t *result;
214
+ err = js_create_int32(env, gdk_cursor_get_hotspot_y(cursor), &result);
215
+ assert(err == 0);
216
+
217
+ return result;
218
+ }
219
+
220
+ #endif // BARE_GTK_CURSOR_H
package/lib/cursor.js ADDED
@@ -0,0 +1,45 @@
1
+ const binding = require('../binding')
2
+ const wrap = require('./wrap')
3
+ const GObject = require('./object')
4
+ const GDKTexture = require('./texture')
5
+
6
+ module.exports = exports = class GDKCursor extends GObject {
7
+ static newFromName(name, fallback = null) {
8
+ return wrap(
9
+ GDKCursor,
10
+ binding.cursorNewFromName(name, fallback === null ? null : fallback._tag)
11
+ )
12
+ }
13
+
14
+ static newFromTexture(texture, hotspotX, hotspotY, fallback = null) {
15
+ return wrap(
16
+ GDKCursor,
17
+ binding.cursorNewFromTexture(
18
+ texture._tag,
19
+ hotspotX,
20
+ hotspotY,
21
+ fallback === null ? null : fallback._tag
22
+ )
23
+ )
24
+ }
25
+
26
+ get name() {
27
+ return binding.cursorName(this._tag)
28
+ }
29
+
30
+ get fallback() {
31
+ return wrap(GDKCursor, binding.cursorFallback(this._tag))
32
+ }
33
+
34
+ get texture() {
35
+ return wrap(GDKTexture, binding.cursorTexture(this._tag))
36
+ }
37
+
38
+ get hotspotX() {
39
+ return binding.cursorHotspotX(this._tag)
40
+ }
41
+
42
+ get hotspotY() {
43
+ return binding.cursorHotspotY(this._tag)
44
+ }
45
+ }
@@ -0,0 +1,13 @@
1
+ import GObject = require('./object')
2
+
3
+ /** An input device, as a `GdkDevice`. */
4
+ interface GTKDevice extends GObject {
5
+ /** What kind of device it is, as an `INPUT_SOURCE_*` constant. */
6
+ readonly source: number
7
+ }
8
+
9
+ declare class GTKDevice {
10
+ protected constructor()
11
+ }
12
+
13
+ export = GTKDevice
package/lib/device.h ADDED
@@ -0,0 +1,35 @@
1
+ #ifndef BARE_GTK_DEVICE_H
2
+ #define BARE_GTK_DEVICE_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_device_source(js_env_t *env, js_callback_info_t *info) {
13
+ int err;
14
+
15
+ size_t argc = 1;
16
+ js_value_t *argv[1];
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 == 1);
23
+
24
+ GdkDevice *device;
25
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "device", (gpointer *) &device);
26
+ if (err < 0) return NULL;
27
+
28
+ js_value_t *result;
29
+ err = js_create_uint32(env, gdk_device_get_source(device), &result);
30
+ assert(err == 0);
31
+
32
+ return result;
33
+ }
34
+
35
+ #endif // BARE_GTK_DEVICE_H
package/lib/device.js ADDED
@@ -0,0 +1,8 @@
1
+ const binding = require('../binding')
2
+ const GObject = require('./object')
3
+
4
+ module.exports = exports = class GTKDevice extends GObject {
5
+ get source() {
6
+ return binding.deviceSource(this._tag)
7
+ }
8
+ }
@@ -0,0 +1,41 @@
1
+ import GTKWidget = require('./widget')
2
+
3
+ /** A dialog window, as a `GtkDialog`. */
4
+ interface GTKDialog<M extends Record<keyof M, unknown[]> = GTKDialog.Events> extends GTKWidget<M> {
5
+ /**
6
+ * Add a button that closes the dialog with `response`. Use 0 and up for your own buttons; the
7
+ * negative values are the `RESPONSE` constants. Returns the button.
8
+ */
9
+ addButton(label: string, response: number): GTKWidget
10
+
11
+ /** Close the dialog with `response`, as if a button with that response was pressed. */
12
+ response(response: number): this
13
+ }
14
+
15
+ declare class GTKDialog<M extends Record<keyof M, unknown[]> = GTKDialog.Events> {
16
+ protected constructor()
17
+
18
+ /** The responses GTK defines. They are all negative. */
19
+ static readonly RESPONSE: {
20
+ readonly NONE: number
21
+ readonly REJECT: number
22
+ readonly ACCEPT: number
23
+ readonly DELETE_EVENT: number
24
+ readonly OK: number
25
+ readonly CANCEL: number
26
+ readonly CLOSE: number
27
+ readonly YES: number
28
+ readonly NO: number
29
+ readonly APPLY: number
30
+ readonly HELP: number
31
+ }
32
+ }
33
+
34
+ declare namespace GTKDialog {
35
+ export interface Events {
36
+ /** A button was pressed or the dialog was closed. */
37
+ response: [response: number]
38
+ }
39
+ }
40
+
41
+ export = GTKDialog
package/lib/dialog.js ADDED
@@ -0,0 +1,37 @@
1
+ const binding = require('../binding')
2
+ const wrap = require('./wrap')
3
+ const GTKWidget = require('./widget')
4
+
5
+ module.exports = exports = class GTKDialog extends GTKWidget {
6
+ static _events = {
7
+ response: binding.DIALOG_EVENT_RESPONSE
8
+ }
9
+
10
+ _eventMask(mask) {
11
+ binding.dialogEventMask(this._tag, mask)
12
+ }
13
+
14
+ addButton(label, response) {
15
+ return wrap(GTKWidget, binding.dialogAddButton(this._tag, label, response))
16
+ }
17
+
18
+ response(response) {
19
+ binding.dialogResponse(this._tag, response)
20
+
21
+ return this
22
+ }
23
+ }
24
+
25
+ exports.RESPONSE = {
26
+ NONE: binding.DIALOG_RESPONSE_NONE,
27
+ REJECT: binding.DIALOG_RESPONSE_REJECT,
28
+ ACCEPT: binding.DIALOG_RESPONSE_ACCEPT,
29
+ DELETE_EVENT: binding.DIALOG_RESPONSE_DELETE_EVENT,
30
+ OK: binding.DIALOG_RESPONSE_OK,
31
+ CANCEL: binding.DIALOG_RESPONSE_CANCEL,
32
+ CLOSE: binding.DIALOG_RESPONSE_CLOSE,
33
+ YES: binding.DIALOG_RESPONSE_YES,
34
+ NO: binding.DIALOG_RESPONSE_NO,
35
+ APPLY: binding.DIALOG_RESPONSE_APPLY,
36
+ HELP: binding.DIALOG_RESPONSE_HELP
37
+ }
@@ -0,0 +1,25 @@
1
+ import GObject = require('./object')
2
+ import GDKClipboard = require('./clipboard')
3
+ import GDKMonitor = require('./monitor')
4
+ import GDKSurface = require('./surface')
5
+
6
+ /** A connection to the display server, as a `GdkDisplay`. */
7
+ interface GDKDisplay extends GObject {
8
+ /** The monitor that most of `surface` is on, or `null`. */
9
+ getMonitorAtSurface(surface: GDKSurface): GDKMonitor | null
10
+
11
+ /** The clipboard used for copy and paste. */
12
+ getClipboard(): GDKClipboard
13
+
14
+ /** The selection that middle click pastes. */
15
+ getPrimaryClipboard(): GDKClipboard
16
+ }
17
+
18
+ declare class GDKDisplay {
19
+ protected constructor()
20
+
21
+ /** The display the app opened, or `null` before GTK is initialised. */
22
+ static getDefault(): GDKDisplay | null
23
+ }
24
+
25
+ export = GDKDisplay