summaryrefslogtreecommitdiff
path: root/muse2/muse/waveedit/waveedit.cpp
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2012-08-15 00:24:29 +0000
committerTim E. Real <termtech@rogers.com>2012-08-15 00:24:29 +0000
commit6c642a1cff928c183d80af7ab4fad6910466a091 (patch)
treeab534d2203486d681398b7197635861ae65160c1 /muse2/muse/waveedit/waveedit.cpp
parent345fb0cc41b94b08134dc1f40020b4bf26e1d46b (diff)
Introducing: Improved Wave Editor. Class WaveView is replaced by WaveCanvas.
Wave Events can be selected, added, moved and deleted. TODO: Bunch o' stuff, but currently it should be as good or better than the old editor.
Diffstat (limited to 'muse2/muse/waveedit/waveedit.cpp')
-rw-r--r--muse2/muse/waveedit/waveedit.cpp401
1 files changed, 350 insertions, 51 deletions
diff --git a/muse2/muse/waveedit/waveedit.cpp b/muse2/muse/waveedit/waveedit.cpp
index e1f18722..8290128f 100644
--- a/muse2/muse/waveedit/waveedit.cpp
+++ b/muse2/muse/waveedit/waveedit.cpp
@@ -3,6 +3,7 @@
// Linux Music Editor
// $Id: waveedit.cpp,v 1.5.2.12 2009/04/06 01:24:54 terminator356 Exp $
// (C) Copyright 2000 Werner Schweer (ws@seh.de)
+// (C) Copyright 2012 Tim E. Real (terminator356 on users dot sourceforge dot net)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -20,6 +21,8 @@
//
//=========================================================
+#include <limits.h>
+
#include <QMenu>
#include <QSignalMapper>
#include <QToolBar>
@@ -41,7 +44,8 @@
#include "waveedit.h"
#include "mtscale.h"
#include "scrollscale.h"
-#include "waveview.h"
+//#include "waveview.h"
+#include "wavecanvas.h"
#include "ttoolbar.h"
#include "globals.h"
#include "audio.h"
@@ -51,6 +55,7 @@
#include "gconfig.h"
#include "icons.h"
#include "shortcuts.h"
+#include "cmd.h"
namespace MusECore {
extern QColor readColor(MusECore::Xml& xml);
@@ -58,6 +63,12 @@ extern QColor readColor(MusECore::Xml& xml);
namespace MusEGui {
+static int waveEditTools = MusEGui::PointerTool | MusEGui::PencilTool | MusEGui::RubberTool |
+ MusEGui::CutTool | MusEGui::CursorTool;
+
+int WaveEdit::_rasterInit = 96;
+int WaveEdit::colorModeInit = 0;
+
//---------------------------------------------------------
// closeEvent
//---------------------------------------------------------
@@ -81,8 +92,10 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)
: MidiEditor(TopWin::WAVE, 1, pl)
{
setFocusPolicy(Qt::NoFocus);
+ colorMode = colorModeInit;
QSignalMapper* mapper = new QSignalMapper(this);
+ QSignalMapper* colorMapper = new QSignalMapper(this);
QAction* act;
//---------Pulldown Menu----------------------------
@@ -95,27 +108,27 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)
menuGain = menuFunctions->addMenu(tr("&Gain"));
act = menuGain->addAction("200%");
- mapper->setMapping(act, CMD_GAIN_200);
+ mapper->setMapping(act, WaveCanvas::CMD_GAIN_200);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuGain->addAction("150%");
- mapper->setMapping(act, CMD_GAIN_150);
+ mapper->setMapping(act, WaveCanvas::CMD_GAIN_150);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuGain->addAction("75%");
- mapper->setMapping(act, CMD_GAIN_75);
+ mapper->setMapping(act, WaveCanvas::CMD_GAIN_75);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuGain->addAction("50%");
- mapper->setMapping(act, CMD_GAIN_50);
+ mapper->setMapping(act, WaveCanvas::CMD_GAIN_50);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuGain->addAction("25%");
- mapper->setMapping(act, CMD_GAIN_25);
+ mapper->setMapping(act, WaveCanvas::CMD_GAIN_25);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuGain->addAction(tr("Other"));
- mapper->setMapping(act, CMD_GAIN_FREE);
+ mapper->setMapping(act, WaveCanvas::CMD_GAIN_FREE);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
connect(mapper, SIGNAL(mapped(int)), this, SLOT(cmd(int)));
@@ -123,65 +136,99 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)
menuFunctions->addSeparator();
copyAction = menuEdit->addAction(tr("&Copy"));
- mapper->setMapping(copyAction, CMD_EDIT_COPY);
+ mapper->setMapping(copyAction, WaveCanvas::CMD_EDIT_COPY);
connect(copyAction, SIGNAL(triggered()), mapper, SLOT(map()));
cutAction = menuEdit->addAction(tr("C&ut"));
- mapper->setMapping(cutAction, CMD_EDIT_CUT);
+ mapper->setMapping(cutAction, WaveCanvas::CMD_EDIT_CUT);
connect(cutAction, SIGNAL(triggered()), mapper, SLOT(map()));
pasteAction = menuEdit->addAction(tr("&Paste"));
- mapper->setMapping(pasteAction, CMD_EDIT_PASTE);
+ mapper->setMapping(pasteAction, WaveCanvas::CMD_EDIT_PASTE);
connect(pasteAction, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuEdit->addAction(tr("Edit in E&xternal Editor"));
- mapper->setMapping(act, CMD_EDIT_EXTERNAL);
+ mapper->setMapping(act, WaveCanvas::CMD_EDIT_EXTERNAL);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuFunctions->addAction(tr("Mute Selection"));
- mapper->setMapping(act, CMD_MUTE);
+ mapper->setMapping(act, WaveCanvas::CMD_MUTE);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuFunctions->addAction(tr("Normalize Selection"));
- mapper->setMapping(act, CMD_NORMALIZE);
+ mapper->setMapping(act, WaveCanvas::CMD_NORMALIZE);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuFunctions->addAction(tr("Fade In Selection"));
- mapper->setMapping(act, CMD_FADE_IN);
+ mapper->setMapping(act, WaveCanvas::CMD_FADE_IN);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuFunctions->addAction(tr("Fade Out Selection"));
- mapper->setMapping(act, CMD_FADE_OUT);
+ mapper->setMapping(act, WaveCanvas::CMD_FADE_OUT);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
act = menuFunctions->addAction(tr("Reverse Selection"));
- mapper->setMapping(act, CMD_REVERSE);
+ mapper->setMapping(act, WaveCanvas::CMD_REVERSE);
connect(act, SIGNAL(triggered()), mapper, SLOT(map()));
select = menuEdit->addMenu(QIcon(*selectIcon), tr("Select"));
selectAllAction = select->addAction(QIcon(*select_allIcon), tr("Select &All"));
- mapper->setMapping(selectAllAction, CMD_SELECT_ALL);
+ mapper->setMapping(selectAllAction, WaveCanvas::CMD_SELECT_ALL);
connect(selectAllAction, SIGNAL(triggered()), mapper, SLOT(map()));
selectNoneAction = select->addAction(QIcon(*select_allIcon), tr("&Deselect All"));
- mapper->setMapping(selectNoneAction, CMD_SELECT_NONE);
+ mapper->setMapping(selectNoneAction, WaveCanvas::CMD_SELECT_NONE);
connect(selectNoneAction, SIGNAL(triggered()), mapper, SLOT(map()));
+ select->addSeparator();
+
+ selectPrevPartAction = select->addAction(QIcon(*select_all_parts_on_trackIcon), tr("&Previous Part"));
+ mapper->setMapping(selectPrevPartAction, WaveCanvas::CMD_SELECT_PREV_PART);
+ connect(selectPrevPartAction, SIGNAL(triggered()), mapper, SLOT(map()));
+
+ selectNextPartAction = select->addAction(QIcon(*select_all_parts_on_trackIcon), tr("&Next Part"));
+ mapper->setMapping(selectNextPartAction, WaveCanvas::CMD_SELECT_NEXT_PART);
+ connect(selectNextPartAction, SIGNAL(triggered()), mapper, SLOT(map()));
+
QMenu* settingsMenu = menuBar()->addMenu(tr("Window &Config"));
+
+ eventColor = settingsMenu->addMenu(tr("&Event Color"));
+
+ QActionGroup* actgrp = new QActionGroup(this);
+ actgrp->setExclusive(true);
+
+ evColorNormalAction = actgrp->addAction(tr("&Part colors"));
+ evColorNormalAction->setCheckable(true);
+ colorMapper->setMapping(evColorNormalAction, 0);
+
+ evColorPartsAction = actgrp->addAction(tr("&Gray"));
+ evColorPartsAction->setCheckable(true);
+ colorMapper->setMapping(evColorPartsAction, 1);
+
+ connect(evColorNormalAction, SIGNAL(triggered()), colorMapper, SLOT(map()));
+ connect(evColorPartsAction, SIGNAL(triggered()), colorMapper, SLOT(map()));
+
+ eventColor->addActions(actgrp->actions());
+
+ connect(colorMapper, SIGNAL(mapped(int)), this, SLOT(eventColorModeChanged(int)));
+
+ settingsMenu->addSeparator();
settingsMenu->addAction(subwinAction);
settingsMenu->addAction(shareAction);
settingsMenu->addAction(fullscreenAction);
-
connect(MusEGlobal::muse, SIGNAL(configChanged()), SLOT(configChanged()));
//--------------------------------------------------
// ToolBar: Solo Cursor1 Cursor2
+ tools2 = new MusEGui::EditToolBar(this, waveEditTools);
+ addToolBar(tools2);
+
addToolBarBreak();
tb1 = addToolBar(tr("WaveEdit tools"));
tb1->setObjectName("WaveEdit tools");
@@ -222,8 +269,9 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)
}
hscroll = new ScrollScale(-32768, 1, xscale, 10000, Qt::Horizontal, mainw, 0, false, 10000.0);
- view = new WaveView(this, mainw, xscale, yscale);
- wview = view; // HACK!
+ //view = new WaveView(this, mainw, xscale, yscale);
+ canvas = new WaveCanvas(this, mainw, xscale, yscale);
+ //wview = canvas; // HACK!
QSizeGrip* corner = new QSizeGrip(mainw);
ymag = new QSlider(Qt::Vertical, mainw);
@@ -235,10 +283,10 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)
time = new MTScale(&_raster, mainw, xscale, true);
ymag->setFixedWidth(16);
- connect(view, SIGNAL(mouseWheelMoved(int)), this, SLOT(moveVerticalSlider(int)));
- connect(ymag, SIGNAL(valueChanged(int)), view, SLOT(setYScale(int)));
- connect(view, SIGNAL(horizontalZoomIn()), SLOT(horizontalZoomIn()));
- connect(view, SIGNAL(horizontalZoomOut()), SLOT(horizontalZoomOut()));
+ connect(canvas, SIGNAL(mouseWheelMoved(int)), this, SLOT(moveVerticalSlider(int)));
+ connect(ymag, SIGNAL(valueChanged(int)), canvas, SLOT(setYScale(int)));
+ connect(canvas, SIGNAL(horizontalZoomIn()), SLOT(horizontalZoomIn()));
+ connect(canvas, SIGNAL(horizontalZoomOut()), SLOT(horizontalZoomOut()));
time->setOrigin(0, 0);
@@ -247,28 +295,38 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)
mainGrid->addWidget(time, 0, 0, 1, 2);
mainGrid->addWidget(MusECore::hLine(mainw), 1, 0, 1, 2);
- mainGrid->addWidget(view, 2, 0);
+ mainGrid->addWidget(canvas, 2, 0);
mainGrid->addWidget(ymag, 2, 1);
mainGrid->addWidget(hscroll, 3, 0);
mainGrid->addWidget(corner, 3, 1, Qt::AlignBottom | Qt::AlignRight);
- view->setFocus();
+ canvas->setFocus();
- connect(hscroll, SIGNAL(scrollChanged(int)), view, SLOT(setXPos(int)));
- connect(hscroll, SIGNAL(scaleChanged(int)), view, SLOT(setXMag(int)));
- setWindowTitle(view->getCaption());
- connect(view, SIGNAL(followEvent(int)), hscroll, SLOT(setOffset(int)));
+ connect(canvas, SIGNAL(toolChanged(int)), tools2, SLOT(set(int)));
+ connect(tools2, SIGNAL(toolChanged(int)), canvas, SLOT(setTool(int)));
+
+ connect(hscroll, SIGNAL(scrollChanged(int)), canvas, SLOT(setXPos(int)));
+ connect(hscroll, SIGNAL(scaleChanged(int)), canvas, SLOT(setXMag(int)));
+ setWindowTitle(canvas->getCaption());
+ connect(canvas, SIGNAL(followEvent(int)), hscroll, SLOT(setOffset(int)));
connect(hscroll, SIGNAL(scrollChanged(int)), time, SLOT(setXPos(int)));
connect(hscroll, SIGNAL(scaleChanged(int)), time, SLOT(setXMag(int)));
-// connect(time, SIGNAL(timeChanged(unsigned)), SLOT(setTime(unsigned)));
- connect(view, SIGNAL(timeChanged(unsigned)), SLOT(setTime(unsigned)));
+ connect(time, SIGNAL(timeChanged(unsigned)), SLOT(timeChanged(unsigned)));
+ connect(canvas, SIGNAL(timeChanged(unsigned)), SLOT(setTime(unsigned)));
- connect(view, SIGNAL(horizontalScroll(unsigned)),hscroll, SLOT(setPos(unsigned)));
+ connect(canvas, SIGNAL(horizontalScroll(unsigned)),hscroll, SLOT(setPos(unsigned)));
+ connect(canvas, SIGNAL(horizontalScrollNoLimit(unsigned)),hscroll, SLOT(setPosNoLimit(unsigned)));
connect(hscroll, SIGNAL(scaleChanged(int)), SLOT(updateHScrollRange()));
connect(MusEGlobal::song, SIGNAL(songChanged(MusECore::SongChangedFlags_t)), SLOT(songChanged1(MusECore::SongChangedFlags_t)));
+ // For the wave editor, let's start with the operation range selection tool.
+ canvas->setTool(MusEGui::CursorTool);
+ tools2->set(MusEGui::CursorTool);
+
+ setEventColorMode(colorMode);
+
initShortcuts();
updateHScrollRange();
@@ -291,6 +349,17 @@ void WaveEdit::initShortcuts()
pasteAction->setShortcut(shortcuts[SHRT_PASTE].key);
selectAllAction->setShortcut(shortcuts[SHRT_SELECT_ALL].key);
selectNoneAction->setShortcut(shortcuts[SHRT_SELECT_NONE].key);
+
+ //selectInvertAction->setShortcut(shortcuts[SHRT_SELECT_INVERT].key);
+ //selectInsideLoopAction->setShortcut(shortcuts[SHRT_SELECT_ILOOP].key);
+ //selectOutsideLoopAction->setShortcut(shortcuts[SHRT_SELECT_OLOOP].key);
+ selectPrevPartAction->setShortcut(shortcuts[SHRT_SELECT_PREV_PART].key);
+ selectNextPartAction->setShortcut(shortcuts[SHRT_SELECT_NEXT_PART].key);
+
+ eventColor->menuAction()->setShortcut(shortcuts[SHRT_EVENT_COLOR].key);
+ //evColorNormalAction->setShortcut(shortcuts[ ].key);
+ //evColorPartsAction->setShortcut(shortcuts[ ].key);
+
}
//---------------------------------------------------------
@@ -299,9 +368,15 @@ void WaveEdit::initShortcuts()
void WaveEdit::configChanged()
{
- view->setBg(MusEGlobal::config.waveEditBackgroundColor);
- selectAllAction->setShortcut(shortcuts[SHRT_SELECT_ALL].key);
- selectNoneAction->setShortcut(shortcuts[SHRT_SELECT_NONE].key);
+ if (MusEGlobal::config.canvasBgPixmap.isEmpty()) {
+ canvas->setBg(MusEGlobal::config.waveEditBackgroundColor);
+ canvas->setBg(QPixmap());
+ }
+ else {
+ canvas->setBg(QPixmap(MusEGlobal::config.canvasBgPixmap));
+ }
+
+ initShortcuts();
}
//---------------------------------------------------------
@@ -310,17 +385,39 @@ void WaveEdit::configChanged()
void WaveEdit::updateHScrollRange()
{
int s, e;
- wview->range(&s, &e);
- // Show one more measure.
- e += AL::sigmap.ticksMeasure(e);
- // Show another quarter measure due to imprecise drawing at canvas end point.
- e += AL::sigmap.ticksMeasure(e) / 4;
+ canvas->range(&s, &e); // Range in frames
+ unsigned tm = AL::sigmap.ticksMeasure(MusEGlobal::tempomap.frame2tick(e));
+
+ // Show one more measure, and show another quarter measure due to imprecise drawing at canvas end point.
+ //e += MusEGlobal::tempomap.tick2frame(tm + tm / 4); // TODO: Try changing scrollbar to use units of frames?
+ e += (tm + tm / 4);
+
// Compensate for the vscroll width.
//e += wview->rmapxDev(-vscroll->width());
int s1, e1;
- hscroll->range(&s1, &e1);
+ hscroll->range(&s1, &e1); // ...
if(s != s1 || e != e1)
- hscroll->setRange(s, e);
+ hscroll->setRange(s, e); // ...
+}
+
+//---------------------------------------------------------
+// timeChanged
+//---------------------------------------------------------
+
+void WaveEdit::timeChanged(unsigned t)
+{
+ if(t == INT_MAX)
+ {
+ // Let the PosLabels disable themselves with INT_MAX.
+ pos1->setValue(t);
+ pos2->setValue(t);
+ return;
+ }
+
+ unsigned frame = MusEGlobal::tempomap.tick2frame(t);
+ pos1->setValue(t);
+ pos2->setValue(frame);
+ time->setPos(3, t, false);
}
//---------------------------------------------------------
@@ -329,10 +426,16 @@ void WaveEdit::updateHScrollRange()
void WaveEdit::setTime(unsigned samplepos)
{
-// printf("setTime %d %x\n", samplepos, samplepos);
+ if(samplepos == INT_MAX)
+ {
+ // Let the PosLabels disable themselves with INT_MAX.
+ pos1->setValue(samplepos);
+ pos2->setValue(samplepos);
+ return;
+ }
+
unsigned tick = MusEGlobal::tempomap.frame2tick(samplepos);
pos1->setValue(tick);
- //pos2->setValue(tick);
pos2->setValue(samplepos);
time->setPos(3, tick, false);
}
@@ -343,7 +446,6 @@ void WaveEdit::setTime(unsigned samplepos)
WaveEdit::~WaveEdit()
{
- // MusEGlobal::undoRedo->removeFrom(tools); // p4.0.6 Removed
}
//---------------------------------------------------------
@@ -352,7 +454,7 @@ WaveEdit::~WaveEdit()
void WaveEdit::cmd(int n)
{
- view->cmd(n);
+ ((WaveCanvas*)canvas)->cmd(n);
}
//---------------------------------------------------------
@@ -368,6 +470,10 @@ void WaveEdit::readConfiguration(MusECore::Xml& xml)
case MusECore::Xml::TagStart:
if (tag == "bgcolor")
MusEGlobal::config.waveEditBackgroundColor = readColor(xml);
+ else if (tag == "raster")
+ _rasterInit = xml.parseInt();
+ else if (tag == "colormode")
+ colorModeInit = xml.parseInt();
else if (tag == "topwin")
TopWin::readConfiguration(WAVE, xml);
else
@@ -393,6 +499,8 @@ void WaveEdit::writeConfiguration(int level, MusECore::Xml& xml)
{
xml.tag(level++, "waveedit");
xml.colorTag(level, "bgcolor", MusEGlobal::config.waveEditBackgroundColor);
+ xml.intTag(level, "raster", _rasterInit);
+ xml.intTag(level, "colormode", colorModeInit);
TopWin::writeConfiguration(WAVE, level,xml);
xml.tag(level, "/waveedit");
}
@@ -406,6 +514,7 @@ void WaveEdit::writeStatus(int level, MusECore::Xml& xml) const
writePartList(level, xml);
xml.tag(level++, "waveedit");
MidiEditor::writeStatus(level, xml);
+ xml.intTag(level, "tool", int(canvas->tool()));
xml.intTag(level, "xpos", hscroll->pos());
xml.intTag(level, "xmag", hscroll->mag());
xml.intTag(level, "ymag", ymag->value());
@@ -427,6 +536,11 @@ void WaveEdit::readStatus(MusECore::Xml& xml)
case MusECore::Xml::TagStart:
if (tag == "midieditor")
MidiEditor::readStatus(xml);
+ else if (tag == "tool") {
+ int tool = xml.parseInt();
+ canvas->setTool(tool);
+ tools2->set(tool);
+ }
else if (tag == "xmag")
hscroll->setMag(xml.parseInt());
else if (tag == "ymag")
@@ -486,14 +600,170 @@ void WaveEdit::soloChanged(bool flag)
void WaveEdit::keyPressEvent(QKeyEvent* event)
{
+// TODO: Raster:
+// int index;
+// int n = sizeof(rasterTable)/sizeof(*rasterTable);
+// for (index = 0; index < n; ++index)
+// if (rasterTable[index] == raster())
+// break;
+// if (index == n) {
+// index = 0;
+// // raster 1 is not in table
+// }
+// int off = (index / 9) * 9;
+// index = index % 9;
+
+// int val = 0;
+
+ WaveCanvas* wc = (WaveCanvas*)canvas;
int key = event->key();
+
+ if (((QInputEvent*)event)->modifiers() & Qt::ShiftModifier)
+ key += Qt::SHIFT;
+ if (((QInputEvent*)event)->modifiers() & Qt::AltModifier)
+ key += Qt::ALT;
+ if (((QInputEvent*)event)->modifiers() & Qt::ControlModifier)
+ key+= Qt::CTRL;
+
if (key == Qt::Key_Escape) {
close();
return;
}
- else {
+
+ else if (key == shortcuts[SHRT_POS_INC].key) {
+ wc->waveCmd(CMD_RIGHT);
+ return;
+ }
+ else if (key == shortcuts[SHRT_POS_DEC].key) {
+ wc->waveCmd(CMD_LEFT);
+ return;
+ }
+ else if (key == shortcuts[SHRT_POS_INC_NOSNAP].key) {
+ wc->waveCmd(CMD_RIGHT_NOSNAP);
+ return;
+ }
+ else if (key == shortcuts[SHRT_POS_DEC_NOSNAP].key) {
+ wc->waveCmd(CMD_LEFT_NOSNAP);
+ return;
+ }
+ else if (key == shortcuts[SHRT_INSERT_AT_LOCATION].key) {
+ wc->waveCmd(CMD_INSERT);
+ return;
+ }
+ else if (key == Qt::Key_Backspace) {
+ wc->waveCmd(CMD_BACKSPACE);
+ return;
+ }
+
+ else if (key == shortcuts[SHRT_TOOL_POINTER].key) {
+ tools2->set(MusEGui::PointerTool);
+ return;
+ }
+ else if (key == shortcuts[SHRT_TOOL_PENCIL].key) {
+ tools2->set(MusEGui::PencilTool);
+ return;
+ }
+ else if (key == shortcuts[SHRT_TOOL_RUBBER].key) {
+ tools2->set(MusEGui::RubberTool);
+ return;
+ }
+ else if (key == shortcuts[SHRT_TOOL_SCISSORS].key) {
+ tools2->set(MusEGui::CutTool);
+ return;
+ }
+ else if (key == shortcuts[SHRT_TOOL_CURSOR].key) {
+ tools2->set(MusEGui::CursorTool);
+ return;
+ }
+ else if (key == shortcuts[SHRT_EVENT_COLOR].key) {
+ if (colorMode == 0)
+ colorMode = 1;
+ else if (colorMode == 1)
+ colorMode = 0;
+ setEventColorMode(colorMode);
+ return;
+ }
+
+ // TODO: New WaveCanvas: Convert some of these to use frames.
+ else if (key == shortcuts[SHRT_ZOOM_IN].key) {
+ int mag = hscroll->mag();
+ int zoomlvl = MusEGui::ScrollScale::getQuickZoomLevel(mag);
+ if (zoomlvl < MusEGui::ScrollScale::zoomLevels-1)
+ zoomlvl++;
+
+ int newmag = MusEGui::ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
+ hscroll->setMag(newmag);
+ //printf("mag = %d zoomlvl = %d newmag = %d\n", mag, zoomlvl, newmag);
+ return;
+ }
+ else if (key == shortcuts[SHRT_ZOOM_OUT].key) {
+ int mag = hscroll->mag();
+ int zoomlvl = MusEGui::ScrollScale::getQuickZoomLevel(mag);
+ if (zoomlvl > 1)
+ zoomlvl--;
+
+ int newmag = MusEGui::ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
+ hscroll->setMag(newmag);
+ //printf("mag = %d zoomlvl = %d newmag = %d\n", mag, zoomlvl, newmag);
+ return;
+ }
+ else if (key == shortcuts[SHRT_GOTO_CPOS].key) {
+ MusECore::PartList* p = this->parts();
+ MusECore::Part* first = p->begin()->second;
+ hscroll->setPos(MusEGlobal::song->cpos() - first->tick() );
+ return;
+ }
+ else if (key == shortcuts[SHRT_SCROLL_LEFT].key) {
+ int pos = hscroll->pos() - MusEGlobal::config.division;
+ if (pos < 0)
+ pos = 0;
+ hscroll->setPos(pos);
+ return;
+ }
+ else if (key == shortcuts[SHRT_SCROLL_RIGHT].key) {
+ int pos = hscroll->pos() + MusEGlobal::config.division;
+ hscroll->setPos(pos);
+ return;
+ }
+
+// TODO: Raster:
+// else if (key == shortcuts[SHRT_SET_QUANT_1].key)
+// val = rasterTable[8 + off];
+// else if (key == shortcuts[SHRT_SET_QUANT_2].key)
+// val = rasterTable[7 + off];
+// else if (key == shortcuts[SHRT_SET_QUANT_3].key)
+// val = rasterTable[6 + off];
+// else if (key == shortcuts[SHRT_SET_QUANT_4].key)
+// val = rasterTable[5 + off];
+// else if (key == shortcuts[SHRT_SET_QUANT_5].key)
+// val = rasterTable[4 + off];
+// else if (key == shortcuts[SHRT_SET_QUANT_6].key)
+// val = rasterTable[3 + off];
+// else if (key == shortcuts[SHRT_SET_QUANT_7].key)
+// val = rasterTable[2 + off];
+// else if (key == shortcuts[SHRT_TOGGLE_TRIOL].key)
+// val = rasterTable[index + ((off == 0) ? 9 : 0)];
+// else if (key == shortcuts[SHRT_TOGGLE_PUNCT].key)
+// val = rasterTable[index + ((off == 18) ? 9 : 18)];
+// else if (key == shortcuts[SHRT_TOGGLE_PUNCT2].key) {//CDW
+// if ((off == 18) && (index > 2)) {
+// val = rasterTable[index + 9 - 1];
+// }
+// else if ((off == 9) && (index < 8)) {
+// val = rasterTable[index + 18 + 1];
+// }
+// else
+// return;
+// }
+
+ else { //Default:
event->ignore();
+ return;
}
+
+ // TODO: Raster:
+ //setRaster(val);
+ //toolbar->setRaster(_raster);
}
//---------------------------------------------------------
@@ -540,9 +810,38 @@ void WaveEdit::focusCanvas()
{
if(MusEGlobal::config.smartFocus)
{
- view->setFocus();
- view->activateWindow();
+ canvas->setFocus();
+ canvas->activateWindow();
}
}
+//---------------------------------------------------------
+// eventColorModeChanged
+//---------------------------------------------------------
+
+void WaveEdit::eventColorModeChanged(int mode)
+ {
+ colorMode = mode;
+ colorModeInit = colorMode;
+
+ ((WaveCanvas*)(canvas))->setColorMode(colorMode);
+ }
+
+//---------------------------------------------------------
+// setEventColorMode
+//---------------------------------------------------------
+
+void WaveEdit::setEventColorMode(int mode)
+ {
+ colorMode = mode;
+ colorModeInit = colorMode;
+
+ evColorNormalAction->setChecked(mode == 0);
+ evColorPartsAction->setChecked(mode == 1);
+
+ ((WaveCanvas*)(canvas))->setColorMode(colorMode);
+ }
+
+
+
} // namespace MusEGui