File: dataItemView.C

package info (click to toggle)
ball 1.4.2%2B20140406-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 316,064 kB
  • ctags: 38,021
  • sloc: cpp: 341,838; ansic: 4,096; python: 2,645; yacc: 1,778; lex: 1,089; xml: 964; sh: 688; sql: 316; makefile: 150; awk: 118
file content (104 lines) | stat: -rw-r--r-- 2,496 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/* dataItemView.C
 * 
 * Copyright (C) 2009 Marcel Schumann
 * 
 * This file is part of QuEasy -- A Toolbox for Automated QSAR Model
 * Construction and Validation.
 * QuEasy 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 3 of the License, or (at
 * your option) any later version.
 * 
 * QuEasy 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, see <http://www.gnu.org/licenses/>.
 */

#include <dataItemView.h>
#include <edge.h>
#include <dataItem.h>
#include <mainWindow.h>

#include <QtGui/QWheelEvent>
#include <QtGui/QMenu>

#include <cmath>

namespace BALL
{
	namespace VIEW
	{

		DataItemView::DataItemView(DataItemScene* scene, MainWindow* mw):
			timer_id_(0)
		 {
			setScene(scene); 
			data_scene = scene;
			setRenderHint(QPainter::Antialiasing);
			setResizeAnchor(AnchorUnderMouse);
			setFocusPolicy(Qt::ClickFocus);
			setAlignment(Qt::AlignLeft | Qt::AlignTop);
			scene->setItemIndexMethod(QGraphicsScene::NoIndex);
			
			scene->setMainWindow(mw);
			scene->view = this;
			
			setAcceptDrops(true);
			setInteractive (true);
		 }

		 void DataItemView::wheelEvent(QWheelEvent* event)
		 {
			if (name == "view")
			{
				centerOn(event->x(),event->y());
				scaleView(pow((double)2, -event->delta() / 240.0));
			}
		 }


		void DataItemView::scaleView(qreal scaleFactor)
		{
			qreal factor = matrix().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width();
			if (factor < 0.07 || factor > 100)
			{		
				return;
			}
				 scale(scaleFactor, scaleFactor);
		}


		void DataItemView::keyPressEvent(QKeyEvent *event)
		{
			DataItem* item = static_cast<DataItem*>(scene()->focusItem());

				if (!item)
			{
				return;
			}

			switch (event->key()) 
			{
     			case Qt::Key_Up:
         			item->moveBy(0, -10);
         			break;
     			case Qt::Key_Down:
         			item->moveBy(0, 10);
        			break;
     			case Qt::Key_Left:
         			item->moveBy(-10, 0);
         			break;
     			case Qt::Key_Right:
         			item->moveBy(10, 0);
         			break;

			default: 
				QGraphicsView::keyPressEvent(event);
			}
		}
	}
}