29 #ifndef STAGE_DIALOG_TEST_CONTROL_H 30 #define STAGE_DIALOG_TEST_CONTROL_H 78 Gtk::Orientation orientation =Gtk::ORIENTATION_VERTICAL)
85 operator Gtk::Widget&() {
return frame; }
88 pack_start(Gtk::Widget& child, Gtk::PackOptions options =Gtk::PACK_EXPAND_WIDGET, guint padding =0)
90 box.pack_start (child, options, padding);
101 : Gtk::Box{Gtk::ORIENTATION_VERTICAL}
127 :
public Gtk::Notebook
131 template<
class PAG,
typename...ARGS>
133 buildPage (cuString pageLabel, ARGS&& ...ctorArgs)
135 Gtk::Notebook::append_page (this->manage (
new PAG(forward<ARGS> (ctorArgs)...))
168 FrameBox seg_1_{_(
"log notification"), Gtk::ORIENTATION_HORIZONTAL},
169 seg_2_{_(
"mark via UI-Bus")};
170 Gtk::Button trig_1_, trig_2_, trig_3_, trig_4_;
171 Gtk::RadioButton level_info_{
"Info"},
173 level_erro_{
"Error"};
175 Gtk::ComboBoxText actionID_{
true};
180 return level_info_.get_active()?
NOTE_INFO :
187 return string{content_.get_text()};
193 return string{actionID_.get_entry_text()};
199 content_.set_tooltip_markup (_(
"<b>Ticket #1099</b>:\n" 200 "text message content\n" 201 "<i>when invoking a suitable action,\n" 202 "it will be passed down and sent back</i>"));
203 trig_1_.set_use_underline();
204 trig_1_.set_label (
"_display text");
205 trig_1_.property_xalign() = 0;
206 trig_1_.set_tooltip_markup (_(
"Trigger Steam-Stage <b>roundtrip</b>\n" 207 "Steam invokes GuiNotification::displayInfo"));
209 level_warn_.join_group(level_info_);
210 level_erro_.join_group(level_info_);
211 level_warn_.set_active();
213 trig_2_.set_use_underline();
214 trig_2_.property_xalign() = 0;
215 trig_2_.set_label (
"mark _error");
216 trig_2_.set_tooltip_markup (_(
"trigger Steam-command, which in turn\n" 217 "sends an error state mark via UI-Bus"));
219 trig_3_.set_use_underline();
220 trig_3_.property_xalign() = 0;
221 trig_3_.set_label (
"mark _info");
222 trig_3_.set_tooltip_markup (_(
"trigger Steam-command, which in turn\n" 223 "sends an info state mark via UI-Bus"));
225 trig_4_.set_use_underline();
226 trig_4_.set_label (
"_mark");
227 trig_4_.property_xalign() = 0;
228 trig_4_.set_tooltip_markup (_(
"trigger Steam-command, which in turn\n" 229 "sends an <b>state mark</b> message, using\n" 230 "the message action-ID from the combobox"));
231 actionID_.append (cuString{MARK_Flash});
232 actionID_.append (cuString{MARK_reveal});
233 actionID_.append (cuString{MARK_clearErr});
234 actionID_.append (cuString{MARK_clearMsg});
235 actionID_.append (cuString{MARK_expand});
236 actionID_.append (cuString{MARK_reset});
237 actionID_.set_active(1);
238 actionID_.set_tooltip_markup(
"select the specific action-ID\n" 239 "when sending a <b>mark</b> message.\n" 240 "<u>note</u>: can enter arbitrary ID");
242 markParam_.pack_start(trig_4_);
243 markParam_.pack_start(actionID_, Gtk::PACK_SHRINK);
245 seg_1_.pack_start (trig_1_, Gtk::PACK_EXPAND_WIDGET);
246 seg_1_.pack_start (level_info_, Gtk::PACK_SHRINK);
247 seg_1_.pack_start (level_warn_, Gtk::PACK_SHRINK);
248 seg_1_.pack_start (level_erro_, Gtk::PACK_SHRINK);
250 seg_2_.pack_start (trig_2_);
251 seg_2_.pack_start (trig_3_);
252 seg_2_.pack_start (markParam_);
254 pack_start (content_, Gtk::PACK_SHRINK);
255 pack_start (seg_1_, Gtk::PACK_SHRINK);
256 pack_start (seg_2_, Gtk::PACK_SHRINK);
259 trig_1_.signal_clicked().connect(
261 trig_2_.signal_clicked().connect(
263 trig_3_.signal_clicked().connect(
265 trig_4_.signal_clicked().connect(
278 FrameBox part_1_{_(
"populate"), Gtk::ORIENTATION_HORIZONTAL}
279 , part_2_{_(
"modify content")}
281 Gtk::Button seq_1_, seq_2_;
287 string dummyID = sanitise (dummy_.get_text());
288 dummy_.set_text (
string{
_Fmt{
"d%s%02d"} % lib::test::randStr(2) % (1 +
lib::rani(99))});
295 seq_1_.set_label (
"Sequence 1");
296 seq_1_.set_tooltip_markup (_(
"Push <b>population diff</b> up into the UI\n" 297 "provides the typical simple default timeline structure"));
299 seq_2_.set_label (
"Sequence 2");
300 seq_2_.set_tooltip_markup (_(
"Push <b>population diff</b> up into the UI\n" 301 "provides a complex nested timeline structure"));
303 dummy_.set_tooltip_markup (_(
"<i>dummy ID value</i>\n" 304 "used to build names in the generated content"));
305 dummy_.set_max_width_chars(12);
308 part_1_.pack_start (seq_1_, Gtk::PACK_SHRINK);
309 part_1_.pack_start (seq_2_, Gtk::PACK_SHRINK);
310 part_1_.pack_start (dummy_, Gtk::PACK_EXPAND_WIDGET);
313 mut_1_.set_label (
"move elements");
314 mut_1_.set_tooltip_markup (_(
"randomly manipulate temporal position of dummy elements"));
316 part_2_.pack_start (mut_1_);
318 pack_start (part_1_, Gtk::PACK_SHRINK);
319 pack_start (part_2_, Gtk::PACK_SHRINK);
322 seq_1_.signal_clicked().connect(
324 seq_2_.signal_clicked().connect(
327 mut_1_.signal_clicked().connect(
328 [&]{ cerr <<
"gelldaschaugst..." <<endl; });
336 : Dialog(_(
"Test and Diagnostics"), parent, Gtk::DIALOG_DESTROY_WITH_PARENT)
341 get_content_area()->pack_start (notebook_);
344 notebook_.buildPage<
Page1> (_(
"#1099"), uiBus_);
345 notebook_.buildPage<
Page2> (_(
"Populate"), uiBus_);
348 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.
int rani(uint bound=_iBOUND())
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.