#include <QGraphicsView>
#include <QGraphicsPixmapItem>
#include <QGraphicsSceneMouseEvent>
+#include <QScrollBar>
MonitorScene::MonitorScene(Render *renderer, QObject* parent) :
connect(m_renderer, SIGNAL(frameUpdated(QImage)), this, SLOT(slotSetBackgroundImage(QImage)));
}
+void MonitorScene::centerView()
+{
+ if (m_view) m_view->centerOn(m_frameBorder);
+}
+
+void MonitorScene::cleanup()
+{
+ // Reset scene rect
+ setSceneRect(m_frameBorder->boundingRect());
+}
+
void MonitorScene::setUp()
{
- if (views().count() > 0) {
+ if (!views().isEmpty()) {
m_view = views().at(0);
m_view->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
} else {
void MonitorScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
+ QList <QGraphicsItem *> selected = selectedItems();
+
QGraphicsScene::mousePressEvent(event);
+ if (selected.count() < selectedItems().count()) {
+ // mouse click on item not in selection group
+ // -> select only this item
+ foreach (QGraphicsItem *item, selected) {
+ if (item)
+ item->setSelected(false);
+ }
+ }
+
if (event->isAccepted() && selectedItems().count() > 1) {
// multiple items selected + mouse pressed on an item
- QList <QGraphicsItem *> selected = selectedItems();
+ selected = selectedItems();
foreach (QGraphicsItem *item, selected) {
if (qgraphicsitem_cast<BPointItem*>(item)) {
// works with rotoscoping only for now
}
void MonitorScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event)
{
- Q_UNUSED(event);
+ Q_UNUSED(event)
if (!m_enabled)
emit addKeyframe();
void MonitorScene::wheelEvent(QGraphicsSceneWheelEvent* event)
{
if (event->modifiers() == Qt::ControlModifier) {
- if (event->delta() > 0)
+ if (event->delta() > 0) {
+ m_view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
slotZoomIn(5);
- else
+ m_view->setTransformationAnchor(QGraphicsView::AnchorViewCenter);
+ } else {
slotZoomOut(5);
+ }
} else {
- QGraphicsScene::wheelEvent(event);
+ QAbstractSlider::SliderAction action;
+ if (event->delta() > 0)
+ action = QAbstractSlider::SliderSingleStepSub;
+ else
+ action = QAbstractSlider::SliderSingleStepAdd;
+ if (event->orientation() == Qt::Horizontal)
+ m_view->horizontalScrollBar()->triggerAction(action);
+ else
+ m_view->verticalScrollBar()->triggerAction(action);
}
event->accept();