def __init__(self): DockArea.__init__(self) self.project_tree_dock = Dock(u"Project Tree", hideTitle=True) self.addDock(self.project_tree_dock, 'top') #'above', self.flowcharts_dock) self.project_tree = SegmentTreeWidget() self.project_tree_dock.addWidget(self.project_tree) self.properties_table = TableWidget(sortable=False, editable=False) self.properties_table.setFormat("%.3f", 1) self.properties_table.setColumnCount(1) self.properties_table.contextMenu.clear() self.properties_table.horizontalHeader().hide() self.properties_dock = Dock("Selected Object Properties", widget=self.properties_table, hideTitle=True) self.addDock(self.properties_dock, 'bottom') MarkWriteMainWindow.instance().sigProjectChanged.connect( self.handleProjectChange) MarkWriteMainWindow.instance().sigSegmentCreated.connect( self.handleSegmentCreated) MarkWriteMainWindow.instance().sigSegmentRemoved.connect( self.handleSegmentRemoved) MarkWriteMainWindow.instance().sigActiveObjectChanged.connect( self.handleActiveObjectChanged) self.project_tree.currentItemChanged.connect( self.currentTreeItemChangedEvent) self.project_tree.itemDoubleClicked.connect( self.treeItemDoubleClickedEvent) self.project_tree.customContextMenuRequested.connect( self.rightClickTreeEvent) # self.project_tree.itemSelectionChanged.connect(self.handleItemSelectionChanged) self.project_tree.setExpandsOnDoubleClick(False) self.doNotSetActiveObject = False
def __init__(self): DockArea.__init__(self) self.project_tree_dock = Dock(u"Project Tree", hideTitle=True) self.addDock(self.project_tree_dock, 'top') #'above', self.flowcharts_dock) self.project_tree = SegmentTreeWidget() self.project_tree_dock.addWidget(self.project_tree) self.properties_table = TableWidget(sortable=False, editable=False) self.properties_table.setFormat("%.3f",1) self.properties_table.setColumnCount(1) self.properties_table.contextMenu.clear() self.properties_table.horizontalHeader().hide() self.properties_dock = Dock("Selected Object Properties", widget=self.properties_table, hideTitle=True) self.addDock(self.properties_dock, 'bottom') MarkWriteMainWindow.instance().sigProjectChanged.connect( self.handleProjectChange) MarkWriteMainWindow.instance().sigSegmentCreated.connect( self.handleSegmentCreated) MarkWriteMainWindow.instance().sigSegmentRemoved.connect( self.handleSegmentRemoved) MarkWriteMainWindow.instance().sigActiveObjectChanged.connect( self.handleActiveObjectChanged) self.project_tree.currentItemChanged.connect( self.currentTreeItemChangedEvent) self.project_tree.itemDoubleClicked.connect( self.treeItemDoubleClickedEvent) self.project_tree.customContextMenuRequested.connect( self.rightClickTreeEvent) # self.project_tree.itemSelectionChanged.connect(self.handleItemSelectionChanged) self.project_tree.setExpandsOnDoubleClick(False) self.doNotSetActiveObject=False
class SegmentInfoDockArea(DockArea): segid2treenode = WeakValueDictionary() def __init__(self): DockArea.__init__(self) self.project_tree_dock = Dock(u"Project Tree", hideTitle=True) self.addDock(self.project_tree_dock, 'top') #'above', self.flowcharts_dock) self.project_tree = SegmentTreeWidget() self.project_tree_dock.addWidget(self.project_tree) self.properties_table = TableWidget(sortable=False, editable=False) self.properties_table.setFormat("%.3f",1) self.properties_table.setColumnCount(1) self.properties_table.contextMenu.clear() self.properties_table.horizontalHeader().hide() self.properties_dock = Dock("Selected Object Properties", widget=self.properties_table, hideTitle=True) self.addDock(self.properties_dock, 'bottom') MarkWriteMainWindow.instance().sigProjectChanged.connect( self.handleProjectChange) MarkWriteMainWindow.instance().sigSegmentCreated.connect( self.handleSegmentCreated) MarkWriteMainWindow.instance().sigSegmentRemoved.connect( self.handleSegmentRemoved) MarkWriteMainWindow.instance().sigActiveObjectChanged.connect( self.handleActiveObjectChanged) self.project_tree.currentItemChanged.connect( self.currentTreeItemChangedEvent) self.project_tree.itemDoubleClicked.connect( self.treeItemDoubleClickedEvent) self.project_tree.customContextMenuRequested.connect( self.rightClickTreeEvent) # self.project_tree.itemSelectionChanged.connect(self.handleItemSelectionChanged) self.project_tree.setExpandsOnDoubleClick(False) self.doNotSetActiveObject=False def updatePropertiesTableData(self, objwithprops, cleartable=False): if cleartable: self.properties_table.clear() self.properties_table.horizontalHeader().setResizeMode( QtGui.QHeaderView.Stretch) self.properties_table.setData(objwithprops.propertiesTableData()) else: i=0 for v in objwithprops.propertiesTableData().values(): self.properties_table.setRow(i,v) i+=1 # # Signal Handlers # def handleProjectChange(self, project): self.project_tree.clear() self.segid2treenode.clear() # Create Project Tree Node projecttreeitem = QtGui.QTreeWidgetItem([project.name]) projecttreeitem._pydat = proxy(project.segmenttree) self.segid2treenode[project.segmenttree.id] = projecttreeitem self.project_tree.addTopLevelItem(projecttreeitem) for seg in project.segmenttree.children: self.handleSegmentCreated(seg) def handleSegmentCreated(self, segment): #print '>>TREE.handleSegmentCreated:',segment self.doNotSetActiveObject = True segindex = segment.parent.getChildIndex(segment) parent_tree_node = self.segid2treenode[segment.parent.id] #parent_tree_node = self.project_tree.topLevelItem(0) segtreeitem = QtGui.QTreeWidgetItem([segment.name]) self.segid2treenode[segment.id] = segtreeitem segtreeitem._pydat = proxy(segment) parent_tree_node.insertChild(segindex, segtreeitem) #for i in self.project_tree.selectedItems(): # i.setSelected(False) #segtreeitem.setSelected(True) self.project_tree.setCurrentItem(segtreeitem) #print '<< TREE.handleSegmentCreated' self.doNotSetActiveObject = False for seg in segment.children: self.handleSegmentCreated(seg) def handleSegmentRemoved(self, segment, segment_index): self.doNotSetActiveObject = True parent_tree_node = self.segid2treenode[segment.parent.id] segmenttreeitem = parent_tree_node.child(segment_index) parent_tree_node.removeChild(segmenttreeitem) self.doNotSetActiveObject = False if MarkWriteMainWindow.instance(): MarkWriteMainWindow.instance().setActiveObject(segment.parent) def handleActiveObjectChanged(self,activeobj, prevactiveobj): #if activeobj != prevactiveobj: # print "Active Obj Changed:",activeobj, prevactiveobj if activeobj: self.updatePropertiesTableData(activeobj, activeobj!=prevactiveobj) if activeobj != prevactiveobj: if not isinstance(activeobj,PenDataSegmentCategory): #print "Deselecting Tree Node.." # set root node as current, otherwise if user tries to press on # prev selected segment, tree change event will not fire. if self.segid2treenode.has_key(0): self.project_tree.setCurrentItem(self.segid2treenode[0]) self.project_tree.clearSelection() #self.project_tree.setCurrentItem(None) else: #print "Settting tree node",activeobj,self.segid2treenode[activeobj.id] self.project_tree.setCurrentItem(self.segid2treenode[activeobj.id]) def rightClickTreeEvent(self, *args, **kwargs): # Show Segment name editing dialog segment = MarkWriteMainWindow.instance().activeobject #print "rightClickTreeEvent:",segment if segment: if isinstance(segment, PenDataSegmentCategory): if segment.locked is False: tag, ok = showSegmentNameDialog( MarkWriteMainWindow.instance().predefinedtags, default=segment.name) if len(tag) > 0 and ok: segment.name = tag self.project_tree.selectedItems()[0].setText(0, segment.name) def currentTreeItemChangedEvent(self, *args, **kwargs): current_tree_item, old_tree_widget = args #print ">> currentTreeItemChangedEvent:",current_tree_item, old_tree_widget # print " selected items:",self.project_tree.selectedItems() try: if current_tree_item is None: #passing in not obj sets activeObject to project.selectedtimeregion MarkWriteMainWindow.instance().setActiveObject() elif self.doNotSetActiveObject is False: self.project_tree.setCurrentItem(current_tree_item) selectedsegment = current_tree_item._pydat if selectedsegment.isRoot(): ao=MarkWriteMainWindow.instance().setActiveObject() else: ao=MarkWriteMainWindow.instance().setActiveObject(selectedsegment) #print "Set active object:",ao except Exception, e: #import traceback #traceback.print_exc() self.properties_table.clear()
def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.setWindowModality(QtCore.Qt.ApplicationModal) MainWindow.resize(902, 532) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_segment_clasif.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setAutoFillBackground(False) MainWindow.setStyleSheet(_fromUtf8("")) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setStyleSheet(_fromUtf8("")) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget) self.verticalLayout_2.setSizeConstraint( QtGui.QLayout.SetDefaultConstraint) self.verticalLayout_2.setMargin(0) self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) self.widget = QSignalDetectorWidget(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.widget.sizePolicy().hasHeightForWidth()) self.widget.setSizePolicy(sizePolicy) self.widget.setObjectName(_fromUtf8("widget")) self.verticalLayout_2.addWidget(self.widget) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.dockWidgetParameterTableOscilogram = QtGui.QDockWidget(MainWindow) self.dockWidgetParameterTableOscilogram.setStyleSheet( _fromUtf8("background-color: rgb(255, 255, 255);")) self.dockWidgetParameterTableOscilogram.setObjectName( _fromUtf8("dockWidgetParameterTableOscilogram")) self.dockWidgetContents = QtGui.QWidget() self.dockWidgetContents.setObjectName(_fromUtf8("dockWidgetContents")) self.verticalLayout_3 = QtGui.QVBoxLayout(self.dockWidgetContents) self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) self.tableParameterOscilogram = TableWidget(self.dockWidgetContents) self.tableParameterOscilogram.setEditTriggers( QtGui.QAbstractItemView.NoEditTriggers) self.tableParameterOscilogram.setObjectName( _fromUtf8("tableParameterOscilogram")) self.tableParameterOscilogram.setColumnCount(0) self.tableParameterOscilogram.setRowCount(0) self.verticalLayout_3.addWidget(self.tableParameterOscilogram) self.dockWidgetParameterTableOscilogram.setWidget( self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(4), self.dockWidgetParameterTableOscilogram) self.menuBar = QtGui.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 902, 21)) self.menuBar.setObjectName(_fromUtf8("menuBar")) self.menuParameters = QtGui.QMenu(self.menuBar) self.menuParameters.setObjectName(_fromUtf8("menuParameters")) self.menuDetection = QtGui.QMenu(self.menuBar) self.menuDetection.setObjectName(_fromUtf8("menuDetection")) self.menuTools = QtGui.QMenu(self.menuBar) self.menuTools.setObjectName(_fromUtf8("menuTools")) self.menuExport = QtGui.QMenu(self.menuBar) self.menuExport.setObjectName(_fromUtf8("menuExport")) self.menuGraph_Images = QtGui.QMenu(self.menuExport) self.menuGraph_Images.setObjectName(_fromUtf8("menuGraph_Images")) MainWindow.setMenuBar(self.menuBar) self.toolBar = SoundLabToolBarWidget(MainWindow) self.toolBar.setObjectName(_fromUtf8("toolBar")) MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.actionZoomIn = QtGui.QAction(MainWindow) icon1 = QtGui.QIcon() icon1.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_zoom_in.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionZoomIn.setIcon(icon1) self.actionZoomIn.setObjectName(_fromUtf8("actionZoomIn")) self.actionZoom_out = QtGui.QAction(MainWindow) icon2 = QtGui.QIcon() icon2.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_zoom_out.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionZoom_out.setIcon(icon2) self.actionZoom_out.setObjectName(_fromUtf8("actionZoom_out")) self.actionSpectogram = QtGui.QAction(MainWindow) icon3 = QtGui.QIcon() icon3.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_spect.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionSpectogram.setIcon(icon3) self.actionSpectogram.setObjectName(_fromUtf8("actionSpectogram")) self.actionOscilogram = QtGui.QAction(MainWindow) self.actionOscilogram.setEnabled(True) icon4 = QtGui.QIcon() icon4.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_oscil.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionOscilogram.setIcon(icon4) self.actionOscilogram.setVisible(True) self.actionOscilogram.setObjectName(_fromUtf8("actionOscilogram")) self.actionCombined = QtGui.QAction(MainWindow) icon5 = QtGui.QIcon() icon5.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_oscil_spect.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionCombined.setIcon(icon5) self.actionCombined.setObjectName(_fromUtf8("actionCombined")) self.actionPlay_Sound = QtGui.QAction(MainWindow) icon6 = QtGui.QIcon() icon6.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_play.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionPlay_Sound.setIcon(icon6) self.actionPlay_Sound.setObjectName(_fromUtf8("actionPlay_Sound")) self.actionStop_Sound = QtGui.QAction(MainWindow) icon7 = QtGui.QIcon() icon7.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_stop.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionStop_Sound.setIcon(icon7) self.actionStop_Sound.setObjectName(_fromUtf8("actionStop_Sound")) self.actionPause_Sound = QtGui.QAction(MainWindow) icon8 = QtGui.QIcon() icon8.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_pause.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionPause_Sound.setIcon(icon8) self.actionPause_Sound.setObjectName(_fromUtf8("actionPause_Sound")) self.actionZoom_out_entire_file = QtGui.QAction(MainWindow) icon9 = QtGui.QIcon() icon9.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_zoom.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionZoom_out_entire_file.setIcon(icon9) self.actionZoom_out_entire_file.setObjectName( _fromUtf8("actionZoom_out_entire_file")) self.actionMeditions = QtGui.QAction(MainWindow) icon10 = QtGui.QIcon() icon10.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/Excel.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionMeditions.setIcon(icon10) self.actionMeditions.setObjectName(_fromUtf8("actionMeditions")) self.actionView_Parameters = QtGui.QAction(MainWindow) self.actionView_Parameters.setCheckable(True) self.actionView_Parameters.setObjectName( _fromUtf8("actionView_Parameters")) self.actionDetection = QtGui.QAction(MainWindow) self.actionDetection.setIcon(icon) self.actionDetection.setObjectName(_fromUtf8("actionDetection")) self.actionTemporal_Elements = QtGui.QAction(MainWindow) self.actionTemporal_Elements.setCheckable(True) self.actionTemporal_Elements.setChecked(True) self.actionTemporal_Elements.setObjectName( _fromUtf8("actionTemporal_Elements")) self.actionSpectral_Elements = QtGui.QAction(MainWindow) self.actionSpectral_Elements.setCheckable(True) self.actionSpectral_Elements.setChecked(True) self.actionSpectral_Elements.setObjectName( _fromUtf8("actionSpectral_Elements")) self.actionSpectral_Figures = QtGui.QAction(MainWindow) self.actionSpectral_Figures.setCheckable(True) self.actionSpectral_Figures.setChecked(True) self.actionSpectral_Figures.setObjectName( _fromUtf8("actionSpectral_Figures")) self.actionTemporal_Numbers = QtGui.QAction(MainWindow) self.actionTemporal_Numbers.setCheckable(True) self.actionTemporal_Numbers.setChecked(True) self.actionTemporal_Numbers.setObjectName( _fromUtf8("actionTemporal_Numbers")) self.actionSpectral_Numbers = QtGui.QAction(MainWindow) self.actionSpectral_Numbers.setCheckable(True) self.actionSpectral_Numbers.setChecked(True) self.actionSpectral_Numbers.setObjectName( _fromUtf8("actionSpectral_Numbers")) self.actionSub_Elements_Peaks = QtGui.QAction(MainWindow) self.actionSub_Elements_Peaks.setCheckable(True) self.actionSub_Elements_Peaks.setObjectName( _fromUtf8("actionSub_Elements_Peaks")) self.actionOsc_Image = QtGui.QAction(MainWindow) icon11 = QtGui.QIcon() icon11.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/Camera.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionOsc_Image.setIcon(icon11) self.actionOsc_Image.setObjectName(_fromUtf8("actionOsc_Image")) self.actionSpecgram_Image = QtGui.QAction(MainWindow) self.actionSpecgram_Image.setIcon(icon11) self.actionSpecgram_Image.setObjectName( _fromUtf8("actionSpecgram_Image")) self.actionTemporal_Figures = QtGui.QAction(MainWindow) self.actionTemporal_Figures.setCheckable(True) self.actionTemporal_Figures.setChecked(True) self.actionTemporal_Figures.setObjectName( _fromUtf8("actionTemporal_Figures")) self.actionCombined_Image = QtGui.QAction(MainWindow) icon12 = QtGui.QIcon() icon12.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/Photofiltre.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionCombined_Image.setIcon(icon12) self.actionCombined_Image.setObjectName( _fromUtf8("actionCombined_Image")) self.actionFull_Screen = QtGui.QAction(MainWindow) self.actionFull_Screen.setCheckable(True) icon13 = QtGui.QIcon() icon13.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/Position.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionFull_Screen.setIcon(icon13) self.actionFull_Screen.setObjectName(_fromUtf8("actionFull_Screen")) self.actionExit = QtGui.QAction(MainWindow) icon14 = QtGui.QIcon() icon14.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/cerrar.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionExit.setIcon(icon14) self.actionExit.setObjectName(_fromUtf8("actionExit")) self.actionRectangular_Cursor = QtGui.QAction(MainWindow) self.actionRectangular_Cursor.setCheckable(True) self.actionRectangular_Cursor.setObjectName( _fromUtf8("actionRectangular_Cursor")) self.actionZoom_Cursor = QtGui.QAction(MainWindow) self.actionZoom_Cursor.setCheckable(True) self.actionZoom_Cursor.setChecked(True) self.actionZoom_Cursor.setObjectName(_fromUtf8("actionZoom_Cursor")) self.actionPointer_Cursor = QtGui.QAction(MainWindow) self.actionPointer_Cursor.setCheckable(True) self.actionPointer_Cursor.setObjectName( _fromUtf8("actionPointer_Cursor")) self.actionSignalName = QtGui.QAction(MainWindow) self.actionSignalName.setObjectName(_fromUtf8("actionSignalName")) self.actionDelete_Selected_Elements = QtGui.QAction(MainWindow) icon15 = QtGui.QIcon() icon15.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/deleteElements.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionDelete_Selected_Elements.setIcon(icon15) self.actionDelete_Selected_Elements.setObjectName( _fromUtf8("actionDelete_Selected_Elements")) self.actionDeselect_Elements = QtGui.QAction(MainWindow) icon16 = QtGui.QIcon() icon16.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/deselectElements.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionDeselect_Elements.setIcon(icon16) self.actionDeselect_Elements.setObjectName( _fromUtf8("actionDeselect_Elements")) self.actionTwo_Dimensional_Graphs = QtGui.QAction(MainWindow) icon17 = QtGui.QIcon() icon17.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/2dgraphs.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionTwo_Dimensional_Graphs.setIcon(icon17) self.actionTwo_Dimensional_Graphs.setObjectName( _fromUtf8("actionTwo_Dimensional_Graphs")) self.actionRecord = QtGui.QAction(MainWindow) icon18 = QtGui.QIcon() icon18.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/record_26x26.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionRecord.setIcon(icon18) self.actionRecord.setObjectName(_fromUtf8("actionRecord")) self.actionPlayLoop = QtGui.QAction(MainWindow) self.actionPlayLoop.setCheckable(True) icon19 = QtGui.QIcon() icon19.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/button_loop.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionPlayLoop.setIcon(icon19) self.actionPlayLoop.setObjectName(_fromUtf8("actionPlayLoop")) self.actionAddElement = QtGui.QAction(MainWindow) icon20 = QtGui.QIcon() icon20.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/add.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionAddElement.setIcon(icon20) self.actionAddElement.setObjectName(_fromUtf8("actionAddElement")) self.actionSound_File_Segmentation = QtGui.QAction(MainWindow) icon21 = QtGui.QIcon() icon21.addPixmap(QtGui.QPixmap(_fromUtf8(":/myappicons/225.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionSound_File_Segmentation.setIcon(icon21) self.actionSound_File_Segmentation.setObjectName( _fromUtf8("actionSound_File_Segmentation")) self.actionTemporal_Parameters = QtGui.QAction(MainWindow) self.actionTemporal_Parameters.setCheckable(True) self.actionTemporal_Parameters.setChecked(True) self.actionTemporal_Parameters.setObjectName( _fromUtf8("actionTemporal_Parameters")) self.actionSpectral_Parameters = QtGui.QAction(MainWindow) self.actionSpectral_Parameters.setCheckable(True) self.actionSpectral_Parameters.setChecked(True) self.actionSpectral_Parameters.setObjectName( _fromUtf8("actionSpectral_Parameters")) self.actionCross_correlation = QtGui.QAction(MainWindow) icon22 = QtGui.QIcon() icon22.addPixmap( QtGui.QPixmap(_fromUtf8(":/myappicons/cross-correlation.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionCross_correlation.setIcon(icon22) self.actionCross_correlation.setObjectName( _fromUtf8("actionCross_correlation")) self.actionSelectedElement_Correlation = QtGui.QAction(MainWindow) self.actionSelectedElement_Correlation.setObjectName( _fromUtf8("actionSelectedElement_Correlation")) self.actionClassify = QtGui.QAction(MainWindow) self.actionClassify.setObjectName(_fromUtf8("actionClassify")) self.actionDelete_All = QtGui.QAction(MainWindow) self.actionDelete_All.setObjectName(_fromUtf8("actionDelete_All")) self.actionParameter_Measurement = QtGui.QAction(MainWindow) self.actionParameter_Measurement.setObjectName( _fromUtf8("actionParameter_Measurement")) self.actionGroupByParameter = QtGui.QAction(MainWindow) self.actionGroupByParameter.setCheckable(True) self.actionGroupByParameter.setChecked(True) self.actionGroupByParameter.setObjectName( _fromUtf8("actionGroupByParameter")) self.actionGroupByLocation = QtGui.QAction(MainWindow) self.actionGroupByLocation.setCheckable(True) self.actionGroupByLocation.setChecked(False) self.actionGroupByLocation.setObjectName( _fromUtf8("actionGroupByLocation")) self.actionGroupNone = QtGui.QAction(MainWindow) self.actionGroupNone.setCheckable(True) self.actionGroupNone.setChecked(False) self.actionGroupNone.setObjectName(_fromUtf8("actionGroupNone")) self.menuParameters.addAction(self.actionView_Parameters) self.menuParameters.addAction(self.actionFull_Screen) self.menuParameters.addSeparator() self.menuParameters.addAction(self.actionTwo_Dimensional_Graphs) self.menuParameters.addSeparator() self.menuParameters.addAction(self.actionTemporal_Elements) self.menuParameters.addAction(self.actionTemporal_Numbers) self.menuParameters.addAction(self.actionTemporal_Figures) self.menuParameters.addAction(self.actionTemporal_Parameters) self.menuParameters.addSeparator() self.menuParameters.addAction(self.actionSpectral_Elements) self.menuParameters.addAction(self.actionSpectral_Numbers) self.menuParameters.addAction(self.actionSpectral_Figures) self.menuParameters.addAction(self.actionSpectral_Parameters) self.menuParameters.addSeparator() self.menuDetection.addAction(self.actionAddElement) self.menuDetection.addAction(self.actionDelete_Selected_Elements) self.menuDetection.addAction(self.actionDelete_All) self.menuDetection.addAction(self.actionDeselect_Elements) self.menuDetection.addSeparator() self.menuDetection.addAction(self.actionDetection) self.menuDetection.addAction(self.actionClassify) self.menuDetection.addAction(self.actionParameter_Measurement) self.menuTools.addAction(self.actionZoomIn) self.menuTools.addAction(self.actionZoom_out) self.menuTools.addAction(self.actionZoom_out_entire_file) self.menuTools.addSeparator() self.menuTools.addAction(self.actionZoom_Cursor) self.menuTools.addAction(self.actionPointer_Cursor) self.menuTools.addAction(self.actionRectangular_Cursor) self.menuGraph_Images.addAction(self.actionOsc_Image) self.menuGraph_Images.addAction(self.actionSpecgram_Image) self.menuGraph_Images.addAction(self.actionCombined_Image) self.menuExport.addAction(self.actionMeditions) self.menuExport.addAction(self.actionSound_File_Segmentation) self.menuExport.addAction(self.menuGraph_Images.menuAction()) self.menuBar.addAction(self.menuDetection.menuAction()) self.menuBar.addAction(self.menuExport.menuAction()) self.menuBar.addAction(self.menuTools.menuAction()) self.menuBar.addAction(self.menuParameters.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(1670, 1030) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setMargin(0) self.gridLayout.setVerticalSpacing(7) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.graph_rawdata = PlotWidget(self.centralwidget) self.graph_rawdata.setObjectName(_fromUtf8("graph_rawdata")) self.verticalLayout.addWidget(self.graph_rawdata) self.update_btn = QtGui.QPushButton(self.centralwidget) self.update_btn.setObjectName(_fromUtf8("export_btn")) self.update_btn.setGeometry(QtCore.QRect(1000, 100, 150, 40)) self.gridLayout.addWidget(self.update_btn, 0, 1, 1, 1) self.gridLayout.addLayout(self.verticalLayout, 0, 0, 2, 1) self.tabWidget = QtGui.QTabWidget(self.centralwidget) self.tabWidget.setObjectName(_fromUtf8("tabWidget")) self.tab = QtGui.QWidget() self.tab.setObjectName(_fromUtf8("tab")) self.tabWidget.addTab(self.tab, _fromUtf8("")) self.listWidget = QtGui.QListWidget(self.tab) self.listWidget.setGeometry(QtCore.QRect(0, 50, 321, 821)) self.listWidget.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) self.listWidget.setLayoutMode(QtGui.QListView.SinglePass) self.listWidget.setUniformItemSizes(True) self.listWidget.setObjectName(_fromUtf8("listWidget")) # # self.tab_2 = QtGui.QWidget() # self.tabWidget.addTab(self.tab_2, _fromUtf8("")) # self.tab_2.setObjectName(_fromUtf8("tab_2")) # # self.widget = QtGui.QWidget(self.tab_2) # self.widget.setGeometry(QtCore.QRect(11, 11, 340, 300)) # self.widget.setObjectName(_fromUtf8("widget")) # self.gridLayout_2 = QtGui.QGridLayout(self.widget) # self.gridLayout_2.setMargin(0) # self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) # self.lab_smoothing = QtGui.QLabel(self.widget) # self.lab_smoothing.setObjectName(_fromUtf8("lab_smoothing")) # self.gridLayout_2.addWidget(self.lab_smoothing, 0, 0, 1, 1) # self.lineEdit_smoothing = QtGui.QLineEdit(self.widget) # self.lineEdit_smoothing.setMaxLength(3) # self.lineEdit_smoothing.setObjectName(_fromUtf8("lineEdit_smoothing")) # self.gridLayout_2.addWidget(self.lineEdit_smoothing, 0, 1, 1, 1) # self.slider_smoothing = QtGui.QSlider(self.widget) # self.slider_smoothing.setMaximum(999) # self.slider_smoothing.setProperty("value", 120) # self.slider_smoothing.setOrientation(QtCore.Qt.Horizontal) # self.slider_smoothing.setObjectName(_fromUtf8("slider_smoothing")) # self.gridLayout_2.addWidget(self.slider_smoothing, 0, 2, 1, 1) # self.lab_showevents = QtGui.QLabel(self.widget) # self.lab_showevents.setObjectName(_fromUtf8("lab_showevents")) # self.gridLayout_2.addWidget(self.lab_showevents, 1, 0, 1, 1) # spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) # self.gridLayout_2.addItem(spacerItem, 1, 1, 1, 1) # self.comboBox_showevents = QtGui.QComboBox(self.widget) # self.comboBox_showevents.setObjectName(_fromUtf8("comboBox_showevents")) # self.comboBox_showevents.addItem(_fromUtf8("")) # self.comboBox_showevents.addItem(_fromUtf8("")) # self.gridLayout_2.addWidget(self.comboBox_showevents, 1, 1, 1, 2) # self.lab_align = QtGui.QLabel(self.widget) # self.lab_align.setObjectName(_fromUtf8("lab_align")) # self.gridLayout_2.addWidget(self.lab_align, 2, 0, 1, 1) # # self.label = QtGui.QLabel(self.widget) # self.label.setObjectName(_fromUtf8("label")) # self.gridLayout_2.addWidget(self.lab_align, 4, 0, 1, 1) # # spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) # self.gridLayout_2.addItem(spacerItem1, 2, 1, 1, 1) # self.comboBox_align = QtGui.QComboBox(self.widget) # self.comboBox_align.setObjectName(_fromUtf8("comboBox_align")) # self.comboBox_align.addItem(_fromUtf8("")) # self.comboBox_align.addItem(_fromUtf8("")) # self.comboBox_align.addItem(_fromUtf8("")) # self.comboBox_align.addItem(_fromUtf8("")) # self.gridLayout_2.addWidget(self.comboBox_align, 4, 1, 1, 2) # # self.export_btn = QtGui.QPushButton(self.widget) # self.export_btn.setObjectName(_fromUtf8("export_btn")) # self.gridLayout_2.addWidget(self.export_btn, 5, 1, 1, 2) # # self.gridLayout_2.setColumnStretch(0, 9) # self.gridLayout_2.setColumnStretch(1, 1) # self.gridLayout_2.setColumnStretch(2, 20) self.tab_3 = QtGui.QWidget() self.tabWidget.addTab(self.tab_3, _fromUtf8("")) self.tab_3.setObjectName(_fromUtf8("tab_3")) self.columnlist = QtGui.QListWidget(self.tab_3) self.columnlist.setGeometry(QtCore.QRect(0, 50, 321, 821)) self.columnlist.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) self.columnlist.setLayoutMode(QtGui.QListView.SinglePass) self.columnlist.setUniformItemSizes(True) self.columnlist.setObjectName(_fromUtf8("columnlist")) self.gridLayout.addWidget(self.tabWidget, 1, 1, 1, 1) self.gridLayout.setColumnStretch(0, 40) self.gridLayout.setColumnStretch(1, 8) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1670, 26)) self.menubar.setObjectName(_fromUtf8("menubar")) self.menuStart = QtGui.QMenu(self.menubar) self.menuStart.setObjectName(_fromUtf8("menuStart")) self.menuQuit = QtGui.QMenu(self.menubar) self.menuQuit.setObjectName(_fromUtf8("menuQuit")) self.menuRawdata_Graph_setup = QtGui.QMenu(self.menubar) self.menuRawdata_Graph_setup.setObjectName(_fromUtf8("menuRawdata_Graph_setup")) self.menuRates_setup = QtGui.QMenu(self.menubar) self.menuRates_setup.setObjectName(_fromUtf8("menuRates_setup")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.actionOpen_datafile = QtGui.QAction(MainWindow) self.actionOpen_datafile.setObjectName(_fromUtf8("actionOpen_datafile")) self.actionQuit = QtGui.QAction(MainWindow) self.actionQuit.setObjectName(_fromUtf8("actionQuit")) self.action_events = QtGui.QAction(MainWindow) self.action_events.setObjectName(_fromUtf8("action_events")) self.action_samples = QtGui.QAction(MainWindow) self.action_samples.setObjectName(_fromUtf8("action_samples")) self.action_annotate = QtGui.QAction(MainWindow) self.action_annotate.setObjectName(_fromUtf8("action_annotate")) self.action_export = QtGui.QAction(MainWindow) self.action_export.setObjectName(_fromUtf8("action_export")) self.menuStart.addAction(self.actionOpen_datafile) self.menuStart.addSeparator() self.menuStart.addAction(self.action_events) self.menuStart.addSeparator() self.menuStart.addAction(self.action_samples) self.menuStart.addSeparator() self.menuStart.addAction(self.action_annotate) self.menuStart.addSeparator() self.menuStart.addAction(self.action_export) self.menubar.addAction(self.menuStart.menuAction()) self.menubar.addAction(self.menuQuit.menuAction()) self.tab_4 = QtGui.QWidget() self.tabWidget.addTab(self.tab_4, _fromUtf8("")) self.tab_4.setObjectName(_fromUtf8("tab_4")) self.widget4 = QtGui.QWidget(self.tab_4) self.widget4.setGeometry(QtCore.QRect(11, 11, 320, 800)) self.widget4.setObjectName(_fromUtf8("widget4")) self.gridLayout_4 = QtGui.QGridLayout(self.widget4) self.gridLayout_4.setMargin(0) self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) self.roi_btn = QtGui.QPushButton(self.widget4) self.roi_btn.setObjectName(_fromUtf8("roi_button")) self.gridLayout_4.addWidget(self.roi_btn, 1, 1, 1, 1) self.dataTable = TableWidget(self.widget4) self.dataTable.resize(800, 300) self.gridLayout_4.addWidget(self.dataTable, 2, 1, 1, 1) self.gridLayout_4.setRowStretch(2, 30) self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(1) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.gridLayout.setRowStretch(0,1) self.gridLayout.setRowStretch(1,15)
class SegmentInfoDockArea(DockArea): segid2treenode = WeakValueDictionary() def __init__(self): DockArea.__init__(self) self.project_tree_dock = Dock(u"Project Tree", hideTitle=True) self.addDock(self.project_tree_dock, 'top') #'above', self.flowcharts_dock) self.project_tree = SegmentTreeWidget() self.project_tree_dock.addWidget(self.project_tree) self.properties_table = TableWidget(sortable=False, editable=False) self.properties_table.setFormat("%.3f", 1) self.properties_table.setColumnCount(1) self.properties_table.contextMenu.clear() self.properties_table.horizontalHeader().hide() self.properties_dock = Dock("Selected Object Properties", widget=self.properties_table, hideTitle=True) self.addDock(self.properties_dock, 'bottom') MarkWriteMainWindow.instance().sigProjectChanged.connect( self.handleProjectChange) MarkWriteMainWindow.instance().sigSegmentCreated.connect( self.handleSegmentCreated) MarkWriteMainWindow.instance().sigSegmentRemoved.connect( self.handleSegmentRemoved) MarkWriteMainWindow.instance().sigActiveObjectChanged.connect( self.handleActiveObjectChanged) self.project_tree.currentItemChanged.connect( self.currentTreeItemChangedEvent) self.project_tree.itemDoubleClicked.connect( self.treeItemDoubleClickedEvent) self.project_tree.customContextMenuRequested.connect( self.rightClickTreeEvent) # self.project_tree.itemSelectionChanged.connect(self.handleItemSelectionChanged) self.project_tree.setExpandsOnDoubleClick(False) self.doNotSetActiveObject = False def updatePropertiesTableData(self, objwithprops, cleartable=False): if cleartable: self.properties_table.clear() self.properties_table.horizontalHeader().setResizeMode( QtGui.QHeaderView.Stretch) self.properties_table.setData(objwithprops.propertiesTableData()) else: i = 0 for v in objwithprops.propertiesTableData().values(): self.properties_table.setRow(i, v) i += 1 # # Signal Handlers # def handleProjectChange(self, project): self.project_tree.clear() self.segid2treenode.clear() # Create Project Tree Node projecttreeitem = QtGui.QTreeWidgetItem([project.name]) projecttreeitem._pydat = proxy(project.segmenttree) self.segid2treenode[project.segmenttree.id] = projecttreeitem self.project_tree.addTopLevelItem(projecttreeitem) for seg in project.segmenttree.children: self.handleSegmentCreated(seg) def handleSegmentCreated(self, segment): #print '>>TREE.handleSegmentCreated:',segment self.doNotSetActiveObject = True segindex = segment.parent.getChildIndex(segment) parent_tree_node = self.segid2treenode[segment.parent.id] #parent_tree_node = self.project_tree.topLevelItem(0) segtreeitem = QtGui.QTreeWidgetItem([segment.name]) self.segid2treenode[segment.id] = segtreeitem segtreeitem._pydat = proxy(segment) parent_tree_node.insertChild(segindex, segtreeitem) #for i in self.project_tree.selectedItems(): # i.setSelected(False) #segtreeitem.setSelected(True) self.project_tree.setCurrentItem(segtreeitem) #print '<< TREE.handleSegmentCreated' self.doNotSetActiveObject = False for seg in segment.children: self.handleSegmentCreated(seg) def handleSegmentRemoved(self, segment, segment_index): self.doNotSetActiveObject = True parent_tree_node = self.segid2treenode[segment.parent.id] segmenttreeitem = parent_tree_node.child(segment_index) parent_tree_node.removeChild(segmenttreeitem) self.doNotSetActiveObject = False if MarkWriteMainWindow.instance(): MarkWriteMainWindow.instance().setActiveObject(segment.parent) def handleActiveObjectChanged(self, activeobj, prevactiveobj): #if activeobj != prevactiveobj: # print "Active Obj Changed:",activeobj, prevactiveobj if activeobj: self.updatePropertiesTableData(activeobj, activeobj != prevactiveobj) if activeobj != prevactiveobj: if not isinstance(activeobj, PenDataSegmentCategory): #print "Deselecting Tree Node.." # set root node as current, otherwise if user tries to press on # prev selected segment, tree change event will not fire. if self.segid2treenode.has_key(0): self.project_tree.setCurrentItem(self.segid2treenode[0]) self.project_tree.clearSelection() #self.project_tree.setCurrentItem(None) else: #print "Settting tree node",activeobj,self.segid2treenode[activeobj.id] self.project_tree.setCurrentItem( self.segid2treenode[activeobj.id]) def rightClickTreeEvent(self, *args, **kwargs): # Show Segment name editing dialog segment = MarkWriteMainWindow.instance().activeobject #print "rightClickTreeEvent:",segment if segment: if isinstance(segment, PenDataSegmentCategory): if segment.locked is False: tag, ok = showSegmentNameDialog( MarkWriteMainWindow.instance().predefinedtags, default=segment.name) if len(tag) > 0 and ok: segment.name = tag self.project_tree.selectedItems()[0].setText( 0, segment.name) def currentTreeItemChangedEvent(self, *args, **kwargs): current_tree_item, old_tree_widget = args #print ">> currentTreeItemChangedEvent:",current_tree_item, old_tree_widget # print " selected items:",self.project_tree.selectedItems() try: if current_tree_item is None: #passing in not obj sets activeObject to project.selectedtimeregion MarkWriteMainWindow.instance().setActiveObject() elif self.doNotSetActiveObject is False: self.project_tree.setCurrentItem(current_tree_item) selectedsegment = current_tree_item._pydat if selectedsegment.isRoot(): ao = MarkWriteMainWindow.instance().setActiveObject() else: ao = MarkWriteMainWindow.instance().setActiveObject( selectedsegment) #print "Set active object:",ao except Exception, e: #import traceback #traceback.print_exc() self.properties_table.clear()