Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Context-switchable GUI / Workspaces #302

Open
02JanDal opened this issue Sep 12, 2024 · 11 comments
Open

Context-switchable GUI / Workspaces #302

02JanDal opened this issue Sep 12, 2024 · 11 comments

Comments

@02JanDal
Copy link

QGIS Enhancement: Context-switchable GUI / Workspaces

Date 2024/09/12

Author Raymond Nijssen (@raymondnijssen), Jan Dalheimer (@02JanDal)

Contact jan at dalheimer dot de

Version QGIS 3.x or 4.x

Summary

(this proposal is heavily based on an idea by @raymondnijssen, and was discussed during the contributor meeting in Bratislava)

Rather than always showing all toolbars, buttons, and panels regardless of the task, we could allow the user to switch between different task-based "workspaces", for example, "Viewing" (only showing basic controls and the layer and browser panels), "Styling" (showing annotation toolbar and styling panel) etc.

For new users, this would result in a less overwhelming user interface, and experienced users would get less clutter and more space for the map (since toolbars and panels are easy to hide and restore based on the task done).

Base functionality

Add, possibly to the right on the menu bar, a selection of "workspaces" (including functionality to add/remove them). When switching between workspaces, the toolbar, panel, and associated configuration/customization restore stored for the workspace switched to.

This results in the following possible workflow:

  1. Open new QGIS installation, it has only one workspace (equal to the current set of toolbars/panels), here called "A"
  2. Show/hide some toolbars/panels
  3. Choose to create a new workspace, call it "B"
  4. Show/hide some other toolbars/panels
  5. Switch back to workspace "A", the toolbars/panels will be restored as they were just before step 3

QGIS 4.x - default for new installations

The above might be implementable in QGIS 3.x technically (maybe), however, we don't want to present users with a significant change to their experience within a major version. For this reason, initially, they will get the same UI as today, just with the option to configure workspaces themselves.

This could be changed in QGIS 4 (or another future major version). Initially, QGIS could then contain some pre-configured workspaces (none of which are the "everything" workspace we have today). If we have already had the base functionality available for a while we should be able to get a good idea of how various users have configured their workspaces, and based on that design the pre-configured workspaces.

Proposed Solution

Can possibly use the Qt-builtin functionality to store/restore QMainWindow structure. Workspaces are normally stored in the profile, though it might also be an idea to store them in projects as well.

Deliverables

(required for QGIS grant submissions)

Example(s)

How the UI currently might look

image

Possible workspace configuration

(note workspace-selection in top right)

ws-view
ws-info
ws-style
ws-edit
ws-layout
ws-process
ws-script

Affected Files

(optional)

Risks

(required)

Performance Implications

There might be a slight performance hit when changing workspaces, as it can significantly change the UI (including the size of the map which then might have to re-render), however, it should be minimal and not occur to often.

Further Considerations/Improvements

While a free-standing proposal, for the best effect this could be combined with other ideas:

  • Improve default-visible buttons (for example hide most magnifying glasses by default)
  • Introduce a ribbon as an optional alternative to the toolbars we have today
  • Introduce a radial menu for editing tools

Backwards Compatibility

Opening a newer QGIS version would use the previous UI configuration as the first workspace, saving it as a workspace.

Opening an older (pre this change) QGIS version would use the UI configuration last stored by an older version, or use the default structure (i.e. older versions completely ignore the workspace configuration).

Issue Tracking ID(s)

(optional)

@rouault
Copy link
Contributor

rouault commented Sep 30, 2024

Just a note on terminology. For me "workspace" strongly implies what we call "projects". Maybe instead "Tool configuration" (midly convinced...) ? We also have the concept of Profile, which is a different thing. There's a potential for confusing users...

@troopa81
Copy link

troopa81 commented Oct 1, 2024

It looks like what Eclipse call perspective

Perspectives provide combinations of views and editors that are suited to performing a particular set of tasks. For example, you would normally open the Debug perspective to debug a Java program.

I like the idea though I'm not a UI expert. I often want to switch from a set of panel/view to another. I agree the wording and how it would be presented to the user would be important.

@02JanDal
Copy link
Author

02JanDal commented Oct 1, 2024

Yeah, I'm very open to suggestions on the naming. Workspaces was what it was called in initial discussions, I believe borrowed from Blender: https://docs.blender.org/manual/en/latest/interface/window_system/workspaces.html

"Perspective" is definitely a decent suggestion! I've also considered "Task", though that might maybe be to general?

Another train of thought is that these "workspaces" (or whatever they should be called) might be used to show different "perspectives" during different steps of a workflow; you might have one for "Review", one for "Adjust" and one for "Upload" for example. If one stays on that train it would also be interesting to consider how this proposal would interact with a full workflow/task/job feature, though I think that's out of scope for now.

@raymondnijssen
Copy link

Indeed I know this concept from Blender, and there they're called workspaces. But perspectives, tasks, activities, modes, scopes would all work.
The "Risks" paragraph is still empty, but this change would affect many plugins as QGIS will need to know in which "perspective" the plugin GUI (parts) should be visible. Another risk could be ending up in an endless discussion about if we should do this and how exactly :)

@erpas
Copy link

erpas commented Oct 1, 2024

This is a great idea - many thanks for the QEP.
Maybe you could borrow concept of workbenches from FreeCAD

@baswein
Copy link

baswein commented Oct 4, 2024

This is very exciting. I currently use the QGIST Workbench plugin for this https://plugins.qgis.org/plugins/workbench/ which does this and find it is very helpful.

I know having a set of workspaces for different purposes would be helpful when I am teaching QGIS and can tell students to switch to different workspace rather than going trough each toolbar and panel that they need to turn on.

AutoCAD and Adobe both use Workspace to name this type of feature.
https://www.autodesk.com/blogs/autocad/workspaces-exploring-features-benefits-autocad/

Affinity uses the term Personas which I like.
https://affinity.help/designer2/en-US.lproj/index.html?page=pages/Introduction/about_Personas.html&title=Personas

@rduivenvoorde
Copy link
Contributor

The workbench plugin mentioned above seems like a good start?

The project did not have any commits since 5 years though...

@nyalldawson
Copy link
Contributor

To clarify -- is this actually something someone is actively working on? Or just brainstorming at this stage?

@02JanDal
Copy link
Author

02JanDal commented Oct 5, 2024

The "Risks" paragraph is still empty, but this change would affect many plugins as QGIS will need to know in which "perspective" the plugin GUI (parts) should be visible.

From a usability standpoint I'd say either all or none, or showing a question on plugin install (though that's the most complex). I would probably lean towards all at least in QGIS 3?

Another risk could be ending up in an endless discussion about if we should do this and how exactly :)

Or even just bikeshedding what it should be called :P

The workbench plugin mentioned above seems like a good start?

That indeed looks interesting, will take a closer look at it to see if there are any "stealable ideas" there!

To clarify -- is this actually something someone is actively working on? Or just brainstorming at this stage?

I'd say right now still brainstorming/requirement gathering. My ambition is to move to implement this as soon as my spare time allows (might be next week, might be next year, so if anyone else wants to take a stab at it feel free!) (or if I can find funding to do it at work), though some parts will likely have to wait until QGIS 4 (especially anything that changes the default UX when you open QGIS for the first time).

@vpicavet
Copy link
Member

Do you intend to also include the list of activated plugins ? This seems also to be relevant to the notion of workbench/workspace.

@sweco-sedalh
Copy link

I don't think it would make sense to activate/deactivate plugins when switching between workspaces (or whatever), rather just hiding toolbars/panels/etc. as needed. (if you want to switch between sets of plugins that's exactly what profiles are for)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants