From ac7c404804691fcf7f9b36f038025ac486ffea6a Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Tue, 16 Aug 2011 17:03:24 +0000 Subject: half-way working version toolbar state can be saved and restored, though this is still a bit buggy --- muse2/muse/arranger/arrangerview.cpp | 42 ++++++++++++++++++++++++++++++++- muse2/muse/arranger/arrangerview.h | 2 ++ muse2/muse/cliplist/cliplist.cpp | 39 +++++++++++++++++++++++++++++++ muse2/muse/cliplist/cliplist.h | 2 ++ muse2/muse/conf.cpp | 20 ++++++++++++++++ muse2/muse/liste/listedit.cpp | 39 +++++++++++++++++++++++++++++++ muse2/muse/liste/listedit.h | 2 ++ muse2/muse/marker/markerview.cpp | 45 +++++++++++++++++++++++++++++++++++- muse2/muse/marker/markerview.h | 2 ++ muse2/muse/master/lmaster.cpp | 42 +++++++++++++++++++++++++++++++++ muse2/muse/master/lmaster.h | 17 ++++++-------- muse2/muse/midiedit/scoreedit.cpp | 4 +++- muse2/muse/songfile.cpp | 11 +++++++-- 13 files changed, 252 insertions(+), 15 deletions(-) (limited to 'muse2') diff --git a/muse2/muse/arranger/arrangerview.cpp b/muse2/muse/arranger/arrangerview.cpp index b6a48608..ba2c5651 100644 --- a/muse2/muse/arranger/arrangerview.cpp +++ b/muse2/muse/arranger/arrangerview.cpp @@ -595,7 +595,6 @@ void ArrangerView::writeStatus(int level, Xml& xml) const { xml.tag(level++, "arrangerview"); TopWin::writeStatus(level, xml); - xml.intTag(level, "tool", editTools->curTool()); xml.tag(level, "/arrangerview"); } @@ -614,6 +613,8 @@ void ArrangerView::readStatus(Xml& xml) case Xml::TagStart: if (tag == "tool") editTools->set(xml.parseInt()); + else if (tag == "topwin") + TopWin::readStatus(xml); else xml.unknown("ArrangerView"); break; @@ -628,6 +629,45 @@ void ArrangerView::readStatus(Xml& xml) } } +//--------------------------------------------------------- +// readConfiguration +//--------------------------------------------------------- + +void ArrangerView::readConfiguration(Xml& xml) + { + for (;;) { + Xml::Token token = xml.parse(); + const QString& tag = xml.s1(); + switch (token) { + case Xml::Error: + case Xml::End: + return; + case Xml::TagStart: + if (tag == "topwin") + TopWin::readConfiguration(ARRANGER, xml); + else + xml.unknown("ArrangerView"); + break; + case Xml::TagEnd: + if (tag == "arranger") + return; + default: + break; + } + } + } + +//--------------------------------------------------------- +// writeConfiguration +//--------------------------------------------------------- + +void ArrangerView::writeConfiguration(int level, Xml& xml) + { + xml.tag(level++, "arranger"); + TopWin::writeConfiguration(ARRANGER, level, xml); + xml.tag(level, "/arranger"); + } + void ArrangerView::cmd(int cmd) { diff --git a/muse2/muse/arranger/arrangerview.h b/muse2/muse/arranger/arrangerview.h index dc4aa638..1666bb6c 100644 --- a/muse2/muse/arranger/arrangerview.h +++ b/muse2/muse/arranger/arrangerview.h @@ -111,6 +111,8 @@ class ArrangerView : public TopWin void writeStatus(int level, Xml& xml) const; void readStatus(Xml& xml); + static void readConfiguration(Xml&); + static void writeConfiguration(int, Xml&); void populateAddTrack(); diff --git a/muse2/muse/cliplist/cliplist.cpp b/muse2/muse/cliplist/cliplist.cpp index e49b315d..1172919a 100644 --- a/muse2/muse/cliplist/cliplist.cpp +++ b/muse2/muse/cliplist/cliplist.cpp @@ -226,6 +226,45 @@ void ClipListEdit::writeStatus(int level, Xml& xml) const xml.etag(level, "cliplist"); } +//--------------------------------------------------------- +// readConfiguration +//--------------------------------------------------------- + +void ClipListEdit::readConfiguration(Xml& xml) + { + for (;;) { + Xml::Token token = xml.parse(); + const QString& tag = xml.s1(); + switch (token) { + case Xml::Error: + case Xml::End: + return; + case Xml::TagStart: + if (tag == "topwin") + TopWin::readConfiguration(CLIPLIST, xml); + else + xml.unknown("ClipListEdit"); + break; + case Xml::TagEnd: + if (tag == "cliplistedit") + return; + default: + break; + } + } + } + +//--------------------------------------------------------- +// writeConfiguration +//--------------------------------------------------------- + +void ClipListEdit::writeConfiguration(int level, Xml& xml) + { + xml.tag(level++, "cliplistedit"); + TopWin::writeConfiguration(CLIPLIST, level, xml); + xml.tag(level, "/cliplistedit"); + } + //--------------------------------------------------------- // startChanged //--------------------------------------------------------- diff --git a/muse2/muse/cliplist/cliplist.h b/muse2/muse/cliplist/cliplist.h index e452478a..1932e975 100644 --- a/muse2/muse/cliplist/cliplist.h +++ b/muse2/muse/cliplist/cliplist.h @@ -61,6 +61,8 @@ class ClipListEdit : public TopWin { ~ClipListEdit(); virtual void readStatus(Xml&); virtual void writeStatus(int, Xml&) const; + static void readConfiguration(Xml&); + static void writeConfiguration(int, Xml&); }; #endif diff --git a/muse2/muse/conf.cpp b/muse2/muse/conf.cpp index 89cdd04d..7451e22c 100644 --- a/muse2/muse/conf.cpp +++ b/muse2/muse/conf.cpp @@ -19,6 +19,11 @@ #include "pianoroll.h" #include "scoreedit.h" #include "master/masteredit.h" +#include "listedit.h" +#include "cliplist/cliplist.h" +#include "arrangerview.h" +#include "marker/markerview.h" +#include "master/lmaster.h" ///#include "transport.h" #include "bigtime.h" #include "arranger.h" @@ -894,6 +899,16 @@ void readConfiguration(Xml& xml, bool readOnlySequencer) MasterEdit::readConfiguration(xml); else if (tag == "waveedit") WaveEdit::readConfiguration(xml); + else if (tag == "listedit") + ListEdit::readConfiguration(xml); + else if (tag == "cliplistedit") + ClipListEdit::readConfiguration(xml); + else if (tag == "lmaster") + LMaster::readConfiguration(xml); + else if (tag == "marker") + MarkerView::readConfiguration(xml); + else if (tag == "arranger") + ArrangerView::readConfiguration(xml); else if (tag == "dialogs") read_function_dialog_config(xml); else if (tag == "shortcuts") @@ -1338,6 +1353,11 @@ void MusE::writeGlobalConfiguration(int level, Xml& xml) const ScoreEdit::write_configuration(level, xml); MasterEdit::writeConfiguration(level, xml); WaveEdit::writeConfiguration(level, xml); + ListEdit::writeConfiguration(level, xml); + ClipListEdit::writeConfiguration(level, xml); + LMaster::writeConfiguration(level, xml); + MarkerView::writeConfiguration(level, xml); + ArrangerView::writeConfiguration(level, xml); write_function_dialog_config(level, xml); diff --git a/muse2/muse/liste/listedit.cpp b/muse2/muse/liste/listedit.cpp index cd3d165e..d0a7d83c 100644 --- a/muse2/muse/liste/listedit.cpp +++ b/muse2/muse/liste/listedit.cpp @@ -826,6 +826,45 @@ void ListEdit::writeStatus(int level, Xml& xml) const xml.tag(level, "/listeditor"); } +//--------------------------------------------------------- +// readConfiguration +//--------------------------------------------------------- + +void ListEdit::readConfiguration(Xml& xml) + { + for (;;) { + Xml::Token token = xml.parse(); + const QString& tag = xml.s1(); + switch (token) { + case Xml::Error: + case Xml::End: + return; + case Xml::TagStart: + if (tag == "topwin") + TopWin::readConfiguration(LISTE, xml); + else + xml.unknown("ListEdit"); + break; + case Xml::TagEnd: + if (tag == "listedit") + return; + default: + break; + } + } + } + +//--------------------------------------------------------- +// writeConfiguration +//--------------------------------------------------------- + +void ListEdit::writeConfiguration(int level, Xml& xml) + { + xml.tag(level++, "listedit"); + TopWin::writeConfiguration(LISTE, level, xml); + xml.tag(level, "/listedit"); + } + //--------------------------------------------------------- // selectionChanged //--------------------------------------------------------- diff --git a/muse2/muse/liste/listedit.h b/muse2/muse/liste/listedit.h index 9e29035e..1b1a8ece 100644 --- a/muse2/muse/liste/listedit.h +++ b/muse2/muse/liste/listedit.h @@ -75,6 +75,8 @@ class ListEdit : public MidiEditor { ~ListEdit(); virtual void readStatus(Xml&); virtual void writeStatus(int, Xml&) const; + static void readConfiguration(Xml&); + static void writeConfiguration(int, Xml&); }; #endif diff --git a/muse2/muse/marker/markerview.cpp b/muse2/muse/marker/markerview.cpp index 3c0f2267..8def5714 100644 --- a/muse2/muse/marker/markerview.cpp +++ b/muse2/muse/marker/markerview.cpp @@ -312,7 +312,10 @@ void MarkerView::readStatus(Xml& xml) break; switch (token) { case Xml::TagStart: - xml.unknown("Marker"); + if (tag=="topwin") + TopWin::readStatus(xml); + else + xml.unknown("Marker"); break; case Xml::TagEnd: if (tag == "marker") @@ -330,6 +333,46 @@ void MarkerView::readStatus(Xml& xml) void MarkerView::writeStatus(int level, Xml& xml) const { xml.tag(level++, "marker"); + TopWin::writeStatus(level, xml); + xml.tag(level, "/marker"); + } + +//--------------------------------------------------------- +// readConfiguration +//--------------------------------------------------------- + +void MarkerView::readConfiguration(Xml& xml) + { + for (;;) { + Xml::Token token = xml.parse(); + const QString& tag = xml.s1(); + switch (token) { + case Xml::Error: + case Xml::End: + return; + case Xml::TagStart: + if (tag == "topwin") + TopWin::readConfiguration(MARKER, xml); + else + xml.unknown("MarkerView"); + break; + case Xml::TagEnd: + if (tag == "marker") + return; + default: + break; + } + } + } + +//--------------------------------------------------------- +// writeConfiguration +//--------------------------------------------------------- + +void MarkerView::writeConfiguration(int level, Xml& xml) + { + xml.tag(level++, "marker"); + TopWin::writeConfiguration(MARKER, level, xml); xml.tag(level, "/marker"); } diff --git a/muse2/muse/marker/markerview.h b/muse2/muse/marker/markerview.h index 94a6314e..bab0f6e3 100644 --- a/muse2/muse/marker/markerview.h +++ b/muse2/muse/marker/markerview.h @@ -85,6 +85,8 @@ class MarkerView : public TopWin { ~MarkerView(); virtual void readStatus(Xml&); virtual void writeStatus(int, Xml&) const; + static void readConfiguration(Xml&); + static void writeConfiguration(int, Xml&); void nextMarker(); void prevMarker(); }; diff --git a/muse2/muse/master/lmaster.cpp b/muse2/muse/master/lmaster.cpp index f434e99a..7f5e6f75 100644 --- a/muse2/muse/master/lmaster.cpp +++ b/muse2/muse/master/lmaster.cpp @@ -39,6 +39,7 @@ #define LMASTER_MSGBOX_STRING "MusE: List Editor" + //don't remove or insert new elements in keyStrs. //only renaming (keeping the semantic sense) is allowed! (flo( QStringList keyStrs = QStringList() @@ -89,6 +90,8 @@ QString keyToString(key_enum key) //flo return keyStrs[index]; } + + //--------------------------------------------------------- // closeEvent //--------------------------------------------------------- @@ -406,6 +409,45 @@ void LMaster::writeStatus(int level, Xml& xml) const xml.tag(level, "/lmaster"); } +//--------------------------------------------------------- +// readConfiguration +//--------------------------------------------------------- + +void LMaster::readConfiguration(Xml& xml) + { + for (;;) { + Xml::Token token = xml.parse(); + const QString& tag = xml.s1(); + switch (token) { + case Xml::Error: + case Xml::End: + return; + case Xml::TagStart: + if (tag == "topwin") + TopWin::readConfiguration(LMASTER, xml); + else + xml.unknown("LMaster"); + break; + case Xml::TagEnd: + if (tag == "lmaster") + return; + default: + break; + } + } + } + +//--------------------------------------------------------- +// writeConfiguration +//--------------------------------------------------------- + +void LMaster::writeConfiguration(int level, Xml& xml) + { + xml.tag(level++, "lmaster"); + TopWin::writeConfiguration(LMASTER, level, xml); + xml.tag(level, "/lmaster"); + } + //--------------------------------------------------------- // select //--------------------------------------------------------- diff --git a/muse2/muse/master/lmaster.h b/muse2/muse/master/lmaster.h index a64fd49d..d79fee4d 100644 --- a/muse2/muse/master/lmaster.h +++ b/muse2/muse/master/lmaster.h @@ -14,15 +14,10 @@ #include "tempo.h" #include "keyevent.h" ///#include "sig.h" -//#include "al/sig.h" +#include "al/sig.h" #include -namespace AL { - class SigEvent; - }; -using AL::SigEvent; - namespace Awl { class PosEdit; class SigEdit; @@ -97,12 +92,12 @@ class LMasterKeyEventItem : public LMasterLViewItem { class LMasterSigEventItem : public LMasterLViewItem { private: - const SigEvent* sigEvent; + const AL::SigEvent* sigEvent; public: - LMasterSigEventItem(QTreeWidget* parent, const SigEvent* s); + LMasterSigEventItem(QTreeWidget* parent, const AL::SigEvent* s); virtual LMASTER_LVTYPE getType() { return LMASTER_SIGEVENT; } - const SigEvent* getEvent() { return sigEvent; } + const AL::SigEvent* getEvent() { return sigEvent; } virtual unsigned tick() { return sigEvent->tick; } int z() { return sigEvent->sig.z; } int n() { return sigEvent->sig.n; } @@ -126,7 +121,7 @@ class LMaster : public MidiEditor { virtual void closeEvent(QCloseEvent*); void updateList(); void insertTempo(const TEvent*); - void insertSig(const SigEvent*); + void insertSig(const AL::SigEvent*); void insertKey(const KeyEvent&); LMasterLViewItem* getItemAtPos(unsigned tick, LMASTER_LVTYPE t); void initShortcuts(); @@ -164,6 +159,8 @@ class LMaster : public MidiEditor { ~LMaster(); virtual void readStatus(Xml&); virtual void writeStatus(int, Xml&) const; + static void readConfiguration(Xml&); + static void writeConfiguration(int, Xml&); LMasterLViewItem* getLastOfType(LMASTER_LVTYPE t); }; diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp index 4623bca7..29c25937 100644 --- a/muse2/muse/midiedit/scoreedit.cpp +++ b/muse2/muse/midiedit/scoreedit.cpp @@ -4449,7 +4449,9 @@ void staff_t::update_part_indices() * - do all signal connections work? * - are there any segfaults? * o remove that ugly "bool initalizing" stuff. it's probably unneeded (watch out for the FINDMICH message) - * o store window state for arranger, probably also for other stuff + * o store window state: does this really work? arranger seems to be buggy. maybe also marker etc? + * o always store marker, arranger etc state, not only when window shown! + * o setup for "share","don't share" etc. * * IMPORTANT TODO * o redo transport menu: offer "one beat" and "one bar" steps diff --git a/muse2/muse/songfile.cpp b/muse2/muse/songfile.cpp index d64fc6cd..fb279e92 100644 --- a/muse2/muse/songfile.cpp +++ b/muse2/muse/songfile.cpp @@ -1049,7 +1049,13 @@ void MusE::readToplevels(Xml& xml) } else if (tag == "marker") { showMarker(true); - toplevels.back()->readStatus(xml); + if (toplevels.back()->type()==TopWin::MARKER) + toplevels.back()->readStatus(xml); + } + else if (tag == "arrangerview") { + showArranger(true); + if (toplevels.back()->type()==TopWin::ARRANGER) + toplevels.back()->readStatus(xml); } else if (tag == "waveedit") { if(!pl->empty()) @@ -1061,7 +1067,8 @@ void MusE::readToplevels(Xml& xml) } else if (tag == "cliplist") { startClipList(true); - toplevels.back()->readStatus(xml); + if (toplevels.back()->type()==TopWin::CLIPLIST) + toplevels.back()->readStatus(xml); } else xml.unknown("MusE"); -- cgit v1.2.3