summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/muse/marker
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-03-07 19:01:11 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-03-07 19:01:11 +0000
commite40fc849149dd97c248866a4a1d026dda5e57b62 (patch)
treeb12b358f3b3a0608001d30403358f8443118ec5f /attic/muse_qt4_evolution/muse/marker
parent1bd4f2e8d9745cabb667b043171cad22c8577768 (diff)
clean3
Diffstat (limited to 'attic/muse_qt4_evolution/muse/marker')
-rw-r--r--attic/muse_qt4_evolution/muse/marker/CMakeLists.txt45
-rw-r--r--attic/muse_qt4_evolution/muse/marker/markerview.cpp413
-rw-r--r--attic/muse_qt4_evolution/muse/marker/markerview.h98
3 files changed, 556 insertions, 0 deletions
diff --git a/attic/muse_qt4_evolution/muse/marker/CMakeLists.txt b/attic/muse_qt4_evolution/muse/marker/CMakeLists.txt
new file mode 100644
index 00000000..d031533c
--- /dev/null
+++ b/attic/muse_qt4_evolution/muse/marker/CMakeLists.txt
@@ -0,0 +1,45 @@
+#
+#
+#
+#
+
+MACRO(WRAP_CPP outfiles )
+ FOREACH(it ${ARGN})
+ SET(${outfiles} ${${outfiles}} ${it}.cpp)
+ ENDFOREACH(it)
+ ENDMACRO(WRAP_CPP)
+
+MACRO(WRAP_H outfiles )
+ FOREACH(it ${ARGN})
+ SET(${outfiles} ${${outfiles}} ${it}.h)
+ ENDFOREACH(it)
+ ENDMACRO(WRAP_H)
+
+MACRO(WRAP_UI outfiles )
+ FOREACH(it ${ARGN})
+ SET(${outfiles} ${${outfiles}} ${it}.ui)
+ ENDFOREACH(it)
+ ENDMACRO(WRAP_UI)
+
+set(mocs
+ markerview
+ )
+
+WRAP_H(mocH ${mocs})
+WRAP_CPP(mocCPP ${mocs})
+
+QT4_WRAP_CPP (moc_headers ${mocH})
+
+set (uics
+ )
+
+WRAP_UI(uiUI ${uics})
+QT4_WRAP_UI (ui_headers ${uiUI})
+
+set ( marker_src ${mocCPP} ${moc_headers})
+
+add_library ( marker STATIC ${marker_src})
+set_target_properties( marker
+ PROPERTIES COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h"
+ )
+
diff --git a/attic/muse_qt4_evolution/muse/marker/markerview.cpp b/attic/muse_qt4_evolution/muse/marker/markerview.cpp
new file mode 100644
index 00000000..7cab2d02
--- /dev/null
+++ b/attic/muse_qt4_evolution/muse/marker/markerview.cpp
@@ -0,0 +1,413 @@
+//=============================================================================
+// 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 "markerview.h"
+#include "globals.h"
+#include "sync.h"
+#include "icons.h"
+#include "song.h"
+#include "awl/posedit.h"
+#include "al/al.h"
+#include "al/xml.h"
+#include "al/sig.h"
+#include "al/tempo.h"
+#include "al/marker.h"
+#include "shortcuts.h"
+
+enum { COL_TICK = 0, COL_SMPTE, COL_LOCK, COL_NAME };
+
+//---------------------------------------------------------
+// tick
+//---------------------------------------------------------
+
+unsigned MarkerItem::tick() const
+ {
+ return _marker->tick();
+ }
+
+//---------------------------------------------------------
+// name
+//---------------------------------------------------------
+
+const QString MarkerItem::name() const
+ {
+ return _marker->name();
+ }
+
+//---------------------------------------------------------
+// lock
+//---------------------------------------------------------
+
+bool MarkerItem::lock() const
+ {
+ return _marker->type() == AL::FRAMES;
+ }
+
+//---------------------------------------------------------
+// MarkerItem
+//---------------------------------------------------------
+
+MarkerItem::MarkerItem(QTreeWidget* parent, AL::Marker* m)
+ : QTreeWidgetItem(parent)
+ {
+ _marker = m;
+ setText(COL_NAME, m->name());
+ setTick(m->tick());
+ setIcon(COL_LOCK, m->type() == AL::FRAMES ? *lockIcon : QIcon());
+ }
+
+//---------------------------------------------------------
+// setName
+//---------------------------------------------------------
+
+void MarkerItem::setName(const QString& s)
+ {
+ setText(COL_NAME, s);
+ _marker = song->setMarkerName(_marker, s);
+ }
+
+//---------------------------------------------------------
+// setLock
+//---------------------------------------------------------
+
+void MarkerItem::setLock(bool lck)
+ {
+ setIcon(COL_LOCK, lck ? *lockIcon : QIcon());
+ _marker = song->setMarkerLock(_marker, lck);
+ }
+
+//---------------------------------------------------------
+// setTick
+//---------------------------------------------------------
+
+void MarkerItem::setTick(unsigned v)
+ {
+ if (_marker->tick() != v)
+ _marker = song->setMarkerTick(_marker, v);
+ QString s;
+ int bar, beat;
+ int tick;
+ _marker->mbt(&bar, &beat, &tick);
+ s.sprintf("%04d.%02d.%03d", bar+1, beat+1, tick);
+ setText(COL_TICK, s);
+
+ int min, sec, frame, subframe;
+ _marker->msf(&min, &sec, &frame, &subframe);
+
+ s.sprintf("%03d:%02d:%02d:%02d", min, sec, frame, subframe);
+ setText(COL_SMPTE, s);
+ }
+
+//---------------------------------------------------------
+// MarkerView
+//---------------------------------------------------------
+
+MarkerView::MarkerView()
+ : TopWin()
+ {
+ lockChange = false;
+ setWindowTitle(tr("MusE: Marker"));
+
+ //---------Actions----------------------------
+ QAction* markerAdd = new QAction(QIcon(*flagIcon), tr("add marker"), this);
+ markerAdd->setToolTip(tr("Add Marker"));
+ connect(markerAdd, SIGNAL(triggered()), SLOT(addMarker()));
+
+ QAction* markerDelete = getAction("delete", this);
+ connect(markerDelete, SIGNAL(triggered()), SLOT(deleteMarker()));
+
+ //---------Pulldown Menu----------------------------
+ QMenuBar* mb = menuBar();
+
+ QMenu* editMenu = mb->addMenu(tr("&Edit"));
+ editMenu->addAction(markerAdd);
+ editMenu->addAction(markerDelete);
+
+ //---------ToolBar----------------------------------
+ QToolBar* tools = addToolBar(tr("marker-tools"));
+ tools->addAction(undoAction);
+ tools->addAction(redoAction);
+
+ QToolBar* edit = addToolBar(tr("edit tools"));
+ edit->addAction(markerAdd);
+ edit->addAction(markerDelete);
+
+ //---------------------------------------------------
+ // master
+ //---------------------------------------------------
+
+ QWidget* w = new QWidget;
+ setCentralWidget(w);
+ QVBoxLayout* vbox = new QVBoxLayout;
+ w->setLayout(vbox);
+
+ table = new QTreeWidget;
+ table->setUniformRowHeights(true);
+ table->setAlternatingRowColors(true);
+ table->setSelectionBehavior(QAbstractItemView::SelectRows);
+ table->setSelectionMode(QTreeWidget::SingleSelection);
+ table->setSortingEnabled(false);
+ table->setIndentation(0);
+ QStringList labels;
+ labels << tr("Bar:Beat:Tick")
+ << tr("Min:Sc:Fr:Sf")
+ << tr("Lock")
+ << tr("Text");
+ table->setHeaderLabels(labels);
+
+ table->header()->resizeSection(0, 120);
+ table->header()->resizeSection(1, 120);
+ table->header()->resizeSection(2, 50);
+ table->header()->resizeSection(3, 200);
+// table->header()->resizeSection(mnWidthMode(3, QTreeWidget::Maximum);
+ connect(table, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), SLOT(currentChanged(QTreeWidgetItem*)));
+ connect(table, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged()));
+ connect(table, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(clicked(QTreeWidgetItem*)));
+
+ QGroupBox* props = new QGroupBox(tr("Marker Properties"));
+ QHBoxLayout* propsLayout = new QHBoxLayout;
+ props->setLayout(propsLayout);
+
+ editTick = new Awl::PosEdit;
+ propsLayout->addWidget(editTick);
+ editTick->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,
+ QSizePolicy::Fixed));
+
+ editSMPTE = new Awl::PosEdit;
+ propsLayout->addWidget(editSMPTE);
+ editSMPTE->setSmpte(true);
+ editSMPTE->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,
+ QSizePolicy::Fixed));
+
+ lock = new QToolButton;
+ propsLayout->addWidget(lock);
+ lock->setIcon(*lockIcon);
+ lock->setCheckable(true);
+
+ editName = new QLineEdit;
+ propsLayout->addWidget(editName);
+ editName->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,
+ QSizePolicy::Preferred));
+ connect(editName, SIGNAL(textChanged(const QString&)),
+ SLOT(nameChanged(const QString&)));
+ connect(editTick, SIGNAL(valueChanged(const Pos&)),
+ SLOT(tickChanged(const Pos&)));
+ connect(editSMPTE, SIGNAL(valueChanged(const Pos&)),
+ SLOT(tickChanged(const Pos&)));
+ connect(editSMPTE, SIGNAL(valueChanged(const Pos&)),
+ editTick, SLOT(setValue(const Pos&)));
+ connect(editTick, SIGNAL(valueChanged(const Pos&)),
+ editSMPTE, SLOT(setValue(const Pos&)));
+ connect(lock, SIGNAL(toggled(bool)),
+ SLOT(lockChanged(bool)));
+ connect(song, SIGNAL(markerChanged(int)), SLOT(markerChanged(int)));
+
+ vbox->addWidget(table);
+ vbox->addWidget(props);
+
+ //---------------------------------------------------
+ // Rest
+ //---------------------------------------------------
+
+// connect(song, SIGNAL(songChanged(int)), SLOT(updateList()));
+ updateList();
+ markerChanged(Song::MARKER_CUR); // select current marker
+ }
+
+//---------------------------------------------------------
+// addMarker
+//---------------------------------------------------------
+
+void MarkerView::addMarker()
+ {
+ addMarker(song->cPos());
+ }
+
+void MarkerView::addMarker(const AL::Pos& pos)
+ {
+// new MarkerItem(table, m);
+ song->addMarker(QString(""), pos);
+ table->sortItems(0, Qt::AscendingOrder);
+ }
+
+//---------------------------------------------------------
+// deleteMarker
+//---------------------------------------------------------
+
+void MarkerView::deleteMarker()
+ {
+ MarkerItem* item = (MarkerItem*)table->currentItem();
+ if (item) {
+ AL::Marker* marker = item->marker();
+ delete item;
+ song->removeMarker(marker);
+ }
+ }
+
+//---------------------------------------------------------
+// updateList
+//---------------------------------------------------------
+
+void MarkerView::updateList()
+ {
+ table->clear();
+ AL::MarkerList* marker = song->marker();
+ for (AL::iMarker i = marker->begin(); i != marker->end(); ++i) {
+ AL::Marker* m = &i->second;
+ new MarkerItem(table, m);
+ }
+ }
+
+//---------------------------------------------------------
+// currentChanged
+//---------------------------------------------------------
+
+void MarkerView::currentChanged(QTreeWidgetItem* i)
+ {
+ MarkerItem* item = (MarkerItem*)i;
+ if (item == 0) { // never triggered
+ editTick->setValue(0);
+ editSMPTE->setValue(0);
+ editName->setText(QString(""));
+ lock->setChecked(false);
+ editSMPTE->setEnabled(false);
+ editTick->setEnabled(false);
+ lock->setEnabled(false);
+ editName->setEnabled(false);
+ }
+ else {
+ editTick->setValue(item->tick());
+ editSMPTE->setValue(item->tick());
+ editName->setText(item->name());
+ editName->setEnabled(true);
+ lock->setChecked(item->lock());
+ lock->setEnabled(true);
+ editSMPTE->setEnabled(item->lock());
+ editTick->setEnabled(!item->lock());
+ }
+ }
+
+//---------------------------------------------------------
+// selectionChanged
+//---------------------------------------------------------
+
+void MarkerView::selectionChanged()
+ {
+#if 0
+ QList<QTreeWidgetItem*> sel = table->selectedItems();
+ if (!sel.empty()) {
+ MarkerItem* item = (MarkerItem*)(sel[0]);
+ }
+#endif
+ }
+
+//---------------------------------------------------------
+// clicked
+//---------------------------------------------------------
+
+void MarkerView::clicked(QTreeWidgetItem* i)
+ {
+ MarkerItem* item = (MarkerItem*)i;
+ if (item == 0) {
+ table->clearSelection();
+ return;
+ }
+ Pos p(item->tick(), AL::TICKS);
+ song->setPos(0, p, true, true, false);
+ }
+
+//---------------------------------------------------------
+// nameChanged
+//---------------------------------------------------------
+
+void MarkerView::nameChanged(const QString& s)
+ {
+ MarkerItem* item = (MarkerItem*)table->currentItem();
+ if (item)
+ item->setName(s);
+ }
+
+//---------------------------------------------------------
+// tickChanged
+//---------------------------------------------------------
+
+void MarkerView::tickChanged(const Pos& pos)
+ {
+ MarkerItem* item = (MarkerItem*)table->currentItem();
+ if (item) {
+ lockChange = true;
+ item->setTick(pos.tick());
+ Pos p(pos.tick(), AL::TICKS);
+ song->setPos(0, p, true, true, false);
+ lockChange = false;
+ }
+ }
+
+//---------------------------------------------------------
+// lockChanged
+//---------------------------------------------------------
+
+void MarkerView::lockChanged(bool lck)
+ {
+ MarkerItem* item = (MarkerItem*)table->currentItem();
+ if (item) {
+ item->setLock(lck);
+ editSMPTE->setEnabled(item->lock());
+ editTick->setEnabled(!item->lock());
+ }
+ }
+
+//---------------------------------------------------------
+// markerChanged
+//---------------------------------------------------------
+
+void MarkerView::markerChanged(int val)
+ {
+ if (lockChange)
+ return;
+ switch (val) {
+ case Song::MARKER_ADD:
+ case Song::MARKER_REMOVE:
+ updateList();
+ // fall through
+ case Song::MARKER_CUR:
+ {
+ AL::MarkerList* marker = song->marker();
+ for (AL::iMarker i = marker->begin(); i != marker->end(); ++i) {
+ if (i->second.current()) {
+ int n = table->topLevelItemCount();
+ for (int k = 0; k < n; ++k) {
+ MarkerItem* item = (MarkerItem*)(table->topLevelItem(k));
+ if (item->marker() == &i->second) {
+ table->setCurrentItem(item);
+ return;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case Song::MARKER_NAME:
+ case Song::MARKER_TICK:
+ case Song::MARKER_LOCK:
+ break;
+ }
+ }
+
diff --git a/attic/muse_qt4_evolution/muse/marker/markerview.h b/attic/muse_qt4_evolution/muse/marker/markerview.h
new file mode 100644
index 00000000..53205e3d
--- /dev/null
+++ b/attic/muse_qt4_evolution/muse/marker/markerview.h
@@ -0,0 +1,98 @@
+//=============================================================================
+// 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 __MARKERVIEW_H__
+#define __MARKERVIEW_H__
+
+#include "cobject.h"
+
+namespace Awl {
+ class PosEdit;
+ };
+
+namespace AL {
+ class Pos;
+ class Xml;
+ class Marker;
+ };
+using AL::Pos;
+using AL::Xml;
+
+
+//---------------------------------------------------------
+// MarkerItem
+//---------------------------------------------------------
+
+class MarkerItem : public QTreeWidgetItem {
+ AL::Marker* _marker;
+
+ public:
+ MarkerItem(QTreeWidget* parent, AL::Marker* m);
+ AL::Marker* marker() const { return _marker; }
+ unsigned tick() const;
+ const QString name() const;
+ bool lock() const;
+ void setName(const QString& s);
+ void setTick(unsigned t);
+ void setLock(bool lck);
+ };
+
+//---------------------------------------------------------
+// MarkerView
+//---------------------------------------------------------
+
+class MarkerView : public TopWin {
+ Q_OBJECT
+
+ bool lockChange;
+
+ QTreeWidget* table;
+ QLineEdit* editName;
+ Awl::PosEdit* editSMPTE;
+ Awl::PosEdit* editTick;
+ QToolButton* lock;
+
+ void closeEvent(QCloseEvent* e) {
+ emit closed();
+ QMainWindow::closeEvent(e);
+ }
+
+ signals:
+ void closed();
+
+ private slots:
+ void addMarker();
+ void addMarker(const AL::Pos&);
+ void deleteMarker();
+ void currentChanged(QTreeWidgetItem*);
+ void selectionChanged();
+ void nameChanged(const QString&);
+ void tickChanged(const Pos&);
+ void lockChanged(bool);
+ void markerChanged(int);
+ void clicked(QTreeWidgetItem*);
+ void updateList();
+
+ public:
+ MarkerView();
+ };
+
+#endif
+