프로젝트

일반

사용자정보

개정판 18a0281b

ID18a0281b719b7c2dc7888ddc4403417293030ac2
상위 a8cd73f2
하위 67c067d3

김정우 이(가) 약 7년 전에 추가함

ImageViewer에서 svg 클릭 시 TreeWidget에서 검색하는 기능 구현 중

차이점 보기:

DTI_PID/DTI_PID/App.py
143 143
            self.graphicsView.scene.clear()
144 144
            self.path = self.graphicsView.loadImageFromFile()
145 145
            baseName = os.path.basename(self.path)
146
            root = QTreeWidgetItem(self.resultTreeWidget, [os.path.splitext(baseName)[0]])
146
            self.resultTreeWidget.setCurrentPID(baseName)
147 147

  
148 148
            # DEBUG
149 149
            '''
......
217 217

  
218 218
        try:
219 219
            self.dlg = QRecognitionDialog(self)
220
            self.startThread()
220
            #self.startThread()
221 221
            self.dlg.show()
222 222
            self.dlg.exec_()
223

  
223
            self.dlg.ui.buttonBox.setEnabled(True)
224
            self.xmlPath = ["D:/Visual Studio Project/DTIPID/DTIPID/DTI_PID/DTI_PID/res/Result/SG_TEST/output/UY1-K-2000_P1_300dpi.xml"]
225
            self.dlg.isAccepted = True
224 226
            if self.dlg.isAccepted == True:
225 227
                self.loadRecognitionResult(self.xmlPath[0])
226 228

  
......
267 269
                if os.path.isfile(svgFilePath):
268 270
                    svg = SymbolSvgItem(svgFilePath)
269 271
                    svg.name = name
272
                    svg.type = type
270 273
                    svg.angle = angle
271 274
                    svg.loc = pt
272 275
                    svg.size = size
273 276

  
277
                    ####
278
                    svg.clicked.connect(lambda svg=svg: self.resultTreeWidget.findItem(svg))
279

  
274 280
                    transform = QTransform()
275 281
                    if (1.57 == angle) or (4.71 == angle):
276 282
                        transform.translate(pt[0] + size[0]*0.5,pt[1] + size[1]*0.5)
DTI_PID/DTI_PID/QDirTreeWidget.py
27 27
        self.itemClicked.connect(self.itemClickEvent)
28 28
        self.setContextMenuPolicy(Qt.CustomContextMenu)
29 29
        self.customContextMenuRequested.connect(self.openContextMenu)
30

  
30
            
31 31
    def openContextMenu(self, position):
32 32
        indexes = self.selectedIndexes()
33 33
        itemPosition = self.mapTo(self, position)
DTI_PID/DTI_PID/QResultTreeWidget.py
9 9
    except ImportError:
10 10
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
11 11
from SymbolSvgItem import SymbolSvgItem
12
from AppDocData import AppDocData
13
import os
12 14

  
13 15
class QResultTreeWidget(QTreeWidget):
16
    TREE_DATA_ROLE = Qt.ToolTipRole
14 17

  
15 18
    def __init__(self, imageViewer):
16 19
        QTreeWidget.__init__(self)
17 20
        self.itemClicked.connect(self.itemClickEvent)
18 21
        self.imageViewer = imageViewer
19 22
        self.scene = imageViewer.scene
23
        self.root = None
24

  
25
    '''
26
        @brief      Clear TreeWidget and Set Current PID
27
        @author     Jeongwoo
28
        @date       18.04.11
29
        @history    .
30
    '''
31
    def setCurrentPID(self, baseName):
32
        self.clear()
33
        self.root = QTreeWidgetItem(self, [os.path.splitext(baseName)[0]])
20 34

  
21 35
    '''
22 36
        @brief      Scene Changed Listener
......
40 54
    '''
41 55
    def initResultTreeWidget(self, sceneItems):
42 56
        print("initResultTree")
43
        self.clear()
57
        if self.root is not None:
58
            self.root.takeChildren()
44 59
        symbolSvgItemList = []
45 60
        for item in sceneItems:
46 61
            if (type(item) is SymbolSvgItem):
47 62
                newItem = QTreeWidgetItem([item.name])
48
                newItem.setData(0, Qt.ToolTipRole, item)
49
                self.invisibleRootItem().addChild(newItem)
63
                iconPath = AppDocData.instance().getCurrentProject().getSvgFilePath() + "/" + item.type + "/" + item.name + ".svg"
64
                newItem.setIcon(0, QIcon(iconPath))
65
                newItem.setData(0, self.TREE_DATA_ROLE, item)
66
                if self.root is not None:
67
                    self.root.addChild(newItem)
50 68
                symbolSvgItemList.append(item)
69
        self.expandAll()
51 70
        self.lastSceneItems = symbolSvgItemList
52 71
        
53 72
    '''
......
59 78
    lastClickedItem = None
60 79
    def itemClickEvent(self, item, columnNo):
61 80
        print("Item " + item.text(0) + " clicked")
62
        svgItem = item.data(0, Qt.ToolTipRole)
81
        svgItem = item.data(0, self.TREE_DATA_ROLE)
63 82
        if self.lastClickedItem is not None:
64 83
            self.scene.removeItem(self.lastClickedItem)
65 84
        ## Draw rectangle on selected symbol
......
67 86
        self.imageViewer.centerOn(QPointF(svgItem.loc[0], svgItem.loc[1]))
68 87
        ## Send new event to imageViewer's zoomImage Method
69 88
        self.imageViewer.zoomImage(True, QMouseEvent(QEvent.MouseButtonPress, self.imageViewer.mapFromScene(QPointF(svgItem.loc[0], svgItem.loc[1])), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier), 3)
70
        self.lastClickedItem = graphicItem
89
        self.lastClickedItem = graphicItem
90

  
91
    @pyqtSlot(SymbolSvgItem)
92
    def findItem(self, item):
93
        if type(item) is SymbolSvgItem:
94
            foundItems = self.findItems(item.name, Qt.MatchExactly|Qt.MatchRecursive, 0)
95
            if foundItems is not None:
96
                for fItem in foundItems:
97
                    data = fItem.data(0, self.TREE_DATA_ROLE)
98
                    if data is not None and data == item:
99
                        print("")
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
9 9
from PyQt5.QtWidgets import (QGraphicsItem)
10 10

  
11 11
class SymbolSvgItem(QGraphicsSvgItem):
12
    clicked = pyqtSignal(QGraphicsSvgItem)
13

  
12 14
    '''
13
        @history    18.04.11    Jeongwoo    Add Variable (Name)
15
        @history    18.04.11    Jeongwoo    Add Variable (Name, Type)
14 16
    '''
15 17
    def __init__(self, path):
16 18
        super(SymbolSvgItem, self).__init__(path)
......
19 21
                      #QGraphicsItem.ItemIsMovable)
20 22
        
21 23
        self.name = ''
24
        self.type = ''
22 25
        self.angle = 0
23 26
        self.loc = None
24 27
        self.size = None
25 28

  
26 29
        self.setAcceptHoverEvents(True)
30
        self.setAcceptedMouseButtons(Qt.LeftButton)
27 31

  
28 32
    '''
29 33
        @brief  return bounding box of symbol
......
58 62
        print('Leave')
59 63

  
60 64
    def hoverMoveEvent(self, event):
61
        return #print('Moving')
65
        return #print('Moving')
66

  
67
    '''
68
        @brief      Mouse Press Event
69
        @author     Jeongwoo
70
        @date       18.04.11
71
        @history    .
72
    '''
73
    def mousePressEvent(self, event):
74
        print("Clicked!!!! " + self.name)
75
        self.clicked.emit(self)

내보내기 Unified diff

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