summaryrefslogtreecommitdiff
path: root/muse2/muse
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-08-10 17:53:12 +0000
committerFlorian Jung <flo@windfisch.org>2011-08-10 17:53:12 +0000
commit55d5f2d38bfe7c9673a315bb5597c20675bfde99 (patch)
tree52d8b082cfe10aaa58d893bd32c823267e049818 /muse2/muse
parentbefca1aa676e5ee010525cc1af70051ec4c04722 (diff)
THIS IS JUST A PROOF OF CONCEPT
arranger is now a MdiSubWin
Diffstat (limited to 'muse2/muse')
-rw-r--r--muse2/muse/app.cpp30
-rw-r--r--muse2/muse/app.h4
-rw-r--r--muse2/muse/arranger/arrangerview.cpp10
-rw-r--r--muse2/muse/arranger/arrangerview.h1
-rw-r--r--muse2/muse/cobject.cpp60
-rw-r--r--muse2/muse/cobject.h16
-rw-r--r--muse2/muse/midiedit/scoreedit.cpp1
7 files changed, 109 insertions, 13 deletions
diff --git a/muse2/muse/app.cpp b/muse2/muse/app.cpp
index 53078d44..8f60cff5 100644
--- a/muse2/muse/app.cpp
+++ b/muse2/muse/app.cpp
@@ -14,6 +14,8 @@
#include <QWhatsThis>
#include <QSettings>
#include <QProgressDialog>
+#include <QMdiArea>
+#include <QMdiSubWindow>
#include "app.h"
#include "master/lmaster.h"
@@ -824,18 +826,26 @@ MusE::MusE(int argc, char** argv) : QMainWindow()
//menu_ids[CMD_START_WHATSTHIS] = menu_help->insertItem(tr("What's &This?"), this, SLOT(whatsThis()), 0);
+ //---------------------------------------------------
+ // Central Widget
+ //---------------------------------------------------
+
+
+ mdiArea=new QMdiArea(this);
+ setCentralWidget(mdiArea);
+
+
arrangerView = new ArrangerView(this);
connect(arrangerView, SIGNAL(closed()), SLOT(arrangerClosed()));
toplevels.push_back(Toplevel(Toplevel::ARRANGER, (unsigned long)(arrangerView), arrangerView));
arrangerView->hide();
arranger=arrangerView->getArranger();
-
-
- //---------------------------------------------------
- // Central Widget
- //---------------------------------------------------
-
- //TODO FINDMICHJETZT mdiarea erstellen und als central widget setzen!
+
+ //QMdiSubWindow* subwin=new QMdiSubWindow(this); //FINDMICHJETZT
+ //subwin->setWidget(arrangerView);
+ //mdiArea->addSubWindow(subwin);
+ mdiArea->addSubWindow(arrangerView->createMdiWrapper());
+
//---------------------------------------------------
// read list of "Recent Projects"
//---------------------------------------------------
@@ -1021,7 +1031,7 @@ void MusE::loadProjectFile(const QString& name, bool songTemplate, bool loadAll)
if (restartSequencer)
seqStart();
- //visTracks->updateVisibleTracksButtons(); //TODO FINDMICHJETZT
+ arrangerView->updateVisibleTracksButtons();
progress->setValue(100);
delete progress;
progress=0;
@@ -2128,7 +2138,7 @@ static void catchSignal(int sig)
// some cmd's from pulldown menu
//---------------------------------------------------------
-void MusE::cmd(int cmd) //FINDMICHJETZT
+void MusE::cmd(int cmd)
{
switch(cmd) {
case CMD_FOLLOW_NO:
@@ -2731,7 +2741,7 @@ void MusE::updateConfiguration()
//menuSettings->setAccel(shortcuts[SHRT_CONFIG_AUDIO_PORTS].key, menu_ids[CMD_CONFIG_AUDIO_PORTS]);
//menu_help->setAccel(menu_ids[CMD_START_WHATSTHIS], shortcuts[SHRT_START_WHATSTHIS].key);
- //arrangerView->updateShortcuts(); //FINDMICHJETZT is done via signal
+ //arrangerView->updateShortcuts(); //commented out by flo: is done via signal
}
diff --git a/muse2/muse/app.h b/muse2/muse/app.h
index 9b46d6f7..51a494bf 100644
--- a/muse2/muse/app.h
+++ b/muse2/muse/app.h
@@ -14,6 +14,7 @@
#include <QFileInfo>
+
class QCloseEvent;
class QFocusEvent;
class QMainWindow;
@@ -27,6 +28,7 @@ class QToolBar;
class QToolButton;
class QProgressDialog;
class EditToolBar;
+class QMdiArea;
class Part;
class PartList;
@@ -98,6 +100,8 @@ class MusE : public QMainWindow
QAction *editSongInfoAction;
private:
+ QMdiArea* mdiArea;
+
// View Menu actions
QAction *viewTransportAction, *viewBigtimeAction, *viewMixerAAction, *viewMixerBAction, *viewCliplistAction, *viewMarkerAction, *viewArrangerAction;
diff --git a/muse2/muse/arranger/arrangerview.cpp b/muse2/muse/arranger/arrangerview.cpp
index 46685ce6..e9ace563 100644
--- a/muse2/muse/arranger/arrangerview.cpp
+++ b/muse2/muse/arranger/arrangerview.cpp
@@ -626,7 +626,7 @@ void ArrangerView::readStatus(Xml& xml)
}
-void ArrangerView::cmd(int cmd) //FINDMICHJETZT
+void ArrangerView::cmd(int cmd)
{
TrackList* tracks = song->tracks();
int l = song->lpos();
@@ -866,10 +866,16 @@ void ArrangerView::clipboardChanged()
// selectionChanged
//---------------------------------------------------------
-void ArrangerView::selectionChanged() //FINDMICHJETZT
+void ArrangerView::selectionChanged()
{
//bool flag = arranger->isSingleSelection(); // -- Hmm, why only single?
bool flag = arranger->selectionSize() > 0; // -- Test OK cut and copy. For muse2. Tim.
editCutAction->setEnabled(flag);
editCopyAction->setEnabled(flag);
}
+
+
+void ArrangerView::updateVisibleTracksButtons()
+{
+ visTracks->updateVisibleTracksButtons();
+}
diff --git a/muse2/muse/arranger/arrangerview.h b/muse2/muse/arranger/arrangerview.h
index 9c19a731..9f869402 100644
--- a/muse2/muse/arranger/arrangerview.h
+++ b/muse2/muse/arranger/arrangerview.h
@@ -122,6 +122,7 @@ class ArrangerView : public TopWin
void clipboardChanged();
void selectionChanged();
void updateShortcuts();
+ void updateVisibleTracksButtons();
};
diff --git a/muse2/muse/cobject.cpp b/muse2/muse/cobject.cpp
index 22f675a3..d486abf0 100644
--- a/muse2/muse/cobject.cpp
+++ b/muse2/muse/cobject.cpp
@@ -10,6 +10,8 @@
#include "xml.h"
#include "gui.h"
+#include <QMdiSubWindow>
+
//---------------------------------------------------------
// readStatus
//---------------------------------------------------------
@@ -71,5 +73,63 @@ TopWin::TopWin(QWidget* parent, const char* name,
// Allow multiple rows. Tim.
//setDockNestingEnabled(true);
setIconSize(ICON_SIZE);
+
+ mdisubwin=NULL;
}
+void TopWin::hide()
+{
+ printf("HIDE SLOT: mdisubwin is %p\n",mdisubwin); //FINDMICH
+ if (mdisubwin)
+ mdisubwin->close();
+
+ QMainWindow::hide();
+}
+
+void TopWin::show()
+{
+ printf("SHOW SLOT: mdisubwin is %p\n",mdisubwin); //FINDMICH
+ if (mdisubwin)
+ mdisubwin->show();
+
+ QMainWindow::show();
+}
+
+void TopWin::setVisible(bool param)
+{
+ printf("SETVISIBLE SLOT (%i): mdisubwin is %p\n",(int)param, mdisubwin); //FINDMICH
+ if (mdisubwin)
+ {
+ if (param)
+ mdisubwin->show();
+ else
+ mdisubwin->close();
+ }
+ QMainWindow::setVisible(param);
+}
+
+QMdiSubWindow* TopWin::createMdiWrapper()
+{
+ if (mdisubwin==NULL)
+ {
+ mdisubwin = new QMdiSubWindow();
+ mdisubwin->setWidget(this);
+ }
+
+ return mdisubwin;
+}
+
+void TopWin::setFree()
+{
+ if (mdisubwin)
+ {
+ setParent(0);
+ mdisubwin->hide();
+ delete mdisubwin;
+ }
+}
+
+bool TopWin::isMdiWin()
+{
+ return (mdisubwin!=NULL);
+}
diff --git a/muse2/muse/cobject.h b/muse2/muse/cobject.h
index 0ab509e8..3788fb8f 100644
--- a/muse2/muse/cobject.h
+++ b/muse2/muse/cobject.h
@@ -14,6 +14,7 @@
#include <QMainWindow>
#include <list>
+class QMdiSubWindow;
class Xml;
//---------------------------------------------------------
@@ -27,8 +28,21 @@ class TopWin : public QMainWindow
public:
virtual void readStatus(Xml&);
virtual void writeStatus(int, Xml&) const;
+
+ virtual QMdiSubWindow* createMdiWrapper();
+ bool isMdiWin();
+ void setFree();
+
TopWin(QWidget* parent=0, const char* name=0,
Qt::WindowFlags f = Qt::Window);
+
+ private:
+ QMdiSubWindow* mdisubwin;
+
+ public slots:
+ virtual void hide();
+ virtual void show();
+ virtual void setVisible(bool);
};
//---------------------------------------------------------
@@ -51,7 +65,7 @@ class Toplevel {
ToplevelType type() const { return _type; }
unsigned long object() const { return _object; }
TopWin* cobject() const { return _cobject; }
-
+
private:
ToplevelType _type;
unsigned long _object;
diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp
index 1636cc5d..cc581965 100644
--- a/muse2/muse/midiedit/scoreedit.cpp
+++ b/muse2/muse/midiedit/scoreedit.cpp
@@ -4473,6 +4473,7 @@ void staff_t::update_part_indices()
* o IMPORTANT: check new windowed arranger!
* - do all signal connections work?
* - are there any segfaults?
+ * o store window state for arranger, probably also for other stuff
*
* IMPORTANT TODO
* o redo transport menu: offer "one beat" and "one bar" steps