void HierarchyTreeController::ReturnNodeToScene(const HierarchyTreeNode::HIERARCHYTREENODESLIST& nodesToReturn) { for (HierarchyTreeNode::HIERARCHYTREENODESLIST::const_iterator iter = nodesToReturn.begin(); iter != nodesToReturn.end(); iter ++) { HierarchyTreeNode* nodeToReturn = (*iter); if (nodeToReturn) { nodeToReturn->ReturnTreeNodeToScene(); UnregisterNodeDeletedFromScene(nodeToReturn); } } emit HierarchyTreeUpdated(); ResetSelectedControl(); // Select the first one, if any. if (nodesToReturn.size() == 0 ) { return; } HierarchyTreeControlNode* controlNode = dynamic_cast<HierarchyTreeControlNode*>(nodesToReturn.front()); if (controlNode) { SelectControl(controlNode); } }
void HierarchyTreeController::ChangeItemSelection(HierarchyTreeControlNode* control) { if (IsControlSelected(control)) UnselectControl(control); else SelectControl(control); }
void HierarchyTreeController::ReturnNodeToScene(HierarchyTreeNode* nodeToReturn) { if (!nodeToReturn) { return; } nodeToReturn->ReturnTreeNodeToScene(); UnregisterNodeDeletedFromScene(nodeToReturn); emit HierarchyTreeUpdated(); ResetSelectedControl(); HierarchyTreeControlNode* controlNode = dynamic_cast<HierarchyTreeControlNode*>(nodeToReturn); if (controlNode) { SelectControl(controlNode); } }
HierarchyTreeNode::HIERARCHYTREENODEID HierarchyTreeController::CreateNewControl(const QString& strType, const QPoint& position) { if (!activeScreen) { return HierarchyTreeNode::HIERARCHYTREENODEID_EMPTY; } // Create the control itself. String type = strType.toStdString(); String newName = activeScreen->GetNewControlName(type); HierarchyTreeNode* parentNode = activeScreen; Vector2 parentDelta(0, 0); if (activeControlNodes.size() == 1) { HierarchyTreeControlNode* parentControlNode = (*activeControlNodes.begin()); parentNode = parentControlNode; //parentDelta = parentControlNode->GetUIObject()->GetPosition(); parentDelta = parentControlNode->GetParentDelta(); } Vector2 point = Vector2(position.x(), position.y()); DefaultScreen* screen = ScreenWrapper::Instance()->GetActiveScreen(); if (screen) point = screen->LocalToInternal(point); point -= parentDelta; // Add the tree node - we need it before initializing control. HierarchyTreeControlNode* controlNode = LibraryController::Instance()->CreateNewControl(parentNode, strType, QString::fromStdString(newName), point); if (!controlNode) return HierarchyTreeNode::HIERARCHYTREENODEID_EMPTY; emit HierarchyTreeUpdated(); ResetSelectedControl(); SelectControl(controlNode); return controlNode->GetId(); }
void ControlDialog::DetectControl(wxCommandEvent& event) { wxButton* const btn = (wxButton*)event.GetEventObject(); const wxString lbl = btn->GetLabel(); ControllerInterface::Device* const dev = g_controller_interface.FindDevice(m_devq); if (dev) { btn->SetLabel(_("[ waiting ]")); // apparently, this makes the "waiting" text work on Linux wxTheApp->Yield(); std::lock_guard<std::recursive_mutex> lk(m_plugin.controls_lock); ControllerInterface::Device::Control* const ctrl = control_reference->Detect(DETECT_WAIT_TIME, dev); // if we got input, select it in the list if (ctrl) SelectControl(ctrl->GetName()); btn->SetLabel(lbl); } }