Go to file
Christopher Arndt 2da51dd7cd Add C++ implementation of custom knob widget and example
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2024-04-10 22:29:26 +02:00
.gitignore Add C++ helloworld example 2024-04-09 22:12:53 +02:00
CMakeLists.txt Add C++ implementation of custom knob widget and example 2024-04-10 22:29:26 +02:00
LICENSE Initial commit 2024-04-09 10:55:27 +02:00
README.md Add C++ implementation of custom knob widget and example 2024-04-10 22:29:26 +02:00
fancyknob.cpp Add C++ implementation of custom knob widget and example 2024-04-10 22:29:26 +02:00
fancyknob.hpp Add C++ implementation of custom knob widget and example 2024-04-10 22:29:26 +02:00
knob.py Change drawing commands in customwidget example 2024-04-09 18:45:43 +02:00
nanogui_customwidget.py Change drawing commands in customwidget example 2024-04-09 18:45:43 +02:00
nanogui_helloworld.cpp Add C++ helloworld example 2024-04-09 22:12:53 +02:00
nanogui_helloworld.py Import code and add info to readme 2024-04-09 14:07:21 +02:00
nanogui_knobs.cpp Add C++ implementation of custom knob widget and example 2024-04-10 22:29:26 +02:00
nanogui_knobs.png Import code and add info to readme 2024-04-09 14:07:21 +02:00
nanogui_knobs.py Import code and add info to readme 2024-04-09 14:07:21 +02:00
requirements.txt Import code and add info to readme 2024-04-09 14:07:21 +02:00

README.md

NanoGUI Experiments

NanoGUI Knobs example app

Building

Python

Set up virtual environment providing nanogui Python bindings:

python3 -m venv venv
source venv/bin/activate
(venv) pip install -r requirenments.txt

Run helloworld examples:

(venv) python3 nanogui_helloworld.py
(venv) python3 nanogui_custowidget.py

C++

Configure build with CMake:

cmake -B build -S .

(This will checkout the NanoGUI library from GitHub into the build directory. You can use -DNANOGUI_REPO=<repo path or URL> to change from where Git will retrieve the repository.)

Build the examples:

cmake --build build

Run hellworld example:

./build/nanogui_helloworld

Knobs Example

Python

(venv) python3 nanogui_knobs.py

C++

./build/nanogui_knobs

Key and Mouse Bindings

Mouse click-and-drag knob coarse in-/decrement +/- one 100th / pixel
Shift + mouse click-and-drag knob fine in-/decrement +/- 0.1 / pixel
Mouse wheel scroll over knob coarse in-/decrement one 100th / click * 2.0
Shift + mouse wheel scroll over knob fine in-/decrement +/- 0.1 / click
Ctrl + left click on knob set to default value
Up/down key while mouse over knob coarse in-/decrement +/- one 100th
Shift + up/down key while mouse over knob fine in-/decrement +/- 0.1
Page up/down key while mouse over knob big in-/decrement +/- one 10th
Mouse click on value entry up/down arrow fine in-/decrement +/- 0.1
Mouse wheel scroll over value entry fine in-/decrement +/- 0.1 / click
Return/Enter while editing value entry accept & set value
Escape key quit

Notes

  • No support for scaling or re-layouting on window resize yet.
  • Only the knob value gauge color can currently be specified on instantation, the knob gradient and outline colors are currently hard-coded.