// detach/attach any sensors, callbacks, and/or field connections. // Called by: start/end of SoBaseKit::readInstance // and on new copy by: start/end of SoBaseKit::copy. // Classes that redefine must call setUpConnections(TRUE,TRUE) // at end of constructor. // Returns the state of the node when this was called. SbBool SoTranslate2Dragger::setUpConnections( SbBool onOff, SbBool doItAlways ) { if ( !doItAlways && connectionsSetUp == onOff) return onOff; if ( onOff ) { // We connect AFTER base class. SoDragger::setUpConnections( onOff, FALSE ); // Call the sensor CBs to make things are up-to-date. fieldSensorCB( this, NULL ); // Connect the field sensors if (fieldSensor->getAttachedField() != &translation) fieldSensor->attach( &translation ); } else { // We disconnect BEFORE base class. // Disconnect the field sensors. if (fieldSensor->getAttachedField()) fieldSensor->detach(); SoDragger::setUpConnections( onOff, FALSE ); } return !(connectionsSetUp = onOff); }
SbBool TranslateRadialDragger:: setUpConnections( SbBool onOff, SbBool doItAlways) { if(!doItAlways && connectionsSetUp == onOff) { return onOff; } if(onOff) { // We connect AFTER base class. SoDragger::setUpConnections(onOff, doItAlways); // Call the sensor CB to make things up-to-date. fieldSensorCB(this, NULL); // Connect the field sensor if(fieldSensor->getAttachedField() != &translation) { fieldSensor->attach(&translation); } } else { // We disconnect BEFORE base class. // Disconnect the field sensor. if(fieldSensor->getAttachedField()) { fieldSensor->detach(); } SoDragger::setUpConnections(onOff, doItAlways); } return(!(connectionsSetUp = onOff)); }
// detach/attach any sensors, callbacks, and/or field connections. // Called by: start/end of SoBaseKit::readInstance // and on new copy by: start/end of SoBaseKit::copy. // Classes that redefine must call setUpConnections(TRUE,TRUE) // at end of constructor. // Returns the state of the node when this was called. SbBool SoDragPointDragger::setUpConnections( SbBool onOff, SbBool doItAlways ) { if ( !doItAlways && connectionsSetUp == onOff) return onOff; if ( onOff ) { // We connect AFTER base class. SoDragger::setUpConnections( onOff, FALSE ); // SET Parts and callbacks on CHLD DRAGGERS // Create the translate1Draggers... SoSeparator *dummySep = new SoSeparator; dummySep->ref(); SoDragger *xD, *yD, *zD; xD = (SoDragger *) getAnyPart("xTranslator",FALSE); yD = (SoDragger *) getAnyPart("yTranslator",FALSE); zD = (SoDragger *) getAnyPart("zTranslator",FALSE); if (xD) { xD->setPartAsDefault("translator","dragPointXTranslatorTranslator"); xD->setPartAsDefault("translatorActive", "dragPointXTranslatorTranslatorActive"); xD->setPartAsDefault("feedback", dummySep ); xD->setPartAsDefault("feedbackActive", dummySep ); registerChildDragger( xD ); } if (yD) { yD->setPartAsDefault("translator","dragPointYTranslatorTranslator"); yD->setPartAsDefault("translatorActive", "dragPointYTranslatorTranslatorActive"); yD->setPartAsDefault("feedback", dummySep ); yD->setPartAsDefault("feedbackActive", dummySep ); registerChildDragger( yD ); } if (zD) { zD->setPartAsDefault("translator","dragPointZTranslatorTranslator"); zD->setPartAsDefault("translatorActive", "dragPointZTranslatorTranslatorActive"); zD->setPartAsDefault("feedback", dummySep ); zD->setPartAsDefault("feedbackActive", dummySep ); registerChildDragger( zD ); } // Create the translate2Draggers... SoDragger *yzD, *xzD, *xyD; yzD = (SoDragger *) getAnyPart("yzTranslator",FALSE); xzD = (SoDragger *) getAnyPart("xzTranslator",FALSE); xyD = (SoDragger *) getAnyPart("xyTranslator",FALSE); if (yzD) { yzD->setPartAsDefault("translator", "dragPointYZTranslatorTranslator"); yzD->setPartAsDefault("translatorActive", "dragPointYZTranslatorTranslatorActive"); yzD->setPartAsDefault("feedback", dummySep ); yzD->setPartAsDefault("feedbackActive", dummySep ); yzD->setPartAsDefault("xAxisFeedback", dummySep ); yzD->setPartAsDefault("yAxisFeedback", dummySep ); registerChildDragger( yzD ); } if (xzD) { xzD->setPartAsDefault("translator", "dragPointXZTranslatorTranslator"); xzD->setPartAsDefault("translatorActive", "dragPointXZTranslatorTranslatorActive"); xzD->setPartAsDefault("feedback", dummySep ); xzD->setPartAsDefault("feedbackActive", dummySep ); xzD->setPartAsDefault("xAxisFeedback", dummySep ); xzD->setPartAsDefault("yAxisFeedback", dummySep ); registerChildDragger( xzD ); } if (xyD) { xyD->setPartAsDefault("translator", "dragPointXYTranslatorTranslator"); xyD->setPartAsDefault("translatorActive", "dragPointXYTranslatorTranslatorActive"); xyD->setPartAsDefault("feedback", dummySep ); xyD->setPartAsDefault("feedbackActive", dummySep ); xyD->setPartAsDefault("xAxisFeedback", dummySep ); xyD->setPartAsDefault("yAxisFeedback", dummySep ); registerChildDragger( xyD ); } dummySep->unref(); // Call the sensor CBs to make things are up-to-date. fieldSensorCB( this, NULL ); // Connect the field sensors if (fieldSensor->getAttachedField() != &translation) fieldSensor->attach( &translation ); } else { // We disconnect BEFORE base class. // Remove callbacks from CHLD DRAGGERS SoDragger *xD, *yD, *zD; xD = (SoDragger *) getAnyPart("xTranslator",FALSE); yD = (SoDragger *) getAnyPart("yTranslator",FALSE); zD = (SoDragger *) getAnyPart("zTranslator",FALSE); if (xD) unregisterChildDragger( xD ); if (yD) unregisterChildDragger( yD ); if (zD) unregisterChildDragger( zD ); SoDragger *yzD, *xzD, *xyD; yzD = (SoDragger *) getAnyPart("yzTranslator",FALSE); xzD = (SoDragger *) getAnyPart("xzTranslator",FALSE); xyD = (SoDragger *) getAnyPart("xyTranslator",FALSE); if (yzD) unregisterChildDragger( yzD ); if (xzD) unregisterChildDragger( xzD ); if (xyD) unregisterChildDragger( xyD ); // Disconnect the field sensors. if (fieldSensor->getAttachedField()) fieldSensor->detach(); SoDragger::setUpConnections( onOff, FALSE ); } return !(connectionsSetUp = onOff); }