summaryrefslogtreecommitdiff
path: root/muse2/muse/widgets
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-09-04 17:43:39 +0000
committerFlorian Jung <flo@windfisch.org>2011-09-04 17:43:39 +0000
commit5669de5d2d1b978bd34c80964d299688282d7027 (patch)
treed049caa2e608865a0381a7096d0f0b97a30a6474 /muse2/muse/widgets
parent46369b4c33d841aa1ece363c3deb3775658165ad (diff)
added paste dialog plus minor fixes:
- moved and changed muse.pro file - added update_pro.sh and update_translations.sh - updated translations - moved stuff from functions.cpp out to dialogs.cpp - fixed behaviour of movePartsTotheRight(): parts which begin at "start of move" aren't expanded, but moved now
Diffstat (limited to 'muse2/muse/widgets')
-rw-r--r--muse2/muse/widgets/CMakeLists.txt3
-rw-r--r--muse2/muse/widgets/pastedialog.cpp132
-rw-r--r--muse2/muse/widgets/pastedialog.h48
-rw-r--r--muse2/muse/widgets/pastedialogbase.ui291
4 files changed, 474 insertions, 0 deletions
diff --git a/muse2/muse/widgets/CMakeLists.txt b/muse2/muse/widgets/CMakeLists.txt
index b1eb888a..66fefa6f 100644
--- a/muse2/muse/widgets/CMakeLists.txt
+++ b/muse2/muse/widgets/CMakeLists.txt
@@ -59,6 +59,7 @@ QT4_WRAP_CPP (widget_mocs
mtrackinfo.h
nentry.h
noteinfo.h
+ pastedialog.h
pitchedit.h
pitchlabel.h
popupmenu.h
@@ -112,6 +113,7 @@ file (GLOB widgets_ui_files
mittransposebase.ui
mixdowndialogbase.ui
mtrackinfobase.ui
+ pastedialogbase.ui
projectcreate.ui
shortcutcapturedialogbase.ui
shortcutconfigbase.ui
@@ -159,6 +161,7 @@ file (GLOB widgets_source_files
mtscale_flo.cpp
nentry.cpp
noteinfo.cpp
+ pastedialog.cpp
pitchedit.cpp
pitchlabel.cpp
popupmenu.cpp
diff --git a/muse2/muse/widgets/pastedialog.cpp b/muse2/muse/widgets/pastedialog.cpp
new file mode 100644
index 00000000..a772e45b
--- /dev/null
+++ b/muse2/muse/widgets/pastedialog.cpp
@@ -0,0 +1,132 @@
+//=========================================================
+// MusE
+// Linux Music Editor
+// $Id: pastedialog.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 "pastedialog.h"
+#include "xml.h"
+#include "gconfig.h"
+
+PasteDialog::PasteDialog(QWidget* parent)
+ : QDialog(parent)
+{
+ setupUi(this);
+ button_group = new QButtonGroup;
+ button_group->addButton(merge_button,0);
+ button_group->addButton(move_all_button,1);
+ button_group->addButton(move_some_button,2);
+
+ raster_spinbox->setSingleStep(config.division);
+
+ connect(raster_spinbox, SIGNAL(valueChanged(int)), this, SLOT(raster_changed(int)));
+ connect(n_spinbox, SIGNAL(valueChanged(int)), this, SLOT(number_changed(int)));
+
+ pull_values();
+}
+
+void PasteDialog::pull_values()
+{
+ insert_method = button_group->checkedId();
+ number = n_spinbox->value();
+ raster = raster_spinbox->value();
+ all_in_one_track = all_in_one_track_checkbox->isChecked();
+ clone = clone_checkbox->isChecked();
+}
+
+void PasteDialog::accept()
+{
+ pull_values();
+ QDialog::accept();
+}
+
+int PasteDialog::exec()
+{
+ if ((insert_method < 0) || (insert_method > 2)) insert_method=0;
+
+ button_group->button(insert_method)->setChecked(true);
+ n_spinbox->setValue(number);
+ raster_spinbox->setValue(raster);
+ all_in_one_track_checkbox->setChecked(all_in_one_track);
+ clone_checkbox->setChecked(clone);
+
+ return QDialog::exec();
+}
+
+QString PasteDialog::ticks_to_quarter_string(int ticks)
+{
+ if (ticks % config.division == 0)
+ {
+ return tr("%n quarter(s)", "", ticks/config.division);
+ }
+ else
+ {
+ double quarters = (double) ticks/config.division;
+ bool one = ( quarters > 0.995 && quarters < 1.005 );
+ if (one)
+ return QString::number(quarters, 'f', 2) + " " + tr("quarter");
+ else
+ return QString::number(quarters, 'f', 2) + " " + tr("quarters");
+ }
+}
+
+void PasteDialog::raster_changed(int r)
+{
+ raster_quarters->setText(ticks_to_quarter_string(r));
+ insert_quarters->setText(ticks_to_quarter_string(r*n_spinbox->value()));
+}
+
+void PasteDialog::number_changed(int n)
+{
+ insert_quarters->setText(ticks_to_quarter_string(n*raster_spinbox->value()));
+}
+
+
+void PasteDialog::read_configuration(Xml& xml)
+{
+ for (;;)
+ {
+ Xml::Token token = xml.parse();
+ if (token == Xml::Error || token == Xml::End)
+ break;
+
+ const QString& tag = xml.s1();
+ switch (token)
+ {
+ case Xml::TagStart:
+ if (tag == "insert_method")
+ insert_method=xml.parseInt();
+ else if (tag == "number")
+ number=xml.parseInt();
+ else if (tag == "raster")
+ raster=xml.parseInt();
+ else if (tag == "clone")
+ clone=xml.parseInt();
+ else if (tag == "all_in_one_track")
+ all_in_one_track=xml.parseInt();
+ else
+ xml.unknown("PasteDialog");
+ break;
+
+ case Xml::TagEnd:
+ if (tag == "pastedialog")
+ return;
+
+ default:
+ break;
+ }
+ }
+}
+
+void PasteDialog::write_configuration(int level, Xml& xml)
+{
+ xml.tag(level++, "pastedialog");
+ xml.intTag(level, "insert_method", insert_method);
+ xml.intTag(level, "number", number);
+ xml.intTag(level, "raster", raster);
+ xml.intTag(level, "clone", clone);
+ xml.intTag(level, "all_in_one_track", all_in_one_track);
+ xml.tag(level, "/pastedialog");
+}
diff --git a/muse2/muse/widgets/pastedialog.h b/muse2/muse/widgets/pastedialog.h
new file mode 100644
index 00000000..866fda4c
--- /dev/null
+++ b/muse2/muse/widgets/pastedialog.h
@@ -0,0 +1,48 @@
+//=========================================================
+// MusE
+// Linux Music Editor
+// $Id: pastedialog.h,v 1.1.1.1 2011/05/05 18:51:04 flo93 Exp $
+// (C) Copyright 2011 Florian Jung (flo93@sourceforge.net)
+//=========================================================
+
+#ifndef __PASTEDIALOG_H__
+#define __PASTEDIALOG_H__
+
+#include "ui_pastedialogbase.h"
+#include <QString>
+
+class Xml;
+
+class PasteDialog : public QDialog, public Ui::PasteDialogBase
+{
+ Q_OBJECT
+ protected:
+ QButtonGroup* button_group;
+ QString ticks_to_quarter_string(int ticks);
+
+ protected slots:
+ void accept();
+ void pull_values();
+
+ void raster_changed(int);
+ void number_changed(int);
+
+ public:
+ PasteDialog(QWidget* parent = 0);
+
+ int insert_method;
+ int number;
+ int raster;
+ bool all_in_one_track;
+ bool clone;
+
+ void read_configuration(Xml& xml);
+ void write_configuration(int level, Xml& xml);
+
+
+ public slots:
+ int exec();
+};
+
+#endif
+
diff --git a/muse2/muse/widgets/pastedialogbase.ui b/muse2/muse/widgets/pastedialogbase.ui
new file mode 100644
index 00000000..a9c7bced
--- /dev/null
+++ b/muse2/muse/widgets/pastedialogbase.ui
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PasteDialogBase</class>
+ <widget class="QDialog" name="PasteDialogBase">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>307</width>
+ <height>349</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MusE: Paste Parts</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>Number and raster</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>insert</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="n_spinbox">
+ <property name="suffix">
+ <string> times</string>
+ </property>
+ <property name="prefix">
+ <string/>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>raster</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="raster_spinbox">
+ <property name="suffix">
+ <string> ticks</string>
+ </property>
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <number>999999</number>
+ </property>
+ <property name="singleStep">
+ <number>384</number>
+ </property>
+ <property name="value">
+ <number>384</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QLabel" name="insert_quarters">
+ <property name="text">
+ <string>1 quarter</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QLabel" name="raster_quarters">
+ <property name="text">
+ <string>1 quarter</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="2">
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Move, Merge, Clone</string>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="2" column="0">
+ <widget class="QRadioButton" name="move_all_button">
+ <property name="text">
+ <string>Move everything to the right</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QRadioButton" name="move_some_button">
+ <property name="text">
+ <string>Move only affected parts to the right</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="6" column="0">
+ <widget class="QCheckBox" name="all_in_one_track_checkbox">
+ <property name="text">
+ <string>Put everything into a single track</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QRadioButton" name="merge_button">
+ <property name="text">
+ <string>Merge with existing parts</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0">
+ <widget class="QCheckBox" name="clone_checkbox">
+ <property name="text">
+ <string>Insert as clones (where possible)</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </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="okButton">
+ <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="cancelButton">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>okButton</sender>
+ <signal>clicked()</signal>
+ <receiver>PasteDialogBase</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>cancelButton</sender>
+ <signal>clicked()</signal>
+ <receiver>PasteDialogBase</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>