pemsley / coot

Software for macromolecular model-building
http://www2.mrc-lmb.cam.ac.uk/personal/pemsley/coot/
GNU General Public License v3.0
121 stars 45 forks source link

Request - make docked panels optional #84

Open olibclarke opened 1 year ago

olibclarke commented 1 year ago

Hi,

The option to have validation output (e.g. the Ramachandran plot and validation outliers list) docked to the main window in cootgtk4 is very nice to have, but not always desirable.

For example, if I am working on a small laptop screen, I would rather have these items as separate windows, and similarly if I am working with multiple displays I would like to be able to arrange these windows as I please. Would it be possible to add an option to undock them from the main window?

Cheers Oli

pemsley commented 1 year ago

It is not clear to me if you know that these are slideable panes. Does that make a difference?

olibclarke commented 1 year ago

Yes, I do. One issue with that is that once they are fully slid over, there is no visible sign that they are there, and the mouse target for resizing the window to the left, the mouse target for re-sliding the panel, and the mouse target for rotating the view (all of which are click-drag actions) are extremely close together, e.g.:

https://www.dropbox.com/scl/fi/2q8cidiiay0io4m2t57pp/rama_behavior.mov?rlkey=cv4ezl38d7cqo34rsv9te8oru&dl=0

But the other thing is, I don't want panels obscuring or changing the view - I would rather have panels that I can move around and put beside the thing I'm working on, or potentially on another monitor. Particularly when for example both the Rama plot and the validation list is open, the left side starts feeling a bit cramped IMO - it would be nice at least to have the option of having them as floating windows.

This is also an issue for the validation graphs down the bottom - particularly if you want to have more than one displayed at a time, they take up a lot of vertical real estate when expanded, and having to repeatedly slide them up and down (changing the field of view of the main screen) is not ideal I think. Also the validation graphs once slid down cannot be slid up again if the python scripting interface is active, as the mouse target is hidden by the command line.

pemsley commented 1 year ago

@hgonomeg I invite your comments on the above comments.

I think we should add a key-binding to toggle the visibility of vertical validation panel.

olibclarke commented 12 months ago

I'm also unconvinced of the utility of slidable panes that allow you to see half a ramachandran plot... if they are going to be slidable I would favor more of a hide/show "drawer" scheme than a continuous slide.

But I really do think they ought to be freely movable/rearrangeable - it adds a lot more flexibility depending how the user works and their display setup. See ChimeraX for a good example of how this can work using the Qt framework - I'm not sure whether there is similar functionality in Gtk4 or not?

hgonomeg commented 12 months ago

Hello.

I agree that docking/"undocking" feature is nice to have. Sadly, it seems that the library used for docking widgets in the GTK ecosystem (libgdl afaik) has not yet been ported to GTK4. So this is something that potentially requires more manual, lower-level implementation, i.e. it's not something trivial to add. Will keep you posted about that.

olibclarke commented 12 months ago

Got it. Yes seems like libgdl is not ported, and GtkHandleBox is deprecated and will not be ported.

What about having it as a global preference (to have them as slidable panes or resizable floating windows)? Then it doesn't need a dynamic docking/undocking process.

pemsley commented 12 months ago

Isn't a layout manager what we want? (for rearranging widgets, not docking and undocking)

https://blog.gtk.org/2019/03/27/layout-managers-in-gtk-4/

hgonomeg commented 12 months ago

Isn't a layout manager what we want? (for rearranging widgets, not docking and undocking)

https://blog.gtk.org/2019/03/27/layout-managers-in-gtk-4/

To my understanding, layout managers are used to govern the position of child widgets inside a single parent widget. I'm not sure what kind of rearrangement you mean specifically, but I don't think this is what we're looking for here.

pemsley commented 11 months ago

Somewhat related video: https://www.youtube.com/watch?v=BmFMQOKvtEM

olibclarke commented 11 months ago

I would favor just reverting it to a multi window app, as in previous versions, and abandon the docked panels for now. It would at least get around current issues with Gtk4 re window focus, and just in general be more flexible. Then users can use their own window manager (e.g. app exposé on Mac, or third party apps like BetterSnapTool) to manage and rearrange individual windows.