inconsistent behaviour of tethering view and print view
Context: A computer (e.g. a virtual machine) without attached/configured camera or printer
If I want to switch from light table mode to tethering mode I get an error message "no camera with tethering support was found" and stay in light table mode.
If I want to switch from light table mode to printing mode I can do so. But I end up in a mode where I cannot do anything and that is completely empty (in the centre view).
Expected behaviour, to improve consistency:
If I want to switch from light table mode to printing mode I get an error message along the line "no printer was found. Please configure a printer in the operating system first" and stay in light table mode.
The error message should be written in plain language and should describe the problem and how to solve it.
#1 Updated by Pascal Obry over 4 years ago
- Assignee set to Pascal Obry
- Tracker changed from Bug to Feature
Not really possible as the printer are discovered asynchronously. This is because network printers could take some time to be discovered and we do not want to delay entering into the print module for minutes. So we enter and let a background job discover the printers. If none are found in this context, what should be done? Exit from print view? No, I don't think so... So nothing better to propose for now.
#2 Updated by Simon Harhues over 4 years ago
Ah, thanks for the explanation.
My first suggestion coming to my mind would be to make the current state visible. E.g. show some kind of spinning wheel while searching for printers in/close to the drop down. And when finally the search was finished without finding a printer an error message can be shown that no printer was found and one needs to be configured in the OS.
#4 Updated by Tobias Ellinghaus over 4 years ago
I would just check if there is any printer found in try_enter() and deny entering if that's not the case. Going to print view before a printer is found is not that useful, so the user can just wait and try again later? Otherwise we might want to put a label on the center widget as long as no printer is available.
#5 Updated by Pascal Obry over 4 years ago
It was done using the try_enter() before. But the problem is that with a lot of printers or with network printers it may take a long time (more than a minute) to discover all printers. So it was changed to discover them asynchronously to avoid this issue (reported by some users).
Maybe another option is to start the asynchronous discovery in try_enter() and return 0 as soon as one printer is discovered? But the discovery is done by libs/print_settings.c at the moment.