Commit graph

467 commits

Author SHA1 Message Date
Olivier Goffart
359f42c5f7 Prepare the compiler to be async
This will allow the online editor to load imports from URL asynchroniously later

Since currently the compiler is only working on a single thread, and that we
never await on a future that could block, it is allowed to use the spin_on executor
2020-10-30 15:00:04 +01:00
Olivier Goffart
5face45c51 Rename Component::compute_layout to apply_layout
And pass the expected rectangle.
This is currently not used yet but will be needed when we can have
repeated elements within a box layout
2020-10-29 19:08:52 +01:00
Olivier Goffart
263df7dc63 Remove the www from all sixtyfps.io URL 2020-10-29 11:06:06 +01:00
Olivier Goffart
70d6648880 Remove some remains of code that allowed to use Component as Object 2020-10-27 16:25:21 +01:00
Olivier Goffart
d3801e26d3 Change the syntax of structures to require the struct keyword 2020-10-27 16:09:05 +01:00
Olivier Goffart
333c96fd79 Change Type::Object to be able to hold a name
Internally, structure will be represented with a Type::Object with a name
instead of a Component with a void base type
2020-10-27 16:09:05 +01:00
Olivier Goffart
4a702243d1 Fix C++ layouts 2020-10-27 08:16:02 +01:00
Olivier Goffart
47be71e16d Introduce layout stretching 2020-10-26 16:40:35 +01:00
Olivier Goffart
aeade826fe New runtime implementation for the box layout
Currently only horizontal layout is supported
2020-10-26 14:19:12 +01:00
Olivier Goffart
211fa69ef5 Fix line ending 2020-10-26 14:19:12 +01:00
Olivier Goffart
27a6ff1227 Move Type and related concepts in a different module
Leaving only the TypeRegister in the typeregister module
2020-10-23 11:17:14 +02:00
Olivier Goffart
76b7f1aef6 Allow dashes in identifier
Currenly, dashes are normalized to '_'.
Dashes are not allowed at the begining of an identifier.
If an identifier with a dash is not found, we also look for identifier
without a dash and if that exist, we hint the user to use spaces.

Issue #52
2020-10-22 18:32:25 +02:00
Simon Hausmann
9d146b2b5f Add npm badge also to the node README 2020-10-22 13:30:50 +02:00
Simon Hausmann
008455a106 Include a license file in the node source package 2020-10-22 13:14:56 +02:00
Olivier Goffart
b5b5a24941 Change the verison of sixtyfps-node
Even if it is not published on crates.io, it should have a version that matches
sixtyfps version
2020-10-22 09:35:35 +02:00
Olivier Goffart
20cfb65e53 Bump version 2020-10-22 08:41:45 +02:00
Simon Hausmann
fae046cef4
Small typo fix 2020-10-21 21:35:45 +02:00
Simon Hausmann
68e35ab332 Fix removing todo items in node
After removal the index is wrong and I mistakely thought entries() adjuts.
2020-10-21 14:18:33 +02:00
Simon Hausmann
c59b1e61ac Fix a bug in sixtyfps.ArrayModel.remove
Report the correct index/size to the runtime.

Also added convenience entries()/values() functions that forward to the array.
2020-10-21 13:48:13 +02:00
Olivier Goffart
ac6d4007ab Node: Add setHandler features on signals 2020-10-21 12:22:22 +02:00
Olivier Goffart
c50b9d73d3 Document the generated C++ code 2020-10-21 11:29:25 +02:00
Simon Hausmann
e7d8455c49 Some more array model docs 2020-10-21 11:26:18 +02:00
Simon Hausmann
27972145a7 Add some documentation to the Model and ModelPeer
Also in this change:

 * Make ArrayModel<T> implement Model<T>.
 * Switch from jsdoc/better-docs to typedoc, which has much better
   support for type annotations.
2020-10-21 11:14:24 +02:00
Olivier Goffart
45e8c94535 Some more documentation for the rust backend 2020-10-21 10:35:42 +02:00
Simon Hausmann
0c8fcb5f7a Some edits to the type mappings section of the node docs
Also use a consistent section title throughout.
2020-10-21 09:44:21 +02:00
Olivier Goffart
a2a134725f Pin corrosion git hash
Because otherwise there could be breaking changes
2020-10-21 09:12:59 +02:00
Simon Hausmann
4f4d2b10e9 Add missing license tag 2020-10-20 18:18:24 +02:00
Simon Hausmann
e0e7aa1a91 Small typo fix
Missing letter :)
2020-10-20 18:11:01 +02:00
Simon Hausmann
8f73259cf6 Minor edit
Avoid "easy" as that may be perceived as patronizing.
2020-10-20 18:10:23 +02:00
Olivier Goffart
0c253efb0d Some changes in the rust documentation and its README 2020-10-20 18:02:28 +02:00
Simon Hausmann
f6d8f78e3f Hide the private API of the NodeJS integration
Hide it behind a `private_api` property in the module export.
2020-10-20 16:52:28 +02:00
Simon Hausmann
ce7d0c98e0 Use a base class for components in the Node API
In the event that a property is called "show" this theoretically still allows calling the show function through the
prototype chain.
2020-10-20 16:46:38 +02:00
Simon Hausmann
7905285562 Change the Model API for the NodeJS Integration to use CamelCase 2020-10-20 16:40:49 +02:00
Simon Hausmann
890c4450e0 Some updates to the Node README
* Bring the start in line with the C++ README
* Add an Install section (brief)
* Turn the "tutorial" into a "Using" section with "hello world"
2020-10-20 16:18:45 +02:00
Simon Hausmann
279ce560f9 Convert NodeJS API to use & export TypeScript
This will make the types available to API consumers and makes the
documentation clearer.
2020-10-20 15:57:50 +02:00
Simon Hausmann
c0ffb96166 Minor cleanup in the better-docs template
Provide a link to the Github page in the navigation bar and hide the generator footer.
2020-10-20 11:46:48 +02:00
Simon Hausmann
29a9466e73 Don't include sources in the JS docs
It shouldn't be needed
2020-10-20 11:42:42 +02:00
Simon Hausmann
b6466eaa9e Expose the array model as an ecmascript class
This allows documenting it easily with JSDoc
2020-10-20 11:03:03 +02:00
Simon Hausmann
1fe2850461 Boilerlate for what could be API docs for node 2020-10-20 08:38:33 +02:00
Olivier Goffart
65ec7e9b7d Fix panic on parse error
Properly report the errors instead.

The later passes panic if the AST is not well formed
2020-10-19 19:43:13 +02:00
Olivier Goffart
1de39e5769 String concatenation 2020-10-19 18:37:15 +02:00
Simon Hausmann
3b051f2176 Clarify hexadecimal color encoding
We parse hex colors as per CSS, including the #RRGGBBAA variant, as per
https://www.w3.org/TR/css-color-4/#hex-notation . This is now documented
and the JS conversion also generates that instead of #AARRGGBB.
2020-10-19 16:38:58 +02:00
Olivier Goffart
f6edfb5e8e Some documentation 2020-10-17 16:46:45 +02:00
Olivier Goffart
14198052ac ArrayModel support in JS 2020-10-17 13:33:22 +02:00
Simon Hausmann
071ab9fda1 Prepare for use of percentages as widths in layouts
Delay the conversion of percentage to the float to code generation type
by inserting the multiplication into the syntax tree. That way we will
be able to detect plain uses of percetages and interpret them
differently.
2020-10-16 15:38:35 +02:00
Olivier Goffart
cdc6a34eaf Support for array in JS 2020-10-16 12:58:27 +02:00
Olivier Goffart
3ea524694e Support for color in JS (as string) 2020-10-16 12:58:27 +02:00
Olivier Goffart
67dddd69e7 JS: implement conversion to Type::Object 2020-10-16 12:58:27 +02:00
Olivier Goffart
e4e601de83 Draw the frame properly around the native scrollview 2020-10-16 10:45:17 +02:00
Simon Hausmann
6aa292eac1 Change the names of the logical and physical pixel units
The logical pixels are now just called "px" and the less frequently
used physical pixels have the "phx" suffix.

The existing markup was adapted using the syntax updater and the
following patch:

    +    if node.kind() == SyntaxKind::NumberLiteral {
    +        if node.text().ends_with("lx") {
    +            return write!(
    +                file,
    +                "{}px",
    +                node.text().as_str().split_at(node.text().as_str().len() - 2).0
    +            );
    +        }
    +        if node.text().ends_with("px") {
    +            return write!(
    +                file,
    +                "{}phx",
    +                node.text().as_str().split_at(node.text().as_str().len() - 2).0
    +            );
    +        }
    +    }

Fixes #49
2020-10-16 07:19:40 +02:00