This is a consequence of lazy loading and the re-loading we do when the Marketplace window gets closed. This solves a crash with reproduction steps:
1. Open the Marketplace.
2. Quickly close the Marketplace.
3. Quickly re-open the Marketplace.
4. The API responds to the request made by the first opening of the Marketplace.
This crashed because when the Marketplace first opened, it made a request to the API with the HttpRequestManager. This request takes a while to respond to. If you close and re-open the Marketplace, the PackageList gets destroyed and a new one gets made. The HttpRequestManager eventually gets a response and wants to call the callback of the first PackageList, but that one got destroyed in the Qt engine so it'll throw an error saying that the object doesn't exist any more.
Contributes to issue CURA-8557.
The filter affects the URL. So we can't just start a request in the init. We need to request once all of the properties have been set.
We also can't start the request when the filter changes, because there will be more filters and we don't want to start multiple requests. It needs to be manual.
Contributes to issue CURA-8557.
And back to plug-ins when that tab is clicked.
Sadly, linking the content dynamically doesn't seem to work, with a custom property.
Contributes to issue CURA-8557.
The width here is implementation-defined. Looks like it matches the design though. Seems like the design has 0 margins.
Contributes to issue CURA-8557.
It was showing all packages available in the marketplace.
This included `cloud` DF integrations. It will now filter
on packages and plugins.
Contributes to CURA-8556
The layout of the plugin/material cards should take care
of the text and rendering. The dimensions of these cards
therefor should not require a horizontal scrollbar
Conflicts:
cura/Machines/Models/MaterialManagementModel.py -> On Master we had temporarily reverted the action of this button because it became apparent that the sync wasn't going to be in 4.12. That revert is no longer necessary if this is merged.
With the lambda it would capture the variable of printer_id. It wouldn't actually store the value of printer_id in teh created lambda. As a result, it was using the current value of printer_id when the lambda executes, rather than the value of printer_id when the lambda is constructed. A bit weird how that works in Python's lambdas.
With partial functions it works properly.
Contributes to issue CURA-8609.
The API endpoint got renamed (without my awareness). It also needed to be a POST request, probably since the beginning. And apparently it needs everything to be in a sub-field called 'data' for some reason.
Contributes to issue CURA-8609.
The entire response is contained in a lone 'data' field in the response. Why this is necessary I don't know, because indeed everything the server can tell us is data so everything would be in a 'data' field. But that's how the API reacts so that's how we'll have to parse it.
Contributes to issue CURA-8609.
This can already be set via the isLoading property. What's more, it really only ever needs to be called from Python. I just added the fset because we have the setter anyway.
Contributes to issue CURA-8556.
This way it's not available to the rest of Cura, especially since PackageList is not such an uncommon name. It could give name collisions. Moreover, the rest of Cura doesn't need to have a list of packages from the Marketplace, so it's better separation.
Contributes to issue CURA-8556.
These two have garnered some feedback in that it's wholly unclear what the sentences even mean. Hopefully this correction makes it more clear for next time.
Contributes to issue CURA-8638.
Two changes have been made:
- Use more consistent terminology for the top side of the model (which could be skin or walls). This is corrected from feedback by our translators.
- Don't add disclaimers about the infill density to this already way-too-long setting description. If anything, a disclaimer should be added to the infill density description that Gradual Infill and some infill patterns might not reach the desired density everywhere. But really, I think it's more in the domain of user documentation like the Ultimaker website or the Settings Guide.
The Marketplace icon is apparently confusing to use for the Marketplace in Cura and should only be used for the website version.
Contributes to issue CURA-8556.