Skip to content

Commit

Permalink
More ports of examples
Browse files Browse the repository at this point in the history
  • Loading branch information
kunitoki committed Feb 7, 2024
1 parent b0b8b8d commit 111db38
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 29 deletions.
5 changes: 5 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@ Some images of JUCE tutorials and other small apps ported to *popsicle*.
.. image:: images/table_list_box.png
:target: examples/table_list_box.py

- Slider values example (https://docs.juce.com/master/tutorial_slider_values.html)

.. image:: https://github.com/kunitoki/popsicle/raw/master/images/slider_values.png
:target: https://github.com/kunitoki/popsicle/blob/master/examples/slider_values.py

- OpenCV Integration

.. image:: images/opencv_integration.png
Expand Down
2 changes: 1 addition & 1 deletion examples/drawables.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ def resized(self):
self.button.setBounds(bounds)

if __name__ == "__main__":
START_JUCE_COMPONENT(MainContentComponent, name="Matplotlib Example")
START_JUCE_COMPONENT(MainContentComponent, name="Drawables Example")
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import sys
sys.path.insert(0, "../")

from popsicle import juce_gui_basics
from popsicle import juce, START_JUCE_COMPONENT
from juce_init import START_JUCE_COMPONENT
import popsicle as juce


class MainContentComponent(juce.Component):
Expand All @@ -12,19 +9,19 @@ class MainContentComponent(juce.Component):
durationLabel = juce.Label()

def __init__(self):
super().__init__()
juce.Component.__init__(self)

self.addAndMakeVisible(self.frequencySlider)
self.frequencySlider.setRange (50, 5000.0)
self.frequencySlider.setTextValueSuffix (" Hz")
self.frequencySlider.setRange(50.0, 5000.0)
self.frequencySlider.setTextValueSuffix(" Hz")
self.frequencySlider.onValueChange = lambda: self.durationSlider.setValue(1.0 / self.frequencySlider.getValue(), juce.dontSendNotification)

self.addAndMakeVisible(self.frequencyLabel)
self.frequencyLabel.setText("Frequency", juce.dontSendNotification)
self.frequencyLabel.attachToComponent(self.frequencySlider, True)

self.addAndMakeVisible(self.durationSlider)
self.durationSlider.setRange (1.0 / self.frequencySlider.getMaximum(), 1.0 / self.frequencySlider.getMinimum())
self.durationSlider.setRange(1.0 / self.frequencySlider.getMaximum(), 1.0 / self.frequencySlider.getMinimum())
self.durationSlider.setTextValueSuffix(" s")
self.durationSlider.onValueChange = lambda: self.frequencySlider.setValue (1.0 / self.durationSlider.getValue(), juce.dontSendNotification)

Expand Down
File renamed without changes
39 changes: 20 additions & 19 deletions modules/juce_python/bindings/ScriptJuceGuiBasicsBindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1898,40 +1898,41 @@ void registerJuceGuiBasicsBindings (pybind11::module_& m)

classSlider
.def (py::init<>())
.def (py::init<const String&>())
.def (py::init<Slider::SliderStyle, Slider::TextEntryBoxPosition>())
.def ("setSliderStyle", &Slider::setSliderStyle)
.def (py::init<const String&>(), "componentName"_a)
.def (py::init<Slider::SliderStyle, Slider::TextEntryBoxPosition>(), "style"_a, "textBoxPosition"_a)
.def ("setSliderStyle", &Slider::setSliderStyle, "newStyle"_a)
.def ("getSliderStyle", &Slider::getSliderStyle)
.def ("setRotaryParameters", py::overload_cast<Slider::RotaryParameters> (&Slider::setRotaryParameters))
.def ("setRotaryParameters", py::overload_cast<float, float, bool> (&Slider::setRotaryParameters))
.def ("setRotaryParameters", py::overload_cast<Slider::RotaryParameters> (&Slider::setRotaryParameters), "newParameters"_a)
.def ("setRotaryParameters", py::overload_cast<float, float, bool> (&Slider::setRotaryParameters), "startAngleRadians"_a, "endAngleRadians"_a, "stopAtEnd"_a)
.def ("getRotaryParameters", &Slider::getRotaryParameters)
.def ("setMouseDragSensitivity", &Slider::setMouseDragSensitivity)
.def ("setMouseDragSensitivity", &Slider::setMouseDragSensitivity, "distanceForFullScaleDrag"_a)
.def ("getMouseDragSensitivity", &Slider::getMouseDragSensitivity)
.def ("setVelocityBasedMode", &Slider::setVelocityBasedMode)
.def ("setVelocityBasedMode", &Slider::setVelocityBasedMode, "isVelocityBased"_a)
.def ("getVelocityBasedMode", &Slider::getVelocityBasedMode)
.def ("setVelocityModeParameters", &Slider::setVelocityModeParameters)
.def ("setVelocityModeParameters", &Slider::setVelocityModeParameters,
"sensitivity"_a = 1.0, "threshold"_a = 1, "offset"_a = 0.0, "userCanPressKeyToSwapMode"_a = true, "modifiersToSwapModes"_a = ModifierKeys::ctrlAltCommandModifiers)
.def ("getVelocitySensitivity", &Slider::getVelocitySensitivity)
.def ("getVelocityThreshold", &Slider::getVelocityThreshold)
.def ("getVelocityOffset", &Slider::getVelocityOffset)
.def ("getVelocityModeIsSwappable", &Slider::getVelocityModeIsSwappable)
.def ("setSkewFactor", &Slider::setSkewFactor)
.def ("setSkewFactorFromMidPoint", &Slider::setSkewFactorFromMidPoint)
.def ("setSkewFactor", &Slider::setSkewFactor, "factor"_a, "symmetricSkew"_a = false)
.def ("setSkewFactorFromMidPoint", &Slider::setSkewFactorFromMidPoint, "sliderValueToShowAtMidPoint"_a)
.def ("getSkewFactor", &Slider::getSkewFactor)
.def ("isSymmetricSkew", &Slider::isSymmetricSkew)
.def ("setIncDecButtonsMode", &Slider::setIncDecButtonsMode)
.def ("setTextBoxStyle", &Slider::setTextBoxStyle)
.def ("setTextBoxStyle", &Slider::setTextBoxStyle, "newPosition"_a, "isReadOnly"_a, "textEntryBoxWidth"_a, "textEntryBoxHeight"_a)
.def ("getTextBoxPosition", &Slider::getTextBoxPosition)
.def ("getTextBoxWidth", &Slider::getTextBoxWidth)
.def ("getTextBoxHeight", &Slider::getTextBoxHeight)
.def ("setTextBoxIsEditable", &Slider::setTextBoxIsEditable)
.def ("setTextBoxIsEditable", &Slider::setTextBoxIsEditable, "shouldBeEditable"_a)
.def ("isTextBoxEditable", &Slider::isTextBoxEditable)
.def ("showTextBox", &Slider::showTextBox)
.def ("hideTextBox", &Slider::hideTextBox)
.def ("setValue", py::overload_cast<double, NotificationType> (&Slider::setValue))
.def ("hideTextBox", &Slider::hideTextBox, "discardCurrentEditorContents"_a)
.def ("setValue", py::overload_cast<double, NotificationType> (&Slider::setValue), "newValue"_a, "notification"_a = sendNotificationAsync)
.def ("getValue", &Slider::getValue)
.def ("getValueObject", &Slider::getValueObject, py::return_value_policy::reference_internal)
.def ("setRange", py::overload_cast<double, double, double> (&Slider::setRange))
.def ("setRange", py::overload_cast<Range<double>, double> (&Slider::setRange))
.def ("setRange", py::overload_cast<double, double, double> (&Slider::setRange), "newMinimum"_a, "newMaximum"_a, "newInterval"_a = 0.0)
.def ("setRange", py::overload_cast<Range<double>, double> (&Slider::setRange), "newRange"_a, "newInterval"_a)
//.def ("setNormalisableRange", &Slider::setNormalisableRange)
//.def ("getNormalisableRange", &Slider::getNormalisableRange)
.def ("getRange", &Slider::getRange)
Expand All @@ -1940,11 +1941,11 @@ void registerJuceGuiBasicsBindings (pybind11::module_& m)
.def ("getInterval", &Slider::getInterval)
.def ("getMinValue", &Slider::getMinValue)
.def ("getMinValueObject", &Slider::getMinValueObject, py::return_value_policy::reference_internal)
.def ("setMinValue", py::overload_cast<double, NotificationType, bool> (&Slider::setMinValue))
.def ("setMinValue", py::overload_cast<double, NotificationType, bool> (&Slider::setMinValue), "newValue"_a, "notification"_a = sendNotificationAsync, "allowNudgingOfOtherValues"_a = false)
.def ("getMaxValue", &Slider::getMaxValue)
.def ("getMaxValueObject", &Slider::getMaxValueObject, py::return_value_policy::reference_internal)
.def ("setMaxValue", py::overload_cast<double, NotificationType, bool> (&Slider::setMaxValue))
.def ("setMinAndMaxValues", py::overload_cast<double, double, NotificationType> (&Slider::setMinAndMaxValues))
.def ("setMaxValue", py::overload_cast<double, NotificationType, bool> (&Slider::setMaxValue), "newValue"_a, "notification"_a = sendNotificationAsync, "allowNudgingOfOtherValues"_a = false)
.def ("setMinAndMaxValues", py::overload_cast<double, double, NotificationType> (&Slider::setMinAndMaxValues), "newMinValue"_a, "newMaxValue"_a, "notification"_a = sendNotificationAsync)
.def ("addListener", &Slider::addListener)
.def ("removeListener", &Slider::removeListener)
.def_readwrite ("onValueChange", &Slider::onValueChange)
Expand Down

0 comments on commit 111db38

Please sign in to comment.