diff options
author | Florian Jung <flo@windfisch.org> | 2011-09-04 17:43:39 +0000 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2011-09-04 17:43:39 +0000 |
commit | 5669de5d2d1b978bd34c80964d299688282d7027 (patch) | |
tree | d049caa2e608865a0381a7096d0f0b97a30a6474 /muse2/muse/widgets | |
parent | 46369b4c33d841aa1ece363c3deb3775658165ad (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.txt | 3 | ||||
-rw-r--r-- | muse2/muse/widgets/pastedialog.cpp | 132 | ||||
-rw-r--r-- | muse2/muse/widgets/pastedialog.h | 48 | ||||
-rw-r--r-- | muse2/muse/widgets/pastedialogbase.ui | 291 |
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> |