Because with our default theme, the neutral icon is empty. This causes the alignment of the label next to it to appear off.
Contributes to issue CURA-8609.
It's moving there now. However if there are any errors syncing with the printers, the troubleshooting link has to disappear from there.
This makes the layout quite complex, since the icon on the left and the button on the right are no longer vertically centred. The text used to be vertically centred too, but can't do that any more since the text is not the determiner of the height any more, with there being a horizontally aligned button below it. It's all a bit complex now.
Contributes to issue CURA-8609.
There is a distinction between packages which are already
installed on the local machine and packages which are
available on the remote server. Even with this difference
it is important that they are handled the same and can be
reused in the same GUI elements.
In order to reduce code duplication I created a parent object
PackageList which contains the base logic and interface for
the QML and let both RemotePackageList and LocalPackageList
inherit from this.
UX specified that the gear icon (Settings.svg) should be
separate from the tabs of material and plugins. This also
ment that the current tab item couldn't set the pageTitle
anymore. This is now defined in the Package component and
set when the loader has loaded the external QML file.
Contributes to CURA-8558
Otherwise it uses the very bright light theme which doesn't match with the light text colour in dark mode.
Contributes to issue CURA-8556. Found during issue CURA-8557.
Don't just use white rectangles or black text. Use the theme where appropriate. And these rectangles are just outlines.
Contributes to issue CURA-8609.
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.