Skip to content
Snippets Groups Projects
Commit 39792012 authored by Ananya Bahadur's avatar Ananya Bahadur
Browse files

Helpers to override `buttonClicked` added.

These changes were made to primarily to accommodate for the cyclops-stimulator. Since buttonClicked manipulates the DataViewport via AccessClass, a sub-class of VisualizerEditor cannot functionally override the method.
Hence:

* Added protected methods which manipulate DataViewport (via AccessClass)
* moved the SelectorButtons into protected area, essential!
* All of the additions are essential to the cyclops-stimulator.
* There is NO change in the public interface.

Now, my buttonClicked method can access the SelectorButtons, manipulate (anything about!!) DataViewport.
Please remove the (new) comments from VisualizerEditor::buttonClicked (.cpp), they are not needed anymore.
parent 0c3273b4
No related branches found
No related tags found
No related merge requests found
...@@ -114,7 +114,7 @@ VisualizerEditor::~VisualizerEditor() ...@@ -114,7 +114,7 @@ VisualizerEditor::~VisualizerEditor()
if (tabIndex > -1) if (tabIndex > -1)
{ {
AccessClass::getDataViewport()->destroyTab(tabIndex); AccessClass::getDataViewport()->destroyTab(tabIndex);
} }
deleteAllChildren(); deleteAllChildren();
...@@ -155,7 +155,7 @@ void VisualizerEditor::editorWasClicked() ...@@ -155,7 +155,7 @@ void VisualizerEditor::editorWasClicked()
if (tabIndex > -1) if (tabIndex > -1)
{ {
std::cout << "Setting tab index to " << tabIndex << std::endl; std::cout << "Setting tab index to " << tabIndex << std::endl;
AccessClass::getDataViewport()->selectTab(tabIndex); AccessClass::getDataViewport()->selectTab(tabIndex);
} }
} }
...@@ -184,14 +184,15 @@ void VisualizerEditor::buttonClicked(Button* button) ...@@ -184,14 +184,15 @@ void VisualizerEditor::buttonClicked(Button* button)
if (tabSelector->getToggleState() && windowSelector->getToggleState()) if (tabSelector->getToggleState() && windowSelector->getToggleState())
{ {
tabSelector->setToggleState(false, dontSendNotification); tabSelector->setToggleState(false, dontSendNotification);
AccessClass::getDataViewport()->destroyTab(tabIndex); // AccessClass::getDataViewport()->destroyTab(tabIndex);
tabIndex = -1; // tabIndex = -1;
removeTab(tabIndex);
} }
if (dataWindow == nullptr) // have we created a window already? if (dataWindow == nullptr) // have we created a window already?
{ {
// dataWindow = new DataWindow(windowSelector, tabText);
dataWindow = new DataWindow(windowSelector, tabText); makeNewWindow();
dataWindow->setContentNonOwned(canvas, false); dataWindow->setContentNonOwned(canvas, false);
dataWindow->setVisible(true); dataWindow->setVisible(true);
//canvas->refreshState(); //canvas->refreshState();
...@@ -228,15 +229,15 @@ void VisualizerEditor::buttonClicked(Button* button) ...@@ -228,15 +229,15 @@ void VisualizerEditor::buttonClicked(Button* button)
dataWindow->setVisible(false); dataWindow->setVisible(false);
} }
tabIndex = AccessClass::getDataViewport()->addTabToDataViewport(tabText, canvas, this); // tabIndex = AccessClass::getDataViewport()->addTabToDataViewport(tabText, canvas, this);
addTab(tabText, canvas);
} }
else if (!tabSelector->getToggleState() && tabIndex > -1) else if (!tabSelector->getToggleState() && tabIndex > -1)
{ {
AccessClass::getDataViewport()->destroyTab(tabIndex); // AccessClass::getDataViewport()->destroyTab(tabIndex);
tabIndex = -1; // tabIndex = -1;
removeTab(tabIndex);
} }
} }
...@@ -313,6 +314,32 @@ void VisualizerEditor::loadCustomParameters(XmlElement* xml) ...@@ -313,6 +314,32 @@ void VisualizerEditor::loadCustomParameters(XmlElement* xml)
} }
} }
void VisualizerEditor::makeNewWindow()
{
dataWindow = new DataWindow(windowSelector, tabText);
}
Component* VisualizerEditor::getActiveTabContentComponent() const
{
return AccessClass::getDataViewport()->getCurrentContentComponent();
}
void VisualizerEditor::setActiveTabId(int tindex)
{
AccessClass::getDataViewport()->selectTab(tindex);
}
void VisualizerEditor::removeTab(int tindex)
{
AccessClass::getDataViewport()->destroyTab(tindex);
tabIndex = -1;
}
int VisualizerEditor::addTab(String tab_text, Visualizer* vis_canvas)
{
tabIndex = AccessClass::getDataViewport()->addTabToDataViewport(tab_text, vis_canvas, this);
return tabIndex;
}
void VisualizerEditor::saveVisualizerParameters(XmlElement* xml) void VisualizerEditor::saveVisualizerParameters(XmlElement* xml)
{ {
......
...@@ -84,17 +84,17 @@ public: ...@@ -84,17 +84,17 @@ public:
VisualizerEditor(GenericProcessor* processor, bool useDefaultParameterEditors); VisualizerEditor(GenericProcessor* processor, bool useDefaultParameterEditors);
~VisualizerEditor(); ~VisualizerEditor();
/** /**
* @brief This method handles the button evnets which open visualizer in a tab or window. * @brief This method handles the button evnets which open visualizer in a tab or window.
* @warning Do not override this function unless you call ``VisualizerEditor::buttonClicked`` * @warning Do not override this function unless you call ``VisualizerEditor::buttonClicked``
* somewhere! * somewhere!
*/ */
void buttonClicked(Button* button); void buttonClicked(Button* button);
/** /**
* @brief All additional buttons that you create _for the editor_ should be handled here. * @brief All additional buttons that you create _for the editor_ should be handled here.
*/ */
virtual void buttonEvent(Button* button); virtual void buttonEvent(Button* button);
/** /**
* @brief Creates a new canvas. This is like a factory method and must be defined in your sub-class. * @brief Creates a new canvas. This is like a factory method and must be defined in your sub-class.
...@@ -120,18 +120,61 @@ public: ...@@ -120,18 +120,61 @@ public:
String tabText; String tabText;
private: protected: // these should be available to sub-classes if needed.
/**
* @brief Creates a new DataWindow using the windowSelector (button)
* and ``tabText``. The new object is stored in (and owned by)
* VisualizerEditor::dataWindow.
* @details Use this to make a new DataWindow. If needed, you can
* transfer ownership of the new object from
* VisualizerEditor::dataWindow to _your_ own ScopedPointer.
*/
void makeNewWindow();
void initializeSelectors(); /**
bool isPlaying; * @brief Use this to efficiently compare or find what is on the
* currently active tab.
*
* @return The active tab content Component.
*/
Component* getActiveTabContentComponent() const;
/**
* @brief Selects the specified _tab_ in the DataViewport.
*
* @param[in] tindex The index which was returned by VisualizerEditor::addTab
*/
void setActiveTabId(int tindex);
/**
* @brief Remove the specified tab from DataViewport.
*
* @param[in] tindex The index which was returned by VisualizerEditor::addTab
*/
void removeTab(int tindex);
/**
* @brief Adds a new tab to the DataViewport.
*
* @param[in] tab_text The tab text
* @param vis_canvas The content Visualizer (Canvas) Component for this tab.
*
* @return The identifier token for this tab. You must provide this
* identifier to access/remove this tab.
*/
int addTab(String tab_text, Visualizer* vis_canvas);
bool isPlaying; /**< Acquisition status flag */
// So that we can override buttonClick. That's not possible if these are private.
SelectorButton* windowSelector; SelectorButton* windowSelector;
SelectorButton* tabSelector; SelectorButton* tabSelector;
private:
void initializeSelectors();
int tabIndex; int tabIndex;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(VisualizerEditor); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(VisualizerEditor);
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment