std::cout << "Enter a number : ";
double num = 0;
std::cin >> num;
- // Set its input 'In' to 1
+
+ // Set its input 'In' to num
p->bbSetInput("In",num);
// Execute it
std::cout << num << "+1 = "<<v<<std::endl;
- }
+ //============================================================
+ // Second example : imagine the bbProcessing.bbs script has created
+ // the box "a" of type Processing
+ // Here we simulate it using:
+ I->InterpretLine("new Processing a");
+ // We get a the black box "a" in the workspace:
+ bbtk::BlackBox::Pointer a
+ = I->GetExecuter()->GetWorkspace()->GetPrototype()->bbGetBlackBox("a");
+ // Then the same as previously...
+ a->bbSetInput("In",num);
+ a->bbExecute();
+ double w = p->bbGetOutput("Out").get<double>();
+ std::cout << "In case you did not understand:"<<std::endl<<num << "+1 = "<<w<<std::endl;
+
+ // That's all !
+ }
catch (bbtk::Exception e)
{
std::cout << "* ERROR : "<<e.GetErrorMessage()<<std::endl;
//=========================================================================
//=========================================================================
-void CallbackFunction ( bbtk::BlackBox::Pointer p,
- const std::string& o,
- bbtk::IOStatus s)
+// FIRST EXAMPLE USING A FUNCTION AS CALLBACK
+void CallbackFunction ( bbtk::BlackBox::Pointer p, // The black box which changed
+ const std::string& o, // The output which changed
+ bbtk::IOStatus s) // The new status of the output
{
std::cout << "== Callback function called with p="<<p->bbGetName()
<<" o="<<o<<" s="<<bbtk::GetIOStatusString(s)<<std::endl;
+
+ // Cast the black box pointer into Slider pointer
bbwx::Slider::Pointer slider = boost::dynamic_pointer_cast<bbwx::Slider>(p);
if (slider)
{
{
bbwx::Slider::Pointer slider = bbwx::Slider::New("slider");
slider->bbSetInputWinDialog(true); // mandatory
+ // Add the observer
slider->bbAddOutputObserver( "Out", &CallbackFunction );
slider->bbExecute();
}
//=========================================================================
+// SECOND EXAMPLE : MEMBER METHOD CALLED WHEN SLIDER IS RELEASED
class ClassWithTwoSliders
{
public:
try
{
mSlider1 = bbwx::Slider::New("slider1");
+ // Add the observer method
+ // As it is not a FREEHAND function we must use the macro
+ // BBTK_MAKE_OUTPUT_OBSERVER which takes the object and the method to call
mSlider1->bbAddOutputObserver("Out",
BBTK_MAKE_OUTPUT_OBSERVER
(this,
//=========================================================================
// Different examples of using black boxes in C++
-// Here we do not use wxWidgets however WxBlackBox es work in **Dialog** mode
+// Here we do not use wxWidgets however WxBlackBox work in **Dialog** mode
//=========================================================================
//=========================================================================