diff options
Diffstat (limited to 'muse2/muse/widgets')
22 files changed, 959 insertions, 62 deletions
diff --git a/muse2/muse/widgets/CMakeLists.txt b/muse2/muse/widgets/CMakeLists.txt index 48299f4a..4e934ad0 100644 --- a/muse2/muse/widgets/CMakeLists.txt +++ b/muse2/muse/widgets/CMakeLists.txt @@ -45,6 +45,7 @@ QT4_WRAP_CPP (widget_mocs doublelabel.h filedialog.h genset.h + mdisettings.h header.h hitscale.h intlabel.h @@ -61,6 +62,7 @@ QT4_WRAP_CPP (widget_mocs mtrackinfo.h nentry.h noteinfo.h + pastedialog.h pitchedit.h pitchlabel.h popupmenu.h @@ -107,12 +109,14 @@ file (GLOB widgets_ui_files editsysexdialogbase.ui fdialogbuttons.ui gensetbase.ui + mdisettings_base.ui itransformbase.ui metronomebase.ui midisync.ui mittransposebase.ui mixdowndialogbase.ui mtrackinfobase.ui + pastedialogbase.ui projectcreate.ui shortcutcapturedialogbase.ui shortcutconfigbase.ui @@ -142,6 +146,7 @@ file (GLOB widgets_source_files drange.cpp filedialog.cpp genset.cpp + mdisettings.cpp header.cpp hitscale.cpp intlabel.cpp @@ -159,6 +164,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/function_dialogs/crescendobase.ui b/muse2/muse/widgets/function_dialogs/crescendobase.ui index 5f4ec1f4..e98b7bc3 100644 --- a/muse2/muse/widgets/function_dialogs/crescendobase.ui +++ b/muse2/muse/widgets/function_dialogs/crescendobase.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>293</height> + <height>299</height> </rect> </property> <property name="windowTitle"> @@ -140,6 +140,19 @@ </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> diff --git a/muse2/muse/widgets/function_dialogs/deloverlapsbase.ui b/muse2/muse/widgets/function_dialogs/deloverlapsbase.ui index 7484bf97..7f94f83b 100644 --- a/muse2/muse/widgets/function_dialogs/deloverlapsbase.ui +++ b/muse2/muse/widgets/function_dialogs/deloverlapsbase.ui @@ -10,7 +10,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>195</height> + <height>201</height> </rect> </property> <property name="windowTitle"> @@ -70,6 +70,19 @@ </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> diff --git a/muse2/muse/widgets/function_dialogs/gatetimebase.ui b/muse2/muse/widgets/function_dialogs/gatetimebase.ui index e804de17..3f7ede4b 100644 --- a/muse2/muse/widgets/function_dialogs/gatetimebase.ui +++ b/muse2/muse/widgets/function_dialogs/gatetimebase.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>316</height> + <height>320</height> </rect> </property> <property name="windowTitle"> @@ -135,6 +135,19 @@ </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"> <property name="spacing"> <number>6</number> diff --git a/muse2/muse/widgets/function_dialogs/legatobase.ui b/muse2/muse/widgets/function_dialogs/legatobase.ui index 7bc406df..2593f3f5 100644 --- a/muse2/muse/widgets/function_dialogs/legatobase.ui +++ b/muse2/muse/widgets/function_dialogs/legatobase.ui @@ -10,7 +10,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>289</height> + <height>295</height> </rect> </property> <property name="windowTitle"> @@ -150,6 +150,19 @@ </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> diff --git a/muse2/muse/widgets/function_dialogs/movebase.ui b/muse2/muse/widgets/function_dialogs/movebase.ui index a8825dd5..17a3aff6 100644 --- a/muse2/muse/widgets/function_dialogs/movebase.ui +++ b/muse2/muse/widgets/function_dialogs/movebase.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>264</height> + <height>270</height> </rect> </property> <property name="windowTitle"> @@ -120,6 +120,19 @@ </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> diff --git a/muse2/muse/widgets/function_dialogs/quantbase.ui b/muse2/muse/widgets/function_dialogs/quantbase.ui index 6a88c86f..973be7b8 100644 --- a/muse2/muse/widgets/function_dialogs/quantbase.ui +++ b/muse2/muse/widgets/function_dialogs/quantbase.ui @@ -10,7 +10,7 @@ <x>0</x> <y>0</y> <width>279</width> - <height>486</height> + <height>475</height> </rect> </property> <property name="windowTitle"> @@ -210,11 +210,18 @@ </item> <item row="5" column="0" colspan="2"> <widget class="QLabel" name="label_4"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <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> +If swing is -33, you get a 1:2-rhythm. +</string> </property> <property name="wordWrap"> <bool>true</bool> @@ -225,6 +232,19 @@ If swing is -33, you get a 1:2-rhythm.</string> </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> diff --git a/muse2/muse/widgets/function_dialogs/removebase.ui b/muse2/muse/widgets/function_dialogs/removebase.ui index 79d541cc..a01f0c8b 100644 --- a/muse2/muse/widgets/function_dialogs/removebase.ui +++ b/muse2/muse/widgets/function_dialogs/removebase.ui @@ -10,7 +10,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>443</height> + <height>424</height> </rect> </property> <property name="windowTitle"> @@ -144,6 +144,12 @@ </item> <item row="2" column="0" colspan="2"> <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -165,6 +171,19 @@ p, li { white-space: pre-wrap; } </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> diff --git a/muse2/muse/widgets/function_dialogs/setlenbase.ui b/muse2/muse/widgets/function_dialogs/setlenbase.ui index 7d929716..39a87789 100644 --- a/muse2/muse/widgets/function_dialogs/setlenbase.ui +++ b/muse2/muse/widgets/function_dialogs/setlenbase.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>264</height> + <height>270</height> </rect> </property> <property name="windowTitle"> @@ -114,6 +114,19 @@ </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> diff --git a/muse2/muse/widgets/function_dialogs/transposebase.ui b/muse2/muse/widgets/function_dialogs/transposebase.ui index c26f2ef9..e1447690 100644 --- a/muse2/muse/widgets/function_dialogs/transposebase.ui +++ b/muse2/muse/widgets/function_dialogs/transposebase.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>264</height> + <height>270</height> </rect> </property> <property name="windowTitle"> @@ -120,6 +120,19 @@ </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> diff --git a/muse2/muse/widgets/function_dialogs/velocitybase.ui b/muse2/muse/widgets/function_dialogs/velocitybase.ui index 40fe625f..70e838f5 100644 --- a/muse2/muse/widgets/function_dialogs/velocitybase.ui +++ b/muse2/muse/widgets/function_dialogs/velocitybase.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>275</width> - <height>316</height> + <height>320</height> </rect> </property> <property name="windowTitle"> @@ -138,6 +138,19 @@ </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> diff --git a/muse2/muse/widgets/genset.cpp b/muse2/muse/widgets/genset.cpp index b8a93089..c6761a07 100644 --- a/muse2/muse/widgets/genset.cpp +++ b/muse2/muse/widgets/genset.cpp @@ -129,10 +129,10 @@ Shorter periods are desirable.</string> showMixer->setChecked(MusEConfig::config.mixer1Visible); showMixer2->setChecked(MusEConfig::config.mixer2Visible); - arrangerX->setValue(MusEConfig::config.geometryMain.x()); - arrangerY->setValue(MusEConfig::config.geometryMain.y()); - arrangerW->setValue(MusEConfig::config.geometryMain.width()); - arrangerH->setValue(MusEConfig::config.geometryMain.height()); + mainX->setValue(MusEConfig::config.geometryMain.x()); + mainY->setValue(MusEConfig::config.geometryMain.y()); + mainW->setValue(MusEConfig::config.geometryMain.width()); + mainH->setValue(MusEConfig::config.geometryMain.height()); transportX->setValue(MusEConfig::config.geometryTransport.x()); transportY->setValue(MusEConfig::config.geometryTransport.y()); @@ -178,10 +178,33 @@ Shorter periods are desirable.</string> connect(setMixerCurrent, SIGNAL(clicked()), SLOT(mixerCurrent())); connect(setMixer2Current, SIGNAL(clicked()), SLOT(mixer2Current())); connect(setBigtimeCurrent, SIGNAL(clicked()), SLOT(bigtimeCurrent())); - connect(setArrangerCurrent, SIGNAL(clicked()), SLOT(arrangerCurrent())); + connect(setMainCurrent, SIGNAL(clicked()), SLOT(mainCurrent())); connect(setTransportCurrent, SIGNAL(clicked()), SLOT(transportCurrent())); + + connect(buttonTraditionalPreset, SIGNAL(clicked()), SLOT(traditionalPreset())); + connect(buttonMDIPreset, SIGNAL(clicked()), SLOT(mdiPreset())); + connect(buttonBorlandPreset, SIGNAL(clicked()), SLOT(borlandPreset())); + + addMdiSettings(TopWin::ARRANGER); + addMdiSettings(TopWin::SCORE); + addMdiSettings(TopWin::PIANO_ROLL); + addMdiSettings(TopWin::DRUM); + addMdiSettings(TopWin::LISTE); + addMdiSettings(TopWin::WAVE); + addMdiSettings(TopWin::MASTER); + addMdiSettings(TopWin::LMASTER); + addMdiSettings(TopWin::CLIPLIST); + addMdiSettings(TopWin::MARKER); + } +void GlobalSettingsConfig::addMdiSettings(TopWin::ToplevelType t) +{ + MdiSettings* temp = new MdiSettings(t, this); + layoutMdiSettings->addWidget(temp); + mdisettings.push_back(temp); +} + //--------------------------------------------------------- // updateSettings //--------------------------------------------------------- @@ -242,10 +265,10 @@ void GlobalSettingsConfig::updateSettings() showMixer->setChecked(MusEConfig::config.mixer1Visible); showMixer2->setChecked(MusEConfig::config.mixer2Visible); - arrangerX->setValue(MusEConfig::config.geometryMain.x()); - arrangerY->setValue(MusEConfig::config.geometryMain.y()); - arrangerW->setValue(MusEConfig::config.geometryMain.width()); - arrangerH->setValue(MusEConfig::config.geometryMain.height()); + mainX->setValue(MusEConfig::config.geometryMain.x()); + mainY->setValue(MusEConfig::config.geometryMain.y()); + mainW->setValue(MusEConfig::config.geometryMain.width()); + mainH->setValue(MusEConfig::config.geometryMain.height()); transportX->setValue(MusEConfig::config.geometryTransport.x()); transportY->setValue(MusEConfig::config.geometryTransport.y()); @@ -282,6 +305,20 @@ void GlobalSettingsConfig::updateSettings() moveArmedCheckBox->setChecked(MusEConfig::config.moveArmedCheckBox); projectSaveCheckBox->setChecked(MusEConfig::config.useProjectSaveDialog); popsDefStayOpenCheckBox->setChecked(MusEConfig::config.popupsDefaultStayOpen); + + updateMdiSettings(); +} + +void GlobalSettingsConfig::updateMdiSettings() +{ + for (std::list<MdiSettings*>::iterator it = mdisettings.begin(); it!=mdisettings.end(); it++) + (*it)->update_settings(); +} + +void GlobalSettingsConfig::applyMdiSettings() +{ + for (std::list<MdiSettings*>::iterator it = mdisettings.begin(); it!=mdisettings.end(); it++) + (*it)->apply_settings(); } //--------------------------------------------------------- @@ -329,10 +366,10 @@ void GlobalSettingsConfig::apply() MusEConfig::config.mixer1Visible = showMixer->isChecked(); MusEConfig::config.mixer2Visible = showMixer2->isChecked(); - MusEConfig::config.geometryMain.setX(arrangerX->value()); - MusEConfig::config.geometryMain.setY(arrangerY->value()); - MusEConfig::config.geometryMain.setWidth(arrangerW->value()); - MusEConfig::config.geometryMain.setHeight(arrangerH->value()); + MusEConfig::config.geometryMain.setX(mainX->value()); + MusEConfig::config.geometryMain.setY(mainY->value()); + MusEConfig::config.geometryMain.setWidth(mainW->value()); + MusEConfig::config.geometryMain.setHeight(mainH->value()); MusEConfig::config.geometryTransport.setX(transportX->value()); MusEConfig::config.geometryTransport.setY(transportY->value()); @@ -403,6 +440,9 @@ void GlobalSettingsConfig::apply() MusEGlobal::muse->setHeartBeat(); // set guiRefresh midiSeq->msgSetRtc(); // set midi tick rate + + applyMdiSettings(); + MusEGlobal::muse->changeConfig(true); // save settings } @@ -437,8 +477,8 @@ void GlobalSettingsConfig::mixerCurrent() QRect r(w->frameGeometry()); mixerX->setValue(r.x()); mixerY->setValue(r.y()); - mixerW->setValue(r.width()); - mixerH->setValue(r.height()); + mixerW->setValue(w->width()); + mixerH->setValue(w->height()); } //--------------------------------------------------------- @@ -453,8 +493,8 @@ void GlobalSettingsConfig::mixer2Current() QRect r(w->frameGeometry()); mixer2X->setValue(r.x()); mixer2Y->setValue(r.y()); - mixer2W->setValue(r.width()); - mixer2H->setValue(r.height()); + mixer2W->setValue(w->width()); + mixer2H->setValue(w->height()); } //--------------------------------------------------------- @@ -469,21 +509,21 @@ void GlobalSettingsConfig::bigtimeCurrent() QRect r(w->frameGeometry()); bigtimeX->setValue(r.x()); bigtimeY->setValue(r.y()); - bigtimeW->setValue(r.width()); - bigtimeH->setValue(r.height()); + bigtimeW->setValue(w->width()); + bigtimeH->setValue(w->height()); } //--------------------------------------------------------- -// arrangerCurrent +// mainCurrent //--------------------------------------------------------- -void GlobalSettingsConfig::arrangerCurrent() +void GlobalSettingsConfig::mainCurrent() { QRect r(MusEGlobal::muse->frameGeometry()); - arrangerX->setValue(r.x()); - arrangerY->setValue(r.y()); - arrangerW->setValue(r.width()); - arrangerH->setValue(r.height()); + mainX->setValue(r.x()); + mainY->setValue(r.y()); + mainW->setValue(MusEGlobal::muse->width()); //this is intendedly not the frameGeometry, but + mainH->setValue(MusEGlobal::muse->height()); //the "non-frame-geom." to avoid a sizing bug } //--------------------------------------------------------- @@ -514,4 +554,43 @@ void GlobalSettingsConfig::defaultInstrumentsPath() userInstrumentsPath->setText(dir); } + +void GlobalSettingsConfig::traditionalPreset() +{ + for (std::list<MdiSettings*>::iterator it = mdisettings.begin(); it!=mdisettings.end(); it++) + { + TopWin::ToplevelType type = (*it)->type(); + TopWin::_sharesWhenFree[type]=false; + TopWin::_defaultSubwin[type]=false; + } + TopWin::_defaultSubwin[TopWin::ARRANGER]=true; + + updateMdiSettings(); +} + +void GlobalSettingsConfig::mdiPreset() +{ + for (std::list<MdiSettings*>::iterator it = mdisettings.begin(); it!=mdisettings.end(); it++) + { + TopWin::ToplevelType type = (*it)->type(); + TopWin::_sharesWhenSubwin[type]=true; + TopWin::_defaultSubwin[type]=true; + } + + updateMdiSettings(); +} + +void GlobalSettingsConfig::borlandPreset() +{ + for (std::list<MdiSettings*>::iterator it = mdisettings.begin(); it!=mdisettings.end(); it++) + { + TopWin::ToplevelType type = (*it)->type(); + TopWin::_sharesWhenFree[type]=true; + TopWin::_defaultSubwin[type]=false; + } + + updateMdiSettings(); +} + } // namespace MusEWidget + diff --git a/muse2/muse/widgets/genset.h b/muse2/muse/widgets/genset.h index 3a2c6354..6068c429 100644 --- a/muse2/muse/widgets/genset.h +++ b/muse2/muse/widgets/genset.h @@ -25,8 +25,11 @@ #define __GENSET_H__ #include "ui_gensetbase.h" +#include "cobject.h" +#include "mdisettings.h" #include <QShowEvent> +#include <list> namespace MusEWidget { @@ -39,20 +42,27 @@ class GlobalSettingsConfig : public QDialog, public Ui::GlobalSettingsDialogBase private slots: void updateSettings(); + void updateMdiSettings(); + void addMdiSettings(TopWin::ToplevelType t); + void applyMdiSettings(); void apply(); void ok(); void cancel(); void mixerCurrent(); void mixer2Current(); void bigtimeCurrent(); - void arrangerCurrent(); + void mainCurrent(); void transportCurrent(); void selectInstrumentsPath(); void defaultInstrumentsPath(); + void traditionalPreset(); + void mdiPreset(); + void borlandPreset(); protected: void showEvent(QShowEvent*); QButtonGroup *startSongGroup; + std::list<MdiSettings*> mdisettings; public: GlobalSettingsConfig(QWidget* parent=0); diff --git a/muse2/muse/widgets/gensetbase.ui b/muse2/muse/widgets/gensetbase.ui index 68f3ebb5..b5fb56b6 100644 --- a/muse2/muse/widgets/gensetbase.ui +++ b/muse2/muse/widgets/gensetbase.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>526</width> + <width>556</width> <height>506</height> </rect> </property> @@ -70,7 +70,7 @@ </widget> </item> <item row="0" column="5"> - <widget class="QSpinBox" name="arrangerH"> + <widget class="QSpinBox" name="mainH"> <property name="toolTip"> <string>height</string> </property> @@ -80,7 +80,7 @@ </widget> </item> <item row="0" column="4"> - <widget class="QSpinBox" name="arrangerW"> + <widget class="QSpinBox" name="mainW"> <property name="toolTip"> <string>width</string> </property> @@ -90,7 +90,7 @@ </widget> </item> <item row="0" column="3"> - <widget class="QSpinBox" name="arrangerY"> + <widget class="QSpinBox" name="mainY"> <property name="toolTip"> <string>y-pos</string> </property> @@ -100,7 +100,7 @@ </widget> </item> <item row="0" column="2"> - <widget class="QSpinBox" name="arrangerX"> + <widget class="QSpinBox" name="mainX"> <property name="toolTip"> <string>x-pos</string> </property> @@ -227,7 +227,7 @@ </sizepolicy> </property> <property name="text"> - <string>Arranger</string> + <string>Main Window</string> </property> <property name="wordWrap"> <bool>false</bool> @@ -379,7 +379,7 @@ </widget> </item> <item row="0" column="6"> - <widget class="QPushButton" name="setArrangerCurrent"> + <widget class="QPushButton" name="setMainCurrent"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -1333,19 +1333,6 @@ Adjusts responsiveness of audio controls and </property> </widget> </item> - <item row="5" column="0"> - <spacer name="verticalSpacer_2"> - <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 row="4" column="0"> <widget class="QLabel" name="TextLabel1_3"> <property name="toolTip"> @@ -1370,6 +1357,72 @@ Otherwise, hold Ctrl to keep them open.</string> </layout> </widget> </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>MDI-subwindowness and sharing menus</string> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_9"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Presets:</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonTraditionalPreset"> + <property name="text"> + <string>traditional MusE SDI</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonMDIPreset"> + <property name="text"> + <string>Cakewalk-like MDI</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonBorlandPreset"> + <property name="text"> + <string>Borland-/Mac-like MDI</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QScrollArea" name="scrollArea"> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents_2"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>482</width> + <height>168</height> + </rect> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <layout class="QVBoxLayout" name="layoutMdiSettings"/> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + </item> </layout> </widget> </widget> diff --git a/muse2/muse/widgets/mdisettings.cpp b/muse2/muse/widgets/mdisettings.cpp new file mode 100644 index 00000000..127aa5c1 --- /dev/null +++ b/muse2/muse/widgets/mdisettings.cpp @@ -0,0 +1,44 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: genset.cpp,v 1.7.2.8 2009/12/01 03:52:40 terminator356 Exp $ +// +// (C) Copyright 2001-2004 Werner Schweer (ws@seh.de) +//========================================================= + +#include <stdio.h> + +#include <QFileDialog> +#include <QRect> +#include <QShowEvent> + +#include "mdisettings.h" +#include "app.h" +#include "gconfig.h" +#include "midiseq.h" +#include "globals.h" +#include "icons.h" + +MdiSettings::MdiSettings(TopWin::ToplevelType t, QWidget* parent) : QWidget(parent) +{ + _type=t; + setupUi(this); + + groupBox->setTitle(TopWin::typeName(t)); + update_settings(); +} + + +void MdiSettings::update_settings() +{ + isSubwinCheckbox->setChecked(TopWin::_defaultSubwin[_type]); + shareSubwinCheckbox->setChecked(TopWin::_sharesWhenSubwin[_type]); + shareFreeCheckbox->setChecked(TopWin::_sharesWhenFree[_type]); +} + +void MdiSettings::apply_settings() +{ + TopWin::_defaultSubwin[_type] = isSubwinCheckbox->isChecked(); + TopWin::_sharesWhenSubwin[_type] = shareSubwinCheckbox->isChecked(); + TopWin::_sharesWhenFree[_type] = shareFreeCheckbox->isChecked(); +} diff --git a/muse2/muse/widgets/mdisettings.h b/muse2/muse/widgets/mdisettings.h new file mode 100644 index 00000000..2f1bdf55 --- /dev/null +++ b/muse2/muse/widgets/mdisettings.h @@ -0,0 +1,34 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: genset.h,v 1.3 2004/01/25 09:55:17 wschweer Exp $ +// +// (C) Copyright 2001 Werner Schweer (ws@seh.de) +//========================================================= + +#ifndef __MDISETTINGS_H__ +#define __MDISETTINGS_H__ + +#include <QWidget> +#include "ui_mdisettings_base.h" +#include "cobject.h" + +//--------------------------------------------------------- +// GlobalSettingsConfig +//--------------------------------------------------------- + +class MdiSettings : public QWidget, private Ui::MdiSettingsBase +{ + Q_OBJECT + + private: + TopWin::ToplevelType _type; + + public: + MdiSettings(TopWin::ToplevelType t, QWidget* parent=0); + void update_settings(); + void apply_settings(); + TopWin::ToplevelType type() { return _type; } +}; + +#endif diff --git a/muse2/muse/widgets/mdisettings_base.ui b/muse2/muse/widgets/mdisettings_base.ui new file mode 100644 index 00000000..af32f174 --- /dev/null +++ b/muse2/muse/widgets/mdisettings_base.ui @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MdiSettingsBase</class> + <widget class="QWidget" name="MdiSettingsBase"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>338</width> + <height>100</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="flat"> + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="0"> + <widget class="QCheckBox" name="isSubwinCheckbox"> + <property name="text"> + <string>MDI subwin</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QCheckBox" name="shareSubwinCheckbox"> + <property name="text"> + <string>Shares menu when subwin</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QCheckBox" name="shareFreeCheckbox"> + <property name="text"> + <string>Shares menu when free</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/muse2/muse/widgets/midisyncimpl.cpp b/muse2/muse/widgets/midisyncimpl.cpp index 89075af9..3829ca43 100644 --- a/muse2/muse/widgets/midisyncimpl.cpp +++ b/muse2/muse/widgets/midisyncimpl.cpp @@ -690,8 +690,6 @@ void MidiSyncConfig::closeEvent(QCloseEvent* e) apply(); } - //emit deleted((unsigned long)this); - disconnect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), this, SLOT(heartBeat())); disconnect(song, SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); diff --git a/muse2/muse/widgets/midisyncimpl.h b/muse2/muse/widgets/midisyncimpl.h index ddccf7c9..50df186e 100644 --- a/muse2/muse/widgets/midisyncimpl.h +++ b/muse2/muse/widgets/midisyncimpl.h @@ -121,9 +121,6 @@ class MidiSyncConfig : public QDialog, public Ui::MidiSyncConfigBase { //void renameOk(QListViewItem*, int, const QString&); void songChanged(int); - //signals: - // void deleted(unsigned long); - public: MidiSyncConfig(QWidget* parent=0); //MidiSyncConfig(); diff --git a/muse2/muse/widgets/pastedialog.cpp b/muse2/muse/widgets/pastedialog.cpp new file mode 100644 index 00000000..0a6ce463 --- /dev/null +++ b/muse2/muse/widgets/pastedialog.cpp @@ -0,0 +1,134 @@ +//========================================================= +// 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" + +using MusEConfig::config; + +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> |