diff options
-rw-r--r-- | muse/CMakeLists.txt | 2 | ||||
-rw-r--r-- | muse/TODO | 26 | ||||
-rw-r--r-- | muse/all.h | 1 | ||||
-rw-r--r-- | muse/muse/CMakeLists.txt | 6 | ||||
-rw-r--r-- | muse/muse/conf.cpp | 11 | ||||
-rw-r--r-- | muse/muse/dssihost.cpp | 2 | ||||
-rw-r--r-- | muse/muse/exportmidi.cpp | 4 | ||||
-rw-r--r-- | muse/muse/gconfig.cpp | 19 | ||||
-rw-r--r-- | muse/muse/gconfig.h | 13 | ||||
-rw-r--r-- | muse/muse/globals.cpp | 2 | ||||
-rw-r--r-- | muse/muse/globals.h | 2 | ||||
-rw-r--r-- | muse/muse/importmidi.cpp | 8 | ||||
-rw-r--r-- | muse/muse/muse.cpp | 687 | ||||
-rw-r--r-- | muse/muse/muse.h | 21 | ||||
-rw-r--r-- | muse/muse/preferences.cpp | 39 | ||||
-rw-r--r-- | muse/muse/preferences.h | 2 | ||||
-rw-r--r-- | muse/muse/preferences.ui | 4008 | ||||
-rw-r--r-- | muse/muse/projectdialog.cpp | 143 | ||||
-rw-r--r-- | muse/muse/projectdialog.h | 43 | ||||
-rw-r--r-- | muse/muse/projectdialog.ui | 206 | ||||
-rw-r--r-- | muse/muse/song.cpp | 122 | ||||
-rw-r--r-- | muse/muse/song.h | 130 | ||||
-rw-r--r-- | muse/muse/songfile.cpp | 80 | ||||
-rw-r--r-- | muse/muse/synth.cpp | 2 | ||||
-rw-r--r-- | muse/muse/wave.cpp | 14 | ||||
-rw-r--r-- | muse/muse/waveedit/waveview.cpp | 4 | ||||
-rw-r--r-- | muse/muse/waveevent.cpp | 11 |
27 files changed, 3020 insertions, 2588 deletions
diff --git a/muse/CMakeLists.txt b/muse/CMakeLists.txt index 97a81145..bb434178 100644 --- a/muse/CMakeLists.txt +++ b/muse/CMakeLists.txt @@ -20,7 +20,7 @@ project(muse) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.1) -set(CMAKE_VERBOSE_MAKEFILE ON) +# set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_INCLUDE_CURRENT_DIR TRUE) set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) set(CMAKE_SKIP_RULE_DEPENDENCY TRUE) @@ -1,17 +1,17 @@ -----------------------------TODO------------------------------------------- -(4.5.2006) - - manage project subdirectories (better organize wave files) - - muse is always associated with a project, there is no - "No Project" or "Default Project" - - muse on start asks for a project name (select or create) - - midi files cannot be loaded directly als project anymore, - you have to first create a project and then call - "import midifile" - - "New File" and "Select File" are combined into - "Select Project" - - there is no "Save As" anymore (your project always has a - name) - +(10.5.2006) + - Select Project Dialog: + - add Toolbar with Functions: + - create Subfolder + - Folder Up + - Folder Down + - display project subfolder + - show current project path in QLabel + - marke projects with different samplerat as current + - check for samplerate when loading project + - compute song len in seconds when saving project + - create dialog to edit project comment + BUGS - updating the gui during midi recording is too slow; a new, faster implementation is needed @@ -46,6 +46,7 @@ #include <QtCore/QEvent> #include <QtCore/QTranslator> #include <QtCore/qatomic.h> +#include <QtCore/QTemporaryFile> #include <QtDesigner/QDesignerCustomWidgetInterface> #include <QtDesigner/QDesignerFormEditorInterface> diff --git a/muse/muse/CMakeLists.txt b/muse/muse/CMakeLists.txt index a997f084..438d22f1 100644 --- a/muse/muse/CMakeLists.txt +++ b/muse/muse/CMakeLists.txt @@ -43,16 +43,19 @@ MACRO(WRAP_UI outfiles ) subdirs( ctrl widgets master driver instruments marker liste ) + set (muse_uics muse preferences exportmididialog configmidifile transport aboutbox transpose + projectdialog midiedit/quantconfig mixer/routedialog arranger/configtrack ) set(muse_mocs - preferences plugingui midiplugin muse song transport conf editor + projectdialog preferences plugingui midiplugin muse + song transport conf editor cobject transpose track midisynti midiport miditrack wavetrack audiotrack audioaux audiooutput audioinput audiogroup exportmidi @@ -110,7 +113,6 @@ add_executable ( muse midiedit/drummap.cpp midiedit/citem.cpp -# midiedit/midieditor.cpp ${muse_mocCPP} ${muse_moc_headers} diff --git a/muse/muse/conf.cpp b/muse/muse/conf.cpp index 40f91dec..ca8064f7 100644 --- a/muse/muse/conf.cpp +++ b/muse/muse/conf.cpp @@ -248,9 +248,9 @@ void readConfiguration(QDomNode node) //TD else if (tag == "midiTransform") // readMidiTransform(node.firstChild()); else if (tag == "startMode") - config.startMode = i; - else if (tag == "startSong") - config.startSong = s; + config.startMode = (StartMode)i; + else if (tag == "startProject") + config.startProject = s; else if (tag == "followMode") TimeCanvas::followMode = (FollowMode)i; else if (tag == "defaultMidiInputDevice") @@ -265,6 +265,8 @@ void readConfiguration(QDomNode node) config.connectToAllMidiTracks = i; else if (tag == "createDefaultMidiInput") config.createDefaultMidiInput = i; + else if (tag == "projectPath") + config.projectPath = s; else if (tag == "PianoRoll") PianoRoll::readConfiguration(node); else if (tag == "DrumEdit") @@ -394,7 +396,7 @@ void MusE::writeGlobalConfiguration(Xml& xml) const xml.strTag("copyright", config.copyright); xml.intTag("smfFormat", config.smfFormat); xml.intTag("startMode", config.startMode); - xml.strTag("startSong", config.startSong); + xml.strTag("startProject", config.startProject); xml.intTag("freewheelMode", config.useJackFreewheelMode); xml.intTag("txDeviceId", txDeviceId); @@ -482,6 +484,7 @@ void MusE::writeGlobalConfiguration(Xml& xml) const xml.intTag("connectToAllMidiDevices", config.connectToAllMidiDevices); xml.intTag("connectToAllMidiTracks", config.connectToAllMidiTracks); xml.intTag("createDefaultMidiInput", config.createDefaultMidiInput); + xml.strTag("projectPath", config.projectPath); PianoRoll::writeConfiguration(xml); DrumEdit::writeConfiguration(xml); diff --git a/muse/muse/dssihost.cpp b/muse/muse/dssihost.cpp index 1e8ab542..7fbe5274 100644 --- a/muse/muse/dssihost.cpp +++ b/muse/muse/dssihost.cpp @@ -116,7 +116,7 @@ int DssiSynthIF::oscUpdate(lo_arg **argv) */ lo_send(uiTarget, uiOscConfigurePath, "ss", - DSSI_PROJECT_DIRECTORY_KEY, museProject.toLatin1().data()); + DSSI_PROJECT_DIRECTORY_KEY, song->projectDirectory().toLatin1().data()); #if 0 /* Send current bank/program (-FIX- another race...) */ diff --git a/muse/muse/exportmidi.cpp b/muse/muse/exportmidi.cpp index d1713a35..1cfff45e 100644 --- a/muse/muse/exportmidi.cpp +++ b/muse/muse/exportmidi.cpp @@ -40,7 +40,7 @@ // addController //--------------------------------------------------------- -static void addController(MPEventList* l, int tick, int port, int channel, int a, int b) +static void addController(MPEventList* l, int tick, int /*port*/, int channel, int a, int b) { if (a < 0x1000) { // 7 Bit Controller l->add(MidiEvent(tick, channel, ME_CONTROLLER, a, b)); @@ -116,7 +116,7 @@ static void addController(MPEventList* l, int tick, int port, int channel, int a void MusE::exportMidi() { if (exportMidiDialog == 0) - exportMidiDialog = new ExportMidiDialog(project.filePath()); + exportMidiDialog = new ExportMidiDialog(song->projectDirectory()); int rv = exportMidiDialog->exec(); if (rv == 0) return; diff --git a/muse/muse/gconfig.cpp b/muse/muse/gconfig.cpp index 25d6013b..37534203 100644 --- a/muse/muse/gconfig.cpp +++ b/muse/muse/gconfig.cpp @@ -93,7 +93,7 @@ GlobalConfigValues config = { 384, // division for smf export QString(""), // copyright string for smf export 1, // smf export file format - 1, // startMode + START_ASK_FOR_PROJECT, // startMode QString(""), // start song path 384, // gui division QRect(0, 0, 800, 560), // GeometryMain; @@ -102,15 +102,15 @@ GlobalConfigValues config = { QRect(100, 100, 600, 400), // GeometryPianoroll; QRect(0, 0, 600, 400), // GeometryDrumedit; { - QRect(0, 0, 300, 500), // Mixer1 - false, true, true, true, true, - true, true, true, true, true, true - }, + QRect(0, 0, 300, 500), // Mixer1 + false, true, true, true, true, + true, true, true, true, true, true + }, { - QRect(200, 200, 300, 500), // Mixer2 - false, true, true, true, true, - true, true, true, true, true, true - }, + QRect(200, 200, 300, 500), // Mixer2 + false, true, true, true, true, + true, true, true, true, true, true + }, false, // TransportVisible false, // BigTimeVisible; false, // mixerVisible1; @@ -135,5 +135,6 @@ GlobalConfigValues config = { true, // connectToAllMidiDevices true, // connectToAllMidiTracks true, // createDefaultMidiInput + QString("MusE/projects"), // projectPath }; diff --git a/muse/muse/gconfig.h b/muse/muse/gconfig.h index 328d2810..8bfed74b 100644 --- a/muse/muse/gconfig.h +++ b/muse/muse/gconfig.h @@ -27,6 +27,12 @@ #include "al/xml.h" using AL::Xml; +enum StartMode { + START_ASK_FOR_PROJECT, + START_LAST_PROJECT, + START_START_PROJECT + }; + //--------------------------------------------------------- // MixerConfig //--------------------------------------------------------- @@ -80,10 +86,8 @@ struct GlobalConfigValues { QString copyright; // copyright string for smf export int smfFormat; // smf export file type - int startMode; // 0 - start with last song - // 1 - start with default template - // 2 - start with song - QString startSong; // path for start song + enum StartMode startMode; + QString startProject; // path for start project int guiDivision; // division for tick display QRect geometryMain; @@ -119,6 +123,7 @@ struct GlobalConfigValues { bool connectToAllMidiDevices; bool connectToAllMidiTracks; bool createDefaultMidiInput; + QString projectPath; }; extern GlobalConfigValues config; diff --git a/muse/muse/globals.cpp b/muse/muse/globals.cpp index 54f3665f..3a5f9558 100644 --- a/muse/muse/globals.cpp +++ b/muse/muse/globals.cpp @@ -66,8 +66,6 @@ const signed char flatTab[14][7] = { QString museGlobalLib; QString museGlobalShare; QString museUser; -QString museProject; -QString museProjectInitPath("./"); QString configName; QString lastWavePath("."); diff --git a/muse/muse/globals.h b/muse/muse/globals.h index ddd1a377..9e7f413b 100644 --- a/muse/muse/globals.h +++ b/muse/muse/globals.h @@ -47,8 +47,6 @@ extern const signed char flatTab[14][7]; extern QString museGlobalLib; extern QString museGlobalShare; extern QString museUser; -extern QString museProject; // current project directory -extern QString museProjectInitPath; extern QString configName; extern QString lastWavePath; diff --git a/muse/muse/importmidi.cpp b/muse/muse/importmidi.cpp index 928fc078..4fd5808d 100644 --- a/muse/muse/importmidi.cpp +++ b/muse/muse/importmidi.cpp @@ -74,7 +74,7 @@ void MusE::importMidi(const QString &file) song->update(-1); break; case 1: - loadProjectFile(fn, false, false); // replace +//TODO loadProjectFile(fn, false, false); // replace break; default: return; @@ -303,9 +303,9 @@ bool MusE::importMidi(const QString name, bool merge) int z = sig.z; int n = sig.n; - int tempo = AL::tempomap.tempo(0); transport->setTimesig(z, n); -//TD transport->setTempo(tempo); +//TD int tempo = AL::tempomap.tempo(0); +// transport->setTempo(tempo); bool masterF = !AL::tempomap.empty(); song->setMasterFlag(masterF); @@ -426,7 +426,7 @@ void MusE::processTrack(MidiTrack* track) } if (tevents->size()) - printf("-----------events left: %ld\n", tevents->size()); + printf("-----------events left: %zd\n", tevents->size()); for (iEvent i = tevents->begin(); i != tevents->end(); ++i) { printf("%d===\n", i->first); i->second.dump(); diff --git a/muse/muse/muse.cpp b/muse/muse/muse.cpp index 052c1278..ea454a9a 100644 --- a/muse/muse/muse.cpp +++ b/muse/muse/muse.cpp @@ -59,6 +59,7 @@ #include "widgets/utils.h" #include "instruments/editinstrument.h" #include "part.h" +#include "projectdialog.h" static pthread_t watchdogThread; @@ -444,12 +445,10 @@ MusE::MusE() midiFilterConfig = 0; midiInputTransform = 0; midiRhythmGenerator = 0; -// globalSettingsConfig = 0; preferencesDialog = 0; softSynthesizerConfig = 0; midiTransformerDialog = 0; shortcutConfig = 0; -// appearance = 0; editInstrument = 0; appName = QString("MusE"); _raster = 0; @@ -794,9 +793,6 @@ MusE::MusE() //------------------------------------------------------------- menuSettings = mb->addMenu(tr("Setti&ngs")); - -// menu_ids[CMD_GLOBAL_CONFIG] = menuSettings->addAction(QIcon(*settings_globalsettingsIcon), tr("Global Settings")); -// connect(menu_ids[CMD_GLOBAL_CONFIG], SIGNAL(triggered()), this, SLOT(configGlobalSettings())); menu_ids[CMD_CONFIG_SHORTCUTS] = menuSettings->addAction(QIcon(*settings_configureshortcutsIcon), tr("Configure shortcuts")); connect(menu_ids[CMD_CONFIG_SHORTCUTS], SIGNAL(triggered()), this, SLOT(configShortCuts())); @@ -822,7 +818,6 @@ MusE::MusE() menu_ids[CMD_MIDI_FILE_CONFIG] = menuSettings->addAction(QIcon(*settings_midifileexportIcon), tr("Midi File Export")); connect(menu_ids[CMD_MIDI_FILE_CONFIG], SIGNAL(triggered()), this, SLOT(configMidiFile())); menuSettings->addSeparator(); -// menu_ids[CMD_GLOBAL_CONFIG] = menuSettings->addAction(QIcon(*settings_globalsettingsIcon), tr("Global Settings")); QAction* action = menuSettings->addAction(QIcon(*settings_globalsettingsIcon), tr("Preferences")); connect(action, SIGNAL(triggered()), this, SLOT(preferences())); @@ -949,7 +944,7 @@ MusE::MusE() connect(tools1, SIGNAL(toolChanged(int)), SLOT(setTool(int))); connect(arranger, SIGNAL(editPart(Part*)), SLOT(startEditor(Part*))); -//TODO1 connect(arranger, SIGNAL(dropSongFile(const QString&)), SLOT(loadProjectFile(const QString&))); +//TODO1 connect(arranger, SIGNAL(dropSongFile(const QString&)), SLOT(loadProject(const QString&))); //TODO1 connect(arranger, SIGNAL(dropMidiFile(const QString&)), SLOT(importMidi(const QString&))); connect(arranger, SIGNAL(cursorPos(const AL::Pos&,bool)), cursorPos, SLOT(setValue(const AL::Pos&,bool))); @@ -1041,20 +1036,10 @@ void MusE::localOff() } //--------------------------------------------------------- -// loadProjectFile -// load *.med, *.mid, *.kar -// -// template - if true, load file but do not change -// project name +// loadProject //--------------------------------------------------------- -// for drop: -void MusE::loadProjectFile(const QString& name) - { - loadProjectFile(name, false, false); - } - -void MusE::loadProjectFile(const QString& name, bool songTemplate, bool loadAll) +void MusE::loadProject(const QString& name) { // // stop audio threads if running @@ -1068,22 +1053,17 @@ void MusE::loadProjectFile(const QString& name, bool songTemplate, bool loadAll) } seqStop(); } - loadProjectFile1(name, songTemplate, loadAll); + loadProject1(name); if (restartSequencer) seqStart(); audio->msgSeek(song->cPos()); } //--------------------------------------------------------- -// loadProjectFile1 -// load *.med, *.mid, *.kar -// -// template - if true, load file but do not change -// project name -// loadAll - load song data + configuration data +// loadProject1 //--------------------------------------------------------- -void MusE::loadProjectFile1(const QString& name, bool songTemplate, bool loadAll) +void MusE::loadProject1(const QString& name) { if (mixer1) mixer1->clear(); @@ -1109,6 +1089,17 @@ void MusE::loadProjectFile1(const QString& name, bool songTemplate, bool loadAll printf("InternalError: gibt %d\n", n); } } + + QDir pd(QDir::homePath() + "/" + config.projectPath + "/" + name); + bool newProject = false; + if (!pd.exists()) { + newProject = true; + if (!pd.mkdir(pd.path())) { + QMessageBox::critical(this, QString("MusE: new project"), + tr("Cannot create project directory")); + return; + } + } foreach(QWidget* w, QApplication::topLevelWidgets()) { if (!w->isVisible()) continue; @@ -1123,77 +1114,30 @@ void MusE::loadProjectFile1(const QString& name, bool songTemplate, bool loadAll else if (strcmp("ListEdit", w->metaObject()->className()) == 0) w->close(); } - emit startLoadSong(); - - song->clear(false); - QFileInfo fi(name); - if (songTemplate) { - if (!fi.isReadable()) { - QMessageBox::critical(this, QString("MusE"), - tr("Cannot read template")); - return; - } - project.setFile("untitled"); - } - else { - museProject = fi.absolutePath(); - project.setFile(name); - } - QString ex = fi.suffix().toLower(); - if (ex.isEmpty() || ex == "med") { - // - // read *.med file - // - QFile* f = new QFile(ex.isEmpty() ? name + ".med" : name); - if (f->open(QIODevice::ReadOnly)) { - int rv = read(f, !loadAll); - f->close(); - if (rv) { - QMessageBox::critical(this, QString("MusE"), - tr("File read error")); - setUntitledProject(); - } - } - delete f; - } - else if (ex == "mid" || ex == "kar") { - if (importMidi(name, false)) { - setUntitledProject(); - } - } - else { - QMessageBox::critical(this, QString("MusE"), - tr("Unknown File Format")); - setUntitledProject(); - } - if (!songTemplate) { - addProject(project); - setWindowTitle(QString("MusE: Song: ") + project.baseName()); - } - song->dirty = false; + song->setProjectName(name); + song->load(); tr_id->setChecked(config.transportVisible); bt_id->setChecked(config.bigTimeVisible); - if (loadAll) { - // - // dont emit song->update(): - song->blockSignals(true); + // + // dont emit song->update(): + song->blockSignals(true); - showBigtime(config.bigTimeVisible); - showMixer1(config.mixer1Visible); - showMixer2(config.mixer2Visible); - resize(config.geometryMain.size()); - move(config.geometryMain.topLeft()); + showBigtime(config.bigTimeVisible); + showMixer1(config.mixer1Visible); + showMixer2(config.mixer2Visible); + resize(config.geometryMain.size()); + move(config.geometryMain.topLeft()); - if (config.transportVisible) - transport->show(); - transport->move(config.geometryTransport.topLeft()); - showTransport(config.transportVisible); + if (config.transportVisible) + transport->show(); + transport->move(config.geometryTransport.topLeft()); + showTransport(config.transportVisible); - song->blockSignals(false); - } + song->blockSignals(false); + transport->setMasterFlag(song->masterFlag()); punchinAction->setChecked(song->punchin()); punchoutAction->setChecked(song->punchout()); @@ -1202,7 +1146,6 @@ void MusE::loadProjectFile1(const QString& name, bool songTemplate, bool loadAll selectionChanged(); // enable/disable "Copy" & "Paste" song->setLen(song->len()); // emit song->lenChanged() signal - // song->update(); // // add connected channels // @@ -1234,17 +1177,7 @@ void MusE::loadProjectFile1(const QString& name, bool songTemplate, bool loadAll } (*i)->blockSignals(false); } - } - -//--------------------------------------------------------- -// setUntitledProject -//--------------------------------------------------------- - -void MusE::setUntitledProject() - { - QString name("untitled"); - museProject = QFileInfo(name).absolutePath(); - project.setFile(name); + setWindowTitle(QString("MusE: Song: ") + name); } //--------------------------------------------------------- @@ -1253,16 +1186,14 @@ void MusE::setUntitledProject() void MusE::loadProject() { - QStringList pattern; - const char** p = med_midi_file_pattern; - while (*p) - pattern << *p++; - QString fn = getOpenFileName(QString("."), pattern, this, - tr("MusE: load project")); - if (!fn.isEmpty()) { - museProject = QFileInfo(fn).absolutePath(); - loadProjectFile(fn, false, true); // load all - } + ProjectDialog projectDialog; + int rv = projectDialog.exec(); + if (rv == 0) + return; + QString name = projectDialog.project(); + if (name.isEmpty()) + return; + loadProject(name); } //--------------------------------------------------------- @@ -1271,74 +1202,48 @@ void MusE::loadProject() bool MusE::save() { - return save(project.filePath(), false); - } - -//--------------------------------------------------------- -// save -//--------------------------------------------------------- - -bool MusE::save(const QString& fname, bool overwriteWarn) - { QString backupCommand; - QString name(fname); - QFileInfo info(name); - QString zip; + QString name(song->projectName() + ".med"); + QFileInfo fi(song->projectDirectory() + "/" + name); - if (info.completeSuffix() == "") { - name += ".med"; - info.setFile(name); - } - if (overwriteWarn && info.exists()) { - QString s(QWidget::tr("File\n") + name + QWidget::tr("\nexists")); - int rv = QMessageBox::warning(this, - QWidget::tr("MusE: write"), - s, - QWidget::tr("Overwrite"), - QWidget::tr("Quit"), QString::null, 0, 1); - switch(rv) { - case 0: // overwrite - break; - case 1: // quit - return 0; - } - } - char* tmpName = tempnam(info.absolutePath().toLatin1().data(), "MusE"); - FILE* fp = fopen(tmpName, "w"); - if (fp == 0) { + QTemporaryFile tmp(fi.path() + "/MusEXXXXXX"); + tmp.setAutoRemove(false); + + if (!tmp.open()) { QString s("Creating temp file failed: "); s += strerror(errno); QMessageBox::critical(this, tr("MusE: Create tmp file failed"), s); return false; } - QFile file; - file.open(fp, QIODevice::WriteOnly); - Xml xml(&file); + Xml xml(&tmp); write(xml); - if (ferror(fp)) { - QString s = QString("Write File\n") + name + QString("\nfailed: ") - + QString(strerror(errno)); - QMessageBox::critical(this, - tr("MusE: Write File failed"), s); - fclose(fp); - unlink(tmpName); + if (tmp.error()) { + QString s = QString("Write File\n") + tmp.fileName() + QString("\nfailed: ") + + tmp.errorString(); + QMessageBox::critical(this, tr("MusE: Write File failed"), s); return false; } - file.close(); - fclose(fp); - if (!overwriteWarn && !song->backupWritten()) { + if (!song->backupWritten()) { // - // create backup file + // remove old backup file // - if (info.exists()) { - QString backupName = "." + name + ","; - rename(name.toLatin1().data(), backupName.toLatin1().data()); - song->setBackupWritten(true); - } + QDir dir(fi.path()); + QString backupName = QString(".") + fi.fileName() + QString(","); + dir.remove(backupName); + + // + // rename old file to backup + // + QString n(fi.filePath()); + dir.rename(n, backupName); } - rename(tmpName, name.toLatin1().data()); + // + // rename temp name to file name + // + tmp.rename(fi.filePath()); + song->dirty = false; SndFile::updateRecFiles(); return true; @@ -1634,7 +1539,7 @@ void MusE::selectProject(QAction* a) QString* name = projectList[id]; if (name == 0) return; - loadProjectFile(*name, false, true); + loadProject(*name); } //--------------------------------------------------------- @@ -1777,207 +1682,6 @@ static void catchSignal(int sig) #endif //--------------------------------------------------------- -// main -//--------------------------------------------------------- - -int main(int argc, char* argv[]) - { - museUser = QString(getenv("MUSEHOME")); - if (museUser.isEmpty()) - museUser = QString(getenv("HOME")); - QString museGlobal; - const char* p = getenv("MUSE"); - museGlobal = p ? p : INSTPREFIX; - - museGlobalLib = museGlobal + "/lib/" INSTALL_NAME; - museGlobalShare = museGlobal + "/share/" INSTALL_NAME; - - museProject = museProjectInitPath; - configName = museUser + QString("/." INSTALL_NAME); - - srand(time(0)); // initialize random number generator - initMidiController(); - MuseApplication app(argc, argv); - - config.fonts[0] = new QFont(QString("arial"), 10, QFont::Normal); - config.fonts[1] = new QFont(QString("arial"), 8, QFont::Normal); - config.fonts[2] = new QFont(QString("arial"), 10, QFont::Normal); - config.fonts[3] = new QFont(QString("arial"), 8, QFont::Bold); - config.fonts[4] = new QFont(QString("arial"), 8, QFont::Bold); // simple buttons, timescale numbers - config.fonts[5] = new QFont(QString("Lucidatypewriter"), 14, QFont::Bold); - - initShortCuts(); - gmDrumMap.initGm(); // init default drum map - readConfiguration(); - - QApplication::setFont(*config.fonts[0]); - - // SHOW MUSE SPLASH SCREEN - if (config.showSplashScreen) { - QPixmap splsh(":/xpm/splash.png"); - - if (!splsh.isNull()) { - QSplashScreen* muse_splash = new QSplashScreen(splsh, - Qt::WindowStaysOnTopHint); - muse_splash->show(); - QTimer* stimer = new QTimer(0); - muse_splash->connect(stimer, SIGNAL(timeout()), muse_splash, SLOT(close())); - stimer->start(6000); - } - } - char c; - QString opts("mvdDiosP:p"); - -#ifdef VST_SUPPORT - opts += "V"; -#endif -#ifdef DSSI_SUPPORT - opts += "I"; -#endif - while ((c = getopt(argc, argv, opts.toLatin1().data())) != EOF) { - switch (c) { - case 'v': printVersion(argv[0]); return 0; - case 'd': - debugMode = true; - realTimePriority = false; - break; - case 'm': midiOnly = true; break; - case 'D': debugMsg = true; break; - case 'i': midiInputTrace = true; break; - case 'o': midiOutputTrace = true; break; - case 's': debugSync = true; break; - case 'p': loadPlugins = false; break; - case 'V': loadVST = false; break; - case 'I': loadDSSI = false; break; - default: usage(argv[0], "bad argument"); return -1; - } - } - if (midiOnly) { - loadDSSI = false; - loadPlugins = false; - loadVST = false; - } - - bool useJACK = !(debugMode || midiOnly); - if (useJACK) { - if (initJackAudio()) { - if (!debugMode) - { - QMessageBox::critical(NULL, "MusE fatal error", - "MusE failed to find a Jack audio server.\n" - "Check that Jack was started.\n" - "If Jack was started check that it was\n" - "started as the same user as MusE."); - // fatalError("cannot start JACK"); - } - else - { - fprintf(stderr, "fatal error: no JACK audio server found\n"); - fprintf(stderr, "no audio functions available\n"); - fprintf(stderr, "*** experimental mode -- no play possible ***\n"); - } - useJACK = false; - debugMode = true; - } - } - if (!useJACK) - initDummyAudio(); - - argc -= optind; - ++argc; - - if (debugMsg) { - printf("global lib: <%s>\n", museGlobalLib.toLatin1().data()); - printf("global share: <%s>\n", museGlobalShare.toLatin1().data()); - printf("muse home: <%s>\n", museUser.toLatin1().data()); - printf("project dir: <%s>\n", museProject.toLatin1().data()); - printf("config file: <%s>\n", configName.toLatin1().data()); - } - - static QTranslator translator; - QString lo(QLocale::system().name()); - - if (lo != "C") { - QString loc("muse_"); - loc += lo; - if (translator.load(loc, QString(".")) == false) { - QString lp(museGlobalShare); - lp += QString("/locale"); - if (translator.load(loc, lp) == false) { - printf("no locale <%s> in <%s>\n", loc.toLatin1().data(), lp.toLatin1().data()); - } - } - qApp->installTranslator(&translator); - } - - if (loadPlugins) { - initPlugins(); - initMidiPlugins(); - } - if (loadVST) - initVST(); - if (loadDSSI) - initDSSI(); - - initIcons(); - if (!midiOnly) - initMetronome(); - - if (debugMsg) { - QStringList list = app.libraryPaths(); - QStringList::Iterator it = list.begin(); - printf("QtLibraryPath:\n"); - while(it != list.end()) { - printf(" <%s>\n", (*it).toLatin1().data()); - ++it; - } - } - - song = new Song(); - muse = new MusE(); - app.setMuse(muse); - muse->setWindowIcon(*museIcon); - - //--------------------------------------------------- - // load project - // if no songname entered on command line: - // startMode: 0 - load last song - // 1 - load default template - // 2 - load configured start song - //--------------------------------------------------- - - QString name; - bool useTemplate = false; - if (argc >= 2) - name = argv[optind]; - else if (config.startMode == 0) { - if (argc < 2) - name = projectList[0] ? *projectList[0] : QString("untitled"); - else - name = argv[0]; - } - else if (config.startMode == 1) { - name = museGlobalShare + QString("/templates/default.med"); - useTemplate = true; - } - else if (config.startMode == 2) - name = config.startSong; - muse->loadProjectFile(name, useTemplate, true); - muse->changeConfig(false); - - if (!debugMode) { - if (mlockall(MCL_CURRENT | MCL_FUTURE)) - perror("WARNING: Cannot lock memory:"); - } - muse->show(); - muse->seqStart(); - int n = app.exec(); - if (n) - fprintf(stderr, "app end %d\n", n); - return n; - } - -//--------------------------------------------------------- // setFollow //--------------------------------------------------------- @@ -2985,3 +2689,252 @@ void MusE::setGlobalTempo(int val) globalTempoSpinBox->setValue(val); } +//--------------------------------------------------------- +// main +//--------------------------------------------------------- + +int main(int argc, char* argv[]) + { + museUser = QString(getenv("MUSEHOME")); + if (museUser.isEmpty()) + museUser = QString(getenv("HOME")); + QString museGlobal; + const char* p = getenv("MUSE"); + museGlobal = p ? p : INSTPREFIX; + + museGlobalLib = museGlobal + "/lib/" INSTALL_NAME; + museGlobalShare = museGlobal + "/share/" INSTALL_NAME; + + configName = museUser + QString("/." INSTALL_NAME); + + srand(time(0)); // initialize random number generator + initMidiController(); + MuseApplication app(argc, argv); + + config.fonts[0] = new QFont(QString("arial"), 10, QFont::Normal); + config.fonts[1] = new QFont(QString("arial"), 8, QFont::Normal); + config.fonts[2] = new QFont(QString("arial"), 10, QFont::Normal); + config.fonts[3] = new QFont(QString("arial"), 8, QFont::Bold); + config.fonts[4] = new QFont(QString("arial"), 8, QFont::Bold); // simple buttons, timescale numbers + config.fonts[5] = new QFont(QString("Lucidatypewriter"), 14, QFont::Bold); + + initShortCuts(); + gmDrumMap.initGm(); // init default drum map + readConfiguration(); + + QApplication::setFont(*config.fonts[0]); + + // SHOW MUSE SPLASH SCREEN + if (config.showSplashScreen) { + QPixmap splsh(":/xpm/splash.png"); + + if (!splsh.isNull()) { + QSplashScreen* muse_splash = new QSplashScreen(splsh, + Qt::WindowStaysOnTopHint); + muse_splash->show(); + QTimer* stimer = new QTimer(0); + muse_splash->connect(stimer, SIGNAL(timeout()), muse_splash, SLOT(close())); + stimer->start(6000); + } + } + char c; + QString opts("mvdDiosP:p"); + +#ifdef VST_SUPPORT + opts += "V"; +#endif +#ifdef DSSI_SUPPORT + opts += "I"; +#endif + while ((c = getopt(argc, argv, opts.toLatin1().data())) != EOF) { + switch (c) { + case 'v': printVersion(argv[0]); return 0; + case 'd': + debugMode = true; + realTimePriority = false; + break; + case 'm': midiOnly = true; break; + case 'D': debugMsg = true; break; + case 'i': midiInputTrace = true; break; + case 'o': midiOutputTrace = true; break; + case 's': debugSync = true; break; + case 'p': loadPlugins = false; break; + case 'V': loadVST = false; break; + case 'I': loadDSSI = false; break; + default: usage(argv[0], "bad argument"); return -1; + } + } + if (midiOnly) { + loadDSSI = false; + loadPlugins = false; + loadVST = false; + } + + bool useJACK = !(debugMode || midiOnly); + if (useJACK) { + if (initJackAudio()) { + if (!debugMode) + { + QMessageBox::critical(NULL, "MusE fatal error", + "MusE failed to find a Jack audio server.\n" + "Check that Jack was started.\n" + "If Jack was started check that it was\n" + "started as the same user as MusE."); + // fatalError("cannot start JACK"); + } + else + { + fprintf(stderr, "fatal error: no JACK audio server found\n"); + fprintf(stderr, "no audio functions available\n"); + fprintf(stderr, "*** experimental mode -- no play possible ***\n"); + } + useJACK = false; + debugMode = true; + } + } + if (!useJACK) + initDummyAudio(); + + argc -= optind; + ++argc; + + if (debugMsg) { + printf("global lib: <%s>\n", museGlobalLib.toLatin1().data()); + printf("global share: <%s>\n", museGlobalShare.toLatin1().data()); + printf("muse home: <%s>\n", museUser.toLatin1().data()); + printf("project dir: <%s>\n", config.projectPath.toLatin1().data()); + printf("config file: <%s>\n", configName.toLatin1().data()); + } + + static QTranslator translator; + QString lo(QLocale::system().name()); + + if (lo != "C") { + QString loc("muse_"); + loc += lo; + if (translator.load(loc, QString(".")) == false) { + QString lp(museGlobalShare); + lp += QString("/locale"); + if (translator.load(loc, lp) == false) { + printf("no locale <%s> in <%s>\n", loc.toLatin1().data(), lp.toLatin1().data()); + } + } + qApp->installTranslator(&translator); + } + + if (loadPlugins) { + initPlugins(); + initMidiPlugins(); + } + if (loadVST) + initVST(); + if (loadDSSI) + initDSSI(); + + initIcons(); + if (!midiOnly) + initMetronome(); + + if (debugMsg) { + QStringList list = app.libraryPaths(); + QStringList::Iterator it = list.begin(); + printf("QtLibraryPath:\n"); + while(it != list.end()) { + printf(" <%s>\n", (*it).toLatin1().data()); + ++it; + } + } + + song = new Song(); + muse = new MusE(); + app.setMuse(muse); + muse->setWindowIcon(*museIcon); + + //--------------------------------------------------- + // load project + //--------------------------------------------------- + + // first check if there is a project directory: + + QDir pd(QDir::homePath() + "/" + config.projectPath); + if (!pd.exists()) { + // ask user to create a new project directory + QString s; + s = "The MusE project directory\n%1\ndoes not exists"; + s = s.arg(pd.path()); + + int rv = QMessageBox::question(0, + "MusE: create project directory", + s, + "Create", + "Abort", + QString(), + 0, 1); + if (rv == 1) + exit(0); + if (!pd.mkpath(pd.path())) { + // TODO: tell user why this has happened + QMessageBox::critical(0, + "MusE: create project directory", + "Creating project directory failed"); + exit(-1); + } + } + + QString name; + if (argc >= 2) + name = argv[optind]; // start with first name on command line + else if (config.startMode == START_LAST_PROJECT) { + if (projectList[0]) + name = *projectList[0]; + } + else if (config.startMode == START_START_PROJECT) + name = config.startProject; + + //DEBUG: + name = ""; + + if (name.isEmpty()) { + // + // ask user for a project + // + for (;;) { + ProjectDialog projectDialog; + int rv = projectDialog.exec(); + if (rv == 1) { + name = projectDialog.project(); + if (!name.isEmpty()) + break; + } + // the user did not select/create a project + QString s; + s = "before MusE starts, you must select a project\n" + "or create a new one"; + rv = QMessageBox::question(0, + "MusE: create select project", + s, + "Go Back", + "Abort", + QString(), + 0, 1); + if (rv == 1) + exit(0); + } + } + + muse->loadProject(name); + muse->changeConfig(false); + + if (!debugMode) { + if (mlockall(MCL_CURRENT | MCL_FUTURE)) + perror("WARNING: Cannot lock memory:"); + } + muse->show(); + muse->seqStart(); + int n = app.exec(); + if (n) + fprintf(stderr, "app end %d\n", n); + return n; + } + + diff --git a/muse/muse/muse.h b/muse/muse/muse.h index 7b9e0bd6..a3bd0749 100644 --- a/muse/muse/muse.h +++ b/muse/muse/muse.h @@ -43,13 +43,11 @@ class AudioConf; class MidiFileConfig; class MidiFilterConfig; class MarkerView; -// class GlobalSettingsConfig; class MidiInputTransformDialog; class MidiTransformerDialog; class RhythmGen; class MidiTrack; class ShortcutConfig; -// class Appearance; class PreferencesDialog; class EditInstrument; class Mixer; @@ -62,7 +60,6 @@ extern void configMidiController(); //--------------------------------------------------------- class MusE : public QMainWindow, public Ui::MuseBase -// class MusE : public QMainWindow { Q_OBJECT enum { @@ -95,7 +92,6 @@ class MusE : public QMainWindow, public Ui::MuseBase QAction* fileNewAction; QString appName; - QFileInfo project; QToolBar *tools; EditToolBar *tools1; int _raster; @@ -139,11 +135,9 @@ class MusE : public QMainWindow, public Ui::MuseBase MetronomeConfig* metronomeConfig; AudioConf* audioConfig; MidiFileConfig* midiFileConfig; -// GlobalSettingsConfig* globalSettingsConfig; MidiFilterConfig* midiFilterConfig; MidiInputTransformDialog* midiInputTransform; ShortcutConfig* shortcutConfig; -// Appearance* appearance; PreferencesDialog* preferencesDialog; ExportMidiDialog* exportMidiDialog; @@ -154,23 +148,17 @@ class MusE : public QMainWindow, public Ui::MuseBase //------------------------------------------ bool readMidi(FILE*); - bool read(QFile*, bool skipConfig); - void read10(QDomNode); - void read20(QDomNode); void processTrack(MidiTrack* track); void write(Xml& xml) const; - bool save(const QString&, bool); - void setUntitledProject(); void setFollow(FollowMode); void readConfigParts(QDomNode); void readCtrl(QDomNode, int port, int channel); - void readToplevels(QDomNode); PartList* getMidiPartsToEdit(); Part* readPart(QDomNode); bool checkRegionNotNull(); - void loadProjectFile1(const QString&, bool songTemplate, bool loadAll); + void loadProject1(const QString&); void writeGlobalConfiguration(Xml&) const; void writeConfiguration(Xml&) const; void updateConfiguration(); @@ -185,7 +173,6 @@ class MusE : public QMainWindow, public Ui::MuseBase private slots: void loadProject(); bool save(); -// void configGlobalSettings(); void quitDoc(); void about(); void aboutQt(); @@ -201,7 +188,6 @@ class MusE : public QMainWindow, public Ui::MuseBase void configMidiSync(); void configMidiFile(); void configShortCuts(); -// void configAppearance(); void startMasterEditor(); void startListEditor(); @@ -214,7 +200,6 @@ class MusE : public QMainWindow, public Ui::MuseBase void startPianoroll(PartList* pl); void startWaveEditor(); void startWaveEditor(PartList*); -// void startMidiTransformer(); void writeGlobalConfiguration() const; void startEditInstrument(); @@ -256,8 +241,7 @@ class MusE : public QMainWindow, public Ui::MuseBase public slots: void bounceToFile(); void closeEvent(QCloseEvent*e); - void loadProjectFile(const QString&); - void loadProjectFile(const QString&, bool songTemplate, bool loadAll); + void loadProject(const QString&); void loadTheme(const QString&); bool seqStart(); void showTransport(bool flag); @@ -298,6 +282,7 @@ class MusE : public QMainWindow, public Ui::MuseBase // 0xaabb aa - major version, bb minor version int raster() const { return _raster; } void setupTransportToolbar(QToolBar* tb) const; + void readToplevels(QDomNode); }; extern MusE* muse; diff --git a/muse/muse/preferences.cpp b/muse/muse/preferences.cpp index 2c85b228..96054b4a 100644 --- a/muse/muse/preferences.cpp +++ b/muse/muse/preferences.cpp @@ -286,17 +286,23 @@ PreferencesDialog::PreferencesDialog(Arranger* a, QWidget* parent) minMeterSelect->setValue(config->minMeter); peakHoldTime->setValue(config->peakHoldTime); helpBrowser->setText(config->helpBrowser); - startSongEntry->setText(config->startSong); + startProjectEntry->setText(config->startProject); - startSongGroup = new QButtonGroup(this); - startSongGroup->addButton(startLast); - startSongGroup->addButton(startTemplate); - startSongGroup->addButton(startSong); + startProjectGroup = new QButtonGroup(this); + startProjectGroup->addButton(alwaysAsk); + startProjectGroup->addButton(startWithLastProject); + startProjectGroup->addButton(startWithProject); switch(config->startMode) { - case 0: startLast->setChecked(true); break; - case 1: startTemplate->setChecked(true); break; - case 2: startSong->setChecked(true); break; + case START_ASK_FOR_PROJECT: + alwaysAsk->setChecked(true); + break; + case START_LAST_PROJECT: + startWithLastProject->setChecked(true); + break; + case START_START_PROJECT: + startWithProject->setChecked(true); + break; } showTransport->setChecked(config->transportVisible); @@ -545,14 +551,14 @@ void PreferencesDialog::apply() ::config.rtcTicks = rtcResolutions[rtcticks]; ::config.guiDivision = divisions[div]; ::config.helpBrowser = helpBrowser->text(); - ::config.startSong = startSongEntry->text(); + ::config.startProject = startProjectEntry->text(); - if (startLast->isChecked()) - ::config.startMode = 0; - else if (startTemplate->isChecked()) - ::config.startMode = 1; - else if (startSong->isChecked()) - ::config.startMode = 2; + if (alwaysAsk->isChecked()) + ::config.startMode = START_ASK_FOR_PROJECT; + else if (startWithLastProject->isChecked()) + ::config.startMode = START_LAST_PROJECT; + else if (startWithProject->isChecked()) + ::config.startMode = START_START_PROJECT; ::config.transportVisible = showTransport->isChecked(); ::config.bigTimeVisible = showBigtime->isChecked(); @@ -587,6 +593,8 @@ void PreferencesDialog::apply() ::config.useJackFreewheelMode = freewheelMode->isChecked(); ::config.showSplashScreen = showSplash->isChecked(); + ::config.projectPath = projectPath->text(); + PianoRoll::initWidth = pianorollWidth->value(); PianoRoll::initHeight = pianorollHeight->value(); PianoRoll::initRaster = pianorollRaster->raster(); @@ -620,6 +628,7 @@ void PreferencesDialog::apply() w->move(::config.geometryBigTime.topLeft()); } + muse->resize(::config.geometryMain.size()); muse->move(::config.geometryMain.topLeft()); diff --git a/muse/muse/preferences.h b/muse/muse/preferences.h index d4f1496c..c3ab3929 100644 --- a/muse/muse/preferences.h +++ b/muse/muse/preferences.h @@ -40,7 +40,7 @@ class PreferencesDialog : public QDialog, public Ui::PreferencesDialogBase { QString currentBg; GlobalConfigValues* config; QButtonGroup* colorGroup; - QButtonGroup* startSongGroup; + QButtonGroup* startProjectGroup; void updateFonts(); void updateColor(); diff --git a/muse/muse/preferences.ui b/muse/muse/preferences.ui index 1a2fdd63..cb7e2db4 100644 --- a/muse/muse/preferences.ui +++ b/muse/muse/preferences.ui @@ -8,451 +8,922 @@ <rect> <x>0</x> <y>0</y> - <width>721</width> - <height>569</height> + <width>731</width> + <height>602</height> </rect> </property> <property name="windowTitle" > <string>Dialog</string> </property> - <widget class="QTabWidget" name="tabWidget" > - <property name="geometry" > - <rect> - <x>9</x> - <y>9</y> - <width>703</width> - <height>508</height> - </rect> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> </property> - <widget class="QWidget" name="tab" > - <attribute name="title" > - <string>Application</string> - </attribute> - <widget class="QGroupBox" name="groupBox_2" > - <property name="title" > - <string>Views</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="3" column="6" > - <widget class="QPushButton" name="setMixerCurrent1" > - <property name="text" > - <string>Cur</string> - </property> - </widget> - </item> - <item row="3" column="1" > - <widget class="QCheckBox" name="showMixer1" > - <property name="text" > - <string>show</string> - </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QLabel" name="label_5" > - <property name="text" > - <string>Mixer 1</string> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="label_4" > - <property name="text" > - <string>Big Time</string> - </property> - </widget> - </item> - <item row="1" column="6" > - <widget class="QPushButton" name="setTransportCurrent" > - <property name="text" > - <string>Cur</string> - </property> - </widget> - </item> - <item row="4" column="6" > - <widget class="QPushButton" name="setMixerCurrent2" > - <property name="text" > - <string>Cur</string> - </property> - </widget> - </item> - <item row="0" column="6" > - <widget class="QPushButton" name="setArrangerCurrent" > - <property name="text" > - <string>Cur</string> - </property> - </widget> - </item> - <item row="4" column="5" > - <widget class="QSpinBox" name="mixerH2" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="4" column="4" > - <widget class="QSpinBox" name="mixerW2" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="value" > - <number>0</number> - </property> - </widget> - </item> - <item row="3" column="5" > - <widget class="QSpinBox" name="mixerH1" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="3" column="4" > - <widget class="QSpinBox" name="mixerW1" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="2" column="5" > - <widget class="QSpinBox" name="bigtimeH" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="2" column="4" > - <widget class="QSpinBox" name="bigtimeW" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="0" column="5" > - <widget class="QSpinBox" name="arrangerH" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="0" column="4" > - <widget class="QSpinBox" name="arrangerW" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="4" column="3" > - <widget class="QSpinBox" name="mixerY2" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="3" column="3" > - <widget class="QSpinBox" name="mixerY1" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="2" column="3" > - <widget class="QSpinBox" name="bigtimeY" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="1" column="3" > - <widget class="QSpinBox" name="transportY" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="0" column="3" > - <widget class="QSpinBox" name="arrangerY" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="4" column="2" > - <widget class="QSpinBox" name="mixerX1" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="3" column="2" > - <widget class="QSpinBox" name="mixerX2" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="2" column="2" > - <widget class="QSpinBox" name="bigtimeX" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="1" column="2" > - <widget class="QSpinBox" name="transportX" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="QSpinBox" name="arrangerX" > - <property name="maximum" > - <number>9999</number> - </property> - </widget> - </item> - <item row="4" column="1" > - <widget class="QCheckBox" name="showMixer2" > - <property name="text" > - <string>show</string> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QCheckBox" name="showTransport" > - <property name="text" > - <string>show</string> - </property> - </widget> - </item> - <item row="4" column="0" > - <widget class="QLabel" name="label_6" > - <property name="text" > - <string>Mixer 2</string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="label_3" > - <property name="text" > - <string>Transport</string> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_2" > - <property name="text" > - <string>Arranger</string> - </property> - </widget> - </item> - <item row="2" column="1" > - <widget class="QCheckBox" name="showBigtime" > - <property name="text" > - <string>show</string> - </property> - </widget> - </item> - <item row="2" column="6" > - <widget class="QPushButton" name="setBigtimeCurrent" > - <property name="text" > - <string>Cur</string> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QGroupBox" name="groupBox" > - <property name="title" > - <string>Start MusE</string> - </property> - <layout class="QHBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QGroupBox" name="startSongGroup" > - <property name="title" > - <string/> - </property> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QRadioButton" name="startLast" > - <property name="text" > - <string>always ask</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="startTemplate" > - <property name="text" > - <string>start with last project</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="startSong" > - <property name="text" > - <string>start with project:</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="startSongEntry" /> - </item> - </layout> - </widget> - </item> - <item> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>0</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QCheckBox" name="showSplash" > - <property name="text" > - <string>show splash screen</string> - </property> - </widget> - </item> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> - </widget> - </widget> - <widget class="QWidget" name="tab_5" > - <attribute name="title" > - <string>Editors</string> - </attribute> - <widget class="QTabWidget" name="tabWidget2" > - <property name="geometry" > - <rect> - <x>9</x> - <y>9</y> - <width>641</width> - <height>457</height> - </rect> - </property> - <widget class="QWidget" name="tab_61" > + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTabWidget" name="tabWidget" > + <widget class="QWidget" name="tab" > <attribute name="title" > - <string>Arranger</string> + <string>Application</string> </attribute> - <layout class="QGridLayout" > + <layout class="QVBoxLayout" > <property name="margin" > <number>9</number> </property> <property name="spacing" > <number>6</number> </property> - <item row="2" column="0" colspan="2" > - <widget class="QCheckBox" name="arrGrid" > - <property name="text" > - <string>show snap grid</string> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Start MusE</string> </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>3</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>3</number> + </property> + <item> + <widget class="QRadioButton" name="alwaysAsk" > + <property name="text" > + <string>always ask</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="startWithLastProject" > + <property name="text" > + <string>start with last project</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="startWithProject" > + <property name="text" > + <string>start with project:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="startProjectEntry" /> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="showSplash" > + <property name="text" > + <string>show splash screen</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> </widget> </item> - <item row="0" column="1" > - <widget class="QGroupBox" name="eventButtonGroup" > + <item> + <widget class="QGroupBox" name="groupBox_7" > <property name="title" > - <string>Events</string> + <string>Path</string> </property> - <layout class="QGridLayout" > + <layout class="QHBoxLayout" > <property name="margin" > - <number>11</number> + <number>9</number> </property> <property name="spacing" > <number>6</number> </property> - <item row="0" column="0" > - <widget class="QCheckBox" name="eventNoteon" > + <item> + <widget class="QLabel" name="label" > <property name="text" > - <string>note on</string> + <string>Project Path</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QCheckBox" name="eventPolypressure" > + <item> + <widget class="QLineEdit" name="projectPath" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>Views</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>3</number> + </property> + <item row="3" column="6" > + <widget class="QPushButton" name="setMixerCurrent1" > + <property name="text" > + <string>Cur</string> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QCheckBox" name="showMixer1" > + <property name="text" > + <string>show</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_5" > <property name="text" > - <string>poly pressure</string> + <string>Mixer 1</string> </property> </widget> </item> <item row="2" column="0" > - <widget class="QCheckBox" name="eventController" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Big Time</string> + </property> + </widget> + </item> + <item row="1" column="6" > + <widget class="QPushButton" name="setTransportCurrent" > <property name="text" > - <string>controller</string> + <string>Cur</string> + </property> + </widget> + </item> + <item row="4" column="6" > + <widget class="QPushButton" name="setMixerCurrent2" > + <property name="text" > + <string>Cur</string> + </property> + </widget> + </item> + <item row="0" column="6" > + <widget class="QPushButton" name="setArrangerCurrent" > + <property name="text" > + <string>Cur</string> + </property> + </widget> + </item> + <item row="4" column="5" > + <widget class="QSpinBox" name="mixerH2" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="4" column="4" > + <widget class="QSpinBox" name="mixerW2" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="value" > + <number>0</number> + </property> + </widget> + </item> + <item row="3" column="5" > + <widget class="QSpinBox" name="mixerH1" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="3" column="4" > + <widget class="QSpinBox" name="mixerW1" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="2" column="5" > + <widget class="QSpinBox" name="bigtimeH" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="2" column="4" > + <widget class="QSpinBox" name="bigtimeW" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="0" column="5" > + <widget class="QSpinBox" name="arrangerH" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="0" column="4" > + <widget class="QSpinBox" name="arrangerW" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="4" column="3" > + <widget class="QSpinBox" name="mixerY2" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="3" column="3" > + <widget class="QSpinBox" name="mixerY1" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="2" column="3" > + <widget class="QSpinBox" name="bigtimeY" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="1" column="3" > + <widget class="QSpinBox" name="transportY" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QSpinBox" name="arrangerY" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="4" column="2" > + <widget class="QSpinBox" name="mixerX1" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="3" column="2" > + <widget class="QSpinBox" name="mixerX2" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QSpinBox" name="bigtimeX" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QSpinBox" name="transportX" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QSpinBox" name="arrangerX" > + <property name="maximum" > + <number>9999</number> + </property> + </widget> + </item> + <item row="4" column="1" > + <widget class="QCheckBox" name="showMixer2" > + <property name="text" > + <string>show</string> </property> </widget> </item> <item row="1" column="1" > - <widget class="QCheckBox" name="eventAftertouch" > + <widget class="QCheckBox" name="showTransport" > <property name="text" > - <string>aftertouch</string> + <string>show</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QCheckBox" name="eventPitchbend" > + <item row="4" column="0" > + <widget class="QLabel" name="label_6" > <property name="text" > - <string>pitch bend</string> + <string>Mixer 2</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QCheckBox" name="eventProgramchange" > + <item row="1" column="0" > + <widget class="QLabel" name="label_3" > <property name="text" > - <string>program change</string> + <string>Transport</string> </property> </widget> </item> - <item row="3" column="0" > - <widget class="QCheckBox" name="eventSpecial" > + <item row="0" column="0" > + <widget class="QLabel" name="label_2" > <property name="text" > - <string>special</string> + <string>Arranger</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QCheckBox" name="showBigtime" > + <property name="text" > + <string>show</string> + </property> + </widget> + </item> + <item row="2" column="6" > + <widget class="QPushButton" name="setBigtimeCurrent" > + <property name="text" > + <string>Cur</string> </property> </widget> </item> </layout> </widget> </item> - <item row="1" column="0" colspan="2" > - <widget class="QGroupBox" name="useCanvasBgPixmap" > + </layout> + </widget> + <widget class="QWidget" name="tab_5" > + <attribute name="title" > + <string>Editors</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTabWidget" name="tabWidget2" > + <widget class="QWidget" name="tab_61" > + <attribute name="title" > + <string>Arranger</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="2" column="0" colspan="2" > + <widget class="QCheckBox" name="arrGrid" > + <property name="text" > + <string>show snap grid</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QGroupBox" name="eventButtonGroup" > + <property name="title" > + <string>Events</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <widget class="QCheckBox" name="eventNoteon" > + <property name="text" > + <string>note on</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QCheckBox" name="eventPolypressure" > + <property name="text" > + <string>poly pressure</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QCheckBox" name="eventController" > + <property name="text" > + <string>controller</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QCheckBox" name="eventAftertouch" > + <property name="text" > + <string>aftertouch</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QCheckBox" name="eventPitchbend" > + <property name="text" > + <string>pitch bend</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QCheckBox" name="eventProgramchange" > + <property name="text" > + <string>program change</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QCheckBox" name="eventSpecial" > + <property name="text" > + <string>special</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="2" > + <widget class="QGroupBox" name="useCanvasBgPixmap" > + <property name="title" > + <string>Background</string> + </property> + <property name="checkable" > + <bool>false</bool> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="2" > + <widget class="QToolButton" name="selectCanvasBgColor" > + <property name="text" > + <string>select...</string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QToolButton" name="selectCanvasBgPixmap" > + <property name="text" > + <string>select...</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QRadioButton" name="useColor" > + <property name="text" > + <string>Color</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QRadioButton" name="usePixmap" > + <property name="text" > + <string>Pixmap</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="currentBgLabel" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>bg</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + <property name="indent" > + <number>-1</number> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLabel" name="canvasBackgroundColor" > + <property name="text" > + <string>Color</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="0" > + <widget class="QGroupBox" name="ButtonGroup3" > + <property name="title" > + <string>Parts</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="partShownames" > + <property name="text" > + <string>show names</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="partShowevents" > + <property name="text" > + <string>show events</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="partShowCakes" > + <property name="text" > + <string>show Cakewalk Style</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_6" > + <attribute name="title" > + <string>Pianoroll</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="3" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>211</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_25" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Quant</p></body></html></string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_24" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Raster</p></body></html></string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_21" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QLabel" name="label_23" > + <property name="text" > + <string>height:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label_22" > + <property name="text" > + <string>width:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="4" > + <widget class="QSpinBox" name="pianorollHeight" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QSpinBox" name="pianorollWidth" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QuantCombo" name="pianorollQuant" /> + </item> + <item row="1" column="1" > + <widget class="RasterCombo" name="pianorollRaster" /> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_7" > + <attribute name="title" > + <string>DrumEditor</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>351</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_27" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QSpinBox" name="drumEditorWidth" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label_28" > + <property name="text" > + <string>width:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="4" > + <widget class="QSpinBox" name="drumEditorHeight" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QLabel" name="label_26" > + <property name="text" > + <string>height:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_8" > + <attribute name="title" > + <string>MasterEditor</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>331</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="4" > + <widget class="QSpinBox" name="masterEditorHeight" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QLabel" name="label_30" > + <property name="text" > + <string>height:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QSpinBox" name="masterEditorWidth" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label_29" > + <property name="text" > + <string>width:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_31" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_9" > + <attribute name="title" > + <string>WaveEditor</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="4" > + <widget class="QSpinBox" name="waveEditorHeight" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QLabel" name="label_34" > + <property name="text" > + <string>height:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label_32" > + <property name="text" > + <string>width:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_33" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QSpinBox" name="waveEditorWidth" > + <property name="maximum" > + <number>9999</number> + </property> + <property name="minimum" > + <number>50</number> + </property> + </widget> + </item> + <item row="1" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>351</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_1" > + <attribute name="title" > + <string>Audio</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox_4" > <property name="title" > - <string>Background</string> - </property> - <property name="checkable" > - <bool>false</bool> + <string>Mixer</string> </property> <layout class="QGridLayout" > <property name="margin" > @@ -461,118 +932,300 @@ <property name="spacing" > <number>6</number> </property> - <item row="1" column="2" > - <widget class="QToolButton" name="selectCanvasBgColor" > - <property name="text" > - <string>select...</string> + <item row="0" column="3" > + <widget class="QSpinBox" name="peakHoldTime" > + <property name="suffix" > + <string>ms</string> + </property> + <property name="maximum" > + <number>5000</number> + </property> + <property name="minimum" > + <number>20</number> </property> </widget> </item> <item row="0" column="2" > - <widget class="QToolButton" name="selectCanvasBgPixmap" > + <widget class="QLabel" name="label_20" > <property name="text" > - <string>select...</string> + <string>Peak Hold Time:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="minMeterSelect" > + <property name="suffix" > + <string>dB</string> + </property> + <property name="maximum" > + <number>0</number> + </property> + <property name="minimum" > + <number>-100</number> + </property> + <property name="singleStep" > + <number>10</number> + </property> + <property name="value" > + <number>-60</number> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QSpinBox" name="minSliderSelect" > + <property name="suffix" > + <string>dB</string> + </property> + <property name="maximum" > + <number>0</number> + </property> + <property name="minimum" > + <number>-100</number> + </property> + <property name="value" > + <number>-60</number> </property> </widget> </item> <item row="1" column="0" > - <widget class="QRadioButton" name="useColor" > + <widget class="QLabel" name="label_8" > <property name="text" > - <string>Color</string> + <string>min. Meter Val</string> </property> </widget> </item> <item row="0" column="0" > - <widget class="QRadioButton" name="usePixmap" > + <widget class="QLabel" name="label_7" > <property name="text" > - <string>Pixmap</string> + <string>min. Slider Val</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLabel" name="currentBgLabel" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> + </layout> + </widget> + </item> + <item> + <widget class="QCheckBox" name="freewheelMode" > + <property name="text" > + <string>use JACK freewheel mode if possible</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_2" > + <attribute name="title" > + <string>Midi</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox_5" > + <property name="title" > + <string>Ticks</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <widget class="QLabel" name="label_10" > <property name="text" > - <string>bg</string> - </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> - </property> - <property name="indent" > - <number>-1</number> + <string>Displayed Resolution +(Ticks/Quarternote)</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLabel" name="canvasBackgroundColor" > + <item row="0" column="0" > + <widget class="QLabel" name="label_9" > <property name="text" > - <string>Color</string> + <string>RTC Resolution +(Ticks/Sec)</string> </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="rtcResolutionSelect" > + <item> + <property name="text" > + <string>1024</string> + </property> + </item> + <item> + <property name="text" > + <string>2048</string> + </property> + </item> + <item> + <property name="text" > + <string>4096</string> + </property> + </item> + <item> + <property name="text" > + <string>8172</string> + </property> + </item> + </widget> + </item> + <item row="1" column="1" > + <widget class="QComboBox" name="midiDivisionSelect" > + <property name="currentIndex" > + <number>3</number> </property> + <item> + <property name="text" > + <string>48</string> + </property> + </item> + <item> + <property name="text" > + <string>96</string> + </property> + </item> + <item> + <property name="text" > + <string>192</string> + </property> + </item> + <item> + <property name="text" > + <string>384</string> + </property> + </item> + <item> + <property name="text" > + <string>768</string> + </property> + </item> + <item> + <property name="text" > + <string>1536</string> + </property> + </item> + <item> + <property name="text" > + <string>3072</string> + </property> + </item> + <item> + <property name="text" > + <string>6144</string> + </property> + </item> + <item> + <property name="text" > + <string>12288</string> + </property> + </item> </widget> </item> </layout> </widget> </item> - <item row="0" column="0" > - <widget class="QGroupBox" name="ButtonGroup3" > + <item> + <widget class="QGroupBox" name="groupBox_3" > <property name="title" > - <string>Parts</string> + <string>Input Routing</string> </property> - <layout class="QVBoxLayout" > + <layout class="QGridLayout" > <property name="margin" > - <number>11</number> + <number>8</number> </property> <property name="spacing" > <number>6</number> </property> - <item> - <widget class="QCheckBox" name="partShownames" > + <item row="1" column="1" > + <widget class="QCheckBox" name="connectToAllTracks" > <property name="text" > - <string>show names</string> + <string>Connect to all Tracks</string> </property> </widget> </item> - <item> - <widget class="QRadioButton" name="partShowevents" > + <item row="0" column="1" > + <widget class="QCheckBox" name="connectToAllDevices" > <property name="text" > - <string>show events</string> + <string>Connect to all Input Devices</string> </property> </widget> </item> - <item> - <widget class="QRadioButton" name="partShowCakes" > + <item row="1" column="0" > + <widget class="QLabel" name="label_17" > <property name="text" > - <string>show Cakewalk Style</string> + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Input Device:</p></body></html></string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QComboBox" name="preferredInput" /> + </item> + <item row="0" column="0" > + <widget class="QCheckBox" name="createDefaultInput" > + <property name="text" > + <string>Create Default Input Strip</string> </property> </widget> </item> </layout> </widget> </item> - </layout> - </widget> - <widget class="QWidget" name="tab_6" > - <attribute name="title" > - <string>Pianoroll</string> - </attribute> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="3" column="0" > + <item> + <widget class="QGroupBox" name="groupBox_6" > + <property name="title" > + <string>Output Routing</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>8</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="label_18" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Output Device:</p></body></html></string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2" > + <widget class="QComboBox" name="preferredInstrument" /> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label_19" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Instrument:</p></body></html></string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QComboBox" name="preferredOutput" /> + </item> + </layout> + </widget> + </item> + <item> <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> @@ -580,83 +1233,16 @@ <property name="sizeHint" > <size> <width>20</width> - <height>211</height> + <height>20</height> </size> </property> </spacer> </item> - <item row="2" column="0" > - <widget class="QLabel" name="label_25" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Quant</p></body></html></string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="label_24" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Raster</p></body></html></string> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_21" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> - </property> - </widget> - </item> - <item row="0" column="3" > - <widget class="QLabel" name="label_23" > - <property name="text" > - <string>height:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLabel" name="label_22" > - <property name="text" > - <string>width:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="4" > - <widget class="QSpinBox" name="pianorollHeight" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="minimum" > - <number>50</number> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="QSpinBox" name="pianorollWidth" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="minimum" > - <number>50</number> - </property> - </widget> - </item> - <item row="2" column="1" > - <widget class="QuantCombo" name="pianorollQuant" /> - </item> - <item row="1" column="1" > - <widget class="RasterCombo" name="pianorollRaster" /> - </item> </layout> </widget> - <widget class="QWidget" name="tab_7" > + <widget class="QWidget" name="tab_3" > <attribute name="title" > - <string>DrumEditor</string> + <string>GUI</string> </attribute> <layout class="QGridLayout" > <property name="margin" > @@ -665,7 +1251,7 @@ <property name="spacing" > <number>6</number> </property> - <item row="1" column="0" > + <item row="2" column="0" > <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> @@ -673,72 +1259,144 @@ <property name="sizeHint" > <size> <width>20</width> - <height>351</height> + <height>40</height> </size> </property> </spacer> </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_27" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> - </property> - </widget> + <item row="1" column="1" > + <widget class="QLineEdit" name="helpBrowser" /> </item> - <item row="0" column="2" > - <widget class="QSpinBox" name="drumEditorWidth" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="minimum" > - <number>50</number> + <item row="1" column="0" > + <widget class="QLabel" name="label_12" > + <property name="text" > + <string>Help Browser</string> </property> </widget> </item> <item row="0" column="1" > - <widget class="QLabel" name="label_28" > - <property name="text" > - <string>width:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <widget class="QSpinBox" name="guiRefreshSelect" > + <property name="suffix" > + <string>/sec</string> </property> - </widget> - </item> - <item row="0" column="4" > - <widget class="QSpinBox" name="drumEditorHeight" > <property name="maximum" > - <number>9999</number> + <number>100</number> </property> <property name="minimum" > - <number>50</number> + <number>2</number> + </property> + <property name="value" > + <number>20</number> </property> </widget> </item> - <item row="0" column="3" > - <widget class="QLabel" name="label_26" > + <item row="0" column="0" > + <widget class="QLabel" name="label_11" > <property name="text" > - <string>height:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <string>GUI Refresh Rate:</string> </property> </widget> </item> </layout> </widget> - <widget class="QWidget" name="tab_8" > + <widget class="QWidget" name="tab_4" > <attribute name="title" > - <string>MasterEditor</string> + <string>RemoteControl</string> </attribute> - <layout class="QGridLayout" > + <layout class="QVBoxLayout" > <property name="margin" > <number>9</number> </property> <property name="spacing" > <number>6</number> </property> - <item row="1" column="0" > + <item> + <widget class="QGroupBox" name="rcGroup" > + <property name="toolTip" > + <string>enable midi remote control</string> + </property> + <property name="title" > + <string>Midi Remote Control</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <widget class="QLabel" name="label_14" > + <property name="text" > + <string>Record</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_15" > + <property name="text" > + <string>Goto Left Mark</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_13" > + <property name="text" > + <string>Stop</string> + </property> + </widget> + </item> + <item row="0" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_16" > + <property name="text" > + <string>Play</string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="RecordButton" name="recordStop" /> + </item> + <item row="1" column="2" > + <widget class="RecordButton" name="recordRecord" /> + </item> + <item row="2" column="2" > + <widget class="RecordButton" name="recordGotoLeftMark" /> + </item> + <item row="3" column="2" > + <widget class="RecordButton" name="recordPlay" /> + </item> + <item row="0" column="1" > + <widget class="GreendotButton" name="stopActive" /> + </item> + <item row="1" column="1" > + <widget class="GreendotButton" name="recordActive" /> + </item> + <item row="2" column="1" > + <widget class="GreendotButton" name="gotoLeftMarkActive" /> + </item> + <item row="3" column="1" > + <widget class="GreendotButton" name="playActive" /> + </item> + </layout> + </widget> + </item> + <item> <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> @@ -746,63 +1404,16 @@ <property name="sizeHint" > <size> <width>20</width> - <height>331</height> + <height>40</height> </size> </property> </spacer> </item> - <item row="0" column="4" > - <widget class="QSpinBox" name="masterEditorHeight" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="minimum" > - <number>50</number> - </property> - </widget> - </item> - <item row="0" column="3" > - <widget class="QLabel" name="label_30" > - <property name="text" > - <string>height:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="QSpinBox" name="masterEditorWidth" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="minimum" > - <number>50</number> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLabel" name="label_29" > - <property name="text" > - <string>width:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_31" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> - </property> - </widget> - </item> </layout> </widget> - <widget class="QWidget" name="tab_9" > + <widget class="QWidget" name="tab_11" > <attribute name="title" > - <string>WaveEditor</string> + <string>Colors</string> </attribute> <layout class="QGridLayout" > <property name="margin" > @@ -811,1473 +1422,891 @@ <property name="spacing" > <number>6</number> </property> - <item row="0" column="4" > - <widget class="QSpinBox" name="waveEditorHeight" > - <property name="maximum" > - <number>9999</number> + <item row="3" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> </property> - <property name="minimum" > - <number>50</number> + <property name="spacing" > + <number>6</number> </property> - </widget> + <item> + <widget class="QLabel" name="textLabel5_2" > + <property name="text" > + <string>S</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="sslider" > + <property name="maximum" > + <number>255</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> </item> - <item row="0" column="3" > - <widget class="QLabel" name="label_34" > - <property name="text" > - <string>height:</string> + <item row="2" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <property name="spacing" > + <number>6</number> </property> - </widget> + <item> + <widget class="QLabel" name="textLabel4_2" > + <property name="text" > + <string>H</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="hslider" > + <property name="maximum" > + <number>255</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> </item> - <item row="0" column="1" > - <widget class="QLabel" name="label_32" > - <property name="text" > - <string>width:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <item rowspan="2" row="0" column="2" > + <widget class="QFrame" name="colorframe" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> </property> </widget> </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_33" > + <item row="1" column="1" > + <widget class="QPushButton" name="addToPalette" > <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:10pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">Geometry</p></body></html></string> + <string>add to palette</string> </property> </widget> </item> - <item row="0" column="2" > - <widget class="QSpinBox" name="waveEditorWidth" > - <property name="maximum" > - <number>9999</number> - </property> - <property name="minimum" > - <number>50</number> - </property> - </widget> - </item> - <item row="1" column="0" > - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> + <item row="0" column="1" > + <widget class="QGroupBox" name="colorPalette" > + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>351</height> - </size> + <property name="title" > + <string>Palette</string> </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </widget> - <widget class="QWidget" name="tab_1" > - <attribute name="title" > - <string>Audio</string> - </attribute> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QGroupBox" name="groupBox_4" > - <property name="title" > - <string>Mixer</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="0" column="3" > - <widget class="QSpinBox" name="peakHoldTime" > - <property name="suffix" > - <string>ms</string> - </property> - <property name="maximum" > - <number>5000</number> - </property> - <property name="minimum" > - <number>20</number> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="QLabel" name="label_20" > - <property name="text" > - <string>Peak Hold Time:</string> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QSpinBox" name="minMeterSelect" > - <property name="suffix" > - <string>dB</string> - </property> - <property name="maximum" > - <number>0</number> - </property> - <property name="minimum" > - <number>-100</number> - </property> - <property name="singleStep" > - <number>10</number> - </property> - <property name="value" > - <number>-60</number> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QSpinBox" name="minSliderSelect" > - <property name="suffix" > - <string>dB</string> - </property> - <property name="maximum" > - <number>0</number> - </property> - <property name="minimum" > - <number>-100</number> - </property> - <property name="value" > - <number>-60</number> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="label_8" > - <property name="text" > - <string>min. Meter Val</string> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_7" > - <property name="text" > - <string>min. Slider Val</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QCheckBox" name="freewheelMode" > - <property name="text" > - <string>use JACK freewheel mode if possible</string> - </property> - </widget> - </item> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_2" > - <attribute name="title" > - <string>Midi</string> - </attribute> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>8</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QGroupBox" name="groupBox_5" > - <property name="title" > - <string>Ticks</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="1" column="0" > - <widget class="QLabel" name="label_10" > - <property name="text" > - <string>Displayed Resolution -(Ticks/Quarternote)</string> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_9" > - <property name="text" > - <string>RTC Resolution -(Ticks/Sec)</string> + <property name="spacing" > + <number>6</number> </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QComboBox" name="rtcResolutionSelect" > - <item> - <property name="text" > - <string>1024</string> - </property> + <item row="3" column="3" > + <widget class="QToolButton" name="palette15" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>2048</string> - </property> + <item row="3" column="2" > + <widget class="QToolButton" name="palette14" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>4096</string> - </property> + <item row="2" column="3" > + <widget class="QToolButton" name="palette11" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>8172</string> - </property> + <item row="2" column="2" > + <widget class="QToolButton" name="palette10" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - </widget> - </item> - <item row="1" column="1" > - <widget class="QComboBox" name="midiDivisionSelect" > - <property name="currentIndex" > - <number>3</number> - </property> - <item> - <property name="text" > - <string>48</string> - </property> + <item row="1" column="3" > + <widget class="QToolButton" name="palette7" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>96</string> - </property> + <item row="1" column="2" > + <widget class="QToolButton" name="palette6" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>192</string> - </property> + <item row="3" column="1" > + <widget class="QToolButton" name="palette13" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>384</string> - </property> + <item row="2" column="1" > + <widget class="QToolButton" name="palette9" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>768</string> - </property> + <item row="1" column="1" > + <widget class="QToolButton" name="palette5" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>1536</string> - </property> + <item row="3" column="0" > + <widget class="QToolButton" name="palette12" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>3072</string> - </property> + <item row="2" column="0" > + <widget class="QToolButton" name="palette8" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>6144</string> - </property> + <item row="1" column="0" > + <widget class="QToolButton" name="palette4" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text" > - <string>12288</string> - </property> + <item row="0" column="3" > + <widget class="QToolButton" name="palette3" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> </item> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_3" > - <property name="title" > - <string>Input Routing</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>8</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="1" column="1" > - <widget class="QCheckBox" name="connectToAllTracks" > - <property name="text" > - <string>Connect to all Tracks</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QCheckBox" name="connectToAllDevices" > - <property name="text" > - <string>Connect to all Input Devices</string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="label_17" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Input Device:</p></body></html></string> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QComboBox" name="preferredInput" /> - </item> - <item row="0" column="0" > - <widget class="QCheckBox" name="createDefaultInput" > - <property name="text" > - <string>Create Default Input Strip</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_6" > - <property name="title" > - <string>Output Routing</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>8</number> - </property> - <property name="spacing" > - <number>8</number> - </property> - <item row="0" column="0" > - <widget class="QLabel" name="label_18" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Output Device:</p></body></html></string> - </property> - </widget> - </item> - <item row="1" column="1" colspan="2" > - <widget class="QComboBox" name="preferredInstrument" /> - </item> - <item row="0" column="1" > - <widget class="QLabel" name="label_19" > - <property name="text" > - <string><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Preferred Instrument:</p></body></html></string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QComboBox" name="preferredOutput" /> - </item> - </layout> - </widget> - </item> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_3" > - <attribute name="title" > - <string>GUI</string> - </attribute> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="2" column="0" > - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="helpBrowser" /> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="label_12" > - <property name="text" > - <string>Help Browser</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QSpinBox" name="guiRefreshSelect" > - <property name="suffix" > - <string>/sec</string> - </property> - <property name="maximum" > - <number>100</number> - </property> - <property name="minimum" > - <number>2</number> - </property> - <property name="value" > - <number>20</number> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_11" > - <property name="text" > - <string>GUI Refresh Rate:</string> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_4" > - <attribute name="title" > - <string>RemoteControl</string> - </attribute> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QGroupBox" name="rcGroup" > - <property name="toolTip" > - <string>enable midi remote control</string> - </property> - <property name="title" > - <string>Midi Remote Control</string> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="1" column="0" > - <widget class="QLabel" name="label_14" > - <property name="text" > - <string>Record</string> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="label_15" > - <property name="text" > - <string>Goto Left Mark</string> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="label_13" > - <property name="text" > - <string>Stop</string> - </property> - </widget> - </item> - <item row="0" column="3" > - <spacer> - <property name="orientation" > - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" > - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="0" > - <widget class="QLabel" name="label_16" > - <property name="text" > - <string>Play</string> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="RecordButton" name="recordStop" /> - </item> - <item row="1" column="2" > - <widget class="RecordButton" name="recordRecord" /> - </item> - <item row="2" column="2" > - <widget class="RecordButton" name="recordGotoLeftMark" /> - </item> - <item row="3" column="2" > - <widget class="RecordButton" name="recordPlay" /> - </item> - <item row="0" column="1" > - <widget class="GreendotButton" name="stopActive" /> - </item> - <item row="1" column="1" > - <widget class="GreendotButton" name="recordActive" /> - </item> - <item row="2" column="1" > - <widget class="GreendotButton" name="gotoLeftMarkActive" /> - </item> - <item row="3" column="1" > - <widget class="GreendotButton" name="playActive" /> - </item> - </layout> - </widget> - </item> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_11" > - <attribute name="title" > - <string>Colors</string> - </attribute> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="3" column="1" colspan="2" > - <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QLabel" name="textLabel5_2" > - <property name="text" > - <string>S</string> - </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QSlider" name="sslider" > - <property name="maximum" > - <number>255</number> - </property> - <property name="orientation" > - <enum>Qt::Horizontal</enum> - </property> + <item row="0" column="2" > + <widget class="QToolButton" name="palette2" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QToolButton" name="palette1" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QToolButton" name="palette0" > + <property name="text" > + <string/> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> </widget> </item> - </layout> - </item> - <item row="2" column="1" colspan="2" > - <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QLabel" name="textLabel4_2" > - <property name="text" > - <string>H</string> - </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> - </property> + <item rowspan="5" row="0" column="0" > + <widget class="QTreeWidget" name="itemList" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="rootIsDecorated" > + <bool>true</bool> + </property> + <column> + <property name="text" > + <string>Items</string> + </property> + </column> </widget> </item> - <item> - <widget class="QSlider" name="hslider" > - <property name="maximum" > - <number>255</number> + <item row="4" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> </property> - <property name="orientation" > - <enum>Qt::Horizontal</enum> + <property name="spacing" > + <number>6</number> </property> - </widget> + <item> + <widget class="QLabel" name="textLabel6_2" > + <property name="text" > + <string>V</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="vslider" > + <property name="maximum" > + <number>255</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> </item> </layout> - </item> - <item rowspan="2" row="0" column="2" > - <widget class="QFrame" name="colorframe" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="frameShape" > - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Sunken</enum> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QPushButton" name="addToPalette" > - <property name="text" > - <string>add to palette</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QGroupBox" name="colorPalette" > - <property name="focusPolicy" > - <enum>Qt::NoFocus</enum> - </property> - <property name="title" > - <string>Palette</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="3" column="3" > - <widget class="QToolButton" name="palette15" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="3" column="2" > - <widget class="QToolButton" name="palette14" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="2" column="3" > - <widget class="QToolButton" name="palette11" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="2" column="2" > - <widget class="QToolButton" name="palette10" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="3" > - <widget class="QToolButton" name="palette7" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="2" > - <widget class="QToolButton" name="palette6" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="3" column="1" > - <widget class="QToolButton" name="palette13" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="2" column="1" > - <widget class="QToolButton" name="palette9" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QToolButton" name="palette5" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QToolButton" name="palette12" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QToolButton" name="palette8" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QToolButton" name="palette4" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="3" > - <widget class="QToolButton" name="palette3" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="QToolButton" name="palette2" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QToolButton" name="palette1" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QToolButton" name="palette0" > - <property name="text" > - <string/> - </property> - <property name="checkable" > - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item rowspan="5" row="0" column="0" > - <widget class="QTreeWidget" name="itemList" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>1</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="rootIsDecorated" > - <bool>true</bool> - </property> - <column> - <property name="text" > - <string>Items</string> - </property> - </column> - </widget> - </item> - <item row="4" column="1" colspan="2" > - <layout class="QHBoxLayout" > + </widget> + <widget class="QWidget" name="tab_12" > + <attribute name="title" > + <string>Fonts/Style</string> + </attribute> + <layout class="QVBoxLayout" > <property name="margin" > - <number>0</number> + <number>9</number> </property> <property name="spacing" > <number>6</number> </property> <item> - <widget class="QLabel" name="textLabel6_2" > - <property name="text" > - <string>V</string> - </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QSlider" name="vslider" > - <property name="maximum" > - <number>255</number> + <widget class="QGroupBox" name="GroupBox18_3" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - <property name="orientation" > - <enum>Qt::Horizontal</enum> + <property name="title" > + <string>QT Theme</string> </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_12" > - <attribute name="title" > - <string>Style/Fonts</string> - </attribute> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QGroupBox" name="GroupBox18_3" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>5</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title" > - <string>QT Theme</string> - </property> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>11</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <layout class="QHBoxLayout" > + <layout class="QVBoxLayout" > <property name="margin" > - <number>0</number> + <number>11</number> </property> <property name="spacing" > <number>6</number> </property> <item> - <widget class="QComboBox" name="themeComboBox" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>1</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> </property> <item> - <property name="text" > - <string>Windows</string> - </property> - </item> - <item> - <property name="text" > - <string>MusE</string> - </property> - </item> - <item> - <property name="text" > - <string>Metal</string> - </property> - </item> - <item> - <property name="text" > - <string>Norwegian Wood</string> - </property> - </item> - <item> - <property name="text" > - <string>Platinum</string> - </property> - </item> - <item> - <property name="text" > - <string>CDE</string> - </property> + <widget class="QComboBox" name="themeComboBox" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text" > + <string>Windows</string> + </property> + </item> + <item> + <property name="text" > + <string>MusE</string> + </property> + </item> + <item> + <property name="text" > + <string>Metal</string> + </property> + </item> + <item> + <property name="text" > + <string>Norwegian Wood</string> + </property> + </item> + <item> + <property name="text" > + <string>Platinum</string> + </property> + </item> + <item> + <property name="text" > + <string>CDE</string> + </property> + </item> + <item> + <property name="text" > + <string>Motif</string> + </property> + </item> + <item> + <property name="text" > + <string>Motif Plus</string> + </property> + </item> + </widget> </item> <item> - <property name="text" > - <string>Motif</string> - </property> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>190</width> + <height>20</height> + </size> + </property> + </spacer> </item> - <item> - <property name="text" > - <string>Motif Plus</string> - </property> - </item> - </widget> + </layout> </item> <item> <spacer> <property name="orientation" > - <enum>Qt::Horizontal</enum> + <enum>Qt::Vertical</enum> </property> <property name="sizeType" > <enum>QSizePolicy::Expanding</enum> </property> <property name="sizeHint" > <size> - <width>190</width> - <height>20</height> + <width>20</width> + <height>40</height> </size> </property> </spacer> </item> </layout> - </item> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType" > - <enum>QSizePolicy::Expanding</enum> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox6_3" > + <property name="title" > + <string>Fonts</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>11</number> </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>40</height> - </size> + <property name="spacing" > + <number>2</number> </property> - </spacer> - </item> - </layout> + <item row="0" column="1" > + <widget class="QLabel" name="textLabel2_3" > + <property name="text" > + <string>Family</string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QLabel" name="TextLabel1_3" > + <property name="text" > + <string>Size</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="textLabel4_6" > + <property name="text" > + <string>Font 1</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="textLabel5_6" > + <property name="text" > + <string>Font 2</string> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="textLabel6_6" > + <property name="text" > + <string>Font 3</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="fontName0" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="fontName1" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QLineEdit" name="fontName2" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="4" column="1" > + <widget class="QLineEdit" name="fontName3" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="textLabel3_3" > + <property name="text" > + <string>Font 0</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QSpinBox" name="fontSize0" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QSpinBox" name="fontSize1" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="3" column="2" > + <widget class="QSpinBox" name="fontSize2" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="4" column="2" > + <widget class="QSpinBox" name="fontSize3" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="2" column="3" > + <widget class="QCheckBox" name="bold1" > + <property name="text" > + <string>Bold</string> + </property> + </widget> + </item> + <item row="3" column="3" > + <widget class="QCheckBox" name="bold2" > + <property name="text" > + <string>Bold</string> + </property> + </widget> + </item> + <item row="4" column="3" > + <widget class="QCheckBox" name="bold3" > + <property name="text" > + <string>Bold</string> + </property> + </widget> + </item> + <item row="1" column="3" > + <widget class="QCheckBox" name="bold0" > + <property name="text" > + <string>Bold</string> + </property> + </widget> + </item> + <item row="3" column="4" > + <widget class="QCheckBox" name="italic2" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item row="4" column="4" > + <widget class="QCheckBox" name="italic3" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item row="2" column="4" > + <widget class="QCheckBox" name="italic1" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item row="1" column="4" > + <widget class="QCheckBox" name="italic0" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item row="1" column="5" > + <widget class="QToolButton" name="fontBrowse0" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="2" column="5" > + <widget class="QToolButton" name="fontBrowse1" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="3" column="5" > + <widget class="QToolButton" name="fontBrowse2" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="4" column="5" > + <widget class="QToolButton" name="fontBrowse3" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="5" column="0" > + <widget class="QLabel" name="textLabel7_4" > + <property name="text" > + <string>Font 4</string> + </property> + </widget> + </item> + <item row="5" column="1" > + <widget class="QLineEdit" name="fontName4" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="6" column="0" > + <widget class="QLabel" name="textLabel7_5" > + <property name="text" > + <string>Font 5</string> + </property> + </widget> + </item> + <item row="6" column="1" > + <widget class="QLineEdit" name="fontName5" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="5" column="2" > + <widget class="QSpinBox" name="fontSize4" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="6" column="2" > + <widget class="QSpinBox" name="fontSize5" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="5" column="3" > + <widget class="QCheckBox" name="bold4" > + <property name="text" > + <string>Bold</string> + </property> + </widget> + </item> + <item row="6" column="3" > + <widget class="QCheckBox" name="bold5" > + <property name="text" > + <string>Bold</string> + </property> + </widget> + </item> + <item row="5" column="4" > + <widget class="QCheckBox" name="italic4" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item row="6" column="4" > + <widget class="QCheckBox" name="italic5" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item row="5" column="5" > + <widget class="QToolButton" name="fontBrowse4" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="6" column="5" > + <widget class="QToolButton" name="fontBrowse5" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>131</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="applyButton" > + <property name="text" > + <string>Apply</string> + </property> </widget> </item> <item> - <widget class="QGroupBox" name="GroupBox6_3" > - <property name="title" > - <string>Fonts</string> + <widget class="QPushButton" name="okButton" > + <property name="text" > + <string>OK</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>Cancel</string> </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>11</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item row="0" column="1" > - <widget class="QLabel" name="textLabel2_3" > - <property name="text" > - <string>Family</string> - </property> - </widget> - </item> - <item row="0" column="2" > - <widget class="QLabel" name="TextLabel1_3" > - <property name="text" > - <string>Size</string> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="textLabel4_6" > - <property name="text" > - <string>Font 1</string> - </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QLabel" name="textLabel5_6" > - <property name="text" > - <string>Font 2</string> - </property> - </widget> - </item> - <item row="4" column="0" > - <widget class="QLabel" name="textLabel6_6" > - <property name="text" > - <string>Font 3</string> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="fontName0" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="fontName1" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="3" column="1" > - <widget class="QLineEdit" name="fontName2" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="4" column="1" > - <widget class="QLineEdit" name="fontName3" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="textLabel3_3" > - <property name="text" > - <string>Font 0</string> - </property> - </widget> - </item> - <item row="1" column="2" > - <widget class="QSpinBox" name="fontSize0" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="2" column="2" > - <widget class="QSpinBox" name="fontSize1" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="3" column="2" > - <widget class="QSpinBox" name="fontSize2" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="4" column="2" > - <widget class="QSpinBox" name="fontSize3" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="2" column="3" > - <widget class="QCheckBox" name="bold1" > - <property name="text" > - <string>Bold</string> - </property> - </widget> - </item> - <item row="3" column="3" > - <widget class="QCheckBox" name="bold2" > - <property name="text" > - <string>Bold</string> - </property> - </widget> - </item> - <item row="4" column="3" > - <widget class="QCheckBox" name="bold3" > - <property name="text" > - <string>Bold</string> - </property> - </widget> - </item> - <item row="1" column="3" > - <widget class="QCheckBox" name="bold0" > - <property name="text" > - <string>Bold</string> - </property> - </widget> - </item> - <item row="3" column="4" > - <widget class="QCheckBox" name="italic2" > - <property name="text" > - <string>Italic</string> - </property> - </widget> - </item> - <item row="4" column="4" > - <widget class="QCheckBox" name="italic3" > - <property name="text" > - <string>Italic</string> - </property> - </widget> - </item> - <item row="2" column="4" > - <widget class="QCheckBox" name="italic1" > - <property name="text" > - <string>Italic</string> - </property> - </widget> - </item> - <item row="1" column="4" > - <widget class="QCheckBox" name="italic0" > - <property name="text" > - <string>Italic</string> - </property> - </widget> - </item> - <item row="1" column="5" > - <widget class="QToolButton" name="fontBrowse0" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - <item row="2" column="5" > - <widget class="QToolButton" name="fontBrowse1" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - <item row="3" column="5" > - <widget class="QToolButton" name="fontBrowse2" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - <item row="4" column="5" > - <widget class="QToolButton" name="fontBrowse3" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - <item row="5" column="0" > - <widget class="QLabel" name="textLabel7_4" > - <property name="text" > - <string>Font 4</string> - </property> - </widget> - </item> - <item row="5" column="1" > - <widget class="QLineEdit" name="fontName4" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="6" column="0" > - <widget class="QLabel" name="textLabel7_5" > - <property name="text" > - <string>Font 5</string> - </property> - </widget> - </item> - <item row="6" column="1" > - <widget class="QLineEdit" name="fontName5" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="5" column="2" > - <widget class="QSpinBox" name="fontSize4" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="6" column="2" > - <widget class="QSpinBox" name="fontSize5" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="5" column="3" > - <widget class="QCheckBox" name="bold4" > - <property name="text" > - <string>Bold</string> - </property> - </widget> - </item> - <item row="6" column="3" > - <widget class="QCheckBox" name="bold5" > - <property name="text" > - <string>Bold</string> - </property> - </widget> - </item> - <item row="5" column="4" > - <widget class="QCheckBox" name="italic4" > - <property name="text" > - <string>Italic</string> - </property> - </widget> - </item> - <item row="6" column="4" > - <widget class="QCheckBox" name="italic5" > - <property name="text" > - <string>Italic</string> - </property> - </widget> - </item> - <item row="5" column="5" > - <widget class="QToolButton" name="fontBrowse4" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - <item row="6" column="5" > - <widget class="QToolButton" name="fontBrowse5" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>1</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - </layout> </widget> </item> </layout> - </widget> - </widget> - <widget class="QWidget" name="" > - <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" > - <size> - <width>131</width> - <height>31</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="applyButton" > - <property name="text" > - <string>Apply</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="okButton" > - <property name="text" > - <string>OK</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="cancelButton" > - <property name="text" > - <string>Cancel</string> - </property> - </widget> - </item> - </layout> - </widget> + </item> + </layout> </widget> <pixmapfunction></pixmapfunction> <customwidgets> <customwidget> - <class>RecordButton</class> - <extends>QToolButton</extends> - <header>recordbutton.h</header> - <container>0</container> - <pixmap></pixmap> - </customwidget> - <customwidget> <class>GreendotButton</class> <extends>QToolButton</extends> <header>greendotbutton.h</header> @@ -2298,6 +2327,13 @@ <container>0</container> <pixmap></pixmap> </customwidget> + <customwidget> + <class>RecordButton</class> + <extends>QToolButton</extends> + <header>recordbutton.h</header> + <container>0</container> + <pixmap></pixmap> + </customwidget> </customwidgets> <resources/> <connections> diff --git a/muse/muse/projectdialog.cpp b/muse/muse/projectdialog.cpp new file mode 100644 index 00000000..95108be1 --- /dev/null +++ b/muse/muse/projectdialog.cpp @@ -0,0 +1,143 @@ +//============================================================================= +// MusE +// Linux Music Editor +// $Id:$ +// +// Copyright (C) 2002-2006 by Werner Schweer and others +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2. +// +// 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., 675 Mass Ave, Cambridge, MA 02139, USA. +//============================================================================= + +#include "projectdialog.h" +#include "gconfig.h" +#include "song.h" + +//--------------------------------------------------------- +// ProjectDialog +//--------------------------------------------------------- + +ProjectDialog::ProjectDialog(QWidget* parent) + : QDialog(parent) + { + setupUi(this); + projectTree->setSelectionBehavior(QAbstractItemView::SelectRows); + projectTree->setSelectionMode(QAbstractItemView::SingleSelection); + QDir pd(QDir::homePath() + "/" + config.projectPath); + QStringList el = pd.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); + QTreeWidgetItem* current = 0; + foreach (QString s, el) { + QFile pf(QDir::homePath() + "/" + config.projectPath + "/" + + s + "/" + s + ".med"); + if (pf.exists()) { + QTreeWidgetItem* pi = new QTreeWidgetItem; + pi->setText(0, s); + projectTree->addTopLevelItem(pi); + if (s == song->projectName()) + current = pi; + } + } + connect(projectTree, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + SLOT(currentChanged(QTreeWidgetItem*, QTreeWidgetItem*))); + connect(projectTree, + SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), + SLOT(accept())); + connect(projectName, + SIGNAL(textEdited(const QString&)), + SLOT(projectNameEdited(const QString&))); + + if (current) + projectTree->setCurrentItem(current); + else + currentChanged(0, 0); + } + +//--------------------------------------------------------- +// currentChanged +//--------------------------------------------------------- + +void ProjectDialog::currentChanged(QTreeWidgetItem* item, QTreeWidgetItem*) + { + bool enable = item != 0; + createdDate->setEnabled(enable); + modifiedDate->setEnabled(enable); + comment->setEnabled(enable); + length->setEnabled(enable); + + if (!enable) + return; + + projectName->setText(item->text(0)); + QFileInfo pf(QDir::homePath() + "/" + config.projectPath + "/" + + item->text(0) + "/" + item->text(0) + ".med"); + createdDate->setDateTime(pf.created()); + modifiedDate->setDateTime(pf.lastModified()); + + QTime time(0, 0, 0); + + QFile f(pf.filePath()); + QDomDocument doc; + int line, column; + QString err; + if (!doc.setContent(&f, false, &err, &line, &column)) { + QString col, ln, error; + col.setNum(column); + ln.setNum(line); + error = err + "\n at line: " + ln + " col: " + col; + printf("error reading med file: %s\n", error.toLatin1().data()); + return; + } + for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "muse") { + QString sversion = e.attribute("version", "1.0"); + int major=0, minor=0; + sscanf(sversion.toLatin1().data(), "%d.%d", &major, &minor); + int version = major << 8 + minor; + if (version >= 0x200) { + for (QDomNode n1 = node.firstChild(); !n1.isNull(); n1 = n1.nextSibling()) { + QDomElement e = n1.toElement(); + if (e.tagName() == "song") { + for (QDomNode n2 = n1.firstChild(); !n2.isNull(); n2 = n2.nextSibling()) { + QDomElement e = n2.toElement(); + QString tag(e.tagName()); + QString s(e.text()); + if (tag == "comment") + comment->setPlainText(s); + else if (tag == "LenInSec") { + int sec = s.toInt(); + time = time.addSecs(sec); + } + } + } + } + } + } + } + length->setTime(time); + } + +//--------------------------------------------------------- +// projectNameEdited +//--------------------------------------------------------- + +void ProjectDialog::projectNameEdited(const QString&) + { + QTreeWidgetItem* item = projectTree->currentItem(); + if (item) + projectTree->setItemSelected(item, false); + projectTree->setCurrentItem(0); + } + diff --git a/muse/muse/projectdialog.h b/muse/muse/projectdialog.h new file mode 100644 index 00000000..c0ddfee9 --- /dev/null +++ b/muse/muse/projectdialog.h @@ -0,0 +1,43 @@ +//============================================================================= +// MusE +// Linux Music Editor +// $Id:$ +// +// Copyright (C) 2002-2006 by Werner Schweer and others +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2. +// +// 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., 675 Mass Ave, Cambridge, MA 02139, USA. +//============================================================================= + +#ifndef __PROJECT_DIALOG_H__ +#define __PROJECT_DIALOG_H__ + +#include "ui_projectdialog.h" + +//--------------------------------------------------------- +// ProjectDialog +//--------------------------------------------------------- + +class ProjectDialog : public QDialog, public Ui_ProjectDialogBase { + Q_OBJECT + + private slots: + void currentChanged(QTreeWidgetItem*, QTreeWidgetItem*); + void projectNameEdited(const QString&); + + public: + ProjectDialog(QWidget* parent = 0); + QString project() const { return projectName->text(); } + }; + +#endif + diff --git a/muse/muse/projectdialog.ui b/muse/muse/projectdialog.ui new file mode 100644 index 00000000..006db8cc --- /dev/null +++ b/muse/muse/projectdialog.ui @@ -0,0 +1,206 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>ProjectDialogBase</class> + <widget class="QDialog" name="ProjectDialogBase" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>574</width> + <height>385</height> + </rect> + </property> + <property name="windowTitle" > + <string>MusE: Select Project</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTreeWidget" name="projectTree" > + <column> + <property name="text" > + <string>Project</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Properties</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>3</number> + </property> + <item row="0" column="1" > + <widget class="QDateEdit" name="createdDate" > + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QDateEdit" name="modifiedDate" > + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QTimeEdit" name="length" > + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Length:</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_5" > + <property name="text" > + <string>Comment:</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Modified:</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Created:</string> + </property> + </widget> + </item> + <item row="4" column="0" colspan="2" > + <widget class="QTextEdit" name="comment" /> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Project:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="projectName" /> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>131</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okButton" > + <property name="text" > + <string>OK</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections> + <connection> + <sender>okButton</sender> + <signal>clicked()</signal> + <receiver>ProjectDialogBase</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>278</x> + <y>253</y> + </hint> + <hint type="destinationlabel" > + <x>96</x> + <y>254</y> + </hint> + </hints> + </connection> + <connection> + <sender>cancelButton</sender> + <signal>clicked()</signal> + <receiver>ProjectDialogBase</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>369</x> + <y>253</y> + </hint> + <hint type="destinationlabel" > + <x>179</x> + <y>282</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/muse/muse/song.cpp b/muse/muse/song.cpp index 287bf812..47965f43 100644 --- a/muse/muse/song.cpp +++ b/muse/muse/song.cpp @@ -39,6 +39,7 @@ #include "midiplugin.h" #include "midirc.h" #include "part.h" +#include "conf.h" Song* song; @@ -2353,3 +2354,124 @@ bool Song::trackExists(Track* t) const } return false; } + +//--------------------------------------------------------- +// projectDirectory +//--------------------------------------------------------- + +QString Song::projectDirectory() const + { + return QDir::homePath() + "/" + config.projectPath + "/" + _projectName; + } + +//--------------------------------------------------------- +// projectName +//--------------------------------------------------------- + +QString Song::projectName() const + { + return _projectName; + } + +//--------------------------------------------------------- +// setProjectName +//--------------------------------------------------------- + +void Song::setProjectName(const QString& s) + { + _projectName = s; + } + +//--------------------------------------------------------- +// load +//--------------------------------------------------------- + +void Song::load() + { + clear(false); + + QString s = projectDirectory() + "/" + _projectName + ".med"; + + QFile f(s); + if (f.open(QIODevice::ReadOnly)) { + int rv = read(&f); + f.close(); + if (rv) { + QMessageBox::critical(0, QString("MusE"), + tr("File read error")); + return; + } + } + dirty = false; + } + +//--------------------------------------------------------- +// read +//--------------------------------------------------------- + +bool Song::read(QFile* qf) + { + QDomDocument doc; + + int line, column; + QString err; + if (!doc.setContent(qf, false, &err, &line, &column)) { + QString col, ln, error; + col.setNum(column); + ln.setNum(line); + error = err + "\n at line: " + ln + " col: " + col; + printf("error reading med file: %s\n", error.toLatin1().data()); + return true; + } + for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "muse") { + QString sversion = e.attribute("version", "1.0"); + int major=0, minor=0; + sscanf(sversion.toLatin1().data(), "%d.%d", &major, &minor); + int version = major << 8 + minor; + if (version >= 0x200) + read20(node.firstChild()); + else if (version == 0x100) + read10(node.firstChild()); + else + printf("unsupported *.med file version %s\n", sversion.toLatin1().data()); + } + else + printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); + } + return false; + } + +//--------------------------------------------------------- +// read10 +//--------------------------------------------------------- + +void Song::read10(QDomNode) + { + printf("reading type 1.0 *.med files not implemented\n"); + } + +//--------------------------------------------------------- +// read20 +//--------------------------------------------------------- + +void Song::read20(QDomNode node) + { + for (; !node.isNull(); node = node.nextSibling()) { + QDomElement e = node.toElement(); + if (e.isNull()) + continue; + if (e.tagName() == "configuration") + readConfiguration(node.firstChild()); + else if (e.tagName() == "song") + read(node.firstChild()); + else if (e.tagName() == "toplevels") + muse->readToplevels(node.firstChild()); + else + printf("MusE:read20(): unknown tag %s\n", e.tagName().toLatin1().data()); + } + } + diff --git a/muse/muse/song.h b/muse/muse/song.h index 0ff78413..2317ae6d 100644 --- a/muse/muse/song.h +++ b/muse/muse/song.h @@ -86,6 +86,9 @@ class Song : public QObject { MARKER_TICK, MARKER_LOCK }; private: + QString _projectName; + QString _comment; + MidiFifo eventFifo; int updateFlags; @@ -126,6 +129,66 @@ class Song : public QObject { int _globalPitchShift; void readMarker(QDomNode); + public slots: + void beat(); + + void undo(); + void redo(); + + void setTempo(int t); + void setSig(const AL::TimeSignature&); + + void setMasterFlag(bool flag); + void setLoop(bool f); + void setRecord(bool f); + void setPlay(bool f); + void setStop(bool); + void forward(); + void rewindStart(); + void rewind(); + void setPunchin(bool f); + void setPunchout(bool f); + void setClick(bool val); + void setQuantize(bool val); + void panic(); + void seqSignal(int fd); + Track* addTrack(QAction*); + void setMeasureLen(int l); + void changePart(Part*, unsigned, unsigned); + void createLRPart(Track* track); + void setTickPos(int, unsigned); + + void setPos(int, const AL::Pos&); + void setPos(int, const AL::Pos&, bool sig, bool isSeek = true, + bool adjustScrollbar = false); + + signals: + void songChanged(int); + void posChanged(int, const AL::Pos&, bool); + void loopChanged(bool); + void recordChanged(bool); + void playChanged(bool); + void punchinChanged(bool); + void punchoutChanged(bool); + void clickChanged(bool); + void quantizeChanged(bool); + void markerChanged(int); + void midiPortsChanged(); + void midiEvent(const MidiEvent&); + void trackAdded(Track*, int idx); + void trackRemoved(Track*); + void lenChanged(const AL::Pos&); + void measureLenChanged(int); + + void recordChanged(Track*,bool); + void muteChanged(Track*,bool); + void soloChanged(Track*,bool); + void offChanged(Track*,bool); + void autoReadChanged(Track*,bool); + void autoWriteChanged(Track*,bool); + void trackSelectionChanged(Track*); + void tempoChanged(); + public: Song(); ~Song(); @@ -332,65 +395,16 @@ class Song : public QObject { void setSolo(Track*,bool); void setOff(Track*,bool); - public slots: - void beat(); - - void undo(); - void redo(); - - void setTempo(int t); - void setSig(const AL::TimeSignature&); - - void setMasterFlag(bool flag); - void setLoop(bool f); - void setRecord(bool f); - void setPlay(bool f); - void setStop(bool); - void forward(); - void rewindStart(); - void rewind(); - void setPunchin(bool f); - void setPunchout(bool f); - void setClick(bool val); - void setQuantize(bool val); - void panic(); - void seqSignal(int fd); - Track* addTrack(QAction*); - void setMeasureLen(int l); - void changePart(Part*, unsigned, unsigned); - void createLRPart(Track* track); - void setTickPos(int, unsigned); + QString projectDirectory() const; + QString projectName() const; + void setProjectName(const QString&); + QString comment() const { return _comment; } + void setComment(const QString& s) { _comment = s; } - void setPos(int, const AL::Pos&); - void setPos(int, const AL::Pos&, bool sig, bool isSeek = true, - bool adjustScrollbar = false); - - signals: - void songChanged(int); - void posChanged(int, const AL::Pos&, bool); - void loopChanged(bool); - void recordChanged(bool); - void playChanged(bool); - void punchinChanged(bool); - void punchoutChanged(bool); - void clickChanged(bool); - void quantizeChanged(bool); - void markerChanged(int); - void midiPortsChanged(); - void midiEvent(const MidiEvent&); - void trackAdded(Track*, int idx); - void trackRemoved(Track*); - void lenChanged(const AL::Pos&); - void measureLenChanged(int); - - void recordChanged(Track*,bool); - void muteChanged(Track*,bool); - void soloChanged(Track*,bool); - void offChanged(Track*,bool); - void autoReadChanged(Track*,bool); - void autoWriteChanged(Track*,bool); - void trackSelectionChanged(Track*); - void tempoChanged(); + void load(); + bool read(QFile* qf); + void read20(QDomNode node); + void read10(QDomNode); }; extern Song* song; diff --git a/muse/muse/songfile.cpp b/muse/muse/songfile.cpp index ba6409d1..3e62ccaf 100644 --- a/muse/muse/songfile.cpp +++ b/muse/muse/songfile.cpp @@ -250,6 +250,8 @@ void Song::read(QDomNode node) PianoRoll::readConfiguration(node); else if (tag == "DrumEdit") DrumEdit::readConfiguration(node); + else if (tag == "comment") + _comment = e.text(); else printf("MusE:Song: unknown tag %s\n", tag.toLatin1().data()); } @@ -263,9 +265,10 @@ void Song::read(QDomNode node) void Song::write(Xml& xml) const { xml.tag("song"); - xml.intTag("cpos", song->cpos()); - xml.intTag("rpos", song->rpos()); - xml.intTag("lpos", song->lpos()); + xml.strTag("comment", _comment); + xml.intTag("cpos", cpos()); + xml.intTag("rpos", rpos()); + xml.intTag("lpos", lpos()); xml.intTag("master", _masterFlag); if (loopFlag) xml.intTag("loop", loopFlag); @@ -354,74 +357,3 @@ void MusE::write(Xml& xml) const xml.etag("muse"); } -//--------------------------------------------------------- -// read -// read song -//--------------------------------------------------------- - -bool MusE::read(QFile* qf, bool /*skipConfig*/) - { - QDomDocument doc; - - int line, column; - QString err; - if (!doc.setContent(qf, false, &err, &line, &column)) { - QString col, ln, error; - col.setNum(column); - ln.setNum(line); - error = err + "\n at line: " + ln + " col: " + col; - printf("error reading med file: %s\n", error.toLatin1().data()); - return true; - } - for (QDomNode node = doc.documentElement(); !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "muse") { - QString sversion = e.attribute("version", "1.0"); - int major=0, minor=0; - sscanf(sversion.toLatin1().data(), "%d.%d", &major, &minor); - version = major << 8 + minor; - if (version >= 0x200) - read20(node.firstChild()); - else if (version == 0x100) - read10(node.firstChild()); - else - printf("unsupported *.med file version %s\n", sversion.toLatin1().data()); - } - else - printf("MusE: %s not supported\n", e.tagName().toLatin1().data()); - } - return false; - } - -//--------------------------------------------------------- -// read10 -//--------------------------------------------------------- - -void MusE::read10(QDomNode) - { - printf("reading type 1.0 *.med files not implemented\n"); - } - -//--------------------------------------------------------- -// read20 -//--------------------------------------------------------- - -void MusE::read20(QDomNode node) - { - for (; !node.isNull(); node = node.nextSibling()) { - QDomElement e = node.toElement(); - if (e.isNull()) - continue; - if (e.tagName() == "configuration") - readConfiguration(node.firstChild()); - else if (e.tagName() == "song") - song->read(node.firstChild()); - else if (e.tagName() == "toplevels") - readToplevels(node.firstChild()); - else - printf("MusE:read20(): unknown tag %s\n", e.tagName().toLatin1().data()); - } - } - diff --git a/muse/muse/synth.cpp b/muse/muse/synth.cpp index fecd5084..06e798a0 100644 --- a/muse/muse/synth.cpp +++ b/muse/muse/synth.cpp @@ -345,7 +345,7 @@ void initMidiSynth() synthis.push_back(new MessSynth(&fi)); } if (debugMsg) - printf("%ld soft synth found\n", synthis.size()); + printf("%zd soft synth found\n", synthis.size()); } } diff --git a/muse/muse/wave.cpp b/muse/muse/wave.cpp index cb0d7d49..4bd0b262 100644 --- a/muse/muse/wave.cpp +++ b/muse/muse/wave.cpp @@ -465,18 +465,8 @@ QString SndFile::strerror() const SndFile* SndFile::getWave(const QString& inName, bool writeFlag) { - QString name = inName; + QString name = song->projectDirectory() + "/" + inName; - if (QFileInfo(name).isRelative()) { - name = museProject + QString("/") + name; - } - else { - if (!QFile::exists(name)) { - if (QFile::exists(museProject + QString("/") + name)) { - name = museProject + QString("/") + name; - } - } - } // printf("=====%s %s\n", inName.toLatin1().data(), name.toLatin1().data()); SndFile* f = sndFiles.value(name); if (f == 0) { @@ -769,7 +759,7 @@ SndFile* SndFile::createRecFile(int channels) QString fileName("%1/rec%2.wav"); QFileInfo fi; do { - fi.setFile(fileName.arg(museProject).arg(recFileNumber)); + fi.setFile(fileName.arg(song->projectDirectory()).arg(recFileNumber)); ++recFileNumber; } while (fi.exists()); SndFile* recFile = new SndFile(fi.absoluteFilePath()); diff --git a/muse/muse/waveedit/waveview.cpp b/muse/muse/waveedit/waveview.cpp index 84a187ad..d01e8148 100644 --- a/muse/muse/waveedit/waveview.cpp +++ b/muse/muse/waveedit/waveview.cpp @@ -761,11 +761,11 @@ void WaveView::editExternal(unsigned file_format, unsigned file_samplerate, unsi bool WaveView::getUniqueTmpfileName(QString& newFilename) { // Check if tmp-directory exists under project path - QString tmpWavDir = museProject + "/tmp_musewav"; //!@TODO: Don't hardcode like this + QString tmpWavDir = song->projectDirectory() + "/tmp_musewav"; //!@TODO: Don't hardcode like this QFileInfo tmpdirfi(tmpWavDir); if (!tmpdirfi.isDir()) { // Try to create a tmpdir - QDir projdir(museProject); + QDir projdir(song->projectDirectory()); if (!projdir.mkdir("tmp_musewav")) { printf("Could not create undo dir!\n"); return false; diff --git a/muse/muse/waveevent.cpp b/muse/muse/waveevent.cpp index eee863c2..a15418cc 100644 --- a/muse/muse/waveevent.cpp +++ b/muse/muse/waveevent.cpp @@ -104,16 +104,7 @@ void WaveEventBase::write(Xml& xml, const Pos& offset) const // wpos.setTick(wpos.tick() + offset); wpos.write(xml, "poslen"); xml.intTag("frame", _spos); // offset in wave file - - // - // waves in the project dirctory are stored - // with relative path name, others with absolute path - // - QString path = f.finfo()->absolutePath(); - if (path == museProject) - xml.strTag("file", f.finfo()->fileName()); - else - xml.strTag("file", f.finfo()->filePath()); + xml.strTag("file", f.finfo()->fileName()); xml.etag("event"); } |