summaryrefslogtreecommitdiff
path: root/muse2
diff options
context:
space:
mode:
Diffstat (limited to 'muse2')
-rw-r--r--muse2/muse/arranger/arrangerview.cpp331
-rw-r--r--muse2/muse/arranger/arrangerview.h15
-rw-r--r--muse2/muse/arranger/tlist.cpp8
-rw-r--r--muse2/muse/dialogs.cpp15
-rw-r--r--muse2/muse/dialogs.h15
-rw-r--r--muse2/muse/functions.cpp2
-rw-r--r--muse2/muse/helper.cpp246
-rw-r--r--muse2/muse/helper.h13
-rw-r--r--muse2/muse/liste/listedit.cpp3
-rw-r--r--muse2/muse/midiedit/dlist.cpp5
-rw-r--r--muse2/muse/midiedit/scoreedit.cpp6
-rw-r--r--muse2/muse/miditransform.cpp8
-rw-r--r--muse2/muse/mixer/amixer.cpp8
-rw-r--r--muse2/muse/mpevent.cpp2
-rw-r--r--muse2/muse/mplugins/midiitransform.cpp8
-rw-r--r--muse2/muse/structure.h15
-rw-r--r--muse2/muse/widgets/mdisettings.cpp15
-rw-r--r--muse2/muse/widgets/mdisettings.h15
-rw-r--r--muse2/muse/widgets/pastedialog.cpp15
-rw-r--r--muse2/muse/widgets/pastedialog.h15
-rw-r--r--muse2/muse/widgets/pitchedit.cpp2
-rw-r--r--muse2/muse/widgets/pitchedit.h2
-rw-r--r--muse2/muse/widgets/pitchlabel.cpp2
23 files changed, 448 insertions, 318 deletions
diff --git a/muse2/muse/arranger/arrangerview.cpp b/muse2/muse/arranger/arrangerview.cpp
index 2c84d17e..10f43436 100644
--- a/muse2/muse/arranger/arrangerview.cpp
+++ b/muse2/muse/arranger/arrangerview.cpp
@@ -3,307 +3,70 @@
// Linux Music Editor
// arrangerview.cpp
// (C) Copyright 2011 Florian Jung (flo93@users.sourceforge.net)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
-#include <QLayout>
-#include <QSizeGrip>
-#include <QLabel>
-#include <QScrollBar>
-#include <QPushButton>
-#include <QToolButton>
-#include <QToolTip>
-#include <QMenu>
-#include <QSignalMapper>
-#include <QMenuBar>
#include <QApplication>
#include <QClipboard>
+#include <QCloseEvent>
#include <QDir>
-#include <QKeySequence>
-#include <QKeyEvent>
#include <QGridLayout>
-#include <QResizeEvent>
-#include <QCloseEvent>
-#include <QMimeData>
-#include <QScrollArea>
-#include <QSettings>
#include <QImage>
#include <QInputDialog>
+#include <QKeyEvent>
+#include <QKeySequence>
+#include <QLabel>
+#include <QLayout>
+#include <QMenu>
+#include <QMenuBar>
#include <QMessageBox>
+#include <QMimeData>
+#include <QPushButton>
+#include <QResizeEvent>
+#include <QScrollArea>
+#include <QScrollBar>
+#include <QSettings>
#include <QShortcut>
+#include <QSignalMapper>
+#include <QSizeGrip>
+#include <QToolButton>
+#include <QToolTip>
-#include <stdio.h>
-#include <math.h>
-
-#include "arrangerview.h"
-#include "visibletracks.h"
-#include "structure.h"
-
-
-#include <iostream>
-#include <sstream>
-using namespace std;
-
-#include "app.h"
-#include "xml.h"
-#include "mtscale.h"
#include "al/sig.h"
-#include "scoreedit.h"
-#include "tools.h"
-#include "ttoolbar.h"
-#include "tb1.h"
-#include "globals.h"
-#include "gconfig.h"
-#include "icons.h"
+#include "app.h"
+#include "arrangerview.h"
#include "audio.h"
#include "functions.h"
+#include "gconfig.h"
+#include "globals.h"
#include "helper.h"
+#include "icons.h"
+#include "mtscale.h"
+#include "scoreedit.h"
+#include "shortcuts.h"
#include "sig.h"
#include "song.h"
-#include "shortcuts.h"
-#include "synth.h"
-
-#ifdef DSSI_SUPPORT
-#include "dssihost.h"
-#endif
-
-#ifdef VST_SUPPORT
-#include "vst.h"
-#endif
-
-
-//---------------------------------------------------------
-// populateAddSynth
-//---------------------------------------------------------
-
-// ORCAN - CHECK
-QMenu* populateAddSynth(QWidget* parent)
-{
- QMenu* synp = new QMenu(parent);
-
- //typedef std::multimap<std::string, int, addSynth_cmp_str > asmap;
- typedef std::multimap<std::string, int > asmap;
-
- //typedef std::multimap<std::string, int, addSynth_cmp_str >::iterator imap;
- typedef std::multimap<std::string, int >::iterator imap;
-
- MessSynth* synMESS = 0;
- QMenu* synpMESS = 0;
- asmap mapMESS;
-
- #ifdef DSSI_SUPPORT
- DssiSynth* synDSSI = 0;
- QMenu* synpDSSI = 0;
- asmap mapDSSI;
- #endif
-
- #ifdef VST_SUPPORT
- VstSynth* synVST = 0;
- QMenu* synpVST = 0;
- asmap mapVST;
- #endif
-
- // Not necessary, but what the heck.
- QMenu* synpOther = 0;
- asmap mapOther;
-
- //const int synth_base_id = 0x1000;
- int ii = 0;
- for(std::vector<Synth*>::iterator i = synthis.begin(); i != synthis.end(); ++i)
- {
- synMESS = dynamic_cast<MessSynth*>(*i);
- if(synMESS)
- {
- mapMESS.insert( std::pair<std::string, int> (std::string(synMESS->description().toLower().toLatin1().constData()), ii) );
- }
- else
- {
-
- #ifdef DSSI_SUPPORT
- synDSSI = dynamic_cast<DssiSynth*>(*i);
- if(synDSSI)
- {
- mapDSSI.insert( std::pair<std::string, int> (std::string(synDSSI->description().toLower().toLatin1().constData()), ii) );
- }
- else
- #endif
-
- {
- #ifdef VST_SUPPORT
- synVST = dynamic_cast<VstSynth*>(*i);
- if(synVST)
- {
- mapVST.insert( std::pair<std::string, int> (std::string(synVST->description().toLower().toLatin1().constData()), ii) );
- }
- else
- #endif
-
- {
- mapOther.insert( std::pair<std::string, int> (std::string((*i)->description().toLower().toLatin1().constData()), ii) );
- }
- }
- }
-
- ++ii;
- }
-
- int sz = synthis.size();
- for(imap i = mapMESS.begin(); i != mapMESS.end(); ++i)
- {
- int idx = i->second;
- if(idx > sz) // Sanity check
- continue;
- Synth* s = synthis[idx];
- if(s)
- {
- // No MESS sub-menu yet? Create it now.
- if(!synpMESS)
- synpMESS = new QMenu(parent);
- QAction* sM = synpMESS->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
- sM->setData(MENU_ADD_SYNTH_ID_BASE + idx);
- }
- }
-
- #ifdef DSSI_SUPPORT
- for(imap i = mapDSSI.begin(); i != mapDSSI.end(); ++i)
- {
- int idx = i->second;
- if(idx > sz)
- continue;
- Synth* s = synthis[idx];
- if(s)
- {
- // No DSSI sub-menu yet? Create it now.
- if(!synpDSSI)
- synpDSSI = new QMenu(parent);
- //synpDSSI->insertItem(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">", MENU_ADD_SYNTH_ID_BASE + idx);
- QAction* sD = synpDSSI->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
- sD->setData(MENU_ADD_SYNTH_ID_BASE + idx);
- }
- }
- #endif
-
- #ifdef VST_SUPPORT
- for(imap i = mapVST.begin(); i != mapVST.end(); ++i)
- {
- int idx = i->second;
- if(idx > sz)
- continue;
- Synth* s = synthis[idx];
- if(s)
- {
- // No VST sub-menu yet? Create it now.
- if(!synpVST)
- synpVST = new QMenu(parent);
- QAction* sV = synpVST->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
- sV->setData(MENU_ADD_SYNTH_ID_BASE + idx);
- }
- }
- #endif
-
- for(imap i = mapOther.begin(); i != mapOther.end(); ++i)
- {
- int idx = i->second;
- if(idx > sz)
- continue;
- Synth* s = synthis[idx];
- // No Other sub-menu yet? Create it now.
- if(!synpOther)
- synpOther = new QMenu(parent);
- //synpOther->insertItem(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">", MENU_ADD_SYNTH_ID_BASE + idx);
- QAction* sO = synpOther->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
- sO->setData(MENU_ADD_SYNTH_ID_BASE + idx);
- }
-
- if(synpMESS)
- {
- synpMESS->setIcon(*synthIcon);
- synpMESS->setTitle(QT_TRANSLATE_NOOP("@default", "MESS"));
- synp->addMenu(synpMESS);
- }
-
- #ifdef DSSI_SUPPORT
- if(synpDSSI)
- {
- synpDSSI->setIcon(*synthIcon);
- synpDSSI->setTitle(QT_TRANSLATE_NOOP("@default", "DSSI"));
- synp->addMenu(synpDSSI);
- }
- #endif
-
- #ifdef VST_SUPPORT
- if(synpVST)
- {
- synpVST->setIcon(*synthIcon);
- synpVST->setTitle(QT_TRANSLATE_NOOP("@default", "FST"));
- synp->addMenu(synpVST);
- }
- #endif
-
- if(synpOther)
- {
- synpOther->setIcon(*synthIcon);
- synpOther->setTitle(QObject::tr("Other"));
- synp->addMenu(synpOther);
- }
-
- return synp;
-}
-
-
-//---------------------------------------------------------
-// populateAddTrack
-// this is also used in "mixer"
-//---------------------------------------------------------
-
-QActionGroup* populateAddTrack(QMenu* addTrack)
- {
- QActionGroup* grp = new QActionGroup(addTrack);
-
- QAction* midi = addTrack->addAction(QIcon(*addtrack_addmiditrackIcon),
- QT_TRANSLATE_NOOP("@default", "Add Midi Track"));
- midi->setData(Track::MIDI);
- grp->addAction(midi);
- QAction* drum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
- QT_TRANSLATE_NOOP("@default", "Add Drum Track"));
- drum->setData(Track::DRUM);
- grp->addAction(drum);
- QAction* wave = addTrack->addAction(QIcon(*addtrack_wavetrackIcon),
- QT_TRANSLATE_NOOP("@default", "Add Wave Track"));
- wave->setData(Track::WAVE);
- grp->addAction(wave);
- QAction* aoutput = addTrack->addAction(QIcon(*addtrack_audiooutputIcon),
- QT_TRANSLATE_NOOP("@default", "Add Audio Output"));
- aoutput->setData(Track::AUDIO_OUTPUT);
- grp->addAction(aoutput);
- QAction* agroup = addTrack->addAction(QIcon(*addtrack_audiogroupIcon),
- QT_TRANSLATE_NOOP("@default", "Add Audio Group"));
- agroup->setData(Track::AUDIO_GROUP);
- grp->addAction(agroup);
- QAction* ainput = addTrack->addAction(QIcon(*addtrack_audioinputIcon),
- QT_TRANSLATE_NOOP("@default", "Add Audio Input"));
- ainput->setData(Track::AUDIO_INPUT);
- grp->addAction(ainput);
- QAction* aaux = addTrack->addAction(QIcon(*addtrack_auxsendIcon),
- QT_TRANSLATE_NOOP("@default", "Add Aux Send"));
- aaux->setData(Track::AUDIO_AUX);
- grp->addAction(aaux);
-
- // Create a sub-menu and fill it with found synth types. Make addTrack the owner.
- QMenu* synp = populateAddSynth(addTrack);
- synp->setIcon(*synthIcon);
- synp->setTitle(QT_TRANSLATE_NOOP("@default", "Add Synth"));
-
- // Add the sub-menu to the given menu.
- addTrack->addMenu(synp);
-
- QObject::connect(addTrack, SIGNAL(triggered(QAction *)), song, SLOT(addNewTrack(QAction *)));
-
- return grp;
- }
-
-
-
+#include "structure.h"
+#include "tb1.h"
+#include "tools.h"
+#include "ttoolbar.h"
+#include "visibletracks.h"
+#include "xml.h"
//---------------------------------------------------------
@@ -864,7 +627,7 @@ void ArrangerView::clearScoreMenuMappers()
void ArrangerView::populateAddTrack()
{
- QActionGroup *grp = ::populateAddTrack(addTrack);
+ QActionGroup *grp = MusEUtil::populateAddTrack(addTrack);
trackMidiAction = grp->actions()[0];
trackDrumAction = grp->actions()[1];
diff --git a/muse2/muse/arranger/arrangerview.h b/muse2/muse/arranger/arrangerview.h
index 542b37f6..d5e06c6c 100644
--- a/muse2/muse/arranger/arrangerview.h
+++ b/muse2/muse/arranger/arrangerview.h
@@ -3,6 +3,21 @@
// Linux Music Editor
// arrangerview.h
// (C) Copyright 2011 Florian Jung (flo93@users.sourceforge.net)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#ifndef __ARRANGERVIEW_H__
diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp
index 6dea6ae1..786b4ad7 100644
--- a/muse2/muse/arranger/tlist.cpp
+++ b/muse2/muse/arranger/tlist.cpp
@@ -55,6 +55,7 @@
#include "audio.h"
#include "instruments/minstrument.h"
#include "app.h"
+#include "helper.h"
#include "gconfig.h"
#include "event.h"
#include "midiedit/drummap.h"
@@ -66,11 +67,6 @@
#include "dssihost.h"
#endif
-//namespace MusEApp { FINDMICHJETZT: again: dirty, dirty. implemented in arrangerview.cpp
-// should be moved together with populateAddTrack somewhere else
-extern QMenu* populateAddSynth(QWidget* parent);
-//}
-
static const int MIN_TRACKHEIGHT = 20;
static const int WHEEL_DELTA = 120;
QColor collist[] = { Qt::red, Qt::yellow, Qt::blue , Qt::black, Qt::white, Qt::green };
@@ -1022,7 +1018,7 @@ void TList::mousePressEvent(QMouseEvent* ev)
aaux->setData(Track::AUDIO_AUX);
// Create a sub-menu and fill it with found synth types. Make p the owner.
- QMenu* synp = populateAddSynth(p);
+ QMenu* synp = MusEUtil::populateAddSynth(p);
synp->setIcon(*synthIcon);
synp->setTitle(QT_TRANSLATE_NOOP("@default", "Add Synth"));
diff --git a/muse2/muse/dialogs.cpp b/muse2/muse/dialogs.cpp
index 1dd19707..a0bf265f 100644
--- a/muse2/muse/dialogs.cpp
+++ b/muse2/muse/dialogs.cpp
@@ -3,6 +3,21 @@
// Linux Music Editor
// $Id: functions.cpp,v 1.20.2.19 2011/05/05 20:10 flo93 Exp $
// (C) Copyright 2011 Florian Jung (flo93@sourceforge.net)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#include "dialogs.h"
diff --git a/muse2/muse/dialogs.h b/muse2/muse/dialogs.h
index 4c449a6a..b8e85b91 100644
--- a/muse2/muse/dialogs.h
+++ b/muse2/muse/dialogs.h
@@ -3,6 +3,21 @@
// Linux Music Editor
// $Id: dialogs.h,v 1.20.2.19 2011/05/05 20:10 flo93 Exp $
// (C) Copyright 2011 Florian Jung (flo93@sourceforge.net)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#ifndef __DIALOGS_H__
diff --git a/muse2/muse/functions.cpp b/muse2/muse/functions.cpp
index 2fc9f826..2584caa3 100644
--- a/muse2/muse/functions.cpp
+++ b/muse2/muse/functions.cpp
@@ -1009,7 +1009,7 @@ void paste_at(const QString& pt, int pos, int max_distance, bool always_new_part
Track* dest_track;
if (paste_into_part == NULL)
- dest_part = partFromSerialNumber(part_id);
+ dest_part = MusEUtil::partFromSerialNumber(part_id);
else
dest_part=paste_into_part;
diff --git a/muse2/muse/helper.cpp b/muse2/muse/helper.cpp
index fad9959f..6aaacdb5 100644
--- a/muse2/muse/helper.cpp
+++ b/muse2/muse/helper.cpp
@@ -24,11 +24,25 @@
#include "part.h"
#include "track.h"
#include "song.h"
+#include "app.h"
+#include "icons.h"
+#include "synth.h"
+
+#ifdef DSSI_SUPPORT
+#include "dssihost.h"
+#endif
+
+#ifdef VST_SUPPORT
+#include "vst.h"
+#endif
+
namespace MusEGlobal {
extern bool hIsB;
}
+namespace MusEUtil {
+
static const char* vall[] = {
"c","c#","d","d#","e","f","f#","g","g#","a","a#","h"
};
@@ -76,3 +90,235 @@ Part* partFromSerialNumber(int serial)
printf("ERROR: partFromSerialNumber(%i) wasn't able to find an appropriate part!\n",serial);
return NULL;
}
+
+
+//---------------------------------------------------------
+// populateAddSynth
+//---------------------------------------------------------
+
+QMenu* populateAddSynth(QWidget* parent)
+{
+ QMenu* synp = new QMenu(parent);
+
+ //typedef std::multimap<std::string, int, addSynth_cmp_str > asmap;
+ typedef std::multimap<std::string, int > asmap;
+
+ //typedef std::multimap<std::string, int, addSynth_cmp_str >::iterator imap;
+ typedef std::multimap<std::string, int >::iterator imap;
+
+ MessSynth* synMESS = 0;
+ QMenu* synpMESS = 0;
+ asmap mapMESS;
+
+ #ifdef DSSI_SUPPORT
+ DssiSynth* synDSSI = 0;
+ QMenu* synpDSSI = 0;
+ asmap mapDSSI;
+ #endif
+
+ #ifdef VST_SUPPORT
+ VstSynth* synVST = 0;
+ QMenu* synpVST = 0;
+ asmap mapVST;
+ #endif
+
+ // Not necessary, but what the heck.
+ QMenu* synpOther = 0;
+ asmap mapOther;
+
+ //const int synth_base_id = 0x1000;
+ int ii = 0;
+ for(std::vector<Synth*>::iterator i = synthis.begin(); i != synthis.end(); ++i)
+ {
+ synMESS = dynamic_cast<MessSynth*>(*i);
+ if(synMESS)
+ {
+ mapMESS.insert( std::pair<std::string, int> (std::string(synMESS->description().toLower().toLatin1().constData()), ii) );
+ }
+ else
+ {
+
+ #ifdef DSSI_SUPPORT
+ synDSSI = dynamic_cast<DssiSynth*>(*i);
+ if(synDSSI)
+ {
+ mapDSSI.insert( std::pair<std::string, int> (std::string(synDSSI->description().toLower().toLatin1().constData()), ii) );
+ }
+ else
+ #endif
+
+ {
+ #ifdef VST_SUPPORT
+ synVST = dynamic_cast<VstSynth*>(*i);
+ if(synVST)
+ {
+ mapVST.insert( std::pair<std::string, int> (std::string(synVST->description().toLower().toLatin1().constData()), ii) );
+ }
+ else
+ #endif
+
+ {
+ mapOther.insert( std::pair<std::string, int> (std::string((*i)->description().toLower().toLatin1().constData()), ii) );
+ }
+ }
+ }
+
+ ++ii;
+ }
+
+ int sz = synthis.size();
+ for(imap i = mapMESS.begin(); i != mapMESS.end(); ++i)
+ {
+ int idx = i->second;
+ if(idx > sz) // Sanity check
+ continue;
+ Synth* s = synthis[idx];
+ if(s)
+ {
+ // No MESS sub-menu yet? Create it now.
+ if(!synpMESS)
+ synpMESS = new QMenu(parent);
+ QAction* sM = synpMESS->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
+ sM->setData(MENU_ADD_SYNTH_ID_BASE + idx);
+ }
+ }
+
+ #ifdef DSSI_SUPPORT
+ for(imap i = mapDSSI.begin(); i != mapDSSI.end(); ++i)
+ {
+ int idx = i->second;
+ if(idx > sz)
+ continue;
+ Synth* s = synthis[idx];
+ if(s)
+ {
+ // No DSSI sub-menu yet? Create it now.
+ if(!synpDSSI)
+ synpDSSI = new QMenu(parent);
+ //synpDSSI->insertItem(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">", MENU_ADD_SYNTH_ID_BASE + idx);
+ QAction* sD = synpDSSI->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
+ sD->setData(MENU_ADD_SYNTH_ID_BASE + idx);
+ }
+ }
+ #endif
+
+ #ifdef VST_SUPPORT
+ for(imap i = mapVST.begin(); i != mapVST.end(); ++i)
+ {
+ int idx = i->second;
+ if(idx > sz)
+ continue;
+ Synth* s = synthis[idx];
+ if(s)
+ {
+ // No VST sub-menu yet? Create it now.
+ if(!synpVST)
+ synpVST = new QMenu(parent);
+ QAction* sV = synpVST->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
+ sV->setData(MENU_ADD_SYNTH_ID_BASE + idx);
+ }
+ }
+ #endif
+
+ for(imap i = mapOther.begin(); i != mapOther.end(); ++i)
+ {
+ int idx = i->second;
+ if(idx > sz)
+ continue;
+ Synth* s = synthis[idx];
+ // No Other sub-menu yet? Create it now.
+ if(!synpOther)
+ synpOther = new QMenu(parent);
+ //synpOther->insertItem(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">", MENU_ADD_SYNTH_ID_BASE + idx);
+ QAction* sO = synpOther->addAction(QT_TRANSLATE_NOOP("@default", s->description()) + " <" + QT_TRANSLATE_NOOP("@default", s->name()) + ">");
+ sO->setData(MENU_ADD_SYNTH_ID_BASE + idx);
+ }
+
+ if(synpMESS)
+ {
+ synpMESS->setIcon(*synthIcon);
+ synpMESS->setTitle(QT_TRANSLATE_NOOP("@default", "MESS"));
+ synp->addMenu(synpMESS);
+ }
+
+ #ifdef DSSI_SUPPORT
+ if(synpDSSI)
+ {
+ synpDSSI->setIcon(*synthIcon);
+ synpDSSI->setTitle(QT_TRANSLATE_NOOP("@default", "DSSI"));
+ synp->addMenu(synpDSSI);
+ }
+ #endif
+
+ #ifdef VST_SUPPORT
+ if(synpVST)
+ {
+ synpVST->setIcon(*synthIcon);
+ synpVST->setTitle(QT_TRANSLATE_NOOP("@default", "FST"));
+ synp->addMenu(synpVST);
+ }
+ #endif
+
+ if(synpOther)
+ {
+ synpOther->setIcon(*synthIcon);
+ synpOther->setTitle(QObject::tr("Other"));
+ synp->addMenu(synpOther);
+ }
+
+ return synp;
+}
+
+
+//---------------------------------------------------------
+// populateAddTrack
+// this is also used in "mixer"
+//---------------------------------------------------------
+
+QActionGroup* populateAddTrack(QMenu* addTrack)
+ {
+ QActionGroup* grp = new QActionGroup(addTrack);
+
+ QAction* midi = addTrack->addAction(QIcon(*addtrack_addmiditrackIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Midi Track"));
+ midi->setData(Track::MIDI);
+ grp->addAction(midi);
+ QAction* drum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Drum Track"));
+ drum->setData(Track::DRUM);
+ grp->addAction(drum);
+ QAction* wave = addTrack->addAction(QIcon(*addtrack_wavetrackIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Wave Track"));
+ wave->setData(Track::WAVE);
+ grp->addAction(wave);
+ QAction* aoutput = addTrack->addAction(QIcon(*addtrack_audiooutputIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Audio Output"));
+ aoutput->setData(Track::AUDIO_OUTPUT);
+ grp->addAction(aoutput);
+ QAction* agroup = addTrack->addAction(QIcon(*addtrack_audiogroupIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Audio Group"));
+ agroup->setData(Track::AUDIO_GROUP);
+ grp->addAction(agroup);
+ QAction* ainput = addTrack->addAction(QIcon(*addtrack_audioinputIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Audio Input"));
+ ainput->setData(Track::AUDIO_INPUT);
+ grp->addAction(ainput);
+ QAction* aaux = addTrack->addAction(QIcon(*addtrack_auxsendIcon),
+ QT_TRANSLATE_NOOP("@default", "Add Aux Send"));
+ aaux->setData(Track::AUDIO_AUX);
+ grp->addAction(aaux);
+
+ // Create a sub-menu and fill it with found synth types. Make addTrack the owner.
+ QMenu* synp = populateAddSynth(addTrack);
+ synp->setIcon(*synthIcon);
+ synp->setTitle(QT_TRANSLATE_NOOP("@default", "Add Synth"));
+
+ // Add the sub-menu to the given menu.
+ addTrack->addMenu(synp);
+
+ QObject::connect(addTrack, SIGNAL(triggered(QAction *)), song, SLOT(addNewTrack(QAction *)));
+
+ return grp;
+ }
+
+} // namespace MusEUtil
diff --git a/muse2/muse/helper.h b/muse2/muse/helper.h
index fe4d018f..94143756 100644
--- a/muse2/muse/helper.h
+++ b/muse2/muse/helper.h
@@ -23,13 +23,22 @@
#ifndef __HELPER_H__
#define __HELPER_H__
-#include <QString>
+class QActionGroup;
+class QString;
+class QMenu;
+class QWidget;
class Part;
-extern QString pitch2string(int v);
+namespace MusEUtil {
+
+QString pitch2string(int v);
Part* partFromSerialNumber(int serial);
+QMenu* populateAddSynth(QWidget* parent);
+QActionGroup* populateAddTrack(QMenu* addTrack);
+
+}
#endif
diff --git a/muse2/muse/liste/listedit.cpp b/muse2/muse/liste/listedit.cpp
index e76f68e5..3da8346f 100644
--- a/muse2/muse/liste/listedit.cpp
+++ b/muse2/muse/liste/listedit.cpp
@@ -33,6 +33,7 @@
#include "listedit.h"
#include "mtscale.h"
#include "globals.h"
+#include "helper.h"
#include "icons.h"
#include "editevent.h"
#include "xml.h"
@@ -381,7 +382,7 @@ QString EventListItem::text(int col) const
break;
case 4:
if (event.isNote() || event.type() == PAfter)
- s = pitch2string(event.dataA());
+ s = MusEUtil::pitch2string(event.dataA());
else if (event.type() == Controller)
s.setNum(event.dataA() & 0xffff); // mask off type bits
else
diff --git a/muse2/muse/midiedit/dlist.cpp b/muse2/muse/midiedit/dlist.cpp
index 165bb4cb..8e9633c0 100644
--- a/muse2/muse/midiedit/dlist.cpp
+++ b/muse2/muse/midiedit/dlist.cpp
@@ -33,6 +33,7 @@
#include "pitchedit.h"
#include "midiport.h"
#include "drummap.h"
+#include "helper.h"
#include "icons.h"
#include "dlist.h"
#include "song.h"
@@ -90,10 +91,10 @@ void DList::draw(QPainter& p, const QRect& rect)
s.setNum(dm->len);
break;
case COL_ANOTE:
- s = pitch2string(dm->anote);
+ s = MusEUtil::pitch2string(dm->anote);
break;
case COL_ENOTE:
- s = pitch2string(dm->enote);
+ s = MusEUtil::pitch2string(dm->enote);
break;
case COL_LV1:
s.setNum(dm->lv1);
diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp
index 39f2f389..3c8f2afe 100644
--- a/muse2/muse/midiedit/scoreedit.cpp
+++ b/muse2/muse/midiedit/scoreedit.cpp
@@ -4414,10 +4414,10 @@ void ScoreCanvas::midi_note(int pitch, int velo)
void ScoreCanvas::update_parts()
{
if (selected_part!=NULL) //if it's null, let it be null
- selected_part=partFromSerialNumber(selected_part_index);
+ selected_part=MusEUtil::partFromSerialNumber(selected_part_index);
if (dragged_event_part!=NULL) //same thing here
- dragged_event_part=partFromSerialNumber(dragged_event_part_index);
+ dragged_event_part=MusEUtil::partFromSerialNumber(dragged_event_part_index);
for (list<staff_t>::iterator it=staves.begin(); it!=staves.end(); it++)
it->update_parts();
@@ -4428,7 +4428,7 @@ void staff_t::update_parts()
parts.clear();
for (set<int>::iterator it=part_indices.begin(); it!=part_indices.end(); it++)
- parts.insert(partFromSerialNumber(*it));
+ parts.insert(MusEUtil::partFromSerialNumber(*it));
}
void staff_t::update_part_indices()
diff --git a/muse2/muse/miditransform.cpp b/muse2/muse/miditransform.cpp
index 76a39306..8d25fdfc 100644
--- a/muse2/muse/miditransform.cpp
+++ b/muse2/muse/miditransform.cpp
@@ -1502,7 +1502,7 @@ void MidiTransformerDialog::selVal1aChanged(int val)
data->cmt->selVal1a = val;
if ((data->cmt->selEventOp != All)
&& (data->cmt->selType == Note)) {
- selVal1a->setSuffix(" - " + pitch2string(val));
+ selVal1a->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
@@ -1520,7 +1520,7 @@ void MidiTransformerDialog::selVal1bChanged(int val)
data->cmt->selVal1b = val;
if ((data->cmt->selEventOp != All)
&& (data->cmt->selType == Note)) {
- selVal1b->setSuffix(" - " + pitch2string(val));
+ selVal1b->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
@@ -1595,7 +1595,7 @@ void MidiTransformerDialog::procVal1aChanged(int val)
(data->cmt->procVal1 == Fix || data->cmt->procVal1 == ScaleMap || data->cmt->procVal1 == Dynamic ||
data->cmt->procVal1 == Random || data->cmt->procVal1 == Flip))
{
- procVal1a->setSuffix(" - " + pitch2string(val));
+ procVal1a->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
@@ -1617,7 +1617,7 @@ void MidiTransformerDialog::procVal1bChanged(int val)
(data->cmt->procVal1 == Fix || data->cmt->procVal1 == ScaleMap || data->cmt->procVal1 == Dynamic ||
data->cmt->procVal1 == Random || data->cmt->procVal1 == Flip))
{
- procVal1b->setSuffix(" - " + pitch2string(val));
+ procVal1b->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
diff --git a/muse2/muse/mixer/amixer.cpp b/muse2/muse/mixer/amixer.cpp
index 08e1aad4..35173731 100644
--- a/muse2/muse/mixer/amixer.cpp
+++ b/muse2/muse/mixer/amixer.cpp
@@ -35,6 +35,7 @@
#include <QAction>
#include "app.h"
+#include "helper.h"
#include "icons.h"
#include "amixer.h"
#include "song.h"
@@ -45,11 +46,6 @@
#include "gconfig.h"
#include "xml.h"
-//namespace MusEApp { FINDMICHJETZT dirty, dirty. this is implemented in arrangerview.cpp,
-// currently in global namespace. where to put it? in an own code file? helper.cpp?
-extern QActionGroup* populateAddTrack(QMenu* addTrack);
-//}
-
#define __WIDTH_COMPENSATION 4
//typedef std::list<Strip*> StripList;
@@ -172,7 +168,7 @@ AudioMixerApp::AudioMixerApp(QWidget* parent, MusEConfig::MixerConfig* c)
setWindowIcon(*museIcon);
QMenu* menuConfig = menuBar()->addMenu(tr("&Create"));
- populateAddTrack(menuConfig);
+ MusEUtil::populateAddTrack(menuConfig);
QMenu* menuView = menuBar()->addMenu(tr("&View"));
routingId = menuView->addAction(tr("Routing"), this, SLOT(toggleRouteDialog()));
diff --git a/muse2/muse/mpevent.cpp b/muse2/muse/mpevent.cpp
index 11c85704..67ba968c 100644
--- a/muse2/muse/mpevent.cpp
+++ b/muse2/muse/mpevent.cpp
@@ -88,7 +88,7 @@ void MEvent::dump() const
{
printf("time:%d port:%d chan:%d ", _time, _port, _channel+1);
if (_type == 0x90) { // NoteOn
- QString s = pitch2string(_a);
+ QString s = MusEUtil::pitch2string(_a);
printf("NoteOn %s(0x%x) %d\n", s.toLatin1().constData(), _a, _b);
}
else if (_type == 0xf0) {
diff --git a/muse2/muse/mplugins/midiitransform.cpp b/muse2/muse/mplugins/midiitransform.cpp
index 8cc881ff..b5b4d3c8 100644
--- a/muse2/muse/mplugins/midiitransform.cpp
+++ b/muse2/muse/mplugins/midiitransform.cpp
@@ -1273,7 +1273,7 @@ void MidiInputTransformDialog::selVal1aChanged(int val)
cmt->selVal1a = val;
if ((cmt->selEventOp != All)
&& (cmt->selType == MIDITRANSFORM_NOTE)) {
- selVal1a->setSuffix(" - " + pitch2string(val));
+ selVal1a->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
@@ -1291,7 +1291,7 @@ void MidiInputTransformDialog::selVal1bChanged(int val)
cmt->selVal1b = val;
if ((cmt->selEventOp != All)
&& (cmt->selType == MIDITRANSFORM_NOTE)) {
- selVal1b->setSuffix(" - " + pitch2string(val));
+ selVal1b->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
@@ -1330,7 +1330,7 @@ void MidiInputTransformDialog::procVal1aChanged(int val)
(cmt->procVal1 == Fix || cmt->procVal1 == ScaleMap || cmt->procVal1 == Dynamic ||
cmt->procVal1 == Random || cmt->procVal1 == Flip))
{
- procVal1a->setSuffix(" - " + pitch2string(val));
+ procVal1a->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
@@ -1351,7 +1351,7 @@ void MidiInputTransformDialog::procVal1bChanged(int val)
(cmt->procVal1 == Fix || cmt->procVal1 == ScaleMap || cmt->procVal1 == Dynamic ||
cmt->procVal1 == Random || cmt->procVal1 == Flip))
{
- procVal1b->setSuffix(" - " + pitch2string(val));
+ procVal1b->setSuffix(" - " + MusEUtil::pitch2string(val));
}
else
{
diff --git a/muse2/muse/structure.h b/muse2/muse/structure.h
index f9f29291..38be034b 100644
--- a/muse2/muse/structure.h
+++ b/muse2/muse/structure.h
@@ -3,6 +3,21 @@
// Linux Music Editor
// structure.h
// (C) Copyright 2011 Florian Jung (flo93@users.sourceforge.net)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#ifndef __STRUCTURE_H__
diff --git a/muse2/muse/widgets/mdisettings.cpp b/muse2/muse/widgets/mdisettings.cpp
index 127aa5c1..24bf7c7c 100644
--- a/muse2/muse/widgets/mdisettings.cpp
+++ b/muse2/muse/widgets/mdisettings.cpp
@@ -4,6 +4,21 @@
// $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)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#include <stdio.h>
diff --git a/muse2/muse/widgets/mdisettings.h b/muse2/muse/widgets/mdisettings.h
index 2f1bdf55..482f9f49 100644
--- a/muse2/muse/widgets/mdisettings.h
+++ b/muse2/muse/widgets/mdisettings.h
@@ -4,6 +4,21 @@
// $Id: genset.h,v 1.3 2004/01/25 09:55:17 wschweer Exp $
//
// (C) Copyright 2001 Werner Schweer (ws@seh.de)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#ifndef __MDISETTINGS_H__
diff --git a/muse2/muse/widgets/pastedialog.cpp b/muse2/muse/widgets/pastedialog.cpp
index 0a6ce463..a053bd79 100644
--- a/muse2/muse/widgets/pastedialog.cpp
+++ b/muse2/muse/widgets/pastedialog.cpp
@@ -3,6 +3,21 @@
// 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)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#include <QButtonGroup>
diff --git a/muse2/muse/widgets/pastedialog.h b/muse2/muse/widgets/pastedialog.h
index 866fda4c..208ffb35 100644
--- a/muse2/muse/widgets/pastedialog.h
+++ b/muse2/muse/widgets/pastedialog.h
@@ -3,6 +3,21 @@
// 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)
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
//=========================================================
#ifndef __PASTEDIALOG_H__
diff --git a/muse2/muse/widgets/pitchedit.cpp b/muse2/muse/widgets/pitchedit.cpp
index 7d637d01..4b937237 100644
--- a/muse2/muse/widgets/pitchedit.cpp
+++ b/muse2/muse/widgets/pitchedit.cpp
@@ -51,7 +51,7 @@ QString PitchEdit::mapValueToText(int v)
return s;
}
else
- return pitch2string(v);
+ return MusEUtil::pitch2string(v);
}
//---------------------------------------------------------
diff --git a/muse2/muse/widgets/pitchedit.h b/muse2/muse/widgets/pitchedit.h
index 0c334d22..d5bb7654 100644
--- a/muse2/muse/widgets/pitchedit.h
+++ b/muse2/muse/widgets/pitchedit.h
@@ -25,8 +25,6 @@
#include <QSpinBox>
-extern QString pitch2string(int v);
-
namespace MusEWidget {
//---------------------------------------------------------
diff --git a/muse2/muse/widgets/pitchlabel.cpp b/muse2/muse/widgets/pitchlabel.cpp
index b1f062a8..b1b9c1f1 100644
--- a/muse2/muse/widgets/pitchlabel.cpp
+++ b/muse2/muse/widgets/pitchlabel.cpp
@@ -83,7 +83,7 @@ void PitchLabel::setValue(int val)
_value = val;
QString s;
if (_pitchMode)
- s = pitch2string(_value);
+ s = MusEUtil::pitch2string(_value);
else
s.sprintf("%d", _value);
setText(s);