Commit graph

199 commits

Author SHA1 Message Date
James Westman
f78478bea1 validation: Writable/construct-only properties
Add two new errors, one for non-writable properties and another for
binding construct-only properties.
2022-04-28 22:52:30 -05:00
James Westman
4e2501c7d7
Fix number parsing 2022-04-18 20:22:29 -05:00
James Westman
e76bff9291
Fix crash in parser
The Until parse node would return True if it reached EOF, which was not
correct and could cause other parse nodes to run past the end of the
token list and crash.
2022-04-18 17:34:02 -05:00
James Westman
417f163a5a
Fix crash in flags value for unchecked classes 2022-04-18 15:42:55 -05:00
James Westman
3f8b38d219
Fix crash in action widget syntax 2022-04-18 15:35:19 -05:00
James Westman
4cf966eafa tests: Add GTK directive error tests 2022-03-28 14:38:05 -05:00
James Westman
f197e68589 Use cached_property instead of a custom decorator 2022-03-28 14:38:05 -05:00
James Westman
a4ffdd944f language: a11y: Fix property names
Blueprint uses underscores in property/state/relation names, but
GtkBuilder expects dashes because it uses the glib names from the
GtkAccessible* enums.
2022-03-28 14:38:05 -05:00
James Westman
d73c83aa63 decompiler: Allow and ignore <placeholder/>
Some existing files contain <placeholder/> tags, which should be
permitted but ignored.
2022-03-28 14:34:27 -05:00
James Westman
3f37380c25
tests: Test that docs & completions don't crash 2022-03-19 18:16:25 -05:00
James Westman
6576e02837
lsp: Report warnings correctly
Previously all diagnostics had the "error" severity, now warnings are
correctly reported as such
2022-03-15 23:06:45 -05:00
James Westman
93f2a27e35
completions: Add Gtk class completions
Fixes #49
2022-03-12 18:00:01 -06:00
James Westman
e6ad51c682
Show docs for flag values 2022-03-04 15:06:13 -06:00
James Westman
8ea06e8a78
Add validation for flag values 2022-03-02 14:06:57 -06:00
James Westman
bebe784d1d
Fix type check for flags when only one is present
When only one flag is specified, it's parsed as an IdentValue rather
than a FlagsValue, so IdentValue needs to be able to type check flags
(aka bitfields) properly.

Fixes #47
2022-03-02 13:57:30 -06:00
James Westman
4b42016837 Fix bug with inline menus
Fixes #44
2022-02-21 14:12:56 -06:00
Gleb Smirnov
cfa7278568
perf: cache action widgets to don't recalculate it 2022-02-19 12:59:42 +03:00
Gleb Smirnov
bb3f87ae51
fix: use cached_property instead of cache and property 2022-02-19 12:52:34 +03:00
Gleb Smirnov
4103ad3e71
fix: allow adding action widgets to GtkInfoBar 2022-02-19 12:51:34 +03:00
Gleb Smirnov
736681a841
feat: add syntax for GtkDialog's action widgets 2022-02-18 19:03:41 +03:00
James Westman
9873a2072b Add warning for sync-create 2022-02-09 15:39:02 -06:00
James Westman
32d4769f65 Change sync-create to no-sync-create
Fixes #31
2022-02-09 15:39:02 -06:00
James Westman
3bdcc83c4e tokenizer: Remove redundant token types 2022-02-09 15:24:56 -06:00
James Westman
bac008296a
fix imports 2022-01-29 21:08:55 -06:00
James Westman
cb35acad17 Fix mypy issues 2022-01-28 14:07:29 -06:00
James Westman
1150ae1a09 reorganization: Move decompilers 2022-01-26 22:55:27 -06:00
James Westman
ee5f32622f reorganization: Finish moving parsing and AST 2022-01-26 22:37:51 -06:00
James Westman
8f9de81e24 reorganization: Move hooks to common.py
This allows them to be referenced before they are filled, helping avoid
circular dependencies.
2022-01-26 14:50:36 -06:00
James Westman
34f525beaa reorganization: Rename extensions -> language
I want all language elements to be defined in the same folder, rather
than having the "core" language split by parsing/AST/completions and the rest
split by language element.
2022-01-26 14:10:39 -06:00
James Westman
76f7befd68
parser: Shorter code for groups
Add a "grammar" property on AstNode types so they can be used in grammar
expressions as groups
2022-01-24 14:43:00 -06:00
James Westman
8d587b62a0
parser: Simplify parser construction
- Replace several different parse nodes with Match, which matches the
  exact text of a token but not the token type
- Allow arrays to be used in place of Sequence
2022-01-24 14:42:44 -06:00
Gleb Smirnov
e4283ed0c1 fix: replace non-existing bind flag with existing one
Replace non-existing `after` binding flag with `invert-boolean` flag. Use `inverted` name for convenience.
2022-01-24 20:35:31 +00:00
Gleb Smirnov
8a545d596b
feat: add support of internal children 2022-01-22 09:42:49 +03:00
Gleb Smirnov
1bd7c37061
fix: replace underscore with dash in XML attributes 2022-01-22 09:34:41 +03:00
Gleb Smirnov
98bb9e3008 fix: don't check on confusing object ID in signal node 2022-01-17 05:37:17 +00:00
Gleb Smirnov
4d3c2569c4 decompiler: add support for signal's object attribute 2022-01-17 05:37:17 +00:00
Gleb Smirnov
bce852020c feat: add support for signal's object attribute
Closes a half of #26
2022-01-17 05:37:17 +00:00
James Westman
6b78338d1a
Make template parent optional
Not recommended, since you lose some type checking.
2022-01-16 21:08:16 -06:00
James Westman
1897478480
tests: Exclude lines from coverage
Exclude things like "raise NotImplementedError" and compiler bug
handlers.
2022-01-16 20:59:11 -06:00
James Westman
85150d397b
gir: Fix assignable_to for interface implementations
Part of #29
2022-01-11 22:37:24 -06:00
James Westman
8e1a9f72dd
parser: Merge consecutive "Unexpected tokens" errors
Fixes #24
2021-12-16 23:18:31 -06:00
James Westman
5b76a3b8dd
Clean up some unused code 2021-12-16 22:08:04 -06:00
James Westman
34e78de338
decompiler: Support GtkFileFilter tags 2021-12-15 11:32:33 -06:00
Tijder
168b87bb4a Add bind for bidirectional 2021-12-14 19:59:09 +00:00
James Westman
d23c06b8fd
lsp: Fix text encoding issue
Content-Length is the number of bytes in the message, but the JSONRPC
code was interpreting it as a number of characters (when both reading and
writing), which caused it to fail on multibyte UTF-8 characters.
2021-12-06 11:46:33 -06:00
James Westman
08f7a4ebbd
Update completion snippets 2021-12-06 10:26:53 -06:00
James Westman
1f677725d8
interactive_port: Ignore "_build" and "build" dirs
Fixes #15
2021-12-04 19:14:04 -06:00
James Westman
8e4433a487
Create an interactive porting tool
`blueprint-compiler port` interactively ports a project to blueprint.
It will create the subproject wrap file, add it to .gitignore, decompile
your GtkBuilder XML files, emit code to copy and paste into your
meson.build file, and update POTFILES.in.

It can't quite handle all of the features the forward compiler can, so
it will skip those files.
2021-12-01 23:38:28 -06:00
James Westman
544d152fb6
Rename to blueprint-compiler
This isn't an official GTK project so better to avoid using "GTK" in the
name.
2021-12-01 15:35:58 -06:00