From 1843dfc88468fdac55af2718eaa52d2905629988 Mon Sep 17 00:00:00 2001
From: Josh Siegle <jsiegle@mit.edu>
Date: Thu, 3 Oct 2013 19:03:14 -0400
Subject: [PATCH] Have the AudioEditor display the buffer size in samples

---
 Source/Processors/AudioNode.cpp           |  9 ++++++
 Source/Processors/AudioNode.h             |  2 ++
 Source/Processors/Editors/AudioEditor.cpp | 37 +++++++++++++++++------
 Source/Processors/Editors/AudioEditor.h   |  8 +++--
 Source/Processors/ProcessorGraph.cpp      |  1 +
 Source/UI/UIComponent.cpp                 |  4 ++-
 6 files changed, 48 insertions(+), 13 deletions(-)

diff --git a/Source/Processors/AudioNode.cpp b/Source/Processors/AudioNode.cpp
index 3d516ee6d..802077e0a 100755
--- a/Source/Processors/AudioNode.cpp
+++ b/Source/Processors/AudioNode.cpp
@@ -55,6 +55,8 @@ AudioProcessorEditor* AudioNode::createEditor()
 {
 
     audioEditor = new AudioEditor(this);
+    //audioEditor->setUIComponent(getUIComponent());
+    //audioEditor->updateBufferSizeText();
 
     //setEditor(editor);
 
@@ -72,6 +74,13 @@ void AudioNode::resetConnections()
 
 }
 
+void AudioNode::updateBufferSize()
+{
+    AudioEditor* editor = (AudioEditor*) getEditor();
+    editor->updateBufferSizeText();
+    
+}
+
 void AudioNode::setChannel(Channel* ch)
 {
 
diff --git a/Source/Processors/AudioNode.h b/Source/Processors/AudioNode.h
index 48a1c1910..4cdbb6614 100755
--- a/Source/Processors/AudioNode.h
+++ b/Source/Processors/AudioNode.h
@@ -93,6 +93,8 @@ public:
 
     /** A pointer to the AudioNode's editor. */
     ScopedPointer<AudioEditor> audioEditor;
+    
+    void updateBufferSize();
 
 private:
 
diff --git a/Source/Processors/Editors/AudioEditor.cpp b/Source/Processors/Editors/AudioEditor.cpp
index de5df1631..fd4054758 100755
--- a/Source/Processors/Editors/AudioEditor.cpp
+++ b/Source/Processors/Editors/AudioEditor.cpp
@@ -50,10 +50,12 @@ AudioWindowButton::AudioWindowButton()
 {
     setClickingTogglesState(true);
 
-    MemoryInputStream mis(BinaryData::silkscreenserialized, BinaryData::silkscreenserializedSize, false);
-    Typeface::Ptr typeface = new CustomTypeface(mis);
-    font = Font(typeface);
-    font.setHeight(12);
+    //MemoryInputStream mis(BinaryData::silkscreenserialized, BinaryData::silkscreenserializedSize, false);
+    //Typeface::Ptr typeface = new CustomTypeface(mis);
+    font = Font("Small Text", 12, Font::plain); //Font(typeface);
+    //font.setHeight(12);
+    textString = "AUDIO";
+    setTooltip("Change the buffer size");
 }
 
 AudioWindowButton::~AudioWindowButton()
@@ -69,7 +71,12 @@ void AudioWindowButton::paintButton(Graphics& g, bool isMouseOver, bool isButton
 
     g.setFont(font);
     //g.drawSingleLineText(" AUDIO",0,0);
-    g.drawSingleLineText("AUDIO",0,15);
+    g.drawSingleLineText(textString,0,15);
+}
+
+void AudioWindowButton::setText(String text)
+{
+    textString = text;
 }
 
 AudioEditor::AudioEditor(AudioNode* owner)
@@ -85,6 +92,9 @@ AudioEditor::AudioEditor(AudioNode* owner)
     audioWindowButton = new AudioWindowButton();
     audioWindowButton->addListener(this);
     audioWindowButton->setToggleState(false,false);
+    
+    //AccessClass* audioNode = (AccessClass*) getAudioProcessor();
+    //
     addAndMakeVisible(audioWindowButton);
 
     volumeSlider = new Slider("High-Cut Slider");
@@ -107,8 +117,8 @@ AudioEditor::~AudioEditor()
 void AudioEditor::resized()
 {
     muteButton->setBounds(0,0,30,25);
-    volumeSlider->setBounds(35,0,100,getHeight());
-    audioWindowButton->setBounds(140,0,200,getHeight());
+    volumeSlider->setBounds(35,0,50,getHeight());
+    audioWindowButton->setBounds(90,0,200,getHeight());
 }
 
 bool AudioEditor::keyPressed(const KeyPress& key)
@@ -118,6 +128,12 @@ bool AudioEditor::keyPressed(const KeyPress& key)
 }
 
 
+void AudioEditor::updateBufferSizeText()
+{
+    // currently crashing
+   // audioWindowButton->setText(String(getAudioComponent()->getBufferSize()));
+}
+
 void AudioEditor::buttonClicked(Button* button)
 {
     if (button == muteButton)
@@ -146,7 +162,7 @@ void AudioEditor::buttonClicked(Button* button)
                 // audioComponent->restartDevice();
 
                 // if (audioComponent != 0) {
-                acw = new AudioConfigurationWindow(getAudioComponent()->deviceManager, (Button*) audioWindowButton);
+                acw = new AudioConfigurationWindow(getAudioComponent()->deviceManager, audioWindowButton);
                 acw->setUIComponent(getUIComponent());
                 //}
             }
@@ -157,7 +173,7 @@ void AudioEditor::buttonClicked(Button* button)
         }
         else
         {
-
+            audioWindowButton->setText(String(getAudioComponent()->getBufferSize()));
             acw->setVisible(false);
             //deleteAndZero(acw);
             getAudioComponent()->stopDevice();
@@ -179,7 +195,7 @@ void AudioEditor::paint(Graphics& g)
 
 
 
-AudioConfigurationWindow::AudioConfigurationWindow(AudioDeviceManager& adm, Button* cButton)
+AudioConfigurationWindow::AudioConfigurationWindow(AudioDeviceManager& adm, AudioWindowButton* cButton)
     : DocumentWindow("Audio Settings",
                      Colours::red,
                      DocumentWindow::closeButton),
@@ -220,6 +236,7 @@ AudioConfigurationWindow::~AudioConfigurationWindow()
 void AudioConfigurationWindow::closeButtonPressed()
 {
     controlButton->setToggleState(false,false);
+    controlButton->setText(String(getAudioComponent()->getBufferSize()));
     getAudioComponent()->stopDevice();
     setVisible(false);
 }
diff --git a/Source/Processors/Editors/AudioEditor.h b/Source/Processors/Editors/AudioEditor.h
index f84b3659e..926db62d9 100755
--- a/Source/Processors/Editors/AudioEditor.h
+++ b/Source/Processors/Editors/AudioEditor.h
@@ -58,8 +58,10 @@ public:
     AudioWindowButton();
     ~AudioWindowButton();
     void paintButton(Graphics& g, bool isMouseOver, bool isButtonDown);
+    void setText(String);
 private:
     Font font;
+    String textString;
 };
 
 /**
@@ -73,7 +75,7 @@ class AudioConfigurationWindow : public DocumentWindow,
     public AccessClass
 {
 public:
-    AudioConfigurationWindow(AudioDeviceManager& adm, Button* b);
+    AudioConfigurationWindow(AudioDeviceManager& adm, AudioWindowButton* b);
     ~AudioConfigurationWindow();
 
     void paint(Graphics& g);
@@ -83,7 +85,7 @@ private:
 
     void closeButtonPressed();
 
-    Button* controlButton;
+    AudioWindowButton* controlButton;
 
 };
 
@@ -109,6 +111,8 @@ public:
     bool keyPressed(const KeyPress& key);
 
     void resized();
+    
+    void updateBufferSizeText();
 
 private:
 
diff --git a/Source/Processors/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph.cpp
index e929c69fc..c380fce11 100644
--- a/Source/Processors/ProcessorGraph.cpp
+++ b/Source/Processors/ProcessorGraph.cpp
@@ -118,6 +118,7 @@ void ProcessorGraph::createDefaultNodes()
 void ProcessorGraph::updatePointers()
 {
     getAudioNode()->setUIComponent(getUIComponent());
+    getAudioNode()->updateBufferSize();
     getRecordNode()->setUIComponent(getUIComponent());
 }
 
diff --git a/Source/UI/UIComponent.cpp b/Source/UI/UIComponent.cpp
index 60b253f60..63298a814 100755
--- a/Source/UI/UIComponent.cpp
+++ b/Source/UI/UIComponent.cpp
@@ -74,12 +74,14 @@ UIComponent::UIComponent(MainWindow* mainWindow_, ProcessorGraph* pgraph, AudioC
     std::cout << "Finished UI stuff." << std::endl << std::endl << std::endl;
 
     processorGraph->setUIComponent(this);
-    processorGraph->updatePointers(); // needs to happen after processorGraph gets the right pointers
+    
     processorList->setUIComponent(this);
     editorViewport->setUIComponent(this);
     dataViewport->setUIComponent(this);
     controlPanel->getAudioEditor()->setUIComponent(this);
     controlPanel->setUIComponent(this);
+    
+    processorGraph->updatePointers(); // needs to happen after processorGraph gets the right pointers
 
     //processorGraph->sendActionMessage("Test.");
 
-- 
GitLab