Lumiera  0.pre.03
»edit your freedom«
id-scheme.hpp
Go to the documentation of this file.
1 /*
2  ID-SCHEME.hpp - naming and ID scheme definitions for the GUI
3 
4  Copyright (C)
5  2017, Hermann Vosseler <Ichthyostega@web.de>
6 
7   **Lumiera** is free software; you can redistribute it and/or modify it
8   under the terms of the GNU General Public License as published by the
9   Free Software Foundation; either version 2 of the License, or (at your
10   option) any later version. See the file COPYING for further details.
11 
12 */
13 
14 
58 #ifndef STAGE_ID_SCHEME_H
59 #define STAGE_ID_SCHEME_H
60 
61 
62 #include "lib/symbol.hpp"
63 #include "lib/idi/entry-id.hpp"
65 
66 
67 /* === forward declarations === */
68 namespace steam {
69  namespace asset {
70  class Timeline;
71 
72  namespace meta {
73  class ErrorLog;
74  }
75  }
76 }
77 
78 namespace stage {
79  namespace timeline {
80  class TimelineController;
81  }
82  namespace widget {
83  class ErrorLogDisplay;
84  }
85  namespace idi {
86 
87  using lib::Literal;
88  using lib::idi::EntryID;
89  using interact::UICoord;
90 
91 
92  using ID = lib::idi::BareEntryID const&;
93 
94  /* === primary component view types === */
95  using TimelineView = timeline::TimelineController;
96  using ErrorLogView = widget::ErrorLogDisplay;
97 
98 
102  template<>
104  {
106  };
107 
108 
112  template<>
114  {
116 
118  //
119  // alloc = onePerWindow
120  // locate = within(InfoBoxPanel)
121  };
122 
123 /*
125 // Timeline
126 // add to group of timelines within the timelinePanel
127 
128 alloc = unlimited
129 locate = perspective(edit).panel(timeline)
130  or panel(timeline)
131  or currentWindow().panel(timeline).create()
132 
133 // Viewer
134 // here multiple alternatives are conceivable
135 // - allow only a single view instance in the whole application
136 
137 alloc = onlyOne
138 locate = external(beamer)
139  or view(viewer)
140  or perspective(mediaView).panel(viewer)
141  or panel(viewer)
142  or firstWindow().panel(viewer).view(viewer).create()
143 
144 // - allow two viewer panels (the standard layout of editing applications)
145 
146 alloc = limitPerWindow(2)
147 locate = perspective(edit).panel(viewer)
148  or currentWindow().panel(viewer)
149  or panel(viewer)
150  or currentWindow().panel(viewer).create()
151 
152 // (Asset)Bin
153 // within the dedicated asset panel, add to the appropriate group for the kind of asset
154 
155 alloc = unlimited
156 locate = currentWindow().perspective(edit).tab(assetType())
157  or perspective(asset).view(asset)
158  or tab(assetType())
159  or view(asset).tab(assetType()).create()
160  or firstWindow().panel(asset).view(asset).create()
161 
162 // Error-Log
163 // use the current `InfoBoxPanel` if such exists, fall back to using a single view on the primary window
164 
165 alloc = limitPerWindow(1)
166 locate = currentWindow().panel(infobox)
167  or view(error)
168  or panel(infobox)
169  or firstWindow().panel(infobox).view(error).create()
170 
171 */
172 
173 
174  }//namespace stage::idi
175 } // namespace stage
176 #endif /*STAGE_ID_SCHEME_H*/
type erased baseclass for building a combined hash and symbolic ID.
Definition: entry-id.hpp:133
A framework for configuration of view access and allocation patterns.
Generic Component View descriptors.
inline string literal This is a marker type to indicate that
Definition: symbol.hpp:76
typed symbolic and hash ID for asset-like position accounting.
Definition: entry-id.hpp:126
Steam-Layer implementation namespace root.
Marker types to indicate a literal string and a Symbol.
Lumiera GTK UI implementation root.
Definition: guifacade.cpp:37
Bare symbolic and hash ID used for accounting of asset like entries.
Widget to display log and error messages.
Controller to supervise the timeline display.
The asset subsystem of the Steam-Layer.
Definition: wrapperptr.hpp:35
Receive, collect, filter and possibly persist incident records.
Definition: error-log.hpp:65