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

Plugins should have some space on the main window (menu or hbox) #152

Open
lazka opened this Issue Mar 14, 2015 · 6 comments

Comments

Projects
None yet
4 participants
@lazka
Member

lazka commented Mar 14, 2015

Original issue 152 created by steven.strobe.cc on 2009-03-17T04:07:21.000Z:

There's plenty of space in the main window for plugins to expose extra
functionality, and many things that plugins could do with something that
has constant presence. Two places seem like obvious candidates: a new
'Plugins' menu, and in the HBox along the bottom of the screen which
currently holds only selection length (and scanning progress at startup)
and order controls.

Plugins that use these spaces should not depend on them, and should have a
seamless fallback which works on versions without this mechanism.

@lazka

This comment has been minimized.

Member

lazka commented Mar 14, 2015

Comment #2 originally posted by nick.boultbee on 2012-02-12T13:29:57.000Z:

I see this being an essential feature of the new plugin architecture / API.

Let's also not discount entire new widgets / sections of the main window for plugins (see the external viewlyrics[1] plugin). It may not be a good idea, but it is worth some thought.

https://github.com/vfaronov/quodlibet-viewlyrics/blob/master/viewlyrics.py

@declension

This comment has been minimized.

Member

declension commented Oct 18, 2016

Currently toying with a simple but promising proof of concept involving a sidebar (most screens are wide nowadays so going using horizontal space is logical), available to EventPlugins only (others don't make so much sense).

Seems reasonable to also expose icon space straight after the shuffle / repeat buttons, as this is more likely to be useful (one example: Track Repeat configuration)

@lazka - any tips on making a widget (containing a Gtk.Notebook in this case) resizeable, a bit like the Queue, but without being a Gtk.Expander I guess? Also, for making this sidebar toggleable - I was thinking of resurrecting the View Menu, and adding a menu item for the ever-confusing queue toggle as well, what do you reckon?

@lazka

This comment has been minimized.

Member

lazka commented Oct 18, 2016

I imagined something like this for starters:

... | Plugins | Help
     ---------
      Plugin 1 (opens plugin prefs)
      Plugin 2 -> | Custom Action 1 (provided by the plugin)
                  | Custom Action 2 (..same)
                  | Custom Toggle 1 (..same)
                  |-------------------
                  | Plugin Preferences

What's the content of the notebook? If you want it to be resizable you have to put it into a qltk.Paned.

@declension

This comment has been minimized.

Member

declension commented Oct 19, 2016

Thanks, I'll try using the qltk.Paned.

I guess I didn't explain well - the change is mainly adding a sidebar area to the main window, at one side of the window:

/----------------------------------\
|    INFO                     ART  |
------------------------------------
|                           |      |
|     S O N G S             |   S  |
|                           |   I  |
|                           |   D  |
|                           |   E  |
|                           |      |
\----------------------------------/

c.f. Firefox's sidebar (though I've just noticed they drive it from the menu)

In this area is currently a Notebook which holds tabs exposed by any event plugins that override a new method; I've updated a couple of EventPlugins, e.g. View Lyrics to allow their content to sit in here (View Lyrics works particularly well here as it's more vertical by nature).

As mentioned another, smaller, space might be right after the shuffle / repeat buttons.

I haven't tried any updates to the menu structure mainly because I can't see any UX benefits there - Songsmenu plugins are fairly easily activated on their songs by the context menu, though we could definitely add that.

@urielz

This comment has been minimized.

Contributor

urielz commented Oct 19, 2016

@declension Sounds good to me. My only suggestion would be not to use space allocated to the paned browser. It’s already a problem not being able to resize the panels (issue #1118), taking away more space would make the problem worse.

 /----------------------------------\
|    INFO                     ART  |
------------------------------------
|                                  |
|         PANED BROWSER            |
|                                  |
------------------------------------
|     S O N G S             |   S  |
|                           |   I  |
|                           |   D  |
|                           |   E  |
|                           |      |
\----------------------------------/
@ptitjes

This comment has been minimized.

Collaborator

ptitjes commented Mar 5, 2017

The concept of place-holders (#1875 (comment)) can also be applied here.

declension added a commit to declension/quodlibet that referenced this issue Apr 9, 2017

Folder Playlists (quodlibet#152). WIP.
 * First working implementation; still a few things to iron out
 * Add `CompositePlaylist` to model a playlist folder, backed as a directory on disk within existing playlists directory. Many methods are deliberately unimplemented as they don't mean much (add / remove songs)
 * Add new button to create one of these
 * Update view to use a Tree store, and render folders larger / bold.
 * Update playlists context menu to allow nested selection of playlists

declension added a commit that referenced this issue Aug 16, 2017

Add sidebar plugins (#152):
 * Add a new type of plugin, `UserInterfacePlugin` complete with single handler (TODO: more generic way)
 * Add an event to `EventPlugin` for listening to main songlist selection changes. Couldn't reuse the `StatusBar` stuff as that has custom logic around single selections
 * Wire this into the app, and have `enabled` / `disabled` add/remove pages from the notebook (TODO: detachable?)
 * Update Python Console plugin: extract common code from UI and introduce new sidebar event plugin version, that updates itself based on the select songs
 * Convert View Lyrics plugin to a sidebar plugin (i.e. change its layout slightly)
 * Add some basic tests

declension added a commit that referenced this issue Aug 17, 2017

Add sidebar plugins (#152):
 * Add a new type of plugin, `UserInterfacePlugin` complete with single handler (TODO: more generic way)
 * Add an event to `EventPlugin` for listening to main songlist selection changes. Couldn't reuse the `StatusBar` stuff as that has custom logic around single selections
 * Wire this into the app, and have `enabled` / `disabled` add/remove pages from the notebook (TODO: detachable?)
 * Update Python Console plugin: extract common code from UI and introduce new sidebar event plugin version, that updates itself based on the select songs
 * Convert View Lyrics plugin to a sidebar plugin (i.e. change its layout slightly)
 * Add some basic tests

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 1, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 2, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 2, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 2, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 2, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 2, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 19, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Sep 19, 2017

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Mar 11, 2018

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Mar 13, 2018

merge 'widgetbars' [2552]
-Widgetbars
quodlibet#2552

Squashed commit of the following:

commit 8de09c1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 20:41:28 2018 +0000

    update licence info on new files

commit 98d0583
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 09:33:20 2018 +0000

    fix harmonisation of initial pane sort order

    -fixes 'test_qltk_prefs', don't assume plugin layer is initialised!

commit 8f718b2
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 16:59:03 2017 +0100

    harmonise the widgetbars initial pane sort order

    -with no sort order set, make it the same as the order without widgetbars

commit 64ec7a3
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Sep 17 11:35:48 2017 +0100

    add a 'force' option to the 'css_add' wrapper

    -enforce css overrides by loading as USER priority when absolutely
    necessary (e.g. when a user override would compromise the resizing/
    positioning calculations). doing this is no different to enforcing
    styling via use of widget properties (e.g. margin) or style properties,
    for which users obviously have zero influence upon

commit dabb527
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:38:18 2017 +0100

    paned handle position considerations

    -fix all paned handle position calculations by adding handle size
    corrections to account for 'wide handle' support in later Gtk versions
    -removes the 'seemingly arbitrary' +/-5px handle positioning for collapsed
    expanders, calculating the position based on size instead

commit cbd56c5
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:43:39 2017 +0100

    add handle position locking for a paned child2

    -only where child1 isn't already locked!
    -without this change, where the last pane in a MultiPaned contained a
    collapsed expander, its parent pane would proportionally resize whenever
    any parent paneds were resized, as opposed to it being locked into position
    as we'd want with any collapsed item

commit 8d6d55b
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 17:08:09 2017 +0100

    Gtk version compatibility

    -widgets don't automatically expand to fill space in their parent
    as they did previously

commit 1d005e6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:53:26 2017 +0100

    remove superfluous widgetbar updating

commit b1a6f98
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Sep 8 13:24:32 2017 +0100

    improve the relatively close test

commit df51b67
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:59:00 2017 +0100

    reduce indentation with cleaner return pattern

commit 1ecf323
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:13:28 2017 +0100

    remove multiline debug statement

commit c6e2568
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:10:40 2017 +0100

    inline some logic to improve readability

commit 499185d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:50:19 2017 +0100

    change widgetbars plugin path

commit 8c20ed8
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:44:01 2017 +0100

    remove redundant PLUGIN_CONFIG_SECTION variable

commit 1c2de50
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:38:43 2017 +0100

    add 'WidgetBar' class docstring

commit 7eac09a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:08:07 2017 +0100

    add 'widgetbars_enabled' property docstring for clarity

commit c528d3f
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:02:04 2017 +0100

    remove variable access repetition

commit 54bffe6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:55:45 2017 +0100

    simplify logic for sanity sake

commit 1686f97
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:54:06 2017 +0100

    fix no-op bug

commit b45a8bc
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:53:16 2017 +0100

    remove redundant attribute tests

commit 28e03f7
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:52:13 2017 +0100

    variable name refactoring

commit aa69b95
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Aug 30 07:14:05 2017 +0100

    XPaned based tests

commit 35bd24c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 10:03:44 2017 +0100

    simple WidgetBars EventPlugin

commit 667876a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 07:00:56 2017 +0100

    expose a plugin toggled event from PluginManager

commit a4b96c7
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Thu Aug 10 10:56:01 2017 +0100

    WidgetBar implementation [quodlibet#152 part]

    -tied in as a UserInterfacePlugin

commit 3c1d8d1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:48:11 2017 +0100

    update paned definitions

commit 2599446
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:15:10 2017 +0100

    add 'Expander-aware' X-Paned flavours

    -adds XPaned base with H/V subclasses
    -adds Multi XPaned H/V subclasses of MultiPaned
    -implementation based on a single pane of 'x'-pane being set as
    expandable. work is then done to ensure that pane takes any space given
    by collapsed expanders, or resized panes
    -PaneLock objects are embedded into widgets who want to lock their own
    size during (necessarily) chaotic resizing operations
    -fixing sizes manually AND allowing for manual resizing is difficult.
    setting size requests locks the minimum pane sizes, which makes for
    sensible resizing 'of the pane you'd expect to be resized', but doing so means
    the panes cannot be made smaller. given the pane handle is unhookable in
    any useful way (right down to the Gtk core), the 'nearly perfect'
    workaround employed uses do_allocate_size to remove locks and button
    releases to restore them. the unwanted result of this is that a resize
    MUST start by making the pane at least 1px BIGGER, before making it
    bigger OR smaller. in practice, this is not really noticable

commit 1f5d18b
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 08:41:40 2017 +0100

    allow custom widget packing in MultiPaned

commit 845fc65
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:53:42 2017 +0100

    fix typo

commit 78d1704
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:52:12 2017 +0100

    make MultiRPaned more generic

    -add code path for absolute based sizing in 'make_pane_sizes_equal'
    -update relevant test
    -rename class to MultiPaned

commit a2224ff
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 08:13:51 2017 +0100

    exposed multipaned paned set

commit 5c7a820
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 07:53:58 2017 +0100

    orientation agnostic names

commit 4c532e9
Merge: 406571c 652a88f
Author: Christoph Reiter <reiter.christoph@gmail.com>
Date:   Sun Mar 11 00:55:34 2018 +0100

    Merge pull request quodlibet#2807 from frestr/doc_fix

    Docs: fix command argument format

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Mar 18, 2018

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Apr 1, 2018

merge 'widgetbars' [2552]
-Widgetbars
quodlibet#2552

Squashed commit of the following:

commit 3fff067
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 21:23:13 2018 +0000

    widgetbars, utilise 'ExpanderTitleContainerHack'

    -facilitates styling of the expander title bars

commit 7e386b5
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 21:17:43 2018 +0000

    core, refactor 'ExpandBoxHack'

    -move to common 'qltk.x' path
    -rename to more appropriate 'ExpanderTitleContainerHack'
    -add '__init__' function to populate content

commit d7977f7
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 17:27:18 2018 +0000

    widgetbars, prefer comprehensions over maps

commit 1d7544a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 20:41:28 2018 +0000

    update licence info on new files

commit 6f8f41c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 09:33:20 2018 +0000

    fix harmonisation of initial pane sort order

    -fixes 'test_qltk_prefs', don't assume plugin layer is initialised!

commit e257f73
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 16:59:03 2017 +0100

    harmonise the widgetbars initial pane sort order

    -with no sort order set, make it the same as the order without widgetbars

commit 0c76d23
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Sep 17 11:35:48 2017 +0100

    add a 'force' option to the 'css_add' wrapper

    -enforce css overrides by loading as USER priority when absolutely
    necessary (e.g. when a user override would compromise the resizing/
    positioning calculations). doing this is no different to enforcing
    styling via use of widget properties (e.g. margin) or style properties,
    for which users obviously have zero influence upon

commit 84cdac1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:38:18 2017 +0100

    paned handle position considerations

    -fix all paned handle position calculations by adding handle size
    corrections to account for 'wide handle' support in later Gtk versions
    -removes the 'seemingly arbitrary' +/-5px handle positioning for collapsed
    expanders, calculating the position based on size instead

commit fc76929
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:43:39 2017 +0100

    add handle position locking for a paned child2

    -only where child1 isn't already locked!
    -without this change, where the last pane in a MultiPaned contained a
    collapsed expander, its parent pane would proportionally resize whenever
    any parent paneds were resized, as opposed to it being locked into position
    as we'd want with any collapsed item

commit 06814b9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 17:08:09 2017 +0100

    Gtk version compatibility

    -widgets don't automatically expand to fill space in their parent
    as they did previously

commit 03f2fe9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:53:26 2017 +0100

    remove superfluous widgetbar updating

commit a4528c9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Sep 8 13:24:32 2017 +0100

    improve the relatively close test

commit 63c0ce6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:59:00 2017 +0100

    reduce indentation with cleaner return pattern

commit 17af9ef
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:13:28 2017 +0100

    remove multiline debug statement

commit 36cac3c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:10:40 2017 +0100

    inline some logic to improve readability

commit 2f9c9e0
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:50:19 2017 +0100

    change widgetbars plugin path

commit 0a45f12
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:44:01 2017 +0100

    remove redundant PLUGIN_CONFIG_SECTION variable

commit 1d958f3
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:38:43 2017 +0100

    add 'WidgetBar' class docstring

commit f7bd5fb
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:08:07 2017 +0100

    add 'widgetbars_enabled' property docstring for clarity

commit 0002f45
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:02:04 2017 +0100

    remove variable access repetition

commit 2fe87f0
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:55:45 2017 +0100

    simplify logic for sanity sake

commit eb65731
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:54:06 2017 +0100

    fix no-op bug

commit 84d1d5c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:53:16 2017 +0100

    remove redundant attribute tests

commit aa16903
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:52:13 2017 +0100

    variable name refactoring

commit 65f4cab
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Aug 30 07:14:05 2017 +0100

    XPaned based tests

commit 748ff8a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 10:03:44 2017 +0100

    simple WidgetBars EventPlugin

commit 6f19f0f
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 07:00:56 2017 +0100

    expose a plugin toggled event from PluginManager

commit b57d30d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Thu Aug 10 10:56:01 2017 +0100

    WidgetBar implementation [quodlibet#152 part]

    -tied in as a UserInterfacePlugin

commit 715e486
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:48:11 2017 +0100

    update paned definitions

commit d4a65c6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:15:10 2017 +0100

    add 'Expander-aware' X-Paned flavours

    -adds XPaned base with H/V subclasses
    -adds Multi XPaned H/V subclasses of MultiPaned
    -implementation based on a single pane of 'x'-pane being set as
    expandable. work is then done to ensure that pane takes any space given
    by collapsed expanders, or resized panes
    -PaneLock objects are embedded into widgets who want to lock their own
    size during (necessarily) chaotic resizing operations
    -fixing sizes manually AND allowing for manual resizing is difficult.
    setting size requests locks the minimum pane sizes, which makes for
    sensible resizing 'of the pane you'd expect to be resized', but doing so means
    the panes cannot be made smaller. given the pane handle is unhookable in
    any useful way (right down to the Gtk core), the 'nearly perfect'
    workaround employed uses do_allocate_size to remove locks and button
    releases to restore them. the unwanted result of this is that a resize
    MUST start by making the pane at least 1px BIGGER, before making it
    bigger OR smaller. in practice, this is not really noticable

commit 5b506cf
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 08:41:40 2017 +0100

    allow custom widget packing in MultiPaned

commit a84f4a1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:53:42 2017 +0100

    fix typo

commit 4a50d9d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:52:12 2017 +0100

    make MultiRPaned more generic

    -add code path for absolute based sizing in 'make_pane_sizes_equal'
    -update relevant test
    -rename class to MultiPaned

commit a5362cf
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 08:13:51 2017 +0100

    exposed multipaned paned set

commit bb775c6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 07:53:58 2017 +0100

    orientation agnostic names

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue Apr 1, 2018

merge 'widgetbars' [2552]
-Widgetbars
quodlibet#2552

Squashed commit of the following:

commit 3fff067
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 21:23:13 2018 +0000

    widgetbars, utilise 'ExpanderTitleContainerHack'

    -facilitates styling of the expander title bars

commit 7e386b5
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 21:17:43 2018 +0000

    core, refactor 'ExpandBoxHack'

    -move to common 'qltk.x' path
    -rename to more appropriate 'ExpanderTitleContainerHack'
    -add '__init__' function to populate content

commit d7977f7
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 17:27:18 2018 +0000

    widgetbars, prefer comprehensions over maps

commit 1d7544a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 20:41:28 2018 +0000

    update licence info on new files

commit 6f8f41c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 09:33:20 2018 +0000

    fix harmonisation of initial pane sort order

    -fixes 'test_qltk_prefs', don't assume plugin layer is initialised!

commit e257f73
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 16:59:03 2017 +0100

    harmonise the widgetbars initial pane sort order

    -with no sort order set, make it the same as the order without widgetbars

commit 0c76d23
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Sep 17 11:35:48 2017 +0100

    add a 'force' option to the 'css_add' wrapper

    -enforce css overrides by loading as USER priority when absolutely
    necessary (e.g. when a user override would compromise the resizing/
    positioning calculations). doing this is no different to enforcing
    styling via use of widget properties (e.g. margin) or style properties,
    for which users obviously have zero influence upon

commit 84cdac1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:38:18 2017 +0100

    paned handle position considerations

    -fix all paned handle position calculations by adding handle size
    corrections to account for 'wide handle' support in later Gtk versions
    -removes the 'seemingly arbitrary' +/-5px handle positioning for collapsed
    expanders, calculating the position based on size instead

commit fc76929
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:43:39 2017 +0100

    add handle position locking for a paned child2

    -only where child1 isn't already locked!
    -without this change, where the last pane in a MultiPaned contained a
    collapsed expander, its parent pane would proportionally resize whenever
    any parent paneds were resized, as opposed to it being locked into position
    as we'd want with any collapsed item

commit 06814b9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 17:08:09 2017 +0100

    Gtk version compatibility

    -widgets don't automatically expand to fill space in their parent
    as they did previously

commit 03f2fe9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:53:26 2017 +0100

    remove superfluous widgetbar updating

commit a4528c9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Sep 8 13:24:32 2017 +0100

    improve the relatively close test

commit 63c0ce6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:59:00 2017 +0100

    reduce indentation with cleaner return pattern

commit 17af9ef
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:13:28 2017 +0100

    remove multiline debug statement

commit 36cac3c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:10:40 2017 +0100

    inline some logic to improve readability

commit 2f9c9e0
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:50:19 2017 +0100

    change widgetbars plugin path

commit 0a45f12
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:44:01 2017 +0100

    remove redundant PLUGIN_CONFIG_SECTION variable

commit 1d958f3
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:38:43 2017 +0100

    add 'WidgetBar' class docstring

commit f7bd5fb
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:08:07 2017 +0100

    add 'widgetbars_enabled' property docstring for clarity

commit 0002f45
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:02:04 2017 +0100

    remove variable access repetition

commit 2fe87f0
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:55:45 2017 +0100

    simplify logic for sanity sake

commit eb65731
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:54:06 2017 +0100

    fix no-op bug

commit 84d1d5c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:53:16 2017 +0100

    remove redundant attribute tests

commit aa16903
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:52:13 2017 +0100

    variable name refactoring

commit 65f4cab
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Aug 30 07:14:05 2017 +0100

    XPaned based tests

commit 748ff8a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 10:03:44 2017 +0100

    simple WidgetBars EventPlugin

commit 6f19f0f
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 07:00:56 2017 +0100

    expose a plugin toggled event from PluginManager

commit b57d30d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Thu Aug 10 10:56:01 2017 +0100

    WidgetBar implementation [quodlibet#152 part]

    -tied in as a UserInterfacePlugin

commit 715e486
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:48:11 2017 +0100

    update paned definitions

commit d4a65c6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:15:10 2017 +0100

    add 'Expander-aware' X-Paned flavours

    -adds XPaned base with H/V subclasses
    -adds Multi XPaned H/V subclasses of MultiPaned
    -implementation based on a single pane of 'x'-pane being set as
    expandable. work is then done to ensure that pane takes any space given
    by collapsed expanders, or resized panes
    -PaneLock objects are embedded into widgets who want to lock their own
    size during (necessarily) chaotic resizing operations
    -fixing sizes manually AND allowing for manual resizing is difficult.
    setting size requests locks the minimum pane sizes, which makes for
    sensible resizing 'of the pane you'd expect to be resized', but doing so means
    the panes cannot be made smaller. given the pane handle is unhookable in
    any useful way (right down to the Gtk core), the 'nearly perfect'
    workaround employed uses do_allocate_size to remove locks and button
    releases to restore them. the unwanted result of this is that a resize
    MUST start by making the pane at least 1px BIGGER, before making it
    bigger OR smaller. in practice, this is not really noticable

commit 5b506cf
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 08:41:40 2017 +0100

    allow custom widget packing in MultiPaned

commit a84f4a1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:53:42 2017 +0100

    fix typo

commit 4a50d9d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:52:12 2017 +0100

    make MultiRPaned more generic

    -add code path for absolute based sizing in 'make_pane_sizes_equal'
    -update relevant test
    -rename class to MultiPaned

commit a5362cf
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 08:13:51 2017 +0100

    exposed multipaned paned set

commit bb775c6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 07:53:58 2017 +0100

    orientation agnostic names

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue May 30, 2018

WidgetBar implementation [quodlibet#152 part]
-tied in as a UserInterfacePlugin

elbeardmorez added a commit to elbeardmorez/quodlibet that referenced this issue May 30, 2018

merge 'widgetbars' [2552]
-Widgetbars
quodlibet#2552

Squashed commit of the following:

commit ae01cb8 (devel/widgetbars, widgetbars)
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun May 27 08:52:04 2018 +0100

    widgetbars, allow main pane to shrink

    -facilitates extra space for widgetbars should they need it when
     toggled
    -no harm in this given there are always pane handles about to
     manipulate the pane size

commit 48ab4e4
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat May 26 20:40:15 2018 +0100

    widgetbars, multipaned xpaned resizing redux

    -targets the root paned as a container for 'pane infos' during updates
     to remove the recursive complexity and reduce the redundant/duplicate
     effort in deducing the state of system

    -uses a new mechanism for resizing which deduces the target of the
     action and facilitates the building of the ultimate required state of
     the system

     specifically, this uses 'enter-notify' and 'button-press' events
     to set up the environment ready for the relevent 'do_size_allocate'
     hook to simulate what would probably be called 'paned-handle-moving'
     ..if it existed!

    -creates a set of helper functions in xpaned around pane info setup
     which pulls out various common existing code chunks from 'update'
     and 'do_size_allocate' which are the entry points for 'toggling'
     and 'resizing' xpaneds respectivily. both entry points look readable
     now, and coupled with 'check_resize' (used to clamp collapsed widgets)
     all re-use the common code functions

    -vastly improved logging / debugging experience due to the dumping
     of pane info states at a single point, and only once

commit 14df932
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri May 25 11:26:48 2018 +0100

    widgetbars, fix incorrect parameter name in multipaned

commit 2510527
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri May 25 11:24:50 2018 +0100

    widgetbars, improve multipaned resizing for >3 panes

    -set resize False when packing nested Paned, shifting the control of
    resizing to the widget/pane level alone

commit 3fff067
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 21:23:13 2018 +0000

    widgetbars, utilise 'ExpanderTitleContainerHack'

    -facilitates styling of the expander title bars

commit 7e386b5
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 21:17:43 2018 +0000

    core, refactor 'ExpandBoxHack'

    -move to common 'qltk.x' path
    -rename to more appropriate 'ExpanderTitleContainerHack'
    -add '__init__' function to populate content

commit d7977f7
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Mar 17 17:27:18 2018 +0000

    widgetbars, prefer comprehensions over maps

commit 1d7544a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 20:41:28 2018 +0000

    update licence info on new files

commit 6f8f41c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Mar 11 09:33:20 2018 +0000

    fix harmonisation of initial pane sort order

    -fixes 'test_qltk_prefs', don't assume plugin layer is initialised!

commit e257f73
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 16:59:03 2017 +0100

    harmonise the widgetbars initial pane sort order

    -with no sort order set, make it the same as the order without widgetbars

commit 0c76d23
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sun Sep 17 11:35:48 2017 +0100

    add a 'force' option to the 'css_add' wrapper

    -enforce css overrides by loading as USER priority when absolutely
    necessary (e.g. when a user override would compromise the resizing/
    positioning calculations). doing this is no different to enforcing
    styling via use of widget properties (e.g. margin) or style properties,
    for which users obviously have zero influence upon

commit 84cdac1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:38:18 2017 +0100

    paned handle position considerations

    -fix all paned handle position calculations by adding handle size
    corrections to account for 'wide handle' support in later Gtk versions
    -removes the 'seemingly arbitrary' +/-5px handle positioning for collapsed
    expanders, calculating the position based on size instead

commit fc76929
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:43:39 2017 +0100

    add handle position locking for a paned child2

    -only where child1 isn't already locked!
    -without this change, where the last pane in a MultiPaned contained a
    collapsed expander, its parent pane would proportionally resize whenever
    any parent paneds were resized, as opposed to it being locked into position
    as we'd want with any collapsed item

commit 06814b9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 17:08:09 2017 +0100

    Gtk version compatibility

    -widgets don't automatically expand to fill space in their parent
    as they did previously

commit 03f2fe9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Sep 12 18:53:26 2017 +0100

    remove superfluous widgetbar updating

commit a4528c9
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Sep 8 13:24:32 2017 +0100

    improve the relatively close test

commit 63c0ce6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:59:00 2017 +0100

    reduce indentation with cleaner return pattern

commit 17af9ef
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:13:28 2017 +0100

    remove multiline debug statement

commit 36cac3c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 17:10:40 2017 +0100

    inline some logic to improve readability

commit 2f9c9e0
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:50:19 2017 +0100

    change widgetbars plugin path

commit 0a45f12
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:44:01 2017 +0100

    remove redundant PLUGIN_CONFIG_SECTION variable

commit 1d958f3
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:38:43 2017 +0100

    add 'WidgetBar' class docstring

commit f7bd5fb
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:08:07 2017 +0100

    add 'widgetbars_enabled' property docstring for clarity

commit 0002f45
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 16:02:04 2017 +0100

    remove variable access repetition

commit 2fe87f0
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:55:45 2017 +0100

    simplify logic for sanity sake

commit eb65731
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:54:06 2017 +0100

    fix no-op bug

commit 84d1d5c
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:53:16 2017 +0100

    remove redundant attribute tests

commit aa16903
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Sep 6 15:52:13 2017 +0100

    variable name refactoring

commit 65f4cab
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Wed Aug 30 07:14:05 2017 +0100

    XPaned based tests

commit 748ff8a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 10:03:44 2017 +0100

    simple WidgetBars EventPlugin

commit 6f19f0f
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 11 07:00:56 2017 +0100

    expose a plugin toggled event from PluginManager

commit b57d30d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Thu Aug 10 10:56:01 2017 +0100

    WidgetBar implementation [quodlibet#152 part]

    -tied in as a UserInterfacePlugin

commit 715e486
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:48:11 2017 +0100

    update paned definitions

commit d4a65c6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Tue Aug 8 07:15:10 2017 +0100

    add 'Expander-aware' X-Paned flavours

    -adds XPaned base with H/V subclasses
    -adds Multi XPaned H/V subclasses of MultiPaned
    -implementation based on a single pane of 'x'-pane being set as
    expandable. work is then done to ensure that pane takes any space given
    by collapsed expanders, or resized panes
    -PaneLock objects are embedded into widgets who want to lock their own
    size during (necessarily) chaotic resizing operations
    -fixing sizes manually AND allowing for manual resizing is difficult.
    setting size requests locks the minimum pane sizes, which makes for
    sensible resizing 'of the pane you'd expect to be resized', but doing so means
    the panes cannot be made smaller. given the pane handle is unhookable in
    any useful way (right down to the Gtk core), the 'nearly perfect'
    workaround employed uses do_allocate_size to remove locks and button
    releases to restore them. the unwanted result of this is that a resize
    MUST start by making the pane at least 1px BIGGER, before making it
    bigger OR smaller. in practice, this is not really noticable

commit 5b506cf
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 08:41:40 2017 +0100

    allow custom widget packing in MultiPaned

commit a84f4a1
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:53:42 2017 +0100

    fix typo

commit 4a50d9d
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Sat Aug 5 07:52:12 2017 +0100

    make MultiRPaned more generic

    -add code path for absolute based sizing in 'make_pane_sizes_equal'
    -update relevant test
    -rename class to MultiPaned

commit a5362cf
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 08:13:51 2017 +0100

    exposed multipaned paned set

commit bb775c6
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Aug 4 07:53:58 2017 +0100

    orientation agnostic names
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment