|
|
|
/*
|
|
|
|
Rosegarden
|
|
|
|
A MIDI and audio sequencer and musical notation editor.
|
|
|
|
|
|
|
|
This program is Copyright 2000-2008
|
|
|
|
Guillaume Laurent <glaurent@telegraph-road.org>,
|
|
|
|
Chris Cannam <cannam@all-day-breakfast.com>,
|
|
|
|
Richard Bown <richard.bown@ferventsoftware.com>
|
|
|
|
|
|
|
|
The moral rights of Guillaume Laurent, Chris Cannam, and Richard
|
|
|
|
Bown to claim authorship of this work have been asserted.
|
|
|
|
|
|
|
|
Other copyrights also apply to some parts of this work. Please
|
|
|
|
see the AUTHORS file and individual file headers for details.
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License as
|
|
|
|
published by the Free Software Foundation; either version 2 of the
|
|
|
|
License, or (at your option) any later version. See the file
|
|
|
|
COPYING included with this distribution for more information.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include "EditTool.h"
|
|
|
|
|
|
|
|
#include "misc/Debug.h"
|
|
|
|
#include "base/Event.h"
|
|
|
|
#include "BaseTool.h"
|
|
|
|
#include "base/ViewElement.h"
|
|
|
|
#include "EditView.h"
|
|
|
|
#include "RosegardenCanvasView.h"
|
|
|
|
#include <kxmlguiclient.h>
|
|
|
|
#include <tqevent.h>
|
|
|
|
#include <tqpopupmenu.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
|
|
|
|
|
|
|
|
namespace Rosegarden
|
|
|
|
{
|
|
|
|
|
|
|
|
EditTool::EditTool(const TQString& menuName, EditView* view)
|
|
|
|
: BaseTool(menuName, view->factory(), TQT_TQOBJECT(view)),
|
|
|
|
m_parentView(view)
|
|
|
|
{}
|
|
|
|
|
|
|
|
void EditTool::handleMousePress(timeT time,
|
|
|
|
int height,
|
|
|
|
int staffNo,
|
|
|
|
TQMouseEvent* e,
|
|
|
|
ViewElement* el)
|
|
|
|
{
|
|
|
|
RG_DEBUG << "EditTool::handleMousePress : mouse button = "
|
|
|
|
<< e->button() << endl;
|
|
|
|
|
|
|
|
switch (e->button()) {
|
|
|
|
|
|
|
|
case TQt::LeftButton:
|
|
|
|
if (e->type() == TQEvent::MouseButtonDblClick) {
|
|
|
|
RG_DEBUG << "EditTool::handleMousePress: it's a double-click"
|
|
|
|
<< endl;
|
|
|
|
handleMouseDoubleClick(time, height, staffNo, e, el);
|
|
|
|
} else {
|
|
|
|
RG_DEBUG << "EditTool::handleMousePress: it's a single-click"
|
|
|
|
<< endl;
|
|
|
|
handleLeftButtonPress(time, height, staffNo, e, el);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TQt::RightButton:
|
|
|
|
handleRightButtonPress(time, height, staffNo, e, el);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TQt::MidButton:
|
|
|
|
handleMidButtonPress(time, height, staffNo, e, el);
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
RG_DEBUG << "EditTool::handleMousePress : no button mouse press\n";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void EditTool::handleMidButtonPress(timeT,
|
|
|
|
int, int,
|
|
|
|
TQMouseEvent*,
|
|
|
|
ViewElement*)
|
|
|
|
{}
|
|
|
|
|
|
|
|
void EditTool::handleRightButtonPress(timeT,
|
|
|
|
int, int,
|
|
|
|
TQMouseEvent*,
|
|
|
|
ViewElement*)
|
|
|
|
{
|
|
|
|
showMenu();
|
|
|
|
}
|
|
|
|
|
|
|
|
void EditTool::handleMouseDoubleClick(timeT,
|
|
|
|
int, int,
|
|
|
|
TQMouseEvent*,
|
|
|
|
ViewElement*)
|
|
|
|
{
|
|
|
|
// nothing
|
|
|
|
}
|
|
|
|
|
|
|
|
int EditTool::handleMouseMove(timeT, int, TQMouseEvent*)
|
|
|
|
{
|
|
|
|
return RosegardenCanvasView::NoFollow;
|
|
|
|
}
|
|
|
|
|
|
|
|
void EditTool::handleMouseRelease(timeT, int, TQMouseEvent*)
|
|
|
|
{}
|
|
|
|
|
|
|
|
void EditTool::createMenu(TQString rcFileName)
|
|
|
|
{
|
|
|
|
setRCFileName(rcFileName);
|
|
|
|
createMenu();
|
|
|
|
}
|
|
|
|
|
|
|
|
void EditTool::createMenu()
|
|
|
|
{
|
|
|
|
RG_DEBUG << "BaseTool::createMenu() " << m_rcFileName << " - " << m_menuName << endl;
|
|
|
|
|
|
|
|
setXMLFile(m_rcFileName);
|
|
|
|
m_parentFactory->addClient(this);
|
|
|
|
|
|
|
|
TQWidget* tmp = m_parentFactory->container(m_menuName, this);
|
|
|
|
|
|
|
|
if (!tmp)
|
|
|
|
RG_DEBUG << "BaseTool::createMenu(" << m_rcFileName
|
|
|
|
<< ") : menu creation failed (name : "
|
|
|
|
<< m_menuName << ")\n";
|
|
|
|
|
|
|
|
m_menu = dynamic_cast<TQPopupMenu*>(tmp);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EditTool::hasMenu()
|
|
|
|
{
|
|
|
|
return !m_rcFileName.isEmpty();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|