프로젝트

일반

사용자정보

통계
| 개정판:

hytos / HYTOS / HYTOS / Shapes / EngineeringFreezeItem.py @ 29485992

이력 | 보기 | 이력해설 | 다운로드 (1.48 KB)

1
# coding: utf-8
2
""" This is engineering freeze item module """
3

    
4
import os.path
5
import copy, sys
6
try:
7
    from PyQt5.QtCore import *
8
    from PyQt5.QtGui import *
9
    from PyQt5.QtWidgets import *
10
except ImportError:
11
    try:
12
        from PyQt4.QtCore import Qt, QRectF, pyqtSignal, QT_VERSION_STR
13
        from PyQt4.QtGui import QGraphicsView, QGraphicsScene, QImage, QPixmap, QPainterPath, QFileDialog
14
    except ImportError:
15
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
16

    
17
"""
18
    A {FreezeItem} is the graphical representation of a {LineNo.Freeze}.
19
"""
20
class QEngineeringFreezeItem(QGraphicsRectItem):
21
    """ This is engineering freeze item class """
22
    FREEZE_SIZE = 16
23

    
24
    def __init__(self, x, y, width, height):
25
        QGraphicsRectItem.__init__(self, x, y, width, height)
26
        self.__shadow = QGraphicsDropShadowEffect(blurRadius=20, offset=QPointF(0, 0))
27
        self.setGraphicsEffect(self.__shadow)
28
        self.__shadow.setEnabled(True)
29

    
30
        self.setFlags(QGraphicsItem.ItemIsSelectable)
31
        self.setToolTip('Freeze')
32

    
33
    def mouseDoubleClickEvent(self, event, isDataList=False):
34
        """ toggle freeze value """
35

    
36
        line_no = self.parentItem()
37
        freeze = not line_no.prop('Freeze')
38
        line_no.set_property('Freeze', freeze)
39
        self.update_freeze(freeze)
40

    
41
    def update_freeze(self, freeze):
42
        """ update graphics with given freeze value """
43
        self.setBrush(Qt.gray) if freeze else self.setBrush(Qt.white)
44
        self.update()
클립보드 이미지 추가 (최대 크기: 500 MB)