aboutsummaryrefslogtreecommitdiffstats
path: root/src/jalv_qt4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jalv_qt4.cpp')
-rw-r--r--src/jalv_qt4.cpp57
1 files changed, 50 insertions, 7 deletions
diff --git a/src/jalv_qt4.cpp b/src/jalv_qt4.cpp
index b082233..cbccdd2 100644
--- a/src/jalv_qt4.cpp
+++ b/src/jalv_qt4.cpp
@@ -1,5 +1,5 @@
/*
- Copyright 2007-2011 David Robillard <http://drobilla.net>
+ Copyright 2007-2013 David Robillard <http://drobilla.net>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -24,6 +24,31 @@
static QApplication* app = NULL;
+class PresetAction : public QAction {
+
+ Q_OBJECT
+
+public:
+ PresetAction(QObject* parent, Jalv* jalv, LilvNode* preset)
+ : QAction(parent)
+ , _jalv(jalv)
+ , _preset(preset)
+ {
+ connect(this, SIGNAL(triggered()),
+ this, SLOT(presetChosen()));
+ }
+
+ Q_SLOT void presetChosen() {
+ jalv_apply_preset(_jalv, _preset);
+ }
+
+private:
+ Jalv* _jalv;
+ LilvNode* _preset;
+};
+
+#include "jalv_qt4_meta.hpp"
+
extern "C" {
int
@@ -62,22 +87,38 @@ jalv_ui_port_event(Jalv* jalv,
class Timer : public QTimer {
public:
- explicit Timer(Jalv* j) : jalv(j) {}
+ explicit Timer(Jalv* jalv) : _jalv(jalv) {}
void timerEvent(QTimerEvent* e) {
- jalv_emit_ui_events(jalv);
+ jalv_emit_ui_events(_jalv);
}
private:
- Jalv* jalv;
+ Jalv* _jalv;
};
+static int
+add_preset_to_menu(Jalv* jalv,
+ const LilvNode* node,
+ const LilvNode* title,
+ void* data)
+{
+ QMenu* menu = (QMenu*)data;
+ const char* label = lilv_node_as_string(title);
+
+ QAction* action = new PresetAction(menu, jalv, lilv_node_duplicate(node));
+ action->setText(label);
+ menu->addAction(action);
+ return 0;
+}
+
int
jalv_open_ui(Jalv* jalv)
{
- QMainWindow* win = new QMainWindow();
- QMenu* file_menu = win->menuBar()->addMenu("&File");
- QAction* quit_action = new QAction("&Quit", win);
+ QMainWindow* win = new QMainWindow();
+ QMenu* file_menu = win->menuBar()->addMenu("&File");
+ QMenu* presets_menu = win->menuBar()->addMenu("&Presets");
+ QAction* quit_action = new QAction("&Quit", win);
QObject::connect(quit_action, SIGNAL(triggered()), win, SLOT(close()));
quit_action->setShortcuts(QKeySequence::Quit);
@@ -85,6 +126,8 @@ jalv_open_ui(Jalv* jalv)
file_menu->addAction(quit_action);
jalv->has_ui = TRUE;
+ jalv_load_presets(jalv, add_preset_to_menu, presets_menu);
+
if (jalv->ui) {
jalv_ui_instantiate(jalv, jalv_native_ui_type(jalv), win);
}