diff options
| author | Florian Jung <flo@windfisch.org> | 2011-08-16 16:27:54 +0000 | 
|---|---|---|
| committer | Florian Jung <flo@windfisch.org> | 2011-08-16 16:27:54 +0000 | 
| commit | 6b5e69ff5def2c8469657e33413bec84d815df9d (patch) | |
| tree | 71bf8eb1a0ae14c20529dc35b91b14e0b43a560a /muse2/muse | |
| parent | 23f3026199641b6e2a2af69e10353cbe304e5649 (diff) | |
this is only a backup commit
toolbar states are now saved also for shared toolbars
toolbar and window state saving is now handled in TopWin
TODO: finish list, cliplist, masterlist, marker, arranger
Diffstat (limited to 'muse2/muse')
| -rw-r--r-- | muse2/muse/app.cpp | 94 | ||||
| -rw-r--r-- | muse2/muse/app.h | 2 | ||||
| -rw-r--r-- | muse2/muse/arranger/arrangerview.cpp | 4 | ||||
| -rw-r--r-- | muse2/muse/cliplist/cliplist.cpp | 2 | ||||
| -rw-r--r-- | muse2/muse/cobject.cpp | 109 | ||||
| -rw-r--r-- | muse2/muse/cobject.h | 28 | ||||
| -rw-r--r-- | muse2/muse/liste/listedit.cpp | 1 | ||||
| -rw-r--r-- | muse2/muse/marker/markerview.cpp | 5 | ||||
| -rw-r--r-- | muse2/muse/master/lmaster.cpp | 1 | ||||
| -rw-r--r-- | muse2/muse/master/masteredit.cpp | 52 | ||||
| -rw-r--r-- | muse2/muse/master/masteredit.h | 6 | ||||
| -rw-r--r-- | muse2/muse/midiedit/drumedit.cpp | 59 | ||||
| -rw-r--r-- | muse2/muse/midiedit/drumedit.h | 6 | ||||
| -rw-r--r-- | muse2/muse/midiedit/pianoroll.cpp | 59 | ||||
| -rw-r--r-- | muse2/muse/midiedit/pianoroll.h | 6 | ||||
| -rw-r--r-- | muse2/muse/midiedit/scoreedit.cpp | 44 | ||||
| -rw-r--r-- | muse2/muse/midiedit/scoreedit.h | 6 | ||||
| -rw-r--r-- | muse2/muse/waveedit/waveedit.cpp | 60 | ||||
| -rw-r--r-- | muse2/muse/waveedit/waveedit.h | 5 | 
19 files changed, 217 insertions, 332 deletions
| diff --git a/muse2/muse/app.cpp b/muse2/muse/app.cpp index fe3b987e..d3ad0e64 100644 --- a/muse2/muse/app.cpp +++ b/muse2/muse/app.cpp @@ -1746,6 +1746,7 @@ void MusE::openInScoreEdit(ScoreEdit* destination, PartList* pl, bool allInOne)  	if (destination==NULL) // if no destination given, create a new one  	{        destination = new ScoreEdit(this, 0, arranger->cursorValue()); +      destination->shareToolsAndMenu(true); //FINDMICHJETZT        destination->show();        toplevels.push_back(destination);        connect(destination, SIGNAL(deleted(TopWin*)), SLOT(toplevelDeleted(TopWin*))); @@ -2018,7 +2019,7 @@ void MusE::toplevelDeleted(TopWin* tl)                          case TopWin::SCORE:                                mustUpdateScoreMenus=true; -                        case TopWin::LAST_ENTRY: //to avoid a warning +                        case TopWin::TOPLEVELTYPE_LAST_ENTRY: //to avoid a warning                            break;                          }                    toplevels.erase(i); @@ -2641,7 +2642,7 @@ again:                          tl->close();                          goto again; -                  case TopWin::LAST_ENTRY: //to avoid a warning +                  case TopWin::TOPLEVELTYPE_LAST_ENTRY: //to avoid a warning                      break;                    }              } @@ -2956,7 +2957,15 @@ void MusE::findUnusedWaveFiles()  void MusE::focusChanged(QWidget*, QWidget* now)  {    QWidget* ptr=now; + +  if (activeTopWin) +    activeTopWin->storeInitialState(); +  if (currentMenuSharingTopwin && (currentMenuSharingTopwin!=activeTopWin)) +    currentMenuSharingTopwin->storeInitialState(); + + +    while (ptr)    {      if ( (dynamic_cast<TopWin*>(ptr)!=0) || // *ptr is a TopWin or a derived class @@ -2966,21 +2975,6 @@ void MusE::focusChanged(QWidget*, QWidget* now)    }    // ptr is either NULL, this or the pointer to a TopWin -  /*if (ptr==this) FINDMICHJETZT -  { -    QMdiSubWindow* subwin=mdiArea->currentSubWindow(); -    if (subwin) -    { -      ptr=subwin->widget(); -      if (dynamic_cast<TopWin*>(ptr)==NULL) -      { -        printf("ERROR: THIS SHOULD NEVER HAPPEN: The currently active MdiSubWindow (%s) does not wrap a TopWin but a %s\n",subwin->windowTitle().toAscii().data(),typeid(*ptr).name()); -        ptr=NULL; -      } -    } -    else -      ptr=NULL; -  }*/    if (ptr!=this) // if the main win is selected, don't treat that as "none", but also don't handle it    {      TopWin* win=dynamic_cast<TopWin*>(ptr); @@ -2994,28 +2988,6 @@ void MusE::focusChanged(QWidget*, QWidget* now)    }  } -/* FINDMICHJETZT -void MusE::focusChanged(QWidget* old, QWidget* now) -{ -  if (now) -  { -    QWidget* ptr=now; -    while (ptr) -    { -      if (dynamic_cast<QMainWindow*>(ptr)!=0) break; -      ptr=dynamic_cast<QWidget*>(ptr->parent()); //in the unlikely case that ptr is a QObject, this returns NULL, which stops the loop -    } -     -    if (ptr) -      printf("focus changed to MainWin %p (%s)\n",ptr,ptr->windowTitle().toAscii().data()); -    else -      printf("focus changed to something which has no MainWin: %p (%s)\n",now, typeid(*now).name()); -  } -  else -    printf("focus lost\n"); -} -*/ -  void MusE::activeTopWinChangedSlot(TopWin* win)  { @@ -3026,19 +2998,6 @@ void MusE::activeTopWinChangedSlot(TopWin* win)      if (debugMsg) printf("  that's out of the MDI area\n");      menuBar()->setFocus(Qt::MenuBarFocusReason);    } -  if (win && false) //FINDMICHJETZT -  { -    if (win->isMdiWin()) -    { -      if (debugMsg) printf("  that's a mdiSubWin\n"); -    } -    else -    { -      if (debugMsg) printf("  that's a free floating window\n"); -      mdiArea->setActiveSubWindow(NULL); -      mdiArea->clearFocus(); -    } -  }    if (win && (win->sharesToolsAndMenu()))      setCurrentMenuSharingTopwin(win); @@ -3056,27 +3015,38 @@ void MusE::setCurrentMenuSharingTopwin(TopWin* win)    if (win!=currentMenuSharingTopwin)    { +    TopWin* previousMenuSharingTopwin = currentMenuSharingTopwin; +    currentMenuSharingTopwin = NULL; +          if (debugMsg) printf("MENU SHARING TOPWIN CHANGED to '%s' (%p)\n", win ? win->windowTitle().toAscii().data() : "<None>", win);      // empty our toolbars -    if (currentMenuSharingTopwin) +    if (previousMenuSharingTopwin)      {        for (list<QToolBar*>::iterator it = foreignToolbars.begin(); it!=foreignToolbars.end(); it++) -        if (*it) removeToolBar(*it); // this does not delete *it, which is good +        if (*it)  +        { +          if (debugMsg) printf("  removing sharer's toolbar '%s'\n", (*it)->windowTitle().toAscii().data()); +          removeToolBar(*it); // this does not delete *it, which is good +          (*it)->setParent(NULL); +        }        foreignToolbars.clear();      }      else      {        for (list<QToolBar*>::iterator it = optionalToolbars.begin(); it!=optionalToolbars.end(); it++) -        if (*it) removeToolBar(*it); // this does not delete *it, which is good +        if (*it)  +        { +          if (debugMsg) printf("  removing optional toolbar '%s'\n", (*it)->windowTitle().toAscii().data()); +          removeToolBar(*it); // this does not delete *it, which is good +          (*it)->setParent(NULL); +        }      }      //empty our menu      menuBar()->clear(); -     -    currentMenuSharingTopwin=win; -     +         @@ -3116,6 +3086,14 @@ void MusE::setCurrentMenuSharingTopwin(TopWin* win)      for (list<QMenu*>::iterator it = trailingMenus.begin(); it!=trailingMenus.end(); it++)        menuBar()->addMenu(*it); +       + +    currentMenuSharingTopwin=win; +     +    printf ("FINDMICH: changing sharing win DONE.\n"); +     +    if (win) +      win->restoreMainwinState(); //restore toolbar positions in main window    }  } diff --git a/muse2/muse/app.h b/muse2/muse/app.h index d71d947b..c491a2de 100644 --- a/muse2/muse/app.h +++ b/muse2/muse/app.h @@ -357,6 +357,8 @@ class MusE : public QMainWindow        const ToplevelList* getToplevels() { return &toplevels; } +      TopWin* getCurrentMenuSharingTopwin() { return currentMenuSharingTopwin; } +        #ifdef HAVE_LASH        void lash_idle_cb ();  #endif diff --git a/muse2/muse/arranger/arrangerview.cpp b/muse2/muse/arranger/arrangerview.cpp index 9e6b5c11..b6a48608 100644 --- a/muse2/muse/arranger/arrangerview.cpp +++ b/muse2/muse/arranger/arrangerview.cpp @@ -335,7 +335,7 @@ ArrangerView::ArrangerView(QWidget* parent)  	undo_tools->addActions(undoRedo->actions()); -	QToolBar* panic_toolbar = addToolBar(tr("panic"));          +	QToolBar* panic_toolbar = addToolBar(tr("panic"));  	panic_toolbar->setObjectName("panic");  	panic_toolbar->addAction(panicAction); @@ -573,6 +573,8 @@ ArrangerView::ArrangerView(QWidget* parent)  	// bug: 2811156  	 Softsynth GUI unclosable with XFCE4 (and a few others)  	show();  	hide(); +         +	initalizing=false;  }  ArrangerView::~ArrangerView() diff --git a/muse2/muse/cliplist/cliplist.cpp b/muse2/muse/cliplist/cliplist.cpp index afd843ef..e49b315d 100644 --- a/muse2/muse/cliplist/cliplist.cpp +++ b/muse2/muse/cliplist/cliplist.cpp @@ -143,6 +143,8 @@ ClipListEdit::ClipListEdit(QWidget* parent)        connect(editor->len, SIGNAL(valueChanged(const Pos&)), SLOT(lenChanged(const Pos&)));        updateList(); +       +      initalizing=false;        }  ClipListEdit::~ClipListEdit() diff --git a/muse2/muse/cobject.cpp b/muse2/muse/cobject.cpp index 8f3932ec..a97a29a1 100644 --- a/muse2/muse/cobject.cpp +++ b/muse2/muse/cobject.cpp @@ -19,9 +19,28 @@  using std::list; +int TopWin::_widthInit[TOPLEVELTYPE_LAST_ENTRY]; +int TopWin::_heightInit[TOPLEVELTYPE_LAST_ENTRY]; +QByteArray TopWin::_toolbarSharedInit[TOPLEVELTYPE_LAST_ENTRY]; +QByteArray TopWin::_toolbarNonsharedInit[TOPLEVELTYPE_LAST_ENTRY]; +bool TopWin::initInited=false; +  TopWin::TopWin(ToplevelType t, QWidget* parent, const char* name, Qt::WindowFlags f)                                                 : QMainWindow(parent, f)        { +      if (initInited==false) +      { +        for (int i=0;i<TOPLEVELTYPE_LAST_ENTRY;i++) +        { +          _widthInit[i]=800; +          _heightInit[i]=600; +        } +         +        initInited=true; +      }   +       +      initalizing=true; +              _type=t;        setObjectName(QString(name)); @@ -228,3 +247,93 @@ void TopWin::shareToolsAndMenu(bool val)    emit toolsAndMenuSharingChanged(val);  } + + +//--------------------------------------------------------- +//   storeInitialState +//--------------------------------------------------------- + +void TopWin::storeInitialState() +      { +        if (initalizing) +          printf("THIS SHOULD NEVER HAPPEN: STORE INIT STATE CALLED WHILE INITING! please IMMEDIATELY report that to flo!\n"); + +        _widthInit[_type] = width(); +        _heightInit[_type] = height(); +        if (sharesToolsAndMenu()) +        { +          if (muse->getCurrentMenuSharingTopwin() == this) +            _toolbarSharedInit[_type] = muse->saveState(); +        } +        else +          _toolbarNonsharedInit[_type] = saveState(); +      } + +//--------------------------------------------------------- +//   readConfiguration +//--------------------------------------------------------- + +void TopWin::readConfiguration(ToplevelType t, Xml& xml) +      { +      for (;;) { +            Xml::Token token = xml.parse(); +            if (token == Xml::Error || token == Xml::End) +                  break; +            const QString& tag = xml.s1(); +            switch (token) { +                  case Xml::TagStart: +                        if (tag == "width") +                              _widthInit[t] = xml.parseInt(); +                        else if (tag == "height") +                              _heightInit[t] = xml.parseInt(); +                        else if (tag == "nonshared_toolbars") +                              _toolbarNonsharedInit[t] = QByteArray::fromHex(xml.parse1().toAscii()); +                        else if (tag == "shared_toolbars") +                              _toolbarSharedInit[t] = QByteArray::fromHex(xml.parse1().toAscii()); +                        else +                              xml.unknown("TopWin"); +                        break; +                  case Xml::TagEnd: +                        if (tag == "topwin") +                              return; +                  default: +                        break; +                  } +            } +      } + +//--------------------------------------------------------- +//   writeConfiguration +//--------------------------------------------------------- + +void TopWin::writeConfiguration(ToplevelType t, int level, Xml& xml) +      { +      xml.tag(level++, "topwin"); +      xml.intTag(level, "width", _widthInit[t]); +      xml.intTag(level, "height", _heightInit[t]); +      xml.strTag(level, "nonshared_toolbars", _toolbarNonsharedInit[t].toHex().data()); +      xml.strTag(level, "shared_toolbars", _toolbarSharedInit[t].toHex().data()); +      xml.etag(level, "topwin"); +      } + +void TopWin::initTopwinState() +{ +  printf("FINDMICH: in initTopwinState()\n"); +   +  if (sharesToolsAndMenu()) +  { +    if (this == muse->getCurrentMenuSharingTopwin()) +    { +      printf("FINDMICH RESTORING for %s...\n",windowTitle().toAscii().data()); +      muse->restoreState(_toolbarSharedInit[_type]); +    } +  } +  else +    restoreState(_toolbarNonsharedInit[_type]); +} + +void TopWin::restoreMainwinState() +{ +  if (sharesToolsAndMenu()) +    initTopwinState(); +} diff --git a/muse2/muse/cobject.h b/muse2/muse/cobject.h index a106702a..ba731d1e 100644 --- a/muse2/muse/cobject.h +++ b/muse2/muse/cobject.h @@ -13,6 +13,7 @@  #include <QMainWindow>  #include <list> +#include <QByteArray>  class QMdiSubWindow;  class QFocusEvent; @@ -29,12 +30,12 @@ class TopWin : public QMainWindow        Q_OBJECT     public: -      enum ToplevelType { PIANO_ROLL, LISTE, DRUM, MASTER, WAVE,  -         LMASTER, CLIPLIST, MARKER, SCORE, ARRANGER, +      enum ToplevelType { PIANO_ROLL=0, LISTE, DRUM, MASTER, WAVE, //there shall be no +         LMASTER, CLIPLIST, MARKER, SCORE, ARRANGER,               //gaps in the enum!  #ifdef PATCHBAY           M_PATCHBAY,  #endif /* PATCHBAY */ -         LAST_ENTRY +         TOPLEVELTYPE_LAST_ENTRY //this has to be always the last entry           };        ToplevelType type() const { return _type; } @@ -42,6 +43,10 @@ class TopWin : public QMainWindow        virtual void readStatus(Xml&);        virtual void writeStatus(int, Xml&) const; + +      static void readConfiguration(ToplevelType, Xml&); +      static void writeConfiguration(ToplevelType, int, Xml&); +              bool isMdiWin(); @@ -55,8 +60,6 @@ class TopWin : public QMainWindow        QToolBar* addToolBar(const QString& title);    private: -      ToplevelType _type; -        QMdiSubWindow* mdisubwin;        bool _sharesToolsAndMenu;        std::list<QToolBar*> _toolbars; @@ -68,15 +71,30 @@ class TopWin : public QMainWindow        void addToolBar(Qt::ToolBarArea, QToolBar*);        virtual QMdiSubWindow* createMdiWrapper(); +          protected:        QAction* subwinAction; + +      ToplevelType _type; + +      static int _widthInit[TOPLEVELTYPE_LAST_ENTRY]; +      static int _heightInit[TOPLEVELTYPE_LAST_ENTRY]; +      static QByteArray _toolbarNonsharedInit[TOPLEVELTYPE_LAST_ENTRY]; +      static QByteArray _toolbarSharedInit[TOPLEVELTYPE_LAST_ENTRY]; +      static bool initInited; +       +      void initTopwinState(); + +      bool initalizing; //if true, no state is saved    public slots:        virtual void hide();        virtual void show();        virtual void setVisible(bool);        void setIsMdiWin(bool); +      void restoreMainwinState(); +      void storeInitialState();    signals:        void toolsAndMenuSharingChanged(bool); diff --git a/muse2/muse/liste/listedit.cpp b/muse2/muse/liste/listedit.cpp index d37d80bd..cd3d165e 100644 --- a/muse2/muse/liste/listedit.cpp +++ b/muse2/muse/liste/listedit.cpp @@ -587,6 +587,7 @@ ListEdit::ListEdit(PartList* pl)        }        initShortcuts(); +      initalizing=false;        }  //--------------------------------------------------------- diff --git a/muse2/muse/marker/markerview.cpp b/muse2/muse/marker/markerview.cpp index ad1e49d2..3c0f2267 100644 --- a/muse2/muse/marker/markerview.cpp +++ b/muse2/muse/marker/markerview.cpp @@ -188,7 +188,7 @@ MarkerView::MarkerView(QWidget* parent)        edit->addAction(markerAdd);        edit->addAction(markerDelete); -      QToolBar* panic_toolbar = addToolBar(tr("panic"));          +      QToolBar* panic_toolbar = addToolBar(tr("panic"));        panic_toolbar->setObjectName("panic");        panic_toolbar->addAction(panicAction); @@ -284,7 +284,8 @@ MarkerView::MarkerView(QWidget* parent)        // bug: 2811156  	 Softsynth GUI unclosable with XFCE4 (and a few others)        show();        hide(); - +       +      initalizing=false;        }  //--------------------------------------------------------- diff --git a/muse2/muse/master/lmaster.cpp b/muse2/muse/master/lmaster.cpp index 538a20c7..f434e99a 100644 --- a/muse2/muse/master/lmaster.cpp +++ b/muse2/muse/master/lmaster.cpp @@ -245,6 +245,7 @@ LMaster::LMaster()        connect(keyButton, SIGNAL(clicked()), SLOT(insertKey()));        initShortcuts(); +      initalizing=false;        }  //--------------------------------------------------------- diff --git a/muse2/muse/master/masteredit.cpp b/muse2/muse/master/masteredit.cpp index 30e95dbd..f484e935 100644 --- a/muse2/muse/master/masteredit.cpp +++ b/muse2/muse/master/masteredit.cpp @@ -35,9 +35,6 @@  #include <QMenu>  int MasterEdit::_rasterInit = 0; -int MasterEdit::_widthInit = 600; -int MasterEdit::_heightInit = 400; -QByteArray MasterEdit::_toolbarInit;  //---------------------------------------------------------  //   closeEvent @@ -86,8 +83,8 @@ MasterEdit::MasterEdit()        {        setWindowTitle(tr("MusE: Mastertrack"));        _raster = 0;      // measure +      resize(_widthInit[_type], _heightInit[_type]);        setMinimumSize(400, 300); -      resize(_widthInit, _heightInit);        //---------Pulldown Menu----------------------------  //      QPopupMenu* file = new QPopupMenu(this); @@ -247,8 +244,8 @@ MasterEdit::MasterEdit()        connect(canvas, SIGNAL(followEvent(int)), hscroll, SLOT(setOffset(int)));        connect(canvas, SIGNAL(timeChanged(unsigned)),   SLOT(setTime(unsigned))); -      if (!_toolbarInit.isEmpty()) -            restoreState(_toolbarInit);       +      initTopwinState(); +      initalizing=false;        }  //--------------------------------------------------------- @@ -337,12 +334,8 @@ void MasterEdit::readConfiguration(Xml& xml)                    case Xml::TagStart:                          if (tag == "raster")                                _rasterInit = xml.parseInt(); -                        else if (tag == "width") -                              _widthInit = xml.parseInt(); -                        else if (tag == "height") -                              _heightInit = xml.parseInt(); -                        else if (tag == "toolbars") -                              _toolbarInit = QByteArray::fromHex(xml.parse1().toAscii()); +                        else if (tag == "topwin") +                              TopWin::readConfiguration(MASTER, xml);                          else                                xml.unknown("MasterEdit");                          break; @@ -363,9 +356,7 @@ void MasterEdit::writeConfiguration(int level, Xml& xml)        {        xml.tag(level++, "masteredit");        xml.intTag(level, "raster", _rasterInit); -      xml.intTag(level, "width", _widthInit); -      xml.intTag(level, "height", _heightInit); -      xml.strTag(level, "toolbars", _toolbarInit.toHex().data()); +      TopWin::writeConfiguration(MASTER, level, xml);        xml.tag(level, "/masteredit");        } @@ -434,34 +425,3 @@ void MasterEdit::setTempo(int val)        } -//--------------------------------------------------------- -//   resizeEvent -//--------------------------------------------------------- - -void MasterEdit::resizeEvent(QResizeEvent* ev) -      { -      QWidget::resizeEvent(ev); -      storeInitialState(); -      } - -//--------------------------------------------------------- -//   focusOutEvent -//--------------------------------------------------------- - -void MasterEdit::focusOutEvent(QFocusEvent* ev) -      { -      QWidget::focusOutEvent(ev); -      storeInitialState(); -      } - - -//--------------------------------------------------------- -//   storeInitialState -//--------------------------------------------------------- - -void MasterEdit::storeInitialState() -      { -      _widthInit = width(); -      _heightInit = height(); -      _toolbarInit=saveState(); -      } diff --git a/muse2/muse/master/masteredit.h b/muse2/muse/master/masteredit.h index 011ea302..4e66f70e 100644 --- a/muse2/muse/master/masteredit.h +++ b/muse2/muse/master/masteredit.h @@ -61,14 +61,8 @@ class MasterEdit : public MidiEditor {        QToolButton* enableButton;        static int _rasterInit; -      static int _widthInit, _heightInit; -      static QByteArray _toolbarInit; -        virtual void closeEvent(QCloseEvent*); -      virtual void resizeEvent(QResizeEvent*); -      virtual void focusOutEvent(QFocusEvent*); -      void storeInitialState();     private slots:        void _setRaster(int); diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp index bf9744b6..8c02dbeb 100644 --- a/muse2/muse/midiedit/drumedit.cpp +++ b/muse2/muse/midiedit/drumedit.cpp @@ -62,11 +62,8 @@ static const char* map_file_save_pattern[] = {  */        int DrumEdit::_rasterInit = 96; -int DrumEdit::_widthInit = 600; -int DrumEdit::_heightInit = 400;  int DrumEdit::_dlistWidthInit = 50;  int DrumEdit::_dcanvasWidthInit = 300; -QByteArray DrumEdit::_toolbarInit;  static const int xscale = -10;  static const int yscale = 1; @@ -159,8 +156,9 @@ DrumEdit::DrumEdit(PartList* pl, QWidget* parent, const char* name, unsigned ini     : MidiEditor(TopWin::DRUM, _rasterInit, pl, parent, name)        {        setFocusPolicy(Qt::StrongFocus); +      resize(_widthInit[_type], _heightInit[_type]); +        split1w1 = 0; -      resize(_widthInit, _heightInit);        selPart  = 0;        QSignalMapper *signalMapper = new QSignalMapper(this); @@ -485,9 +483,6 @@ DrumEdit::DrumEdit(PartList* pl, QWidget* parent, const char* name, unsigned ini        connect(ctrl, SIGNAL(clicked()), SLOT(addCtrl())); -      if (!_toolbarInit.isEmpty()) -            restoreState(_toolbarInit); -        QClipboard* cb = QApplication::clipboard();        connect(cb, SIGNAL(dataChanged()), SLOT(clipboardChanged())); @@ -510,10 +505,10 @@ DrumEdit::DrumEdit(PartList* pl, QWidget* parent, const char* name, unsigned ini        if(canvas->track())          toolbar->setSolo(canvas->track()->solo()); - -      QSettings settings("MusE", "MusE-qt"); -      //restoreGeometry(settings.value("Drumedit/geometry").toByteArray()); -      restoreState(settings.value("Drumedit/windowState").toByteArray()); +       +       +      initTopwinState(); +      initalizing=false;        }  //--------------------------------------------------------- @@ -764,16 +759,12 @@ void DrumEdit::readConfiguration(Xml& xml)                    case Xml::TagStart:                          if (tag == "raster")                                _rasterInit = xml.parseInt(); -                        else if (tag == "width") -                              _widthInit = xml.parseInt(); -                        else if (tag == "height") -                              _heightInit = xml.parseInt();                          else if (tag == "dcanvaswidth")                                _dcanvasWidthInit = xml.parseInt();                          else if (tag == "dlistwidth")                                _dlistWidthInit = xml.parseInt(); -                        else if (tag == "toolbars") -                              _toolbarInit = QByteArray::fromHex(xml.parse1().toAscii()); +                        else if (tag == "topwin") +                              TopWin::readConfiguration(DRUM, xml);                          else                                xml.unknown("DrumEdit");                          break; @@ -795,11 +786,9 @@ void DrumEdit::writeConfiguration(int level, Xml& xml)        {        xml.tag(level++, "drumedit");        xml.intTag(level, "raster", _rasterInit); -      xml.intTag(level, "width", _widthInit); -      xml.intTag(level, "height", _heightInit);        xml.intTag(level, "dlistwidth", _dlistWidthInit);        xml.intTag(level, "dcanvaswidth", _dcanvasWidthInit); -      xml.strTag(level, "toolbars", _toolbarInit.toHex().data()); +      TopWin::writeConfiguration(DRUM, level,xml);        xml.tag(level, "/drumedit");        } @@ -1048,37 +1037,7 @@ void DrumEdit::newCanvasWidth(int w)        updateHScrollRange();        } -//--------------------------------------------------------- -//   resizeEvent -//--------------------------------------------------------- - -void DrumEdit::resizeEvent(QResizeEvent* ev) -      { -      QWidget::resizeEvent(ev); -      storeInitialState();        //TODO: Make the dlist not expand/shrink, but the canvas instead -      } - -//--------------------------------------------------------- -//   focusOutEvent -//--------------------------------------------------------- - -void DrumEdit::focusOutEvent(QFocusEvent* ev) -      { -      QWidget::focusOutEvent(ev); -      storeInitialState(); -      } - -//--------------------------------------------------------- -//   storeInitialState -//--------------------------------------------------------- - -void DrumEdit::storeInitialState() -      { -      _widthInit = width(); -      _heightInit = height(); -      _toolbarInit=saveState(); -      }  //--------------------------------------------------------- diff --git a/muse2/muse/midiedit/drumedit.h b/muse2/muse/midiedit/drumedit.h index a9ec4d06..a242eda8 100644 --- a/muse2/muse/midiedit/drumedit.h +++ b/muse2/muse/midiedit/drumedit.h @@ -71,9 +71,7 @@ class DrumEdit : public MidiEditor {        QComboBox *stepLenWidget;        static int _rasterInit; -      static int _widthInit, _heightInit;        static int _dlistWidthInit, _dcanvasWidthInit; -      static QByteArray _toolbarInit;        QAction *loadAction, *saveAction, *resetAction;        QAction *cutAction, *copyAction, *pasteAction, *deleteAction; @@ -88,10 +86,6 @@ class DrumEdit : public MidiEditor {        QWidget* genToolbar(QWidget* parent);        virtual void keyPressEvent(QKeyEvent*); -      virtual void resizeEvent(QResizeEvent*); -      virtual void focusOutEvent(QFocusEvent*); -      void storeInitialState(); -        void setHeaderToolTips();        void setHeaderWhatsThis(); diff --git a/muse2/muse/midiedit/pianoroll.cpp b/muse2/muse/midiedit/pianoroll.cpp index 7b095713..ac15f9cd 100644 --- a/muse2/muse/midiedit/pianoroll.cpp +++ b/muse2/muse/midiedit/pianoroll.cpp @@ -53,10 +53,7 @@  #include "mtrackinfo.h"  int PianoRoll::_rasterInit = 96; -int PianoRoll::_widthInit = 600; -int PianoRoll::_heightInit = 400;  int PianoRoll::colorModeInit = 0; -QByteArray PianoRoll::_toolbarInit;  static const int xscale = -10;  static const int yscale = 1; @@ -72,11 +69,12 @@ PianoRoll::PianoRoll(PartList* pl, QWidget* parent, const char* name, unsigned i     : MidiEditor(TopWin::PIANO_ROLL, _rasterInit, pl, parent, name)        {        deltaMode = false; -      resize(_widthInit, _heightInit);        selPart        = 0;        _playEvents    = false;        colorMode      = colorModeInit; +      resize(_widthInit[_type], _heightInit[_type]); +        QSignalMapper* mapper = new QSignalMapper(this);        QSignalMapper* colorMapper = new QSignalMapper(this); @@ -473,9 +471,6 @@ PianoRoll::PianoRoll(PartList* pl, QWidget* parent, const char* name, unsigned i        setFocusPolicy(Qt::StrongFocus);        setEventColorMode(colorMode); -      if (!_toolbarInit.isEmpty()) -            restoreState(_toolbarInit); -        QClipboard* cb = QApplication::clipboard();        connect(cb, SIGNAL(dataChanged()), SLOT(clipboardChanged())); @@ -503,10 +498,8 @@ PianoRoll::PianoRoll(PartList* pl, QWidget* parent, const char* name, unsigned i          toolbar->setSolo(canvas->track()->solo());        } -      QSettings settings("MusE", "MusE-qt"); -      //restoreGeometry(settings.value("Pianoroll/geometry").toByteArray()); -      restoreState(settings.value("Pianoroll/windowState").toByteArray()); - +      initTopwinState(); +      initalizing=false;        }  //--------------------------------------------------------- @@ -814,12 +807,8 @@ void PianoRoll::readConfiguration(Xml& xml)                                _rasterInit = xml.parseInt();                          else if (tag == "colormode")                                colorModeInit = xml.parseInt(); -                        else if (tag == "width") -                              _widthInit = xml.parseInt(); -                        else if (tag == "height") -                              _heightInit = xml.parseInt(); -                        else if (tag == "toolbars") -                              _toolbarInit = QByteArray::fromHex(xml.parse1().toAscii()); +                        else if (tag == "topwin") +                              TopWin::readConfiguration(PIANO_ROLL,xml);                          else                                xml.unknown("PianoRoll");                          break; @@ -840,10 +829,8 @@ void PianoRoll::writeConfiguration(int level, Xml& xml)        {        xml.tag(level++, "pianoroll");        xml.intTag(level, "raster", _rasterInit); -      xml.intTag(level, "width", _widthInit); -      xml.intTag(level, "height", _heightInit);        xml.intTag(level, "colormode", colorModeInit); -      xml.strTag(level, "toolbars", _toolbarInit.toHex().data()); +      TopWin::writeConfiguration(PIANO_ROLL, level, xml);        xml.etag(level, "pianoroll");        } @@ -1211,38 +1198,6 @@ void PianoRoll::setSpeaker(bool val)        canvas->playEvents(_playEvents);        } -//--------------------------------------------------------- -//   resizeEvent -//--------------------------------------------------------- - -void PianoRoll::resizeEvent(QResizeEvent* ev) -      { -      QWidget::resizeEvent(ev); -      storeInitialState(); -      } - - -//--------------------------------------------------------- -//   focusOutEvent -//--------------------------------------------------------- - -void PianoRoll::focusOutEvent(QFocusEvent* ev) -      { -      QWidget::focusOutEvent(ev); -      storeInitialState(); -      } - - -//--------------------------------------------------------- -//   storeInitialState -//--------------------------------------------------------- - -void PianoRoll::storeInitialState() -      { -      _widthInit = width(); -      _heightInit = height(); -      _toolbarInit=saveState(); -      }  /* diff --git a/muse2/muse/midiedit/pianoroll.h b/muse2/muse/midiedit/pianoroll.h index 2677d530..b55d7689 100644 --- a/muse2/muse/midiedit/pianoroll.h +++ b/muse2/muse/midiedit/pianoroll.h @@ -12,7 +12,6 @@  #include <QResizeEvent>  #include <QLabel>  #include <QKeyEvent> -#include <QByteArray>  #include <values.h>  #include "noteinfo.h" @@ -117,8 +116,6 @@ class PianoRoll : public MidiEditor {        int colorMode;        static int _rasterInit; -      static int _widthInit, _heightInit; -      static QByteArray _toolbarInit;        static int colorModeInit; @@ -133,9 +130,6 @@ class PianoRoll : public MidiEditor {        QWidget* genToolbar(QWidget* parent);        virtual void closeEvent(QCloseEvent*);        virtual void keyPressEvent(QKeyEvent*); -      virtual void resizeEvent(QResizeEvent*); -      virtual void focusOutEvent(QFocusEvent*); -      void storeInitialState();     private slots:        void setSelection(int, Event&, Part*); diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp index 378a7ad3..4623bca7 100644 --- a/muse2/muse/midiedit/scoreedit.cpp +++ b/muse2/muse/midiedit/scoreedit.cpp @@ -141,9 +141,6 @@ QColor* mycolors; // array [NUM_MYCOLORS]  set<QString> ScoreEdit::names; -int ScoreEdit::width_init = 600; -int ScoreEdit::height_init = 400; -QByteArray ScoreEdit::default_toolbar_state;  //--------------------------------------------------------- @@ -156,7 +153,7 @@ ScoreEdit::ScoreEdit(QWidget* parent, const char* name, unsigned initPos)  	setAttribute(Qt::WA_DeleteOnClose);  	setFocusPolicy(Qt::StrongFocus); -	resize(width_init, height_init); +	resize(_widthInit[_type], _heightInit[_type]);  	mainw    = new QWidget(this); @@ -457,9 +454,6 @@ ScoreEdit::ScoreEdit(QWidget* parent, const char* name, unsigned initPos)  	clipboard_changed();  	selection_changed(); -	if (!default_toolbar_state.isEmpty()) -		restoreState(default_toolbar_state); -  	connect(song, SIGNAL(songChanged(int)), SLOT(song_changed(int)));	  	score_canvas->fully_recalculate(); @@ -472,6 +466,9 @@ ScoreEdit::ScoreEdit(QWidget* parent, const char* name, unsigned initPos)  	apply_velo=true; +	 +	initTopwinState(); +	initalizing=false;  }  void ScoreEdit::init_shortcuts() @@ -644,26 +641,6 @@ void ScoreEdit::closeEvent(QCloseEvent* e)  	e->accept();  } -void ScoreEdit::resizeEvent(QResizeEvent* ev) -{ -	QWidget::resizeEvent(ev); -	 -	store_initial_state(); -} - -void ScoreEdit::focusOutEvent(QFocusEvent* ev) -{ -	QMainWindow::focusOutEvent(ev); -	 -	store_initial_state(); -} - -void ScoreEdit::store_initial_state() -{ -	width_init=width(); -	height_init=height(); -	default_toolbar_state=saveState(); -}  void ScoreEdit::menu_command(int cmd)  { @@ -1034,12 +1011,8 @@ void ScoreEdit::read_configuration(Xml& xml)  		switch (token)  		{  			case Xml::TagStart: -				if (tag == "height") -					height_init = xml.parseInt(); -				else if (tag == "width") -					width_init = xml.parseInt(); -				else if (tag == "toolbars") -					default_toolbar_state = QByteArray::fromHex(xml.parse1().toAscii()); +				if (tag == "topwin") +					TopWin::readConfiguration(SCORE, xml);  				else  					xml.unknown("ScoreEdit");  				break; @@ -1058,9 +1031,7 @@ void ScoreEdit::read_configuration(Xml& xml)  void ScoreEdit::write_configuration(int level, Xml& xml)  {  	xml.tag(level++, "scoreedit"); -	xml.intTag(level, "width", width_init); -	xml.intTag(level, "height", height_init); -	xml.strTag(level, "toolbars", default_toolbar_state.toHex().data()); +	TopWin::writeConfiguration(SCORE, level, xml);  	xml.etag(level, "scoreedit");  } @@ -4477,6 +4448,7 @@ void staff_t::update_part_indices()   *   o IMPORTANT: check new windowed arranger!   *                 - 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   *    * IMPORTANT TODO diff --git a/muse2/muse/midiedit/scoreedit.h b/muse2/muse/midiedit/scoreedit.h index 65990df5..0d4ce522 100644 --- a/muse2/muse/midiedit/scoreedit.h +++ b/muse2/muse/midiedit/scoreedit.h @@ -81,10 +81,6 @@ class ScoreEdit : public TopWin  	Q_OBJECT  	private:  		virtual void closeEvent(QCloseEvent*); -		virtual void resizeEvent(QResizeEvent*); -		virtual void focusOutEvent(QFocusEvent*); -		 -		void store_initial_state();  		void init_name(); @@ -150,8 +146,6 @@ class ScoreEdit : public TopWin  		bool apply_velo;  		static set<QString> names; -		static int width_init, height_init; -		static QByteArray default_toolbar_state;  		QString name; diff --git a/muse2/muse/waveedit/waveedit.cpp b/muse2/muse/waveedit/waveedit.cpp index d4b692fe..9674af5a 100644 --- a/muse2/muse/waveedit/waveedit.cpp +++ b/muse2/muse/waveedit/waveedit.cpp @@ -40,10 +40,6 @@  extern QColor readColor(Xml& xml); -int WaveEdit::_widthInit = 600; -int WaveEdit::_heightInit = 400; -QByteArray WaveEdit::_toolbarInit; -  //---------------------------------------------------------  //   closeEvent  //--------------------------------------------------------- @@ -64,8 +60,8 @@ void WaveEdit::closeEvent(QCloseEvent* e)  WaveEdit::WaveEdit(PartList* pl)     : MidiEditor(TopWin::WAVE, 1, pl)        { -      resize(_widthInit, _heightInit);        setFocusPolicy(Qt::StrongFocus); +      resize(_widthInit[_type], _heightInit[_type]);        QSignalMapper* mapper = new QSignalMapper(this);        QAction* act; @@ -207,7 +203,7 @@ WaveEdit::WaveEdit(PartList* pl)        if (!parts()->empty()) { // Roughly match total size of part              Part* firstPart = parts()->begin()->second; -            xscale = 0 - firstPart->lenFrame()/_widthInit; +            xscale = 0 - firstPart->lenFrame()/_widthInit[_type];              }        else {              xscale = -8000; @@ -260,9 +256,6 @@ WaveEdit::WaveEdit(PartList* pl)        connect(hscroll, SIGNAL(scaleChanged(int)),  SLOT(updateHScrollRange()));        connect(song, SIGNAL(songChanged(int)), SLOT(songChanged1(int))); -      if (!_toolbarInit.isEmpty()) -            restoreState(_toolbarInit); -        initShortcuts();        updateHScrollRange(); @@ -273,10 +266,9 @@ WaveEdit::WaveEdit(PartList* pl)          WavePart* part = (WavePart*)(parts()->begin()->second);          solo->setChecked(part->track()->solo());        } -      QSettings settings("MusE", "MusE-qt"); -      //restoreGeometry(settings.value("Waveedit/geometry").toByteArray()); -      restoreState(settings.value("Waveedit/windowState").toByteArray()); +      initTopwinState(); +      initalizing=false;        }  void WaveEdit::initShortcuts() @@ -363,12 +355,8 @@ void WaveEdit::readConfiguration(Xml& xml)                    case Xml::TagStart:                          if (tag == "bgcolor")                                config.waveEditBackgroundColor = readColor(xml); -                        else if (tag == "width") -                              _widthInit = xml.parseInt(); -                        else if (tag == "height") -                              _heightInit = xml.parseInt(); -                        else if (tag == "toolbars") -                              _toolbarInit = QByteArray::fromHex(xml.parse1().toAscii()); +                        else if (tag == "topwin") +                              TopWin::readConfiguration(WAVE, xml);                          else                                xml.unknown("WaveEdit");                          break; @@ -392,9 +380,7 @@ void WaveEdit::writeConfiguration(int level, Xml& xml)        {        xml.tag(level++, "waveedit");        xml.colorTag(level, "bgcolor", config.waveEditBackgroundColor); -      xml.intTag(level, "width", _widthInit); -      xml.intTag(level, "height", _heightInit); -      xml.strTag(level, "toolbars", _toolbarInit.toHex().data()); +      TopWin::writeConfiguration(WAVE, level,xml);        xml.tag(level, "/waveedit");        } @@ -446,38 +432,6 @@ void WaveEdit::readStatus(Xml& xml)              }        } -//--------------------------------------------------------- -//   resizeEvent -//--------------------------------------------------------- - -void WaveEdit::resizeEvent(QResizeEvent* ev) -      { -      QWidget::resizeEvent(ev); -      storeInitialState(); -      } - -//--------------------------------------------------------- -//   focusOutEvent -//--------------------------------------------------------- - -void WaveEdit::focusOutEvent(QFocusEvent* ev) -      { -      QWidget::focusOutEvent(ev); -      storeInitialState(); -      } - - -//--------------------------------------------------------- -//   storeInitialState -//--------------------------------------------------------- - -void WaveEdit::storeInitialState() -      { -      _widthInit = width(); -      _heightInit = height(); -      _toolbarInit=saveState(); -      } -  //---------------------------------------------------------  //   songChanged1 diff --git a/muse2/muse/waveedit/waveedit.h b/muse2/muse/waveedit/waveedit.h index 2bfffcc1..4f040d6e 100644 --- a/muse2/muse/waveedit/waveedit.h +++ b/muse2/muse/waveedit/waveedit.h @@ -48,15 +48,10 @@ class WaveEdit : public MidiEditor {        QAction* copyAction;        QAction* pasteAction; -      static int _widthInit, _heightInit; -      static QByteArray _toolbarInit;        virtual void closeEvent(QCloseEvent*);        virtual void keyPressEvent(QKeyEvent*); -      virtual void resizeEvent(QResizeEvent* ev); -      virtual void focusOutEvent(QFocusEvent*); -      void storeInitialState();        QMenu* menuFunctions, *select, *menuGain; | 
