added output recording feature. moved settings to a separate popup panel instead of a menu
This commit is contained in:
90
Source/SonoChoiceButton.h
Normal file
90
Source/SonoChoiceButton.h
Normal file
@ -0,0 +1,90 @@
|
||||
// SPDX-License-Identifier: GPLv3-or-later WITH Appstore-exception
|
||||
// Copyright (C) 2020 Jesse Chappell
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "JuceHeader.h"
|
||||
|
||||
#include "SonoTextButton.h"
|
||||
#include "GenericItemChooser.h"
|
||||
#include "CustomLookAndFeel.h"
|
||||
|
||||
class SonoChoiceLookAndFeel : public CustomLookAndFeel
|
||||
{
|
||||
public:
|
||||
int getCallOutBoxBorderSize (const CallOutBox&) override {
|
||||
return 40;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
class SonoChoiceButton : public SonoTextButton, public GenericItemChooser::Listener, public Button::Listener
|
||||
{
|
||||
public:
|
||||
SonoChoiceButton();
|
||||
virtual ~SonoChoiceButton();
|
||||
|
||||
class Listener {
|
||||
public:
|
||||
virtual ~Listener() {}
|
||||
virtual void choiceButtonEmptyClick(SonoChoiceButton *comp) {}
|
||||
virtual void choiceButtonSelected(SonoChoiceButton *comp, int index, int ident) {}
|
||||
};
|
||||
|
||||
void paint(Graphics & g) override;
|
||||
void resized() override;
|
||||
|
||||
void genericItemChooserSelected(GenericItemChooser *comp, int index) override;
|
||||
|
||||
void clearItems();
|
||||
void addItem(const String & name, int ident, bool separator=false, bool disabled=false);
|
||||
void addItem(const String & name, int ident, const Image & newItemImage, bool separator=false, bool disabled=false);
|
||||
|
||||
//void setItems(const StringArray & items);
|
||||
//const StringArray & getItems() const { return items; }
|
||||
|
||||
void setSelectedItemIndex(int index, NotificationType notification = dontSendNotification);
|
||||
int getSelectedItemIndex() const { return selIndex; }
|
||||
|
||||
void setSelectedId(int ident, NotificationType notification = dontSendNotification);
|
||||
|
||||
void setShowArrow(bool flag) { showArrow = flag; }
|
||||
bool getShowArrow() const { return showArrow; }
|
||||
|
||||
String getItemText(int index) const;
|
||||
|
||||
String getCurrentText() const;
|
||||
|
||||
void buttonClicked (Button* buttonThatWasClicked) override;
|
||||
|
||||
void addChoiceListener(Listener * listener) { listeners.add(listener); }
|
||||
void removeChoiceListener(Listener * listener) { listeners.remove(listener); }
|
||||
|
||||
void showPopup();
|
||||
bool isPopupActive() const;
|
||||
|
||||
std::unique_ptr<AccessibilityHandler> createAccessibilityHandler() override;
|
||||
|
||||
protected:
|
||||
ListenerList<Listener> listeners;
|
||||
|
||||
std::unique_ptr<Label> textLabel;
|
||||
|
||||
Array<GenericItemChooserItem> items;
|
||||
Array<int> idList;
|
||||
|
||||
int selIndex;
|
||||
bool showArrow = true;
|
||||
|
||||
WeakReference<Component> activeCalloutBox;
|
||||
|
||||
SonoChoiceLookAndFeel lnf;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SonoChoiceButton)
|
||||
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user