1// Copyright © SixtyFPS GmbH <info@slint.dev>
2// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
3
4//! This module contains all enums exposed in the .slint language.
5
6// cSpell: ignore evenodd grabbable horizontalbox horizontallayout nesw standardbutton standardtableview verticalbox verticallayout
7
8/// Call a macro with every enum exposed in the .slint language
9///
10/// ## Example
11/// ```rust
12/// macro_rules! print_enums {
13/// ($( $(#[$enum_doc:meta])* enum $Name:ident { $( $(#[$value_doc:meta])* $Value:ident,)* })*) => {
14/// $(println!("{} => [{}]", stringify!($Name), stringify!($($Value),*));)*
15/// }
16/// }
17/// i_slint_common::for_each_enums!(print_enums);
18/// ```
19#[macro_export]
20macro_rules! for_each_enums {
21 ($macro:ident) => {
22 $macro![
23 /// This enum describes the different types of alignment of text along the horizontal axis of a `Text` element.
24 enum TextHorizontalAlignment {
25 /// The text will be aligned with the left edge of the containing box.
26 Left,
27 /// The text will be horizontally centered within the containing box.
28 Center,
29 /// The text will be aligned to the right of the containing box.
30 Right,
31 }
32
33 /// This enum describes the different types of alignment of text along the vertical axis of a `Text` element.
34 enum TextVerticalAlignment {
35 /// The text will be aligned to the top of the containing box.
36 Top,
37 /// The text will be vertically centered within the containing box.
38 Center,
39 /// The text will be aligned to the bottom of the containing box.
40 Bottom,
41 }
42
43 /// This enum describes the how the text wrap if it is too wide to fit in the `Text` width.
44 enum TextWrap {
45 /// The text won't wrap, but instead will overflow.
46 NoWrap,
47 /// The text will be wrapped at word boundaries if possible, or at any location for very long words.
48 WordWrap,
49 /// The text will be wrapped at any character. Currently only supported by the Qt and Software renderers.
50 CharWrap,
51 }
52
53 /// This enum describes the how the text appear if it is too wide to fit in the `Text` width.
54 enum TextOverflow {
55 /// The text will simply be clipped.
56 Clip,
57 /// The text will be elided with `…`.
58 Elide,
59 }
60
61 /// This enum describes the positioning of a text stroke relative to the border of the glyphs in a `Text`.
62 enum TextStrokeStyle {
63 /// The inside edge of the stroke is at the outer edge of the text.
64 Outside,
65 /// The center line of the stroke is at the outer edge of the text, like in Adobe Illustrator.
66 Center,
67 }
68
69 /// This enum describes whether an event was rejected or accepted by an event handler.
70 enum EventResult {
71 /// The event is rejected by this event handler and may then be handled by the parent item
72 Reject,
73 /// The event is accepted and won't be processed further
74 Accept,
75 }
76
77 /// This enum describes the different ways of deciding what the inside of a shape described by a path shall be.
78 enum FillRule {
79 /// The ["nonzero" fill rule as defined in SVG](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule#nonzero).
80 Nonzero,
81 /// The ["evenodd" fill rule as defined in SVG](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule#evenodd)
82 Evenodd,
83 }
84
85 /// Use this enum to add standard buttons to a `Dialog`. The look and positioning
86 /// of these `StandardButton`s depends on the environment
87 /// (OS, UI environment, etc.) the application runs in.
88 enum StandardButtonKind {
89 /// A "OK" button that accepts a `Dialog`, closing it when clicked.
90 Ok,
91 /// A "Cancel" button that rejects a `Dialog`, closing it when clicked.
92 Cancel,
93 /// A "Apply" button that should accept values from a
94 /// `Dialog` without closing it.
95 Apply,
96 /// A "Close" button, which should close a `Dialog` without looking at values.
97 Close,
98 /// A "Reset" button, which should reset the `Dialog` to its initial state.
99 Reset,
100 /// A "Help" button, which should bring up context related documentation when clicked.
101 Help,
102 /// A "Yes" button, used to confirm an action.
103 Yes,
104 /// A "No" button, used to deny an action.
105 No,
106 /// A "Abort" button, used to abort an action.
107 Abort,
108 /// A "Retry" button, used to retry a failed action.
109 Retry,
110 /// A "Ignore" button, used to ignore a failed action.
111 Ignore,
112 }
113
114 /// This enum represents the value of the `dialog-button-role` property which can be added to
115 /// any element within a `Dialog` to put that item in the button row, and its exact position
116 /// depends on the role and the platform.
117 enum DialogButtonRole {
118 /// This isn't a button meant to go into the bottom row
119 None,
120 /// This is the role of the main button to click to accept the dialog. e.g. "Ok" or "Yes"
121 Accept,
122 /// This is the role of the main button to click to reject the dialog. e.g. "Cancel" or "No"
123 Reject,
124 /// This is the role of the "Apply" button
125 Apply,
126 /// This is the role of the "Reset" button
127 Reset,
128 /// This is the role of the "Help" button
129 Help,
130 /// This is the role of any other button that performs another action.
131 Action,
132 }
133
134 /// The enum reports what happened to the `PointerEventButton` in the event
135 enum PointerEventKind {
136 /// The action was cancelled.
137 Cancel,
138 /// The button was pressed.
139 Down,
140 /// The button was released.
141 Up,
142 /// The pointer has moved,
143 Move,
144 }
145
146 /// This enum describes the different types of buttons for a pointer event,
147 /// typically on a mouse or a pencil.
148 #[non_exhaustive]
149 enum PointerEventButton {
150 /// A button that is none of left, right, middle, back or forward. For example,
151 /// this is used for the task button on a mouse with many buttons.
152 Other,
153 /// The left button.
154 Left,
155 /// The right button.
156 Right,
157 /// The center button.
158 Middle,
159 /// The back button.
160 Back,
161 /// The forward button.
162 Forward,
163 }
164
165 /// This enum represents different types of mouse cursors. It's a subset of the mouse cursors available in CSS.
166 /// For details and pictograms see the [MDN Documentation for cursor](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#values).
167 /// Depending on the backend and used OS unidirectional resize cursors may be replaced with bidirectional ones.
168 enum MouseCursor {
169 /// The systems default cursor.
170 Default,
171 /// No cursor is displayed.
172 None,
173 //context_menu,
174 /// A cursor indicating help information.
175 Help,
176 /// A pointing hand indicating a link.
177 Pointer,
178 /// The program is busy but can still be interacted with.
179 Progress,
180 /// The program is busy.
181 Wait,
182 //cell,
183 /// A crosshair.
184 Crosshair,
185 /// A cursor indicating selectable text.
186 Text,
187 //vertical_text,
188 /// An alias or shortcut is being created.
189 Alias,
190 /// A copy is being created.
191 Copy,
192 /// Something is to be moved.
193 Move,
194 /// Something can't be dropped here.
195 NoDrop,
196 /// An action isn't allowed
197 NotAllowed,
198 /// Something is grabbable.
199 Grab,
200 /// Something is being grabbed.
201 Grabbing,
202 //all_scroll,
203 /// Indicating that a column is resizable horizontally.
204 ColResize,
205 /// Indicating that a row is resizable vertically.
206 RowResize,
207 /// Unidirectional resize north.
208 NResize,
209 /// Unidirectional resize east.
210 EResize,
211 /// Unidirectional resize south.
212 SResize,
213 /// Unidirectional resize west.
214 WResize,
215 /// Unidirectional resize north-east.
216 NeResize,
217 /// Unidirectional resize north-west.
218 NwResize,
219 /// Unidirectional resize south-east.
220 SeResize,
221 /// Unidirectional resize south-west.
222 SwResize,
223 /// Bidirectional resize east-west.
224 EwResize,
225 /// Bidirectional resize north-south.
226 NsResize,
227 /// Bidirectional resize north-east-south-west.
228 NeswResize,
229 /// Bidirectional resize north-west-south-east.
230 NwseResize,
231 //zoom_in,
232 //zoom_out,
233 }
234
235 /// This enum defines how the source image shall fit into an `Image` element.
236 enum ImageFit {
237 /// Scales and stretches the source image to fit the width and height of the `Image` element.
238 Fill,
239 /// The source image is scaled to fit into the `Image` element's dimension while preserving the aspect ratio.
240 Contain,
241 /// The source image is scaled to cover into the `Image` element's dimension while preserving the aspect ratio.
242 /// If the aspect ratio of the source image doesn't match the element's one, then the image will be clipped to fit.
243 Cover,
244 /// Preserves the size of the source image in logical pixels.
245 /// The source image will still be scaled by the scale factor that applies to all elements in the window.
246 /// Any extra space will be left blank.
247 Preserve,
248 }
249
250 /// This enum specifies the horizontal alignment of the source image.
251 enum ImageHorizontalAlignment {
252 /// Aligns the source image at the center of the `Image` element.
253 Center,
254 /// Aligns the source image at the left of the `Image` element.
255 Left,
256 /// Aligns the source image at the right of the `Image` element.
257 Right,
258 }
259
260 /// This enum specifies the vertical alignment of the source image.
261 enum ImageVerticalAlignment {
262 /// Aligns the source image at the center of the `Image` element.
263 Center,
264 /// Aligns the source image at the top of the `Image` element.
265 Top,
266 /// Aligns the source image at the bottom of the `Image` element.
267 Bottom,
268 }
269
270 /// This enum specifies how the source image will be scaled.
271 enum ImageRendering {
272 /// The image is scaled with a linear interpolation algorithm.
273 Smooth,
274 /// The image is scaled with the nearest neighbor algorithm.
275 Pixelated,
276 }
277
278 /// This enum specifies how the source image will be tiled.
279 enum ImageTiling {
280 /// The source image will not be tiled.
281 None,
282 /// The source image will be repeated to fill the `Image` element.
283 Repeat,
284 /// The source image will be repeated and scaled to fill the `Image` element, ensuring an integer number of repetitions.
285 Round,
286 }
287
288 /// This enum is used to define the type of the input field.
289 #[non_exhaustive]
290 enum InputType {
291 /// The default value. This will render all characters normally
292 Text,
293 /// This will render all characters with a character that defaults to "*"
294 Password,
295 /// This will only accept and render number characters (0-9)
296 Number,
297 /// This will accept and render characters if it's valid part of a decimal
298 Decimal,
299 }
300
301 /// Enum representing the `alignment` property of a
302 /// `HorizontalBox`, a `VerticalBox`,
303 /// a `HorizontalLayout`, or `VerticalLayout`.
304 enum LayoutAlignment {
305 /// Use the minimum size of all elements in a layout, distribute remaining space
306 /// based on `*-stretch` among all elements.
307 Stretch,
308 /// Use the preferred size for all elements, distribute remaining space evenly before the
309 /// first and after the last element.
310 Center,
311 /// Use the preferred size for all elements, put remaining space after the last element.
312 Start,
313 /// Use the preferred size for all elements, put remaining space before the first
314 /// element.
315 End,
316 /// Use the preferred size for all elements, distribute remaining space evenly between
317 /// elements.
318 SpaceBetween,
319 /// Use the preferred size for all elements, distribute remaining space evenly before the
320 /// first element, after the last element and between elements.
321 SpaceAround,
322 }
323
324 /// PathEvent is a low-level data structure describing the composition of a path. Typically it is
325 /// generated at compile time from a higher-level description, such as SVG commands.
326 enum PathEvent {
327 /// The beginning of the path.
328 Begin,
329 /// A straight line on the path.
330 Line,
331 /// A quadratic bezier curve on the path.
332 Quadratic,
333 /// A cubic bezier curve on the path.
334 Cubic,
335 /// The end of the path that remains open.
336 EndOpen,
337 /// The end of a path that is closed.
338 EndClosed,
339 }
340
341 /// This enum represents the different values for the `accessible-role` property, used to describe the
342 /// role of an element in the context of assistive technology such as screen readers.
343 #[non_exhaustive]
344 enum AccessibleRole {
345 /// The element isn't accessible.
346 None,
347 /// The element is a `Button` or behaves like one.
348 Button,
349 /// The element is a `CheckBox` or behaves like one.
350 Checkbox,
351 /// The element is a `ComboBox` or behaves like one.
352 Combobox,
353 /// The element is a `GroupBox` or behaves like one.
354 Groupbox,
355 /// The element is an `Image` or behaves like one. This is automatically applied to `Image` elements.
356 Image,
357 /// The element is a `ListView` or behaves like one.
358 List,
359 /// The element is a `Slider` or behaves like one.
360 Slider,
361 /// The element is a `SpinBox` or behaves like one.
362 Spinbox,
363 /// The element is a `Tab` or behaves like one.
364 Tab,
365 /// The element is similar to the tab bar in a `TabWidget`.
366 TabList,
367 /// The element is a container for tab content.
368 TabPanel,
369 /// The role for a `Text` element. This is automatically applied to `Text` elements.
370 Text,
371 /// The role for a `TableView` or behaves like one.
372 Table,
373 /// The role for a TreeView or behaves like one. (Not provided yet)
374 Tree,
375 /// The element is a `ProgressIndicator` or behaves like one.
376 ProgressIndicator,
377 /// The role for widget with editable text such as a `LineEdit` or a `TextEdit`.
378 /// This is automatically applied to `TextInput` elements.
379 TextInput,
380 /// The element is a `Switch` or behaves like one.
381 Switch,
382 /// The element is an item in a `ListView`.
383 ListItem,
384 }
385
386 /// This enum represents the different values of the `sort-order` property.
387 /// It's used to sort a `StandardTableView` by a column.
388 enum SortOrder {
389 /// The column is unsorted.
390 Unsorted,
391
392 /// The column is sorted in ascending order.
393 Ascending,
394
395 /// The column is sorted in descending order.
396 Descending,
397 }
398
399 /// Represents the orientation of an element or widget such as the `Slider`.
400 enum Orientation {
401 /// Element is oriented horizontally.
402 Horizontal,
403 /// Element is oriented vertically.
404 Vertical,
405 }
406
407 /// This enum indicates the color scheme used by the widget style. Use this to explicitly switch
408 /// between dark and light schemes, or choose Unknown to fall back to the system default.
409 enum ColorScheme {
410 /// The scheme is not known and a system wide setting configures this. This could mean that
411 /// the widgets are shown in a dark or light scheme, but it could also be a custom color scheme.
412 Unknown,
413 /// The style chooses light colors for the background and dark for the foreground.
414 Dark,
415 /// The style chooses dark colors for the background and light for the foreground.
416 Light,
417 }
418
419 /// This enum describes the direction of an animation.
420 enum AnimationDirection {
421 /// The ["normal" direction as defined in CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction#normal).
422 Normal,
423 /// The ["reverse" direction as defined in CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction#reverse).
424 Reverse,
425 /// The ["alternate" direction as defined in CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction#alternate).
426 Alternate,
427 /// The ["alternate reverse" direction as defined in CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction#alternate-reverse).
428 AlternateReverse,
429 }
430
431 /// This enum describes the scrollbar visibility
432 enum ScrollBarPolicy {
433 /// Scrollbar will be visible only when needed
434 AsNeeded,
435 /// Scrollbar never shown
436 AlwaysOff,
437 /// Scrollbar always visible
438 AlwaysOn,
439 }
440
441 // This enum describes the close behavior of `PopupWindow`
442 enum PopupClosePolicy {
443 /// Closes the `PopupWindow` when user clicks or presses the escape key.
444 CloseOnClick,
445
446 /// Closes the `PopupWindow` when user clicks outside of the popup or presses the escape key.
447 CloseOnClickOutside,
448
449 /// Does not close the `PopupWindow` automatically when user clicks.
450 NoAutoClose,
451 }
452
453 /// This enum describes the appearance of the ends of stroked paths.
454 enum LineCap {
455 /// The stroke ends with a flat edge that is perpendicular to the path.
456 Butt,
457 /// The stroke ends with a rounded edge.
458 Round,
459 /// The stroke ends with a square projection beyond the path.
460 Square,
461 }
462 ];
463 };
464}
465

Provided by KDAB

Privacy Policy