Commit graph

4833 commits

Author SHA1 Message Date
4acb9be4d2 Library: singleton / lib::Depend should be rewritten eventually (#1086) 2017-03-05 01:01:08 +01:00
c068779a80 command-invocation: use case analysis 2017-03-03 23:59:22 +01:00
40eba94917 planning: next steps towards command invocation (#1070) 2017-03-03 19:42:53 +01:00
41ea59176c UI-top-level: include global help controller ("wizzard") 2017-03-02 23:49:23 +01:00
8d27585976 Menu-Actions: add stubs to forward session operations to InteractionDirector 2017-03-02 23:08:01 +01:00
d37fa89a5e reorder actions in the file menu
- we do not need an "open" action especially for projects
- a generic "open" for any will suffice, depending on the context
2017-03-02 22:15:12 +01:00
36024e0786 fail UI when main menu is misconfigured
...there is no point in running an obviously misconfigured application.
2017-03-02 21:49:13 +01:00
02d8744f25 UI-top-level: Considerations regarding control structure (#1085) 2017-03-02 18:01:11 +01:00
198ccff396 UI-top-level: install presentation state recording service (#1081) 2017-02-19 04:46:13 +01:00
60adaa5639 UI-top-level: simplify name and namespace
the (Presentation)StateManager interface and implementation
seems to fit in more into the ctrl package
2017-02-19 04:27:09 +01:00
4f1def6366 UI-top-level: setup wiring of interacton control core components 2017-02-19 03:46:00 +01:00
4784605771 move a using clause down 2017-02-19 03:17:08 +01:00
a1240c8acd UI-top-level: connect the asset managment section to the UI-Bus 2017-02-19 03:02:42 +01:00
cddc5afe41 UI-top-level: establish top-level model and control structure 2017-02-19 02:50:55 +01:00
f1f7b06d90 UI-top-level: introduce new entities for Interaction Control (#979, #1078, #1080)
In fact this also introduces various new concepts and represents
a fundamental decision regarding the organisation of the UI
2017-02-18 02:54:50 +01:00
65cae05333 remove yet another wildcard include 2017-02-18 00:28:31 +01:00
b82b1f4460 UI-top-level: rearrange and split out styling/theming into dedicated class
gradually UiManager turnes into proper shape for that kind of class
2017-02-18 00:28:31 +01:00
3e6b2ae51f UI-top-level: rearrange various file locations
"workspace" is no longer the de-facto backbone of the UI,
rather, we got a global context residing in "ctrl"
2017-02-17 21:16:42 +01:00
d3937261ab detailed analyse regarding focus movements 2017-02-16 21:51:53 +01:00
e40c14606e more generic analysis regarding fundamentals of *interaction control* 2017-02-16 04:01:08 +01:00
4d8579e0ee DOC: rename page 2017-02-16 02:33:23 +01:00
5dcbfd0fe2 continue analysis for #1070 2017-02-15 01:41:22 +01:00
de7e47fa21 UI-top-level: solve several of the previously tricky wiring problems
...this solution feels good thus far
2017-02-14 03:43:41 +01:00
e94b294121 UI-top-level: wiring in accordance to the new global context
this pretty much resolves most of the uncertainities:
we now get a set of mutually dependent services, each of which
is aware of each other member's capabilities, but accesses those
only through this partner's API
2017-02-14 03:42:03 +01:00
f8eb640dd7 UI-top-level: decision to form a cohesive top-level context (#1067) 2017-02-14 03:01:19 +01:00
4f302eb81b pondering over the top-level UI structure.... 2017-02-13 01:19:33 +01:00
dcd19ed2bd fix definition of raw string
the parens need to be innermost
2017-02-12 00:39:22 +01:00
c84f5e00e6 add a similar function to find the window with keyboard focus
...added for sake of completeness, since it is low hanging fruit
2017-02-11 23:51:47 +01:00
ca49a949c0 supply a function to find the currently active workspace window
Idea is to use the window list, which should hold any workspace window
ever created, and pick the first one marked as 'active' by GTK
(whatever that means)
2017-02-11 23:45:50 +01:00
fa7fbb3554 remove top-level default include 2017-02-11 23:40:26 +01:00
8a912926ec UI-top-level: integrate and wire the new InteractionDirector 2017-02-11 00:09:20 +01:00
27c8e78cf5 UI-top-level: invent a new backbone entity to link between model and interaction state
After quite some pondering, it occured to me that we both
- need some top-level model::Tangible to correspond to the RootMO in the session
- need some Controller to handle globally relevant actions
- need a way to link action invocation to transient interaction state (like focus)

This leads to the introduction of a new top-level controller, which is better
suited to fill that role than the depreacted model-controller or the demoted window-manager


looks like we're in management business here  ;-)
we chop off heads, slaughter the holy cows and then install -- a new manager
2017-02-10 23:10:17 +01:00
eb42db537f implement opening the initial top level window 2017-02-08 04:08:55 +01:00
8a10862372 write the global menu definition as C++11 raw string 2017-02-08 04:08:15 +01:00
02ba010d2c UI-top-level: define the menu bindings by lambda
...allows us to get rid of a lot of sigc boilerplate syntax.
The downside is that the resulting functors are not sigc::trackable.
This seems adequate here, since the whole top-level UI backbone is
maintained by GtkLumiera, and thus ensured to exist as long as the
main GTK event loop is running.

WARNING: beware of creating "wild" background thrads in the UI, without
proper scheduling of any communication via the event loop!
2017-02-02 21:52:22 +01:00
0f2fa24a01 UI-top-level: turn Actions helper into header-only definition
no need for a further translation unit,
rather, definition of global menu now becomes part of the
ui-manager.cpp translation unit, which allows for some additional
inlining and simplifications by the compiler
2017-02-02 21:28:11 +01:00
52d2bad6db UI-top-level: turn Actions into a PImpl
it turns out to be essentially an implementation detail,
it is a builder class and it acts as closure for the bound
menu actions, but it is not accessed after initialisation.

This allows to reduce the header inclusion load significantly
2017-02-02 20:59:54 +01:00
f913f30499 UI-top-level: reshape Actions
start with drilling down unnecessary includes
2017-02-02 20:51:03 +01:00
fb8923036d reduce unnecessary header includes 2017-02-02 19:57:01 +01:00
04cb0790e8 fix missing initialisation 2017-02-02 19:41:58 +01:00
0f5280a4f0 UI-top-level: draft a concept how to attach actions to the current window (#1069)
This is a very pervasive change and basically turns the whole top-level
of the GTK-UI bottom-up. If this change turns out right, it would likely
solve #1048

WARNING: in parts not implemented, breaks UI
2017-02-01 03:55:20 +01:00
865ee11621 UI-top-level: push down Config access to actual usage site (#1067)
...allows us to get rid of the access key constants and the
accessor functions in GtkLumiera
2017-02-01 03:46:30 +01:00
4e1641f192 sketchy workaround for access to the PlayController (#1072)
...which itself is obsolete and needs to be redesigned from scratch.
For now we create a local instance of this obsolete PlaybackController
in each viewer panel and we use a static accessor function to just some
instance. Which would break if we start playback with multiple viewer
panels. But we can't anyway, since the Player itself is also a broken
leftover from an obsoleted design study from the early days.

so why care...
2017-01-28 01:11:04 +01:00
6aec1adb38 resolve ambiguity with std::ref vs boost::ref
unfortunately boost/program-options make the boost reference-wrapper visible
And it doesn't help to alias to std::ref at the definition site of the
problematic function (in TimeControl), because this itself is picked up
via ADL

So this is not really a solution, rather a workaround, in the hope
that boost will clean-up this ambiguity eventually
2017-01-28 01:09:16 +01:00
c09eb3e1ed remove the obsolete Project and Controler from ctor arguments
...this (finally) allows us to get rid of these elements within GtkLumiera.
Our Model will be represented in a quite different way (via UI-Bus).
2017-01-27 23:30:38 +01:00
0bdc4e1bb4 QA: mark all wildcard includes in the GUI code (#1071)
as a rule, one should not rely on "using namespace xyz",
since this makes organisation of minimal header includes near impossible.
You end up with mass includes in some "top level" headers, resulting
in painfully slow compilation turnaround times.

In exceptional cases, using namespace foo might be adequate though
2017-01-27 22:47:01 +01:00
d49983d4cb identify items which force GtkLumiera to be a singleton
- WindowList (ex WindowManager)
- Project & Controller

the latter ones are defunct and can be replicated down into each
of the old timeline pannel instances. They just serve the purpose
to keep this old code barely functional, so it can be used as reference
for building the new timeline
2017-01-27 22:17:58 +01:00
86d6e11505 demote the WindowManager to be a petty window list (#1964)
the only adequate thing you can do with managers is to demote them.
2017-01-27 20:48:01 +01:00
a6fb10b9e0 clean-up the WindowManager source (#1064)
in one of the preceding refactorings, I've extracted most of the
functionality from WindowManager, to make it more focussed
2017-01-27 20:22:52 +01:00
1cb2567557 Ui-top-level: use a sincle UiManager instance
instead of letting each window create its own "private interface"
2017-01-26 22:02:45 +01:00