class MainWindow(QMainWindow): #somewhere in constructor: def __init__(self): super(MainWindow, self).__init__() uic.loadUi('ui_window.ui', self) self.setupUI() def setupUI(self): root = QFileInfo(__file__).absolutePath() self.actionOpen.setIcon(QIcon(root+'/images/Live Mail.ico')) self.actionSave.setIcon(QIcon(root+'/images/489751-Floppy_Disk-128.png')) self.actionSelect.setIcon(QIcon(root+'/images/mouse.png')) self.actionRip_off.setIcon(QIcon(root+'/images/rip_off.png')) self.setWindowTitle('AnimDNA') self.actionAnalyze_structure.setIcon(QIcon(root+'/images/transformation.png')) self.setWindowIcon((QIcon(root+'/images/bug.png'))) from PyQt5 import QtCore, QtGui, QtWidgets self.main_splitter = QtWidgets.QSplitter(self.centralwidget) self.path_splitter = QtWidgets.QSplitter(self.main_splitter) self.renderView = CustomQGraphicsView(self.path_splitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.renderView.sizePolicy().hasHeightForWidth()) self.renderView.setSizePolicy(sizePolicy) self.renderView.setMinimumSize(QtCore.QSize(0, 0)) self.renderView.setMouseTracking(True) self.renderView.setFocusPolicy(QtCore.Qt.WheelFocus) self.renderView.setFrameShadow(QtWidgets.QFrame.Plain) self.renderView.setLineWidth(0) self.renderView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.renderView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.renderView.setRenderHints(QtGui.QPainter.Antialiasing|QtGui.QPainter.HighQualityAntialiasing|QtGui.QPainter.TextAntialiasing) self.renderView.setTransformationAnchor(QtWidgets.QGraphicsView.AnchorUnderMouse) self.renderView.setObjectName("renderView") self.renderView.setupGL(self) self.gridLayout.addWidget(self.main_splitter, 0, 0, 1, 1) self.action_modify = QtWidgets.QAction(self) self.action_modify.setCheckable(True) def updateRenderView(self,doc_ctrl): doc = doc_ctrl._document self.pathscene = QGraphicsScene(parent=self.renderView) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\ parent=None,\ window=self,\ document= doc_ctrl._document) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.renderView.setScene(self.pathscene) self.renderView.scene_root_item = self.pathroot self.renderView._scale_fit_factor = 0.9 self.renderView._name = 'renderView' self.path_tool_manager = PathToolManager(self,self.path_toolbar)
def updateRenderView(self,doc_ctrl): doc = doc_ctrl._document self.pathscene = QGraphicsScene(parent=self.renderView) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\ parent=None,\ window=self,\ document= doc_ctrl._document) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.renderView.setScene(self.pathscene) self.renderView.scene_root_item = self.pathroot self.renderView._scale_fit_factor = 0.9 self.renderView._name = 'renderView' self.path_tool_manager = PathToolManager(self,self.path_toolbar)
def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self) # Part toolbar splitter_size_policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) splitter_size_policy.setHorizontalStretch(0) splitter_size_policy.setVerticalStretch(0) splitter_size_policy.setHeightForWidth(self.main_splitter.sizePolicy().hasHeightForWidth()) self.slice_splitter.setSizePolicy(splitter_size_policy) self.slice_splitter.setFrameShape(QFrame.NoFrame) self.slice_splitter.setFrameShadow(QFrame.Plain) self.slice_splitter.setLineWidth(0) self.slice_splitter.setOrientation(Qt.Horizontal) self.slice_splitter.setOpaqueResize(False) self.slice_splitter.setHandleWidth(0) self.part_toolbar = PartToolBar(doc, self.slice_splitter) self.slice_splitter.addWidget(self.slice_graphics_view) # reorder # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") # Path toolbar self.path_splitter.setSizePolicy(splitter_size_policy) self.path_splitter.setFrameShape(QFrame.NoFrame) self.path_splitter.setFrameShadow(QFrame.Plain) self.path_splitter.setLineWidth(0) self.path_splitter.setOrientation(Qt.Horizontal) self.path_splitter.setOpaqueResize(False) self.path_splitter.setHandleWidth(0) self.path_splitter.setObjectName("path_splitter") self.path_splitter.setSizes([600,0]) # for path_splitter horizontal self.path_splitter.addWidget(self.selectionToolBar) self.path_toolbar = PathToolBar(doc, self.path_splitter) # self.path_splitter.addWidget(self.path_graphics_view) # reorder self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self, self.path_toolbar) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager # set the selection filter default doc.documentSelectionFilterChangedSignal.emit(["endpoint", "scaffold", "staple", "xover"]) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() if GL: pass # self.slicescene.drawBackground = self.drawBackgroundGL # self.pathscene.drawBackground = self.drawBackgroundGL # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText(QApplication.translate( "MainWindow", "Undo", None)) self.actionUndo.setShortcut(QApplication.translate( "MainWindow", "Ctrl+Z", None)) self.actionRedo.setText(QApplication.translate( "MainWindow", "Redo", None)) self.actionRedo.setShortcut(QApplication.translate( "MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.action_modify, self.sep) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.main_splitter.setSizes([250, 550]) # balance main_splitter size self.statusBar().showMessage("")
class DocumentWindow(QMainWindow, ui_mainwindow.Ui_MainWindow): """docstring for DocumentWindow""" def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self) # Part toolbar splitter_size_policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) splitter_size_policy.setHorizontalStretch(0) splitter_size_policy.setVerticalStretch(0) splitter_size_policy.setHeightForWidth(self.main_splitter.sizePolicy().hasHeightForWidth()) self.slice_splitter.setSizePolicy(splitter_size_policy) self.slice_splitter.setFrameShape(QFrame.NoFrame) self.slice_splitter.setFrameShadow(QFrame.Plain) self.slice_splitter.setLineWidth(0) self.slice_splitter.setOrientation(Qt.Horizontal) self.slice_splitter.setOpaqueResize(False) self.slice_splitter.setHandleWidth(0) self.part_toolbar = PartToolBar(doc, self.slice_splitter) self.slice_splitter.addWidget(self.slice_graphics_view) # reorder # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") # Path toolbar self.path_splitter.setSizePolicy(splitter_size_policy) self.path_splitter.setFrameShape(QFrame.NoFrame) self.path_splitter.setFrameShadow(QFrame.Plain) self.path_splitter.setLineWidth(0) self.path_splitter.setOrientation(Qt.Horizontal) self.path_splitter.setOpaqueResize(False) self.path_splitter.setHandleWidth(0) self.path_splitter.setObjectName("path_splitter") self.path_splitter.setSizes([600,0]) # for path_splitter horizontal self.path_splitter.addWidget(self.selectionToolBar) self.path_toolbar = PathToolBar(doc, self.path_splitter) # self.path_splitter.addWidget(self.path_graphics_view) # reorder self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self, self.path_toolbar) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager # set the selection filter default doc.documentSelectionFilterChangedSignal.emit(["endpoint", "scaffold", "staple", "xover"]) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() if GL: pass # self.slicescene.drawBackground = self.drawBackgroundGL # self.pathscene.drawBackground = self.drawBackgroundGL # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText(QApplication.translate( "MainWindow", "Undo", None)) self.actionUndo.setShortcut(QApplication.translate( "MainWindow", "Ctrl+Z", None)) self.actionRedo.setText(QApplication.translate( "MainWindow", "Redo", None)) self.actionRedo.setShortcut(QApplication.translate( "MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.action_modify, self.sep) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.main_splitter.setSizes([250, 550]) # balance main_splitter size self.statusBar().showMessage("") ### ACCESSORS ### def undoStack(self): return self.controller.undoStack() def selectedPart(self): return self.controller.document().selectedPart() def activateSelection(self, isActive): self.path_graphics_view.activateSelection(isActive) self.slice_graphics_view.activateSelection(isActive) # end def ### EVENT HANDLERS ### def focusInEvent(self): app().undoGroup.setActiveStack(self.controller.undoStack()) def moveEvent(self, event): """Reimplemented to save state on move.""" self.settings.beginGroup("MainWindow") self.settings.setValue("pos", self.pos()) self.settings.endGroup() def resizeEvent(self, event): """Reimplemented to save state on resize.""" self.settings.beginGroup("MainWindow") self.settings.setValue("size", self.size()) self.settings.endGroup() QWidget.resizeEvent(self, event) def changeEvent(self, event): QWidget.changeEvent(self, event) # end def ### DRAWING RELATED ### # def drawBackgroundGL(self, painter, rect): # """ # This method is for overloading the QGraphicsScene. # """ # if painter.paintEngine().type() != QPaintEngine.OpenGL and \ # painter.paintEngine().type() != QPaintEngine.OpenGL2: # # qWarning("OpenGLScene: drawBackground needs a QGLWidget to be set as viewport on the graphics view"); # return # # end if # painter.beginNativePainting() # GL.glDisable(GL.GL_DEPTH_TEST) # disable for 2D drawing # GL.glClearColor(1.0, 1.0, 1.0, 1.0) # GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) # # painter.endNativePainting() # # end def # def drawBackgroundNonGL(self, painter, rect): # """ # This method is for overloading the QGraphicsScene. # """ # print self # return QGraphicsScene.drawBackground(self, painter, rect) # # end def ### PRIVATE HELPER METHODS ### def _readSettings(self): self.settings.beginGroup("MainWindow") self.resize(self.settings.value("size", QSize(1100, 800))) self.move(self.settings.value("pos", QPoint(200, 200))) self.settings.endGroup()
def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # self.setCentralWidget(self.slice_graphics_view) # Appearance pref if not app().prefs.show_icon_labels: self.main_toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) # Outliner & PropertyEditor setup self.outliner_widget.configure(window=self, document=doc) self.property_widget.configure(window=self, document=doc) self.property_buttonbox.setVisible(False) self.tool_managers = None # initialize # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(), parent=None, window=self, document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self, self.sliceroot) # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(), parent=None, window=self, document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") # Path toolbar self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self, self.pathroot) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager self.tool_managers = (self.path_tool_manager, self.slice_tool_manager) self.insertToolBarBreak(self.main_toolbar) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText( QApplication.translate("MainWindow", "Undo", None)) self.actionUndo.setShortcut( QApplication.translate("MainWindow", "Ctrl+Z", None)) self.actionRedo.setText( QApplication.translate("MainWindow", "Redo", None)) self.actionRedo.setShortcut( QApplication.translate("MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.main_splitter.setSizes([400, 400, 180]) # balance main_splitter size self.statusBar().showMessage("") doc.setViewNames(['slice', 'path'])
class DocumentWindow(QMainWindow, ui_mainwindow.Ui_MainWindow): """DocumentWindow subclasses QMainWindow and Ui_MainWindow. It performs some initialization operations that must be done in code rather than using Qt Creator. Attributes: controller (DocumentController): """ def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # self.setCentralWidget(self.slice_graphics_view) # Appearance pref if not app().prefs.show_icon_labels: self.main_toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) # Outliner & PropertyEditor setup self.outliner_widget.configure(window=self, document=doc) self.property_widget.configure(window=self, document=doc) self.property_buttonbox.setVisible(False) self.tool_managers = None # initialize # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(), parent=None, window=self, document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self, self.sliceroot) # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(), parent=None, window=self, document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") # Path toolbar self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self, self.pathroot) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager self.tool_managers = (self.path_tool_manager, self.slice_tool_manager) self.insertToolBarBreak(self.main_toolbar) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText( QApplication.translate("MainWindow", "Undo", None)) self.actionUndo.setShortcut( QApplication.translate("MainWindow", "Ctrl+Z", None)) self.actionRedo.setText( QApplication.translate("MainWindow", "Redo", None)) self.actionRedo.setShortcut( QApplication.translate("MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.main_splitter.setSizes([400, 400, 180]) # balance main_splitter size self.statusBar().showMessage("") doc.setViewNames(['slice', 'path']) # end def def document(self): return self.controller.document() # end def def destroyWin(self): for mgr in self.tool_managers: mgr.destroy() self.controller = None # end def ### ACCESSORS ### def undoStack(self): return self.controller.undoStack() def selectedInstance(self): return self.controller.document().selectedInstance() def activateSelection(self, isActive): self.path_graphics_view.activateSelection(isActive) self.slice_graphics_view.activateSelection(isActive) # end def ### EVENT HANDLERS ### def focusInEvent(self): app().undoGroup.setActiveStack(self.controller.undoStack()) def moveEvent(self, event): """Reimplemented to save state on move.""" self.settings.beginGroup("MainWindow") self.settings.setValue("pos", self.pos()) self.settings.endGroup() def resizeEvent(self, event): """Reimplemented to save state on resize.""" self.settings.beginGroup("MainWindow") self.settings.setValue("size", self.size()) self.settings.endGroup() QWidget.resizeEvent(self, event) def changeEvent(self, event): QWidget.changeEvent(self, event) # end def ### DRAWING RELATED ### ### PRIVATE HELPER METHODS ### def _readSettings(self): self.settings.beginGroup("MainWindow") self.resize(self.settings.value("size", QSize(1100, 800))) self.move(self.settings.value("pos", QPoint(200, 200))) self.settings.endGroup()
def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # self.setCentralWidget(self.slice_graphics_view) # Appearance pref if not app().prefs.show_icon_labels: self.main_toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) # Outliner & PropertyEditor setup self.outliner_widget.configure(window=self, document=doc) self.property_widget.configure(window=self, document=doc) self.property_buttonbox.setVisible(False) self.tool_managers = None # initialize # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(), parent=None, window=self, document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self, self.sliceroot) # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(), parent=None, window=self, document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") # Path toolbar self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self, self.pathroot) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager self.tool_managers = (self.path_tool_manager, self.slice_tool_manager) self.insertToolBarBreak(self.main_toolbar) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText(QApplication.translate("MainWindow", "Undo", None)) self.actionUndo.setShortcut(QApplication.translate("MainWindow", "Ctrl+Z", None)) self.actionRedo.setText(QApplication.translate("MainWindow", "Redo", None)) self.actionRedo.setShortcut(QApplication.translate("MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.main_splitter.setSizes([400, 400, 180]) # balance main_splitter size self.statusBar().showMessage("") doc.setViewNames(['slice', 'path'])
class DocumentWindow(QMainWindow, ui_mainwindow.Ui_MainWindow): """DocumentWindow subclasses QMainWindow and Ui_MainWindow. It performs some initialization operations that must be done in code rather than using Qt Creator. Attributes: controller (DocumentController): """ def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # self.setCentralWidget(self.slice_graphics_view) # Appearance pref if not app().prefs.show_icon_labels: self.main_toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) # Outliner & PropertyEditor setup self.outliner_widget.configure(window=self, document=doc) self.property_widget.configure(window=self, document=doc) self.property_buttonbox.setVisible(False) self.tool_managers = None # initialize # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(), parent=None, window=self, document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self, self.sliceroot) # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(), parent=None, window=self, document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") # Path toolbar self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self, self.pathroot) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager self.tool_managers = (self.path_tool_manager, self.slice_tool_manager) self.insertToolBarBreak(self.main_toolbar) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText(QApplication.translate("MainWindow", "Undo", None)) self.actionUndo.setShortcut(QApplication.translate("MainWindow", "Ctrl+Z", None)) self.actionRedo.setText(QApplication.translate("MainWindow", "Redo", None)) self.actionRedo.setShortcut(QApplication.translate("MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.main_splitter.setSizes([400, 400, 180]) # balance main_splitter size self.statusBar().showMessage("") doc.setViewNames(['slice', 'path']) # end def def document(self): return self.controller.document() # end def def destroyWin(self): for mgr in self.tool_managers: mgr.destroy() self.controller = None # end def ### ACCESSORS ### def undoStack(self): return self.controller.undoStack() def selectedInstance(self): return self.controller.document().selectedInstance() def activateSelection(self, isActive): self.path_graphics_view.activateSelection(isActive) self.slice_graphics_view.activateSelection(isActive) # end def ### EVENT HANDLERS ### def focusInEvent(self): app().undoGroup.setActiveStack(self.controller.undoStack()) def moveEvent(self, event): """Reimplemented to save state on move.""" self.settings.beginGroup("MainWindow") self.settings.setValue("pos", self.pos()) self.settings.endGroup() def resizeEvent(self, event): """Reimplemented to save state on resize.""" self.settings.beginGroup("MainWindow") self.settings.setValue("size", self.size()) self.settings.endGroup() QWidget.resizeEvent(self, event) def changeEvent(self, event): QWidget.changeEvent(self, event) # end def ### DRAWING RELATED ### ### PRIVATE HELPER METHODS ### def _readSettings(self): self.settings.beginGroup("MainWindow") self.resize(self.settings.value("size", QSize(1100, 800))) self.move(self.settings.value("pos", QPoint(200, 200))) self.settings.endGroup()
def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self) # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager # set the selection filter default doc.documentSelectionFilterChangedSignal.emit( ["endpoint", "scaffold", "staple", "xover"]) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() if GL: pass # self.slicescene.drawBackground = self.drawBackgroundGL # self.pathscene.drawBackground = self.drawBackgroundGL # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText( QApplication.translate("MainWindow", "Undo", None)) self.actionUndo.setShortcut( QApplication.translate("MainWindow", "Ctrl+Z", None)) self.actionRedo.setText( QApplication.translate("MainWindow", "Redo", None)) self.actionRedo.setShortcut( QApplication.translate("MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.action_modify, self.sep) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.splitter.setSizes([400, 400]) # balance splitter size self.statusBar().showMessage("")
def __init__(self, parent=None, doc_ctrlr=None): super(DocumentWindow, self).__init__(parent) self.controller = doc_ctrlr doc = doc_ctrlr.document() self.setupUi(self) self.settings = QSettings() self._readSettings() # Slice setup self.slicescene = QGraphicsScene(parent=self.slice_graphics_view) self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents) self.slicescene.addItem(self.sliceroot) self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.sliceroot.scene() == self.slicescene self.slice_graphics_view.setScene(self.slicescene) self.slice_graphics_view.scene_root_item = self.sliceroot self.slice_graphics_view.setName("SliceView") self.slice_tool_manager = SliceToolManager(self) # Path setup self.pathscene = QGraphicsScene(parent=self.path_graphics_view) self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\ parent=None,\ window=self,\ document=doc) self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents) self.pathscene.addItem(self.pathroot) self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex) assert self.pathroot.scene() == self.pathscene self.path_graphics_view.setScene(self.pathscene) self.path_graphics_view.scene_root_item = self.pathroot self.path_graphics_view.setScaleFitFactor(0.9) self.path_graphics_view.setName("PathView") self.path_color_panel = ColorPanel() self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview self.pathscene.addItem(self.path_color_panel) self.path_tool_manager = PathToolManager(self) self.slice_tool_manager.path_tool_manager = self.path_tool_manager self.path_tool_manager.slice_tool_manager = self.slice_tool_manager # set the selection filter default doc.documentSelectionFilterChangedSignal.emit(["endpoint", "scaffold", "staple", "xover"]) self.path_graphics_view.setupGL() self.slice_graphics_view.setupGL() if GL: pass # self.slicescene.drawBackground = self.drawBackgroundGL # self.pathscene.drawBackground = self.drawBackgroundGL # Edit menu setup self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self) self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self) self.actionUndo.setText(QApplication.translate( "MainWindow", "Undo", None)) self.actionUndo.setShortcut(QApplication.translate( "MainWindow", "Ctrl+Z", None)) self.actionRedo.setText(QApplication.translate( "MainWindow", "Redo", None)) self.actionRedo.setShortcut(QApplication.translate( "MainWindow", "Ctrl+Shift+Z", None)) self.sep = QAction(self) self.sep.setSeparator(True) self.menu_edit.insertAction(self.action_modify, self.sep) self.menu_edit.insertAction(self.sep, self.actionRedo) self.menu_edit.insertAction(self.actionRedo, self.actionUndo) self.splitter.setSizes([400, 400]) # balance splitter size self.statusBar().showMessage("")