Commit graph

450 commits

Author SHA1 Message Date
Simon Hausmann
308f51add7 Print warnings generated by doc tests 2021-02-02 22:42:02 +01:00
Simon Hausmann
e61529976e Issue warnings when creating bindings against deprecated properties 2021-02-02 22:42:02 +01:00
Olivier Goffart
294cf9bbe3 Convert from literal 0 to any unit-like types
cc #68
2021-02-02 15:38:07 +01:00
Olivier Goffart
cd00da0f24 Fix doctests on windows 2021-02-02 15:34:05 +01:00
Olivier Goffart
f2ab456a7b Test the .60 snippet in the documentation 2021-02-02 14:56:22 +01:00
Olivier Goffart
7613b9231f Rename the rust test driver in a consistant way 2021-02-01 18:45:14 +01:00
Olivier Goffart
50ce2d08fd Split the nodejs and the interpreter test driver 2021-02-01 18:43:48 +01:00
Olivier Goffart
c25f383308 WIP: split interpreter and nodejs 2021-02-01 18:37:24 +01:00
Olivier Goffart
6b20d05efb Move the C++ driver to its own crate 2021-02-01 18:34:49 +01:00
Olivier Goffart
09ce4142a5 Some reorganization of the testdriver 2021-02-01 18:13:19 +01:00
Olivier Goffart
f1491dc724 Remove unused function 2021-02-01 18:13:19 +01:00
Olivier Goffart
efd6a5479c don't make xtask depends on the test driver lib 2021-02-01 18:13:08 +01:00
Simon Hausmann
f33b26fa93 Make Brush compile for C++
A few changes were required:

 * `LinearGradient(LinearGradient)` as enum variant unfortunately
    won't compile because the cbindgen generated constructor
    function (`LinearGradient()`) will try to also instantiate the
    variant type inside (`LinearGradient`) and that won't find the type
    but the function itself and error out. So the inner type is now
    called `LinearGradientBrush`.

 * The same name dance was required for `Color`, where the enum variant
   instead is called `SolidColor`

 * `BrushInner` was removed in favor of just `Brush`. The nicer Rust
    API will be the public variant, and for cbindgen we can just put
    the generated enum into an internal namespace, like we do for
    Resource for example

 * A `NoBrush` variant was added. Maybe that name could be improved?
2021-02-01 16:51:04 +01:00
Simon Hausmann
b90eb04088 Begin with the brush data structure
This patch also adds `extend` to `SharedVector`, for convenience.
2021-02-01 14:45:49 +01:00
Simon Hausmann
b608f3b7c0 Split out the path data structures and functions into a separate module 2021-02-01 13:37:47 +01:00
Simon Hausmann
ee2671fe70 Reduce the size of graphics.rs a little
Split out the color related intos into a module of their own.
2021-02-01 13:22:14 +01:00
Simon Hausmann
326d235ff5 Fix calling focus() on components
Fixes #153
2021-02-01 13:05:08 +01:00
Olivier Goffart
e09fa06226 Fix nested for layouts
Fixes #149
2021-02-01 12:38:56 +01:00
Olivier Goffart
a36edfffbe Change the C++ test API of the send_mouse_click
So that rust and C++ have the same code that can be copy pasted
2021-01-29 16:55:48 +01:00
Olivier Goffart
e2db0e49dc Fix explicit size in box layouts using for
Fixes #147
2021-01-29 16:35:59 +01:00
Olivier Goffart
fea2478859 Update version number everywhere 2021-01-28 16:34:13 +01:00
Olivier Goffart
bed45e879a Upgrade cbindgen 2021-01-28 15:55:27 +01:00
Olivier Goffart
8e8c6ab690 Avoid self-references in the created layout properties
Fixes #140
2021-01-28 15:06:19 +01:00
Simon Hausmann
6a4f2aa572 Added the two missing path sub-elements for quadratic and cubic curves 2021-01-28 14:14:24 +01:00
Simon Hausmann
a6fbc4c05d Add missing MoveTo sub-element for Path 2021-01-28 13:16:25 +01:00
Olivier Goffart
07df517473 Replace $children with @children 2021-01-28 11:55:08 +01:00
Olivier Goffart
23a511b380 Replace img!"..." by @image-url("...") 2021-01-28 11:49:24 +01:00
Simon Hausmann
48b226c017 Fix build after path stroke-width type fix 2021-01-28 09:13:35 +01:00
Simon Hausmann
ab25faa24f Add automatic creation of BoxShadow elements through drop-shadow properties on Rectangles 2021-01-27 19:02:23 +01:00
Simon Hausmann
680995432e Minor fixes to the BoxShadow element
* Use the same property names as `Rectangle`
* Use the same sizing behavior

Also added a "manual" test.
2021-01-27 15:34:27 +01:00
Olivier Goffart
647f7effcd Add TextWrap and TextOverflow enum and corresponding property in Text
Although they ar enot working yet
2021-01-27 11:40:09 +01:00
Olivier Goffart
9de5af75ce Allow FocusScope to reject the events 2021-01-26 17:05:31 +01:00
Olivier Goffart
2e23b5bbdd Handle native callbacks with return value 2021-01-26 17:05:30 +01:00
Simon Hausmann
628e6fdb38 Add a BoxShadow element
This intends to provide a configurable rectangular "drop shadow". The
API is modeled after CSS/HTML5 Canvas where the element can be "bound"
to an existing rectangular shape (geometry and radius), the offset can
be used to place the shadow and color and blur configure the shadow.

The shadow's color fades into transparent.

TODO (in subsequent changes):
 * Documentation
 * Qt implementation
2021-01-26 13:56:12 +01:00
Olivier Goffart
802383cd6b Propagate key event to parent if the item don't handle it
Does not work for C++ because binary compatibility issue
2021-01-26 13:17:04 +01:00
Olivier Goffart
5a21f1bd81 Rename emit_ to call_ for callback
Signal was renamed to Callback, but one does not emit a callback, one calls it
2021-01-25 15:59:10 +01:00
Olivier Goffart
c2dc0cef2c Finish return statement handling 2021-01-25 15:32:00 +01:00
Simon Hausmann
b22bbb1c0f WIP: Implement the return statement 2021-01-25 15:32:00 +01:00
Simon Hausmann
ecedb18333 Fix build
Don't use C++ types as field names for now
2021-01-25 14:40:02 +01:00
Simon Hausmann
d5e72b255a Fix build when structures contain models
The generated code for structs includes #[derive(Debug)],
which requires Debug for all fields. When the field is a ModelHandle
it's up to us to provide an implementation.
2021-01-25 14:20:13 +01:00
Simon Hausmann
f502be9299 Fix nested structures
When the nested structure was only referenced indirectly, we weren't collecting it for code generation.
2021-01-25 14:12:24 +01:00
Simon Hausmann
a69ce3a397 Remove the 'align-' prefix from TextHorizontal/TextVerticalAlignment 2021-01-25 10:59:18 +01:00
Simon Hausmann
2801e82658 Changed the KeyEvent in .60 to be an object
This exposes the text as well as the keyboard modifiers and is a little
more extensible.
2021-01-22 18:05:34 +01:00
Simon Hausmann
ae1178dd55 Make the modifiers simple booleans in the key event
This will give a nicer API to expose to .60. If the struct weren't
repr(C) then the booleans would be nicely packed, but alas that's not
happening. On the other hand we're not keeping many instances of them
around.
2021-01-22 13:47:52 +01:00
Olivier Goffart
f483f2ff6f Don't generate the KeyEvent enum because the destructor is deleted
If we wanted to generate it, we would need to also generate a constructor
and destructor like we do for Resource, for example
2021-01-22 13:23:05 +01:00
Simon Hausmann
9ca87ab312 Simplify KeyEvent
Fold CharacterInput into KeyPressed/KeyReleased and store the "key" as a string.

Also, instead of exposing the KeyCode we're encoding special characters
into the string.
2021-01-22 10:15:05 +01:00
Simon Hausmann
1bf5a56c39 Rename initial-focus to forward-focus 2021-01-20 15:52:58 +01:00
Simon Hausmann
f7ea2a9dce Forward focus() calls on items that have initial-focus defined
This also makes the focus() method available as a member function on any
item, but the resolve_element_reference_in_set_focus_calls() pass will
check if the elements are valid.

The check for `has-focus` to determine a focusable item was replaced
with an annotation on the built-in elements, so that `has-focus` can
later be implemented as a built-in function through the run-time,
without the need for a boolean property.
2021-01-20 14:31:01 +01:00
Olivier Goffart
4af4924567 C++: Fix cbindgen so it can process callback with arguments 2021-01-20 10:25:15 +01:00
Olivier Goffart
094287697a Add a FocusScope
C++ part not working because the Callback with arguments are not yet supported with C++
2021-01-20 10:00:19 +01:00