Example #1
0
    def initWidgets(self):
        # Buttons
        self.logButton = QtGui.QPushButton(QtGui.QIcon(":/icons/log.png"),
                                           self.__tr('Log'))

        # Tree
        self.tree = QtGui.QTreeView()
        self.model = self.createModel(self)
        self.tree.setModel(self.model)

        self.insertRow(['Indicator cubes', '', '', ''])
        self.insertRow(['Continuous cubes', '', '', ''])

        self.contBranchIndex = self.model.index(0, 0)
        self.indBranchIndex = self.model.index(1, 0)

        self.model.setData(self.contBranchIndex,
                           QtGui.QIcon(':/icons/render.png'),
                           QtCore.Qt.DecorationRole)
        self.model.setData(self.indBranchIndex,
                           QtGui.QIcon(':/icons/render.png'),
                           QtCore.Qt.DecorationRole)

        self.tree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.resizeColumn()

        # 3D View
        if MAYAVI_INSTALLED:
            self.view = MayaviQWidget()
        else:
            self.view = QtGui.QWidget()

        # Progress info
        self.progressBar = QtGui.QProgressBar()
        self.progressBar.setDisabled(1)
        self.algorithmText = QtGui.QLineEdit()
        self.busyWidget = QtGui.QWidget()
        self.busyIcon = Progress.QProgressIndicator(self.busyWidget)

        # Actions:
        # ----Tree item actions
        self.deleteAction = QtGui.QAction(self.__tr("Delete"), self)
        self.statisticsAction = QtGui.QAction(self.__tr("Statistics"), self)
        self.algorithmAction = QtGui.QAction(self.__tr("Apply algorithm"),
                                             self)
        self.saveAction = QtGui.QAction(self.__tr("Save"), self)
        self.renderAction = QtGui.QAction(self.__tr("Render"), self)

        # ----Tree branch actions
        self.newCubeAction = QtGui.QAction(self.__tr("New cube"), self)
        self.loadAction = QtGui.QAction(self.__tr("Load cube"), self)

        # Icons:
        self.deleteAction.setIcon(QtGui.QIcon(':/icons/del.png'))
        self.statisticsAction.setIcon(QtGui.QIcon(':/icons/statistics.png'))
        self.renderAction.setIcon(QtGui.QIcon(':/icons/render.png'))
        self.saveAction.setIcon(QtGui.QIcon(':/icons/save.png'))
        self.newCubeAction.setIcon(QtGui.QIcon(':/icons/new.png'))
        self.loadAction.setIcon(QtGui.QIcon(':/icons/open.png'))
        self.algorithmAction.setIcon(QtGui.QIcon(':/icons/algorithm.png'))
        self.logButton.setIcon(QtGui.QIcon(':/icons/log.png'))
        self.setWindowIcon(QtGui.QIcon(':/icons/hpgl-gui.png'))

        # Toolbar
        self.toolbar = QtGui.QToolBar()
        self.toolbar.addActions([self.newCubeAction, self.loadAction])

        # Menu
        self.itemMenu = QtGui.QMenu(self)
        self.itemMenu.addAction(self.algorithmAction)
        self.itemMenu.addAction(self.statisticsAction)
        self.itemMenu.addAction(self.renderAction)
        self.itemMenu.addAction(self.saveAction)
        self.itemMenu.addAction(self.deleteAction)

        self.branchMenu = QtGui.QMenu(self)
        self.branchMenu.addAction(self.loadAction)
        self.branchMenu.addAction(self.newCubeAction)

        # Placing on form
        splitter = QtGui.QSplitter(QtCore.Qt.Horizontal, self)

        leftWidget = QtGui.QWidget()
        vbox = QtGui.QVBoxLayout(leftWidget)
        vbox.addWidget(self.toolbar)
        vbox.addWidget(self.tree)
        vbox.setSpacing(2)

        rightWidget = QtGui.QWidget()
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(self.view)
        vbox.setSpacing(0)
        rightWidget.setLayout(vbox)

        splitter.addWidget(leftWidget)
        splitter.addWidget(rightWidget)
        splitter.setContentsMargins(0, 0, 0, 0)

        hbox = QtGui.QHBoxLayout()
        hbox.addWidget(self.busyIcon)
        hbox.addWidget(self.algorithmText)
        hbox.addWidget(self.progressBar)
        hbox.addWidget(self.logButton)
        hbox.setSpacing(2)
        hbox.setContentsMargins(4, 0, 4, 0)

        self.mainLayout.addWidget(splitter)
        self.mainLayout.addLayout(hbox)

        # Other widgets
        self.loadCubesWidget = LCW.LoadCube(self)
        self.contAlgWidget = CAW.ContAlgWidget(self.iterator, self)
        self.indAlgWidget = IAW.IndAlgWidget(self.iterator, self)
        self.createCubeWidget = CCW.CreateCube(self)