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) Lumiera.org
5  2017, Hermann Vosseler <Ichthyostega@web.de>
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License as
9  published by the Free Software Foundation; either version 2 of
10  the License, or (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 
21 */
22 
23 
67 #ifndef STAGE_ID_SCHEME_H
68 #define STAGE_ID_SCHEME_H
69 
70 
71 #include "lib/symbol.hpp"
72 #include "lib/idi/entry-id.hpp"
74 
75 
76 /* === forward declarations === */
77 namespace steam {
78  namespace asset {
79  class Timeline;
80 
81  namespace meta {
82  class ErrorLog;
83  }
84  }
85 }
86 
87 namespace stage {
88  namespace timeline {
89  class TimelineController;
90  }
91  namespace widget {
92  class ErrorLogDisplay;
93  }
94  namespace idi {
95 
96  using lib::Literal;
97  using lib::idi::EntryID;
98  using interact::UICoord;
99 
100 
101  using ID = lib::idi::BareEntryID const&;
102 
103  /* === primary component view types === */
104  using TimelineView = timeline::TimelineController;
105  using ErrorLogView = widget::ErrorLogDisplay;
106 
107 
111  template<>
113  {
115  };
116 
117 
121  template<>
123  {
125 
127  //
128  // alloc = onePerWindow
129  // locate = within(InfoBoxPanel)
130  };
131 
132 /*
134 // Timeline
135 // add to group of timelines within the timelinePanel
136 
137 alloc = unlimited
138 locate = perspective(edit).panel(timeline)
139  or panel(timeline)
140  or currentWindow().panel(timeline).create()
141 
142 // Viewer
143 // here multiple alternatives are conceivable
144 // - allow only a single view instance in the whole application
145 
146 alloc = onlyOne
147 locate = external(beamer)
148  or view(viewer)
149  or perspective(mediaView).panel(viewer)
150  or panel(viewer)
151  or firstWindow().panel(viewer).view(viewer).create()
152 
153 // - allow two viewer panels (the standard layout of editing applications)
154 
155 alloc = limitPerWindow(2)
156 locate = perspective(edit).panel(viewer)
157  or currentWindow().panel(viewer)
158  or panel(viewer)
159  or currentWindow().panel(viewer).create()
160 
161 // (Asset)Bin
162 // within the dedicated asset panel, add to the appropriate group for the kind of asset
163 
164 alloc = unlimited
165 locate = currentWindow().perspective(edit).tab(assetType())
166  or perspective(asset).view(asset)
167  or tab(assetType())
168  or view(asset).tab(assetType()).create()
169  or firstWindow().panel(asset).view(asset).create()
170 
171 // Error-Log
172 // use the current `InfoBoxPanel` if such exists, fall back to using a single view on the primary window
173 
174 alloc = limitPerWindow(1)
175 locate = currentWindow().panel(infobox)
176  or view(error)
177  or panel(infobox)
178  or firstWindow().panel(infobox).view(error).create()
179 
180 */
181 
182 
183  }//namespace stage::idi
184 } // namespace stage
185 #endif /*STAGE_ID_SCHEME_H*/
type erased baseclass for building a combined hash and symbolic ID.
Definition: entry-id.hpp:142
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:85
typed symbolic and hash ID for asset-like position accounting.
Definition: entry-id.hpp:135
Steam-Layer implementation namespace root.
Marker types to indicate a literal string and a Symbol.
Lumiera GTK UI implementation root.
Definition: guifacade.cpp:46
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:44
Receive, collect, filter and possibly persist incident records.
Definition: error-log.hpp:74