114 lines
2.9 KiB
C++
114 lines
2.9 KiB
C++
|
|
||
|
// -*- C++ -*-
|
||
|
//
|
||
|
// This file is part of the Coriolis Software.
|
||
|
// Copyright (c) UPMC/LIP6 2008-2009, All Rights Reserved
|
||
|
//
|
||
|
// ===================================================================
|
||
|
//
|
||
|
// $Id$
|
||
|
//
|
||
|
// x-----------------------------------------------------------------x
|
||
|
// | |
|
||
|
// | H U R R I C A N E |
|
||
|
// | V L S I B a c k e n d D a t a - B a s e |
|
||
|
// | |
|
||
|
// | Author : Jean-Paul CHAPUT |
|
||
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||
|
// | =============================================================== |
|
||
|
// | C++ Module : "./RulerCommand.cpp" |
|
||
|
// | *************************************************************** |
|
||
|
// | U p d a t e s |
|
||
|
// | |
|
||
|
// x-----------------------------------------------------------------x
|
||
|
|
||
|
|
||
|
# include <QMouseEvent>
|
||
|
# include <QKeyEvent>
|
||
|
|
||
|
# include <hurricane/viewer/CellWidget.h>
|
||
|
# include <hurricane/viewer/RulerCommand.h>
|
||
|
|
||
|
|
||
|
namespace Hurricane {
|
||
|
|
||
|
|
||
|
// -------------------------------------------------------------------
|
||
|
// Class : "RulerCommand".
|
||
|
|
||
|
|
||
|
string RulerCommand::_name = "RulerCommand";
|
||
|
|
||
|
|
||
|
RulerCommand::RulerCommand ()
|
||
|
: Command ()
|
||
|
, _ruler ()
|
||
|
, _drawing(false)
|
||
|
{ }
|
||
|
|
||
|
|
||
|
RulerCommand::~RulerCommand ()
|
||
|
{ }
|
||
|
|
||
|
|
||
|
const string& RulerCommand::getName () const
|
||
|
{ return _name; }
|
||
|
|
||
|
|
||
|
void RulerCommand::mouseMoveEvent ( QMouseEvent* event )
|
||
|
{
|
||
|
if ( not isActive() or not _drawing ) return;
|
||
|
|
||
|
_ruler->setExtremity ( _cellWidget->_onCursorGrid(_cellWidget->screenToDbuPoint(event->pos())) );
|
||
|
_cellWidget->update ();
|
||
|
}
|
||
|
|
||
|
|
||
|
void RulerCommand::mousePressEvent ( QMouseEvent* event )
|
||
|
{
|
||
|
if ( not isActive() ) return;
|
||
|
|
||
|
if ( event->button() == Qt::LeftButton ) {
|
||
|
if ( not _drawing ) {
|
||
|
_drawing = true;
|
||
|
_ruler.reset ( new Ruler
|
||
|
(_cellWidget->_onCursorGrid(_cellWidget->screenToDbuPoint(_cellWidget->getMousePosition())) ) );
|
||
|
} else {
|
||
|
setActive ( false );
|
||
|
_drawing = false;
|
||
|
_cellWidget->addRuler ( _ruler );
|
||
|
_ruler.reset ();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void RulerCommand::keyPressEvent ( QKeyEvent* event )
|
||
|
{
|
||
|
if ( isActive() and (event->key() == Qt::Key_Escape) ) {
|
||
|
setActive ( false );
|
||
|
_drawing = false;
|
||
|
_ruler.reset ();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( event->key() != Qt::Key_K ) return;
|
||
|
|
||
|
if ( event->modifiers() & Qt::ShiftModifier ) {
|
||
|
_cellWidget->clearRulers ();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
setActive ( true );
|
||
|
}
|
||
|
|
||
|
|
||
|
void RulerCommand::draw ()
|
||
|
{
|
||
|
if ( not _drawing ) return;
|
||
|
_cellWidget->drawRuler ( _ruler );
|
||
|
}
|
||
|
|
||
|
|
||
|
} // End of Hurricane namespace.
|