summaryrefslogtreecommitdiff
path: root/muse2/muse/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/widgets')
-rw-r--r--muse2/muse/widgets/CMakeLists.txt3
-rw-r--r--muse2/muse/widgets/canvas.cpp29
-rw-r--r--muse2/muse/widgets/gatetime.cpp26
-rw-r--r--muse2/muse/widgets/gatetime.h16
-rw-r--r--muse2/muse/widgets/gatetimebase.ui13
-rw-r--r--muse2/muse/widgets/quantbase.ui308
-rw-r--r--muse2/muse/widgets/quantize.cpp54
-rw-r--r--muse2/muse/widgets/quantize.h40
-rw-r--r--muse2/muse/widgets/velocity.cpp28
-rw-r--r--muse2/muse/widgets/velocity.h19
-rw-r--r--muse2/muse/widgets/velocitybase.ui14
11 files changed, 498 insertions, 52 deletions
diff --git a/muse2/muse/widgets/CMakeLists.txt b/muse2/muse/widgets/CMakeLists.txt
index 261c27a2..ee4af793 100644
--- a/muse2/muse/widgets/CMakeLists.txt
+++ b/muse2/muse/widgets/CMakeLists.txt
@@ -76,6 +76,7 @@ QT4_WRAP_CPP (widget_mocs
# ttoolbar.h
ttoolbutton.h
velocity.h
+ quantize.h
verticalmeter.h
view.h
vscale.h
@@ -111,6 +112,7 @@ file (GLOB widgets_ui_files
transformbase.ui
transposebase.ui
velocitybase.ui
+ quantbase.ui
)
QT4_WRAP_UI (widget_ui_headers ${widgets_ui_files})
@@ -177,6 +179,7 @@ file (GLOB widgets_source_files
ttoolbutton.cpp
utils.cpp
velocity.cpp
+ quantize.cpp
verticalmeter.cpp
view.cpp
vscale.cpp
diff --git a/muse2/muse/widgets/canvas.cpp b/muse2/muse/widgets/canvas.cpp
index 14f414b7..c12ac956 100644
--- a/muse2/muse/widgets/canvas.cpp
+++ b/muse2/muse/widgets/canvas.cpp
@@ -538,11 +538,11 @@ void Canvas::viewMousePressEvent(QMouseEvent* event)
updateSelection();
redraw();
}
- startDrag(curItem, shift);
+ startDrag(curItem, ctrl);
}
else if (event->button() == Qt::RightButton) {
if (curItem) {
- if (shift) {
+ if (ctrl) {
drag = DRAG_RESIZE;
setCursor();
int dx = start.x() - curItem->x();
@@ -586,15 +586,14 @@ void Canvas::viewMousePressEvent(QMouseEvent* event)
// Changed by T356. Alt is default reserved for moving the whole window in KDE. Changed to Shift-Alt.
// Hmm, nope, shift-alt is also reserved sometimes. Must find a way to bypass,
// why make user turn off setting? Left alone for now...
- if (shift && !ctrl)
+ if (ctrl && !shift)
drag = DRAG_COPY_START;
else if (alt) {
drag = DRAG_CLONE_START;
}
- else if (ctrl) { //Select all on the same pitch (e.g. same y-value)
- if (!shift)
+ else if (shift) { //Select all on the same pitch (e.g. same y-value)
+ if (!ctrl)
deselectAll();
- //printf("Yes, ctrl and press\n");
for (iCItem i = items.begin(); i != items.end(); ++i) {
if (i->second->y() == curItem->y() )
selectItem(i->second, true);
@@ -1046,32 +1045,26 @@ void Canvas::viewMouseMoveEvent(QMouseEvent* event)
void Canvas::viewMouseReleaseEvent(QMouseEvent* event)
{
-// printf("release %x %x\n", event->state(), event->button());
-
doScroll = false;
canScrollLeft = true;
canScrollRight = true;
canScrollUp = true;
canScrollDown = true;
- ///if (event->state() & (Qt::LeftButton|Qt::RightButton|Qt::MidButton) & ~(event->button())) {
if (event->buttons() & (Qt::LeftButton|Qt::RightButton|Qt::MidButton) & ~(event->button())) {
- ///printf("ignore %x %x\n", keyState, event->button());
- //printf("viewMouseReleaseEvent ignore buttons:%x mods:%x button:%x\n", (int)event->buttons(), (int)keyState, event->button());
return;
}
QPoint pos = event->pos();
- ///bool shift = event->state() & Qt::ShiftModifier;
- bool shift = ((QInputEvent*)event)->modifiers() & Qt::ShiftModifier;
+ bool ctrl = ((QInputEvent*)event)->modifiers() & Qt::ControlModifier;
bool redrawFlag = false;
switch (drag) {
case DRAG_MOVE_START:
case DRAG_COPY_START:
case DRAG_CLONE_START:
- if (!shift)
+ if (!ctrl)
deselectAll();
- selectItem(curItem, !(shift && curItem->isSelected()));
+ selectItem(curItem, !(ctrl && curItem->isSelected()));
updateSelection();
redrawFlag = true;
itemReleased(curItem, curItem->pos());
@@ -1114,17 +1107,17 @@ void Canvas::viewMouseReleaseEvent(QMouseEvent* event)
break;
case DRAG_LASSO_START:
lasso.setRect(-1, -1, -1, -1);
- if (!shift)
+ if (!ctrl)
deselectAll();
updateSelection();
redrawFlag = true;
break;
case DRAG_LASSO:
- if (!shift)
+ if (!ctrl)
deselectAll();
lasso = lasso.normalized();
- selectLasso(shift);
+ selectLasso(ctrl);
updateSelection();
redrawFlag = true;
break;
diff --git a/muse2/muse/widgets/gatetime.cpp b/muse2/muse/widgets/gatetime.cpp
index f1804c35..c64411a0 100644
--- a/muse2/muse/widgets/gatetime.cpp
+++ b/muse2/muse/widgets/gatetime.cpp
@@ -26,6 +26,8 @@ GateTime::GateTime(QWidget* parent)
rangeGroup->addButton(loopButton, 2);
rangeGroup->addButton(sloopButton, 3);
rangeGroup->setExclusive(true);
+
+ pullValues();
}
//---------------------------------------------------------
@@ -34,18 +36,30 @@ GateTime::GateTime(QWidget* parent)
void GateTime::accept()
{
- _range = rangeGroup->checkedId();
- _rateVal = rate->value();
- _offsetVal = offset->value();
+ pullValues();
QDialog::accept();
}
//---------------------------------------------------------
-// setRange
+// pullValues
//---------------------------------------------------------
-void GateTime::setRange(int id)
+void GateTime::pullValues()
{
- rangeGroup->button(id)->setChecked(true);
+ range = rangeGroup->checkedId();
+ rateVal = rate->value();
+ offsetVal = offset->value();
}
+//---------------------------------------------------------
+// exec
+//---------------------------------------------------------
+
+int GateTime::exec()
+ {
+ rangeGroup->button(range)->setChecked(true);
+ rate->setValue(rateVal);
+ offset->setValue(offsetVal);
+
+ return QDialog::exec();
+ }
diff --git a/muse2/muse/widgets/gatetime.h b/muse2/muse/widgets/gatetime.h
index dcb1827c..5585d6ad 100644
--- a/muse2/muse/widgets/gatetime.h
+++ b/muse2/muse/widgets/gatetime.h
@@ -18,22 +18,24 @@ class QDialog;
//---------------------------------------------------------
class GateTime : public QDialog, public Ui::GateTimeBase {
+ private:
Q_OBJECT
- int _range;
- int _rateVal;
- int _offsetVal;
QButtonGroup *rangeGroup;
protected slots:
void accept();
+ void pullValues();
public:
GateTime(QWidget* parent=0);
- void setRange(int id);
- int range() const { return _range; }
- int rateVal() const { return _rateVal; }
- int offsetVal() const { return _offsetVal; }
+
+ int range;
+ int rateVal;
+ int offsetVal;
+
+ public slots:
+ int exec();
};
#endif
diff --git a/muse2/muse/widgets/gatetimebase.ui b/muse2/muse/widgets/gatetimebase.ui
index babf5f02..e804de17 100644
--- a/muse2/muse/widgets/gatetimebase.ui
+++ b/muse2/muse/widgets/gatetimebase.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>MusE: Modify Gate Time</string>
+ <string>MusE: Modify Note Length</string>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
@@ -59,7 +59,7 @@
<item>
<widget class="QRadioButton" name="sloopButton">
<property name="text">
- <string>Selected &amp; Looped</string>
+ <string>Selected Looped</string>
</property>
</widget>
</item>
@@ -104,7 +104,7 @@
<string>%</string>
</property>
<property name="maximum">
- <number>200</number>
+ <number>1000</number>
</property>
<property name="value">
<number>100</number>
@@ -124,6 +124,13 @@
</property>
</widget>
</item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>lenNew = (lenOld * rate) + offset</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/muse2/muse/widgets/quantbase.ui b/muse2/muse/widgets/quantbase.ui
new file mode 100644
index 00000000..6a88c86f
--- /dev/null
+++ b/muse2/muse/widgets/quantbase.ui
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>QuantBase</class>
+ <widget class="QDialog" name="QuantBase">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>279</width>
+ <height>486</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MusE: Quantize</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="rangeBox">
+ <property name="title">
+ <string>Range</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <item>
+ <widget class="QRadioButton" name="all_events_button">
+ <property name="text">
+ <string>All Events</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="selected_events_button">
+ <property name="text">
+ <string>Selected Events</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="looped_events_button">
+ <property name="text">
+ <string>Looped Events</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="selected_looped_button">
+ <property name="text">
+ <string>Selected Looped</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Values</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="1" column="0">
+ <widget class="QLabel" name="TextLabel3">
+ <property name="text">
+ <string>Strength:</string>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="strength_spinbox">
+ <property name="suffix">
+ <string>%</string>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>80</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="TextLabel4">
+ <property name="text">
+ <string>Threshold (ticks):</string>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="threshold_spinbox">
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <number>10000</number>
+ </property>
+ <property name="singleStep">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Quantize Len</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QCheckBox" name="len_checkbox">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Raster</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="raster_combobox">
+ <property name="editable">
+ <bool>false</bool>
+ </property>
+ <property name="currentIndex">
+ <number>3</number>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Whole</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Half</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Quarter</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>8th</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>16th</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>32th</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Swing:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="swing_spinbox">
+ <property name="minimum">
+ <number>-99</number>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>If the proposed change in tick or length is smaller than threshold, nothing is done.
+If swing=0, this is normal
+If swing is 33, you get a 2:1-rhythm.
+If swing is -33, you get a 1:2-rhythm.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <spacer name="Spacer1">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="ok_button">
+ <property name="text">
+ <string>OK</string>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="cancel_button">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>ok_button</sender>
+ <signal>clicked()</signal>
+ <receiver>QuantBase</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>20</x>
+ <y>20</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>20</x>
+ <y>20</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>cancel_button</sender>
+ <signal>clicked()</signal>
+ <receiver>QuantBase</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>20</x>
+ <y>20</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>20</x>
+ <y>20</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/muse2/muse/widgets/quantize.cpp b/muse2/muse/widgets/quantize.cpp
new file mode 100644
index 00000000..734f3d5d
--- /dev/null
+++ b/muse2/muse/widgets/quantize.cpp
@@ -0,0 +1,54 @@
+//=========================================================
+// MusE
+// Linux Music Editor
+// $Id: quantize.cpp,v 1.1.1.1 2011/05/05 18:51:04 flo93 Exp $
+// (C) Copyright 2011 Florian Jung (flo93@sourceforge.net)
+//=========================================================
+
+#include <QButtonGroup>
+#include "quantize.h"
+
+
+Quantize::Quantize(QWidget* parent)
+ : QDialog(parent)
+{
+ setupUi(this);
+ range_group = new QButtonGroup;
+ range_group->addButton(all_events_button,0);
+ range_group->addButton(selected_events_button,1);
+ range_group->addButton(looped_events_button,2);
+ range_group->addButton(selected_looped_button,3);
+
+ pull_values();
+}
+
+void Quantize::pull_values()
+{
+ range = range_group->checkedId();
+ strength = strength_spinbox->value();
+ threshold = threshold_spinbox->value();
+ raster_power2 = raster_combobox->currentIndex();
+ quant_len = len_checkbox->isChecked();
+ swing = swing_spinbox->value();
+}
+
+void Quantize::accept()
+{
+ pull_values();
+ QDialog::accept();
+}
+
+int Quantize::exec()
+{
+ if ((range < 0) || (range > 3)) range=0;
+
+ range_group->button(range)->setChecked(true);
+ strength_spinbox->setValue(strength);
+ threshold_spinbox->setValue(threshold);
+ raster_combobox->setCurrentIndex(raster_power2);
+ len_checkbox->setChecked(quant_len);
+ swing_spinbox->setValue(swing);
+
+ return QDialog::exec();
+}
+
diff --git a/muse2/muse/widgets/quantize.h b/muse2/muse/widgets/quantize.h
new file mode 100644
index 00000000..3f54bc09
--- /dev/null
+++ b/muse2/muse/widgets/quantize.h
@@ -0,0 +1,40 @@
+//=========================================================
+// MusE
+// Linux Music Editor
+// $Id: quantize.h,v 1.1.1.1 2011/05/05 18:51:04 flo93 Exp $
+// (C) Copyright 2011 Florian Jung (flo93@sourceforge.net)
+//=========================================================
+
+#ifndef __QUANTIZE_H__
+#define __QUANTIZE_H__
+
+#include "ui_quantbase.h"
+
+class QButtonGroup;
+
+class Quantize : public QDialog, public Ui::QuantBase
+{
+ private:
+ Q_OBJECT
+ QButtonGroup* range_group;
+
+ protected slots:
+ void accept();
+ void pull_values();
+
+ public:
+ Quantize(QWidget* parent = 0);
+
+ int range;
+ int strength;
+ int threshold;
+ int raster_power2;
+ int swing;
+ bool quant_len;
+
+ public slots:
+ int exec();
+};
+
+#endif
+
diff --git a/muse2/muse/widgets/velocity.cpp b/muse2/muse/widgets/velocity.cpp
index 309beb4d..ad9bbfe4 100644
--- a/muse2/muse/widgets/velocity.cpp
+++ b/muse2/muse/widgets/velocity.cpp
@@ -12,7 +12,7 @@
// Velocity
//---------------------------------------------------------
-Velocity::Velocity(QDialog* parent)
+Velocity::Velocity(QWidget* parent)
: QDialog(parent)
{
setupUi(this);
@@ -21,6 +21,8 @@ Velocity::Velocity(QDialog* parent)
rangeGroup->addButton(selectedEvents,1);
rangeGroup->addButton(loopedEvents,2);
rangeGroup->addButton(selectedLooped,3);
+
+ pullValues();
}
//---------------------------------------------------------
@@ -29,18 +31,30 @@ Velocity::Velocity(QDialog* parent)
void Velocity::accept()
{
- _range = rangeGroup->checkedId();
- _rateVal = rate->value();
- _offsetVal = offset->value();
+ pullValues();
QDialog::accept();
}
//---------------------------------------------------------
-// setRange
+// pullValues
//---------------------------------------------------------
-void Velocity::setRange(int id)
+void Velocity::pullValues()
{
- rangeGroup->button(id)->setChecked(true);
+ range = rangeGroup->checkedId();
+ rateVal = rate->value();
+ offsetVal = offset->value();
}
+//---------------------------------------------------------
+// exec
+//---------------------------------------------------------
+
+int Velocity::exec()
+ {
+ rangeGroup->button(range)->setChecked(true);
+ rate->setValue(rateVal);
+ offset->setValue(offsetVal);
+
+ return QDialog::exec();
+ }
diff --git a/muse2/muse/widgets/velocity.h b/muse2/muse/widgets/velocity.h
index cf5b2779..448b3e5b 100644
--- a/muse2/muse/widgets/velocity.h
+++ b/muse2/muse/widgets/velocity.h
@@ -17,22 +17,23 @@ class QButtonGroup;
//---------------------------------------------------------
class Velocity : public QDialog, public Ui::VelocityBase {
- int _range;
- int _rateVal;
- int _offsetVal;
-
+ private:
Q_OBJECT
QButtonGroup* rangeGroup;
protected slots:
void accept();
+ void pullValues();
public:
- Velocity(QDialog* parent = 0);
- void setRange(int id);
- int range() const { return _range; }
- int rateVal() const { return _rateVal; }
- int offsetVal() const { return _offsetVal; }
+ Velocity(QWidget* parent = 0);
+
+ int range;
+ int rateVal;
+ int offsetVal;
+
+ public slots:
+ int exec();
};
#endif
diff --git a/muse2/muse/widgets/velocitybase.ui b/muse2/muse/widgets/velocitybase.ui
index 1e386e11..40fe625f 100644
--- a/muse2/muse/widgets/velocitybase.ui
+++ b/muse2/muse/widgets/velocitybase.ui
@@ -59,7 +59,7 @@
<item>
<widget class="QRadioButton" name="selectedLooped">
<property name="text">
- <string>Selected &amp; Looped</string>
+ <string>Selected Looped</string>
</property>
</widget>
</item>
@@ -114,7 +114,7 @@
<item row="1" column="1">
<widget class="QSpinBox" name="offset">
<property name="minimum">
- <number>1</number>
+ <number>-127</number>
</property>
<property name="maximum">
<number>127</number>
@@ -122,6 +122,16 @@
<property name="singleStep">
<number>1</number>
</property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>veloNew = (veloOld * rate) + offset</string>
+ </property>
</widget>
</item>
</layout>