diff --git a/src/gui/interact/view-locator.cpp b/src/gui/interact/view-locator.cpp index dd9703b67..ecfb2e848 100644 --- a/src/gui/interact/view-locator.cpp +++ b/src/gui/interact/view-locator.cpp @@ -71,8 +71,7 @@ namespace gui { AllocSpec limitAllocation =[](UICoord target, uint limit) { lib::Depend rawElementAccessor; - - return target; + return rawElementAccessor().locate_or_create (target, limit); }; } diff --git a/src/gui/interact/view-locator.hpp b/src/gui/interact/view-locator.hpp index eb023a66c..607ae411a 100644 --- a/src/gui/interact/view-locator.hpp +++ b/src/gui/interact/view-locator.hpp @@ -46,7 +46,15 @@ ** API, and this abstraction allows to keep all the intricacies of navigating concrete UI widgets confined within the ** implementation of the Navigator service. ** - ** @todo WIP 9/2017 early draft ////////////////////////////////////////////////////////////TICKET #1104 + ** @todo WIP 6/2018 half finished draft ////////////////////////////////////////////////////////////TICKET #1104 + ** + ** @remark the *performance* of such an view location and access step is not considered a priority. + ** As it's implemented right now, the access several times repeats the same drill-down into the + ** UI widget structure. This was deemed acceptable, since we assume views will be located only + ** occasionally, while further UI interactions will use either direct wiring or messages via + ** the UI-Bus. On the other hand, the flexibility in the configuration seems important and + ** the complexities generated thereby can be a maintenance burden. Which means, a clear + ** typed interface within the DSL is more important than burning some more CPU cycles. ** ** @see interaction-director.hpp ** @see panel-locator.hpp diff --git a/src/gui/model/element-access.hpp b/src/gui/model/element-access.hpp index c0338dd73..166569cd3 100644 --- a/src/gui/model/element-access.hpp +++ b/src/gui/model/element-access.hpp @@ -60,10 +60,6 @@ #include "lib/meta/typelist-manip.hpp" #include "lib/access-casted.hpp" #include "gui/interact/ui-coord.hpp" -//#include "lib/format-string.hpp" -//#include "lib/symbol.hpp" -//#include "lib/util.hpp" -#include "lib/test/test-helper.hpp" ////////TOD-o #include @@ -77,7 +73,6 @@ namespace model { using interact::UICoord; using lib::meta::Types; -// using util::isnil; using std::string; class Tangible; @@ -185,6 +180,8 @@ namespace model { /** Navigate to the designated component, possibly create the element and parents + * @param limitCreation limit on the number of similar UI elements that can be created + * within a scope. A value of zero prohibits creating of new elements. * @return location of the actual element to use, as UI-coordinates. * @note when access was not possible because the element could not been created, * the indicated location returned is an _empty coordinate spec._ diff --git a/tests/52-gui-control.tests b/tests/52-gui-control.tests index 47e192823..550c7106b 100644 --- a/tests/52-gui-control.tests +++ b/tests/52-gui-control.tests @@ -7,7 +7,7 @@ return: 0 END -PLANNED "configuration DSL for view access" ViewSpecDSL_test < //#include @@ -49,6 +49,7 @@ using lib::diff::Rec; //using lib::diff::GenNode; //using util::isSameObject; //using util::isnil; +using util::contains; namespace gui { @@ -217,12 +218,10 @@ namespace test { DummyView& view1 = viewLocator.get(); cout << "created view:" << view1.getID() << endl; + CHECK (fakeAccessor->response); // a new "widget" was created + CHECK (contains (view1.getID(), "DummyView")); // using the type name as ID prefix /////////////////////////////////////////////TICKET 1129 : some way to verify the last allocated path. Should be a child of "parentLocation" - - -// TimelineView timeline = viewLocator.get(); - /////////////////////////////////////////////////////////////////////////////////////////TICKET 1129 : use an EventLog to verify the forwarded invocations?? } }; diff --git a/tests/gui/test/test-element-access.hpp b/tests/gui/test/test-element-access.hpp index 8cd2fb2c8..a2c457fd8 100644 --- a/tests/gui/test/test-element-access.hpp +++ b/tests/gui/test/test-element-access.hpp @@ -118,7 +118,7 @@ namespace test { /** the next query will fail unless it presents this Path */ UICoord existingPath; - /** ...and if acceptable, the next query will answer with this object */ + /** ...and if acceptable, we record the last answer here */ std::unique_ptr response; diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 044155bd6..29edcfc5d 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -990,7 +990,7 @@ - + @@ -2484,7 +2484,7 @@ - + @@ -2495,7 +2495,7 @@

- +
@@ -4181,7 +4181,7 @@
- + @@ -4323,7 +4323,7 @@ - + @@ -4354,7 +4354,7 @@ - + @@ -4362,7 +4362,8 @@ - + + @@ -4601,7 +4602,7 @@ - + @@ -4686,7 +4687,7 @@ - + @@ -4709,7 +4710,7 @@ - + @@ -9111,7 +9112,7 @@ - + @@ -9125,7 +9126,7 @@ - + @@ -9146,7 +9147,7 @@ - + @@ -9335,7 +9336,7 @@ - + @@ -9360,19 +9361,19 @@

- +
- + - - + + @@ -9413,12 +9414,12 @@ - + - + @@ -9431,13 +9432,13 @@ - + - + @@ -9463,7 +9464,7 @@ - + @@ -9562,7 +9563,7 @@ - + @@ -9805,7 +9806,7 @@ - + @@ -10116,7 +10117,7 @@ - + @@ -11120,8 +11121,8 @@ - - + + @@ -11139,14 +11140,21 @@ - - + + + + + + + - - + + + + @@ -11201,7 +11209,7 @@ - + @@ -11213,7 +11221,7 @@ - + @@ -11227,9 +11235,16 @@

- + +
+ + + + + +
@@ -11241,8 +11256,9 @@ - + + @@ -11261,7 +11277,9 @@ - + + + @@ -11674,8 +11692,13 @@ - - + + + + + + + @@ -13225,7 +13248,7 @@ - + @@ -21523,7 +21546,7 @@ - + @@ -22694,8 +22717,8 @@ - - + +