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.
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
package/lib/viewport.h ADDED
@@ -0,0 +1,151 @@
1
+ #ifndef BARE_GTK_VIEWPORT_H
2
+ #define BARE_GTK_VIEWPORT_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_viewport_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
+ GtkWidget *viewport = gtk_viewport_new(NULL, NULL);
20
+
21
+ js_value_t *result;
22
+ err = js_create_uint32(env, bare_gobject_tag(state->registry, viewport), &result);
23
+ assert(err == 0);
24
+
25
+ return result;
26
+ }
27
+
28
+ static js_value_t *
29
+ bare_gtk_viewport_child(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 == 1 || argc == 2);
40
+
41
+ GtkViewport *viewport;
42
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "viewport", (gpointer *) &viewport);
43
+ if (err < 0) return NULL;
44
+
45
+ if (argc == 1) {
46
+ GtkWidget *child = gtk_viewport_get_child(viewport);
47
+
48
+ js_value_t *result;
49
+
50
+ if (child == NULL) {
51
+ err = js_get_null(env, &result);
52
+ assert(err == 0);
53
+ } else {
54
+ err = js_create_uint32(env, bare_gobject_tag(state->registry, child), &result);
55
+ assert(err == 0);
56
+ }
57
+
58
+ return result;
59
+ }
60
+
61
+ js_value_type_t type;
62
+ err = js_typeof(env, argv[1], &type);
63
+ assert(err == 0);
64
+
65
+ if (type == js_null) {
66
+ gtk_viewport_set_child(viewport, NULL);
67
+
68
+ return NULL;
69
+ }
70
+
71
+ GtkWidget *child;
72
+ err = bare_gobject_read_tag(env, state->registry, argv[1], "child", (gpointer *) &child);
73
+ if (err < 0) return NULL;
74
+
75
+ gtk_viewport_set_child(viewport, child);
76
+
77
+ return NULL;
78
+ }
79
+
80
+ // The scroll policy decides whether the child gets its minimum size along an
81
+ // axis or the size it asked for. A child that reports a minimum of zero, as a
82
+ // placed layout does, has nothing to scroll by default.
83
+ static js_value_t *
84
+ bare_gtk_viewport_hscroll_policy(js_env_t *env, js_callback_info_t *info) {
85
+ int err;
86
+
87
+ size_t argc = 2;
88
+ js_value_t *argv[2];
89
+
90
+ bare_gtk_state_t *state;
91
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
92
+ assert(err == 0);
93
+
94
+ assert(argc == 1 || argc == 2);
95
+
96
+ GtkViewport *viewport;
97
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "viewport", (gpointer *) &viewport);
98
+ if (err < 0) return NULL;
99
+
100
+ if (argc == 1) {
101
+ js_value_t *result;
102
+ err = js_create_uint32(env, gtk_scrollable_get_hscroll_policy(GTK_SCROLLABLE(viewport)), &result);
103
+ assert(err == 0);
104
+
105
+ return result;
106
+ }
107
+
108
+ uint32_t policy;
109
+ err = bare_gtk__read_uint32(env, argv[1], "policy", &policy);
110
+ if (err < 0) return NULL;
111
+
112
+ gtk_scrollable_set_hscroll_policy(GTK_SCROLLABLE(viewport), policy);
113
+
114
+ return NULL;
115
+ }
116
+
117
+ static js_value_t *
118
+ bare_gtk_viewport_vscroll_policy(js_env_t *env, js_callback_info_t *info) {
119
+ int err;
120
+
121
+ size_t argc = 2;
122
+ js_value_t *argv[2];
123
+
124
+ bare_gtk_state_t *state;
125
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
126
+ assert(err == 0);
127
+
128
+ assert(argc == 1 || argc == 2);
129
+
130
+ GtkViewport *viewport;
131
+ err = bare_gobject_read_tag(env, state->registry, argv[0], "viewport", (gpointer *) &viewport);
132
+ if (err < 0) return NULL;
133
+
134
+ if (argc == 1) {
135
+ js_value_t *result;
136
+ err = js_create_uint32(env, gtk_scrollable_get_vscroll_policy(GTK_SCROLLABLE(viewport)), &result);
137
+ assert(err == 0);
138
+
139
+ return result;
140
+ }
141
+
142
+ uint32_t policy;
143
+ err = bare_gtk__read_uint32(env, argv[1], "policy", &policy);
144
+ if (err < 0) return NULL;
145
+
146
+ gtk_scrollable_set_vscroll_policy(GTK_SCROLLABLE(viewport), policy);
147
+
148
+ return NULL;
149
+ }
150
+
151
+ #endif // BARE_GTK_VIEWPORT_H
@@ -0,0 +1,38 @@
1
+ const binding = require('../binding')
2
+ const GTKWidget = require('./widget')
3
+ const wrap = require('./wrap')
4
+ const { hold, drop } = require('./reachable')
5
+
6
+ module.exports = exports = class GTKViewport extends GTKWidget {
7
+ _init() {
8
+ return binding.viewportInit()
9
+ }
10
+
11
+ get child() {
12
+ return wrap(GTKWidget, binding.viewportChild(this._tag))
13
+ }
14
+
15
+ set child(child) {
16
+ drop(this, this.child)
17
+
18
+ binding.viewportChild(this._tag, child === null ? null : child._tag)
19
+
20
+ hold(this, child)
21
+ }
22
+
23
+ get hscrollPolicy() {
24
+ return binding.viewportHscrollPolicy(this._tag)
25
+ }
26
+
27
+ set hscrollPolicy(policy) {
28
+ binding.viewportHscrollPolicy(this._tag, policy)
29
+ }
30
+
31
+ get vscrollPolicy() {
32
+ return binding.viewportVscrollPolicy(this._tag)
33
+ }
34
+
35
+ set vscrollPolicy(policy) {
36
+ binding.viewportVscrollPolicy(this._tag, policy)
37
+ }
38
+ }
@@ -0,0 +1,102 @@
1
+ import GObject = require('./object')
2
+ import GDKCursor = require('./cursor')
3
+ import GTKEventController = require('./event-controller')
4
+ import GTKLayoutManager = require('./layout-manager')
5
+
6
+ /** The base of every widget, as a `GtkWidget`. */
7
+ interface GTKWidget<M extends Record<keyof M, unknown[]> = {}> extends GObject<M> {
8
+ /** Whether the widget is shown. */
9
+ visible: boolean
10
+
11
+ /** How opaque the widget is, from 0 to 1. */
12
+ opacity: number
13
+
14
+ /** Whether content that does not fit is shown or clipped, as an `OVERFLOW_*` constant. */
15
+ overflow: number
16
+
17
+ /** The smallest size the widget asks for, as `[width, height]`. -1 means no request. */
18
+ get sizeRequest(): [width: number, height: number]
19
+ set sizeRequest(size: [width: number, height: number])
20
+
21
+ /** How many device pixels the widget has per logical pixel. */
22
+ readonly scaleFactor: number
23
+
24
+ /** The nearest widget above this one with a surface of its own, such as a window, or `null`. */
25
+ readonly native: GTKWidget | null
26
+
27
+ readonly parent: GTKWidget | null
28
+
29
+ readonly firstChild: GTKWidget | null
30
+
31
+ readonly lastChild: GTKWidget | null
32
+
33
+ readonly nextSibling: GTKWidget | null
34
+
35
+ readonly prevSibling: GTKWidget | null
36
+
37
+ /** What places the children of the widget, or `null` for the default of its type. */
38
+ layoutManager: GTKLayoutManager | null
39
+
40
+ /** The width the widget was given in the last layout. */
41
+ readonly width: number
42
+
43
+ /** The height the widget was given in the last layout. */
44
+ readonly height: number
45
+
46
+ /** Whether the widget can be the target of pointer events. */
47
+ canTarget: boolean
48
+
49
+ /** The cursor shown over the widget, or `null` for the cursor of its parent. */
50
+ cursor: GDKCursor | null
51
+
52
+ /** Whether the widget responds to input. */
53
+ sensitive: boolean
54
+
55
+ /** Move the keyboard focus to the widget. Returns whether it took it. */
56
+ grabFocus(): boolean
57
+
58
+ /** Set which widget in this root has the focus, or `null` to take it away from all of them. */
59
+ setRootFocus(widget: GTKWidget | null): this
60
+
61
+ addCssClass(name: string): this
62
+
63
+ removeCssClass(name: string): this
64
+
65
+ hasCssClass(name: string): boolean
66
+
67
+ /** Show the cursor called `name`, such as `'pointer'` or `'text'`. */
68
+ setCursorFromName(name: string): this
69
+
70
+ /**
71
+ * Ask how big the widget wants to be along `orientation`, an `ORIENTATION_*` constant, given
72
+ * `forSize` along the other axis. -1, the default, means any size.
73
+ */
74
+ measure(
75
+ orientation: number,
76
+ forSize?: number
77
+ ): [minimum: number, natural: number, minimumBaseline: number, naturalBaseline: number]
78
+
79
+ /** The bounds of the widget in the coordinates of `target`, or `null` if they are unrelated. */
80
+ computeBounds(target: GTKWidget): [x: number, y: number, width: number, height: number] | null
81
+
82
+ /** Add the widget to `parent`, after `previousSibling`, or first when that is `null`. */
83
+ insertAfter(parent: GTKWidget, previousSibling?: GTKWidget | null): this
84
+
85
+ /** Add the widget to `parent`, before `nextSibling`, or last when that is `null`. */
86
+ insertBefore(parent: GTKWidget, nextSibling?: GTKWidget | null): this
87
+
88
+ /** Add a controller that reports input on the widget. Returns `controller`. */
89
+ addController<C extends GTKEventController<any>>(controller: C): C
90
+
91
+ /** Remove a controller added with `addController()`. Returns `controller`. */
92
+ removeController<C extends GTKEventController<any>>(controller: C): C
93
+
94
+ /** Remove the widget from its parent. */
95
+ unparent(): this
96
+ }
97
+
98
+ declare class GTKWidget<M extends Record<keyof M, unknown[]> = {}> {
99
+ protected constructor()
100
+ }
101
+
102
+ export = GTKWidget