38 #ifndef STAGE_DIALOG_TEST_CONTROL_H 39 #define STAGE_DIALOG_TEST_CONTROL_H 87 Gtk::Orientation orientation =Gtk::ORIENTATION_VERTICAL)
94 operator Gtk::Widget&() {
return frame; }
97 pack_start(Gtk::Widget& child, Gtk::PackOptions options =Gtk::PACK_EXPAND_WIDGET, guint padding =0)
99 box.pack_start (child, options, padding);
110 : Gtk::Box{Gtk::ORIENTATION_VERTICAL}
136 :
public Gtk::Notebook
140 template<
class PAG,
typename...ARGS>
142 buildPage (cuString pageLabel, ARGS&& ...ctorArgs)
144 Gtk::Notebook::append_page (this->manage (
new PAG(forward<ARGS> (ctorArgs)...))
177 FrameBox seg_1_{_(
"log notification"), Gtk::ORIENTATION_HORIZONTAL},
178 seg_2_{_(
"mark via UI-Bus")};
179 Gtk::Button trig_1_, trig_2_, trig_3_, trig_4_;
180 Gtk::RadioButton level_info_{
"Info"},
182 level_erro_{
"Error"};
184 Gtk::ComboBoxText actionID_{
true};
189 return level_info_.get_active()?
NOTE_INFO :
196 return string{content_.get_text()};
202 return string{actionID_.get_entry_text()};
208 content_.set_tooltip_markup (_(
"<b>Ticket #1099</b>:\n" 209 "text message content\n" 210 "<i>when invoking a suitable action,\n" 211 "it will be passed down and sent back</i>"));
212 trig_1_.set_use_underline();
213 trig_1_.set_label (
"_display text");
214 trig_1_.property_xalign() = 0;
215 trig_1_.set_tooltip_markup (_(
"Trigger Steam-Stage <b>roundtrip</b>\n" 216 "Steam invokes GuiNotification::displayInfo"));
218 level_warn_.join_group(level_info_);
219 level_erro_.join_group(level_info_);
220 level_warn_.set_active();
222 trig_2_.set_use_underline();
223 trig_2_.property_xalign() = 0;
224 trig_2_.set_label (
"mark _error");
225 trig_2_.set_tooltip_markup (_(
"trigger Steam-command, which in turn\n" 226 "sends an error state mark via UI-Bus"));
228 trig_3_.set_use_underline();
229 trig_3_.property_xalign() = 0;
230 trig_3_.set_label (
"mark _info");
231 trig_3_.set_tooltip_markup (_(
"trigger Steam-command, which in turn\n" 232 "sends an info state mark via UI-Bus"));
234 trig_4_.set_use_underline();
235 trig_4_.set_label (
"_mark");
236 trig_4_.property_xalign() = 0;
237 trig_4_.set_tooltip_markup (_(
"trigger Steam-command, which in turn\n" 238 "sends an <b>state mark</b> message, using\n" 239 "the message action-ID from the combobox"));
240 actionID_.append (cuString{MARK_Flash});
241 actionID_.append (cuString{MARK_reveal});
242 actionID_.append (cuString{MARK_clearErr});
243 actionID_.append (cuString{MARK_clearMsg});
244 actionID_.append (cuString{MARK_expand});
245 actionID_.append (cuString{MARK_reset});
246 actionID_.set_active(1);
247 actionID_.set_tooltip_markup(
"select the specific action-ID\n" 248 "when sending a <b>mark</b> message.\n" 249 "<u>note</u>: can enter arbitrary ID");
251 markParam_.pack_start(trig_4_);
252 markParam_.pack_start(actionID_, Gtk::PACK_SHRINK);
254 seg_1_.pack_start (trig_1_, Gtk::PACK_EXPAND_WIDGET);
255 seg_1_.pack_start (level_info_, Gtk::PACK_SHRINK);
256 seg_1_.pack_start (level_warn_, Gtk::PACK_SHRINK);
257 seg_1_.pack_start (level_erro_, Gtk::PACK_SHRINK);
259 seg_2_.pack_start (trig_2_);
260 seg_2_.pack_start (trig_3_);
261 seg_2_.pack_start (markParam_);
263 pack_start (content_, Gtk::PACK_SHRINK);
264 pack_start (seg_1_, Gtk::PACK_SHRINK);
265 pack_start (seg_2_, Gtk::PACK_SHRINK);
268 trig_1_.signal_clicked().connect(
270 trig_2_.signal_clicked().connect(
272 trig_3_.signal_clicked().connect(
274 trig_4_.signal_clicked().connect(
287 FrameBox part_1_{_(
"populate"), Gtk::ORIENTATION_HORIZONTAL}
288 , part_2_{_(
"modify content")}
290 Gtk::Button seq_1_, seq_2_;
296 string dummyID = sanitise (dummy_.get_text());
297 dummy_.set_text (
string{
_Fmt{
"d%s%02d"} % lib::test::randStr(2) % (1 + rand() % 99)});
304 seq_1_.set_label (
"Sequence 1");
305 seq_1_.set_tooltip_markup (_(
"Push <b>population diff</b> up into the UI\n" 306 "provides the typical simple default timeline structure"));
308 seq_2_.set_label (
"Sequence 2");
309 seq_2_.set_tooltip_markup (_(
"Push <b>population diff</b> up into the UI\n" 310 "provides a complex nested timeline structure"));
312 dummy_.set_tooltip_markup (_(
"<i>dummy ID value</i>\n" 313 "used to build names in the generated content"));
314 dummy_.set_max_width_chars(12);
317 part_1_.pack_start (seq_1_, Gtk::PACK_SHRINK);
318 part_1_.pack_start (seq_2_, Gtk::PACK_SHRINK);
319 part_1_.pack_start (dummy_, Gtk::PACK_EXPAND_WIDGET);
322 mut_1_.set_label (
"move elements");
323 mut_1_.set_tooltip_markup (_(
"randomly manipulate temporal position of dummy elements"));
325 part_2_.pack_start (mut_1_);
327 pack_start (part_1_, Gtk::PACK_SHRINK);
328 pack_start (part_2_, Gtk::PACK_SHRINK);
331 seq_1_.signal_clicked().connect(
333 seq_2_.signal_clicked().connect(
336 mut_1_.signal_clicked().connect(
337 [&]{ cerr <<
"gelldaschaugst..." <<endl; });
345 : Dialog(_(
"Test and Diagnostics"), parent, Gtk::DIALOG_DESTROY_WITH_PARENT)
350 get_content_area()->pack_start (notebook_);
353 notebook_.buildPage<
Page1> (_(
"#1099"), uiBus_);
354 notebook_.buildPage<
Page2> (_(
"Populate"), uiBus_);
357 notebook_.set_current_page(-1);
Abstraction: a tangible element of the User Interface.
Hard wired key constants and basic definitions for communication with the GUI.
Major public Interface of the Lumiera GUI.
connection point at the UI-Bus.
Ticket #1014 : populate the Timeline in the GUI.
explicitly named shortcut for the typical dialog page content holder
Any copy and copy construction prohibited.
static const int BorderPadding
The space in pixels to pad the border of Lumiera dialog boxes.
std::string sanitise(std::string const &)
produce an identifier based on the given string.
Dummy and scaffolding to help development of the UI - Session connection.
Common ID definitions for Steam-Layer commands.
something to be aware of, to be indicated unobtrusively
A front-end for using printf-style formatting.
Managing lifecycle for a collection of objects.
Simple vector based collection of pointers, managing lifecycle of the pointed-to objects.
Attachment point to the UI-Bus.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Lumiera GTK UI implementation root.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
A complex, tabbed-notebook-style non-modal dialog window, dedicated to development, diagnostics and experimentation.
Generic building block for tree shaped (meta)data structures.
A collection of frequently used helper functions to support unit testing.
lib::diff::GenNode commandMessage(Symbol cmdID, ARGS &&... args)
convenience shortcut to build a message suitable for command invocation
severe condition to be indicated prominently
Global constants and definitions for dialogs.
Building block for a segment within a dialog page.
possibly interesting info that can be safely ignored
A set of basic GTK includes for the UI.
virtual void act(GenNode const &command)
prepare or trigger invocation of a command.
generic data element node within a tree
Helper widget to simplify construction and wiring of a [Notebook] widget.
Ticket #1099 : perform a dummy round-trip to verify Steam-Stage integration.