mirror of
https://github.com/slint-ui/slint.git
synced 2025-08-03 18:29:09 +00:00
Python: Fix support for named exports
This commit is contained in:
parent
2d5d53fba8
commit
636de6fc7c
7 changed files with 73 additions and 4 deletions
|
@ -179,6 +179,11 @@ impl CompilationResult {
|
|||
.into_iter()
|
||||
.collect::<HashMap<String, PyObject>>()
|
||||
}
|
||||
|
||||
#[getter]
|
||||
fn named_exports(&self) -> Vec<(String, String)> {
|
||||
self.result.named_exports(i_slint_core::InternalToken {}).cloned().collect::<Vec<_>>()
|
||||
}
|
||||
}
|
||||
|
||||
#[pyclass(unsendable)]
|
||||
|
|
|
@ -242,9 +242,15 @@ def load_file(path, quiet=False, style=None, include_paths=None, library_paths=N
|
|||
setattr(module, comp_name, wrapper_class)
|
||||
|
||||
for name, struct_or_enum_prototype in result.structs_and_enums.items():
|
||||
name = _normalize_prop(name)
|
||||
struct_wrapper = _build_struct(name, struct_or_enum_prototype)
|
||||
setattr(module, name, struct_wrapper)
|
||||
|
||||
for orig_name, new_name in result.named_exports:
|
||||
orig_name = _normalize_prop(orig_name)
|
||||
new_name = _normalize_prop(new_name)
|
||||
setattr(module, new_name, getattr(module, orig_name))
|
||||
|
||||
return module
|
||||
|
||||
|
||||
|
|
|
@ -12,13 +12,16 @@ def test_load_file(caplog):
|
|||
|
||||
assert "The property 'color' has been deprecated. Please use 'background' instead" in caplog.text
|
||||
|
||||
assert len(list(module.__dict__.keys())) == 3
|
||||
assert len(list(module.__dict__.keys())) == 6
|
||||
assert "App" in module.__dict__
|
||||
assert "Diag" in module.__dict__
|
||||
assert "MyDiag" in module.__dict__
|
||||
assert "MyData" in module.__dict__
|
||||
assert "Secret_Struct" in module.__dict__
|
||||
assert "Public_Struct" in module.__dict__
|
||||
instance = module.App()
|
||||
del instance
|
||||
instance = module.Diag()
|
||||
instance = module.MyDiag()
|
||||
del instance
|
||||
|
||||
struct_instance = module.MyData()
|
||||
|
@ -28,6 +31,9 @@ def test_load_file(caplog):
|
|||
struct_instance = module.MyData(name="testing")
|
||||
assert struct_instance.name == "testing"
|
||||
|
||||
assert module.Public_Struct is module.Secret_Struct
|
||||
assert module.MyDiag is module.Diag
|
||||
|
||||
|
||||
def test_load_file_fail():
|
||||
with pytest.raises(CompileError, match="Could not compile non-existent.slint"):
|
||||
|
|
|
@ -15,9 +15,15 @@ export global SecondGlobal {
|
|||
|
||||
export struct MyData {
|
||||
name: string,
|
||||
age: int
|
||||
age: int,
|
||||
}
|
||||
|
||||
struct Secret-Struct {
|
||||
balance: int,
|
||||
}
|
||||
|
||||
export { Secret-Struct as Public-Struct }
|
||||
|
||||
export component App inherits Window {
|
||||
in-out property <string> hello: "World";
|
||||
callback say-hello(string) -> string;
|
||||
|
@ -47,4 +53,6 @@ export component App inherits Window {
|
|||
}
|
||||
}
|
||||
|
||||
export component Diag inherits Window { }
|
||||
component Diag inherits Window { }
|
||||
|
||||
export { Diag as MyDiag }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue