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()
if (tabIndex > -1)
{
AccessClass::getDataViewport()->destroyTab(tabIndex);
AccessClass::getDataViewport()->destroyTab(tabIndex);
}
deleteAllChildren();
......@@ -155,7 +155,7 @@ void VisualizerEditor::editorWasClicked()
if (tabIndex > -1)
{
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)
if (tabSelector->getToggleState() && windowSelector->getToggleState())
{
tabSelector->setToggleState(false, dontSendNotification);
AccessClass::getDataViewport()->destroyTab(tabIndex);
tabIndex = -1;
// AccessClass::getDataViewport()->destroyTab(tabIndex);
// tabIndex = -1;
removeTab(tabIndex);
}
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->setVisible(true);
//canvas->refreshState();
......@@ -228,15 +229,15 @@ void VisualizerEditor::buttonClicked(Button* button)
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)
{
AccessClass::getDataViewport()->destroyTab(tabIndex);
tabIndex = -1;
// AccessClass::getDataViewport()->destroyTab(tabIndex);
// tabIndex = -1;
removeTab(tabIndex);
}
}
......@@ -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)
{
......
......@@ -84,17 +84,17 @@ public:
VisualizerEditor(GenericProcessor* processor, bool useDefaultParameterEditors);
~VisualizerEditor();
/**
/**
* @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``
* somewhere!
*/
void buttonClicked(Button* button);
/**
/**
* @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.
......@@ -120,18 +120,61 @@ public:
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* tabSelector;
private:
void initializeSelectors();
int tabIndex;
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