Commit graph

527 commits

Author SHA1 Message Date
a53032cfc5 Analysis regarding the next step, integration of InstanceManagement into SessionCommand facade 2017-04-09 01:34:18 +02:00
22c1a1d189 Commands: rename some of the planned components for command access
...to make the names more handy
2017-04-08 16:24:36 +02:00
97e42f75ee Commands: code up implementation of CommandInstanceManager
interesting new twist: we do not even need to decorate with a running number,
since we'll get away with an anonymous command instance, thanks to Command
being a smart-handle
2017-04-01 02:33:15 +02:00
b303bcebc0 Commands: complete the test case
verify the commands where indeed defined as given by the lambda
2017-03-31 03:27:26 +02:00
b865acf758 Commands: decide about the basic concept how commands are to be defined (#215)
The point in question is how to manage these definitions in practice,
since we're about to create a huge lot of them eventually. The solution
attempted here is heavily inspired by the boost-test framework
2017-03-18 01:55:45 +01:00
c251f9c2a9 Commands: establish location for defining commands 2017-03-17 21:07:12 +01:00
ada40609f5 more planning of command invocation structure 2017-03-17 04:09:44 +01:00
cfe9cc96f6 planning and analysis regarding command invocation 2017-03-15 04:37:06 +01:00
ff42530f25 push on the topic of global action definitions (#1085)
...because this topic serves as a vehicle to elaborate various core concepts
of the UI backbone, especially how to access, bind and invoke Proc-Layer commands
2017-03-14 04:30:02 +01:00
57a336ab49 more planning with respect to UI/Session command access (#1087) 2017-03-11 02:07:52 +01:00
789246fc3a draft a concept for command instantiation (#1070) 2017-03-08 04:25:33 +01:00
2f538f5f95 continue analysis regarding command invocation (#1070)
...turns out to be a nasty subject, now we're able to see
in more concrete detail how this interaction needs to be carried out.
Basically this is a blocker for the top-level, since it is obviously
some service in top-level, which ultimately becomes responsible for
orchestrating this activity
2017-03-05 02:53:04 +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
02d8744f25 UI-top-level: Considerations regarding control structure (#1085) 2017-03-02 18:01:11 +01:00
cddc5afe41 UI-top-level: establish top-level model and control structure 2017-02-19 02:50:55 +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
f8eb640dd7 UI-top-level: decision to form a cohesive top-level context (#1067) 2017-02-14 03:01:19 +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
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
43bd5c3f57 further decisions regarting the UI top-level 2017-01-26 20:51:43 +01:00
06a61773fa Nexus/CoreService: consider handling of bus connections.
Now I've realised that there are two degrees of connectedness.
It is very much possible to have a "free standing" BusTerm, which
only allows to send uplink messages. In fact, this is how CoreService
is implemented, and probably it should also the way how to connect
the GuiNotification service...
2017-01-20 01:54:49 +01:00
2045132d3e SessionCommand: multithreaded stress test PASS (closes #1046)
Writing and debugging such tests is always an interesting challenge...

Fortunately this exercise didn't unveil any problem in the newly written
code, only some insidious problems in the test fixture itself. Which
again highlights the necessity, that each *command instance* needs
to be an independent clone from the original *command prototype*,
since argument binding messages and trigger messages can appear
in arbitrary order.
2017-01-14 08:37:46 +01:00
cfbbb750f8 considerations regarding the integration of commmand invocations (#1046)
not quite sure how to get the design straight.
Also a bit concerned because we'll get this much indirections;
the approach to send invocations via the UI-Bus needs to prove its viability
2017-01-09 01:22:43 +01:00
458fda4058 DispatcherLoop implementation complete (closes #1049)
Did a full review of state and locking logic, seems airtight now.
- command processing itself is unimplemented, we log a TODO message for now
- likewise, builder is not implemented
- need to add the deadlock safeguard #1054
2017-01-05 23:36:42 +01:00
1b970cd943 Session-Subsytem(#318): finish review of locking and lifecycle sanity
This subsystem as such can be considered as implemented now,
while several details still wait to be filled in.
2017-01-05 03:38:46 +01:00
14e0d65468 Looper: idea how to determine "builder dirty"
...just by offloading that task onto the CommandQueue,
which happens to know when a new command is being scheduled
2016-12-20 03:18:03 +01:00
53ed0e9aa3 ProcDispatcher: consider and document the fine points of operational semantics
there are some pitfalls related to timing and state,
especially since some state changes are triggered, but not immediately reached
2016-12-16 23:11:19 +01:00
00077d0431 ProcDispatcher: decide on requirements and implementation structure (#1049) 2016-12-15 20:48:35 +01:00
86f446c197 better control of the shutdown sequence
holding the SessionCommandService in a unique_ptr allows us to
close the Interface reliably *before* the Loop is halted.
2016-12-15 05:54:48 +01:00
1ec883787a DOC: decision about where to home the SessionCommandService
After some consideration, it became clear that this service implementation
is closely tied to the DispatcherLoop -- which will consequently be
responsible to run and expose this service implementation
2016-12-15 05:07:40 +01:00
eb73242113 document decisions regarding session subsystem components and lifecycle
* "session subsystem" == running the ProcDispatcher
* session itself is pulled up on demand by the SessionManager
2016-12-14 05:10:51 +01:00
c5eff7f4c5 markers can appear at various scopes
need to add them at the respective levels into the structural model
2016-12-03 22:37:41 +01:00
9b8fae1a9b (re)consider the problem how to deal with mandatory/optional object fields
this is a tricky problem and a tough decision.
After quite some pondering I choose to enforce mandatory fields
through the ctor, and not to allow myself cheating my way around it
2016-12-03 19:37:52 +01:00
f995dd51e2 define creation and control structure of TimelineWidget 2016-12-03 05:42:34 +01:00
14588dbc19 clarify the principles of UI - Core collaboration
it occurred to me that effectively we abandoned the use of
a business facade and proxy model in the UI. The connection
becomes entirely message based now.

To put that into context, the originally intended architecture
never came to life. The UI development stalled before this could
happen; possibly it was also hampered by the "impedance mismatch"
between our intentions in the core and such a classical, model centric
architecture. Joel several times complained that he felt blocked; but
I did not really understand this issue. Only recently, when I came to
adapting the timeline display to GTK-3, I realised the model centric
approach can not possibly work with such an open model as intended
in our case. It would lead to endless cascades of introspection.
2016-12-02 20:07:31 +01:00
3ffd511a76 consider lifecycle and instance management of the timeline 2016-12-02 19:34:38 +01:00
3c976485ba DOC: add some explanations to the drawing from yesterday 2016-12-02 19:14:45 +01:00
d13f42128e DOC: TiddlyWiki has split into "classic" and TiddlyWiki-5
...better add the URL to tiddlywiki.org,
which seems to be the OpenSourceProject

not sure about the intentions of tiddlywiki.com
2016-12-02 19:13:24 +01:00
7c09f55a9a DOC: drawing to show the structure of timeline display 2016-12-02 04:07:46 +01:00
0b1bc6a579 define and document the building blocks of the new timeline UI
these are just empty class files, but writing a basic description
for each made me flesh out a lot of organisational aspects of what
I am about to build now
2016-12-02 01:53:00 +01:00
67beeab25a start with actual rework of the timeline display
draft a concept for timeline layout management
2016-12-01 21:01:45 +01:00
170c505a8a (cont) analysis of timeline display control 2016-11-28 03:41:25 +01:00
f5ea31a533 consider how diff application might interplay with display changes
...it seemed first that we'd might run into a very fundamental problem;
but after some consideration it turns out the interspersed display manager
and the decoupling between model/presenter and widget happens to mitigate
this problem as well.
2016-11-26 04:18:43 +01:00
5badfe211e expand analysis regarding changes of the display structure 2016-11-21 01:37:54 +01:00
b1d0eaad8e expand analysis on the (possible) global structure of timeline display 2016-11-20 23:54:11 +01:00
3757a56ac9 more detailed planning of architecture for clip presentation
...first UML diagram created with Umbrello!
2016-11-20 17:52:21 +01:00