Open piegamesde opened 4 years ago
@piegamesde Did you notice the Tutorial? Please read the #getting-started paragraph at least.
... Whenever this happens, it tells you to add an attribute to your crate, that looks like
#![recursion_limit = "some number"]
...
I read the tutorial, but several weeks before actually trying it out myself. The error message makes more sense now:
error[E0277]: the trait bound `std::option::Option<gtk::auto::list_store::ListStore>: vgtk::properties::PropertyValueCompare<'_, std::option::Option<gtk::auto::tree_model::TreeModel>>` is not satisfied
--> src/main.rs:28:9
|
28 | / gtk! {
29 | | <Application::new_unwrap(Some("com.example.{{project-name}}"), ApplicationFlags::empty())>
30 | | <Window border_width=20 on destroy=|_| Message::Exit>
31 | | <IconView
... |
34 | | </Application>
35 | | }
| |_________^ the trait `vgtk::properties::PropertyValueCompare<'_, std::option::Option<gtk::auto::tree_model::TreeModel>>` is not implemented for `std::option::Option<gtk::auto::list_store::ListStore>`
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `std::option::Option<gtk::auto::list_store::ListStore>: vgtk::properties::PropertyValueCompare<'_, std::option::Option<gtk::auto::tree_model::TreeModel>>` is not satisfied
--> src/main.rs:32:13
|
32 | model={Some(ListStore::new(&[]))} />
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `vgtk::properties::PropertyValueCompare<'_, std::option::Option<gtk::auto::tree_model::TreeModel>>` is not implemented for `std::option::Option<gtk::auto::list_store::ListStore>`
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
@piegamesde Could you create a very minimal example which shows what you are trying. A gist or a git repo would helpful. I know the gtk liststore/ treestores and I'm willing to help you here if I could.
I sadly don't have the original code for my bug report anymore, but cloning the cargo-template-vgtk
and changing the view function like below should give similar results:
fn view(&self) -> VNode<Model> {
gtk! {
<Application::new_unwrap(Some("com.example.{{project-name}}"), ApplicationFlags::empty())>
<Window border_width=20 on destroy=|_| Message::Exit>
<IconView
model={Some(ListStore::new(&[]))} />
</Window>
</Application>
}
}
In the end I want the icon view's content to be somehow synchronized with the internal state of the widget: when I add elements to it this should be reflected in the GUI, when I reorder them within the widget, this should trigger an update to the model
It looks like there's a functional workaround for this, using a TreeStore
--the GTK docs suggest this works for an IconView
.
I'd like to use a
gtk::IconView
but I somehow can't set the model. I tried inputting a dummyListStore
,Option::None
and others but I always get arecursion limit reached
error. Is this even supported or is it a bug in the macro?