프로젝트

일반

사용자정보

개정판 acab3bcc

IDacab3bcca05c8aaf9784cb3ff7f8ce21b0a54b4f
상위 190a20fb
하위 8277f092, b792cc7e

백흠경이(가) 약 6년 전에 추가함

issue #610: apply free mode('F' key) when create or modify line

Change-Id: I6e9b0d9e8d622ecaaf03d98bb6e6da8eb5af8338

차이점 보기:

DTI_PID/DTI_PID/Commands/PlaceLineCommand.py
81 81
            if event.key() == Qt.Key_Escape:
82 82
                self.onRejected.emit(self)
83 83
                self.isTreated = False
84
            elif event.key() == Qt.Key_A:   # axis lock mode
85
                self._polyline.drawing_mode = QEngineeringPolylineItem.AXIS_MODE
86
            elif event.key() == Qt.Key_F:   # free drawing mode 
87
                self._polyline.drawing_mode = QEngineeringPolylineItem.FREE_MODE
84 88

  
85 89
    def undo(self):
86 90
        pass
DTI_PID/DTI_PID/Shapes/EngineeringConnectorItem.py
1 1
# coding: utf-8
2
"""
3
This is engineering connector item module
4
"""
2 5

  
3 6
import os.path
4 7
import copy
......
26 29
    BIG_SIZE = 16
27 30
    HIGHLIGHT = '#BC4438'
28 31

  
32
    AXIS_MODE = 0
33
    FREE_MODE = 1
34

  
29 35
    '''
30 36
        @brief  
31 37
        @author 
......
53 59
        self.setAcceptHoverEvents(True)
54 60
        self.transfer = Transfer()
55 61

  
62
        self._drawing_mode = QEngineeringConnectorItem.AXIS_MODE
63

  
56 64
    '''
57 65
        @brief      getter of direction
58 66
        @author     humkyung
......
242 250
                items[0].connectedItem = self.parent
243 251
            else:
244 252
                pt = [event.scenePos().x(), event.scenePos().y()]
245
                if len(self.parentItem().connectors) == 2:
246
                    other = [connector for connector in self.parent.connectors if connector is not self]
247
                    if other:
248
                        pt = [event.scenePos().x(), event.scenePos().y()]
249
                        dx = abs(pt[0] - other[0].center()[0])
250
                        dy = abs(pt[1] - other[0].center()[1])
251
                        if dx < dy:
252
                            pt[0] = other[0].center()[0]
253
                        else:
254
                            pt[1] = other[0].center()[1]
253
                if self._drawing_mode == QEngineeringConnectorItem.AXIS_MODE:
254
                    if len(self.parentItem().connectors) == 2:
255
                        other = [connector for connector in self.parent.connectors if connector is not self]
256
                        if other:
257
                            pt = [event.scenePos().x(), event.scenePos().y()]
258
                            dx = abs(pt[0] - other[0].center()[0])
259
                            dy = abs(pt[1] - other[0].center()[1])
260
                            if dx < dy:
261
                                pt[0] = other[0].center()[0]
262
                            else:
263
                                pt[1] = other[0].center()[1]
255 264

  
256 265
                self.setPos(pt)
257 266
                if self.connectedItem is not None:
......
316 325
                    self.setPos(items[0].center())
317 326
                else:
318 327
                    pt = [event.scenePos().x(), event.scenePos().y()]
319
                    if len(self.parentItem().connectors) == 2:
320
                        other = [connector for connector in self.parent.connectors if connector is not self]
321
                        if other:
322
                            pt = [event.scenePos().x(), event.scenePos().y()]
323
                            dx = abs(pt[0] - other[0].center()[0])
324
                            dy = abs(pt[1] - other[0].center()[1])
325
                            if dx < dy:
326
                                pt[0] = other[0].center()[0]
327
                            else:
328
                                pt[1] = other[0].center()[1]
328
                    if self._drawing_mode == QEngineeringConnectorItem.AXIS_MODE:
329
                        if len(self.parentItem().connectors) == 2:
330
                            other = [connector for connector in self.parent.connectors if connector is not self]
331
                            if other:
332
                                pt = [event.scenePos().x(), event.scenePos().y()]
333
                                dx = abs(pt[0] - other[0].center()[0])
334
                                dy = abs(pt[1] - other[0].center()[1])
335
                                if dx < dy:
336
                                    pt[0] = other[0].center()[0]
337
                                else:
338
                                    pt[1] = other[0].center()[1]
329 339

  
330 340
                    self.setPos(pt)
331 341

  
......
346 356
                self.connectedItem = self._savedConnectedItem
347 357
                self._savedPos = None
348 358
                self.update()
359
        elif event.key() == Qt.Key_A:
360
            self._drawing_mode = QEngineeringConnectorItem.AXIS_MODE
361
        elif event.key() == Qt.Key_F:
362
            self._drawing_mode = QEngineeringConnectorItem.FREE_MODE
349 363

  
350 364
        QGraphicsEllipseItem.keyPressEvent(self, event)
351 365

  
DTI_PID/DTI_PID/Shapes/EngineeringPolylineItem.py
1
# coding: utf-8
2
"""
3
This is Polyline item module
4
"""
5

  
1 6
import sys
2 7
import os.path
3 8
import copy
......
14 19
from EngineeringAbstractItem import QEngineeringAbstractItem
15 20

  
16 21
class QEngineeringPolylineItem(QGraphicsPathItem, QEngineeringAbstractItem):
22
    """
23
    This is EngineeringPolylineItem Class
24
    """
25

  
26
    AXIS_MODE = 0
27
    FREE_MODE = 1
28

  
17 29
    onRemoved = pyqtSignal(QGraphicsItem)
18 30

  
19 31
    '''
......
38 50
            self.setPen(QPen(Qt.blue, 4, Qt.SolidLine)) # set default pen
39 51

  
40 52
            self.transfer = Transfer()
53

  
54
            self._drawing_mode = QEngineeringPolylineItem.AXIS_MODE
55

  
41 56
        except Exception as ex:
42 57
            print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
43 58

  
59
    @property
60
    def drawing_mode(self):
61
        return self._drawing_mode
62

  
63
    @drawing_mode.setter
64
    def drawing_mode(self, value):
65
        self._drawing_mode = value
66

  
44 67
    '''
45 68
        @brief  construct a polyline
46 69
    '''
......
141 164
            pt = item.center()
142 165
        # up to here
143 166
            
144
        if len(self._vertices) > 0:
167
        if self.drawing_mode == QEngineeringPolylineItem.AXIS_MODE and len(self._vertices) > 0:
145 168
            dx = abs(self._vertices[-1][0] - pt[0])
146 169
            dy = abs(self._vertices[-1][1] - pt[1])
147 170
            if dx < dy:

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)