Пример #1
0
    def __init__(self):

        self.mainWindow = QtGui.QMainWindow()
        self.mainWindow.resize(768 * (16 / 9.0), 768)
        self.settings = QtCore.QSettings()

        self.fileMenu = self.mainWindow.menuBar().addMenu('&File')
        self.editMenu = self.mainWindow.menuBar().addMenu('&Edit')
        self.viewMenu = self.mainWindow.menuBar().addMenu('&View')
        self.toolbarMenu = self.viewMenu.addMenu('&Toolbars')
        self.toolsMenu = self.mainWindow.menuBar().addMenu('&Tools')
        self.helpMenu = self.mainWindow.menuBar().addMenu('&Help')
        self.viewMenuManager = PythonQt.dd.ddViewMenu(self.viewMenu)
        self.toolbarMenuManager = PythonQt.dd.ddViewMenu(self.toolbarMenu)

        self.quitAction = self.fileMenu.addAction('&Quit')
        self.quitAction.setShortcut(QtGui.QKeySequence('Ctrl+Q'))
        self.quitAction.connect('triggered()', self.quit)
        self.fileMenu.addSeparator()

        self.pythonConsoleAction = self.toolsMenu.addAction('&Python Console')
        self.pythonConsoleAction.setShortcut(QtGui.QKeySequence('F8'))
        self.pythonConsoleAction.connect('triggered()', self.showPythonConsole)
        self.toolsMenu.addSeparator()

        helpAction = self.helpMenu.addAction('Online Documentation')
        helpAction.connect('triggered()', self.showOnlineDocumentation)
        self.helpMenu.addSeparator()

        helpKeyboardShortcutsAction = self.helpMenu.addAction(
            'Keyboard Shortcuts')
        helpKeyboardShortcutsAction.connect('triggered()',
                                            self.showOnlineKeyboardShortcuts)
        self.helpMenu.addSeparator()
Пример #2
0
    def initUndoRedo(self, fields):

        undoStack = QtGui.QUndoStack()
        undoView = QtGui.QUndoView(undoStack)
        undoView.setEmptyLabel("Start")
        undoView.setWindowTitle("History")
        undoDock = fields.app.addWidgetToDock(
            undoView, QtCore.Qt.LeftDockWidgetArea, visible=False
        )

        undoAction = undoStack.createUndoAction(undoStack)
        redoAction = undoStack.createRedoAction(undoStack)
        undoAction.setShortcut(QtGui.QKeySequence("Ctrl+Z"))
        redoAction.setShortcut(QtGui.QKeySequence("Ctrl+Shift+Z"))

        fields.app.editMenu.addAction(undoAction)
        fields.app.editMenu.addAction(redoAction)

        return FieldContainer(
            undoDock=undoDock,
            undoStack=undoStack,
            undoView=undoView,
            undoAction=undoAction,
            redoAction=redoAction,
        )
Пример #3
0
    def __init__(self):

        self.mainWindow = QtGui.QMainWindow()
        self.mainWindow.resize(768 * (16 / 9.0), 768)

        self.settings = QtCore.QSettings()

        self.fileMenu = self.mainWindow.menuBar().addMenu("&File")
        self.editMenu = self.mainWindow.menuBar().addMenu("&Edit")
        self.viewMenu = self.mainWindow.menuBar().addMenu("&View")
        self.toolbarMenu = self.viewMenu.addMenu("&Toolbars")
        self.toolsMenu = self.mainWindow.menuBar().addMenu("&Tools")
        self.helpMenu = self.mainWindow.menuBar().addMenu("&Help")
        self.viewMenuManager = PythonQt.dd.ddViewMenu(self.viewMenu)
        self.toolbarMenuManager = PythonQt.dd.ddViewMenu(self.toolbarMenu)

        self.quitAction = self.fileMenu.addAction("&Quit")
        self.quitAction.setShortcut(QtGui.QKeySequence("Ctrl+Q"))
        self.quitAction.connect("triggered()", self.quit)
        self.fileMenu.addSeparator()

        self.pythonConsoleAction = self.toolsMenu.addAction("&Python Console")
        self.pythonConsoleAction.setShortcut(QtGui.QKeySequence("F8"))
        self.pythonConsoleAction.connect("triggered()", self.showPythonConsole)
        self.toolsMenu.addSeparator()

        helpAction = self.helpMenu.addAction("Online Documentation")
        helpAction.connect("triggered()", self.showOnlineDocumentation)
        self.helpMenu.addSeparator()

        helpKeyboardShortcutsAction = self.helpMenu.addAction("Keyboard Shortcuts")
        helpKeyboardShortcutsAction.connect(
            "triggered()", self.showOnlineKeyboardShortcuts
        )
        self.helpMenu.addSeparator()
Пример #4
0
 def setup(self):
     QtGui.QShortcut(QtGui.QKeySequence("Ctrl+W"), self.widget).connect(
         QtCore.SIGNAL("activated()"), self.close
     )
     QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self.widget).connect(
         QtCore.SIGNAL("activated()"), self.close
     )
     self.capturePanel = CapturePanel(self)
     self.sendPosturePanel = SendPosturePanel(self)
Пример #5
0
    def showToolbarWidget(self):

        if app.getMainWindow() is None:
            return

        if self.toolbarWidget:
            self.execButton.setEnabled(True)
            return

        w = QtGui.QWidget()
        l = QtGui.QHBoxLayout(w)

        label = QtGui.QLabel('Walk plan:')
        execButton = QtGui.QPushButton('')
        execButton.setIcon(QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_MediaPlay))
        clearButton = QtGui.QPushButton('')
        clearButton.setIcon(QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_TrashIcon))
        stopButton = QtGui.QPushButton('')
        stopButton.setIcon(QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_MediaStop))

        l.addWidget(label)
        l.addWidget(execButton)
        l.addWidget(stopButton)
        l.addWidget(clearButton)
        l.setContentsMargins(0, 0, 0, 0)

        execButton.setShortcut(QtGui.QKeySequence('Ctrl+Return'))
        execButton.connect('clicked()', self.onExecClicked)
        clearButton.connect('clicked()', self.onClearClicked)
        stopButton.connect('clicked()', self.sendStopWalking)

        self.execButton = execButton
        self.stopButton = stopButton
        self.toolbarWidget = app.getMainWindow().toolBar().addWidget(w)
        self.execButton.show()
Пример #6
0
    def __init__(self, planPlayback, playbackRobotModel,
                 playbackJointController, robotStateModel,
                 robotStateJointController, manipPlanner):

        self.planPlayback = planPlayback
        self.playbackRobotModel = playbackRobotModel
        self.playbackJointController = playbackJointController
        self.robotStateModel = robotStateModel
        self.robotStateJointController = robotStateJointController
        self.manipPlanner = manipPlanner
        manipPlanner.connectPlanCommitted(self.onPlanCommitted)
        manipPlanner.connectUseSupports(self.updateButtonColor)

        self.autoPlay = True
        self.useOperationColors()

        self.planFramesObj = None
        self.plan = None
        self.poseInterpolator = None
        self.startTime = 0.0
        self.endTime = 1.0
        self.animationTimer = TimerCallback()
        self.animationTimer.targetFps = 60
        self.animationTimer.callback = self.updateAnimation
        self.animationClock = SimpleTimer()

        loader = QtUiTools.QUiLoader()
        uifile = QtCore.QFile(':/ui/ddPlaybackPanel.ui')
        assert uifile.open(uifile.ReadOnly)

        self.widget = loader.load(uifile)
        uifile.close()

        self.ui = WidgetDict(self.widget.children())

        self.ui.viewModeCombo.connect('currentIndexChanged(const QString&)',
                                      self.viewModeChanged)
        self.ui.playbackSpeedCombo.connect(
            'currentIndexChanged(const QString&)', self.playbackSpeedChanged)
        self.ui.interpolationCombo.connect(
            'currentIndexChanged(const QString&)', self.interpolationChanged)

        self.ui.samplesSpinBox.connect('valueChanged(int)',
                                       self.numberOfSamplesChanged)
        self.ui.playbackSlider.connect('valueChanged(int)',
                                       self.playbackSliderValueChanged)

        self.ui.animateButton.connect('clicked()', self.animateClicked)
        self.ui.hideButton.connect('clicked()', self.hideClicked)
        self.ui.executeButton.connect('clicked()', self.executeClicked)
        self.ui.executeButton.setShortcut(QtGui.QKeySequence('Ctrl+Return'))
        self.ui.stopButton.connect('clicked()', self.stopClicked)

        self.ui.executeButton.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.ui.executeButton.connect(
            'customContextMenuRequested(const QPoint&)',
            self.showExecuteContextMenu)

        self.setPlan(None)
        self.hideClicked()
Пример #7
0
    def __init__(self, mainWindowApp):

        self.app = mainWindowApp
        self.rootFolderName = "data files"

        self.openAction = QtGui.QAction("&Open Data...", self.app.fileMenu)
        self.app.fileMenu.insertAction(self.app.quitAction, self.openAction)
        self.app.fileMenu.insertSeparator(self.app.quitAction)
        self.openAction.setShortcut(QtGui.QKeySequence("Ctrl+O"))
        self.openAction.connect("triggered()", self.onOpenDataFile)
    def __init__(self):

        self.applicationInstance().setOrganizationName('RobotLocomotionGroup')
        self.applicationInstance().setApplicationName('drake-visualizer')

        om.init()
        self.view = PythonQt.dd.ddQVTKWidgetView()

        # init grid
        self.gridObj = vis.showGrid(self.view, parent='scene')
        self.gridObj.setProperty('Surface Mode', 'Surface with edges')
        self.gridObj.setProperty('Color', [0, 0, 0])
        self.gridObj.setProperty('Alpha', 0.1)

        # init view options
        self.viewOptions = vis.ViewOptionsItem(self.view)
        om.addToObjectModel(self.viewOptions,
                            parentObj=om.findObjectByName('scene'))
        self.viewOptions.setProperty('Background color', [0.3, 0.3, 0.35])
        self.viewOptions.setProperty('Background color 2', [0.95, 0.95, 1])

        # setup camera
        applogic.setCameraTerrainModeEnabled(self.view, True)
        applogic.resetCamera(viewDirection=[-1, 0, -0.3], view=self.view)

        # This setting improves the near plane clipping resolution.
        # Drake often draws a very large ground plane which is detrimental to
        # the near clipping for up close objects.  The trade-off is Z buffer
        # resolution but in practice things look good with this setting.
        self.view.renderer().SetNearClippingPlaneTolerance(0.0005)

        # add view behaviors
        self.viewBehaviors = viewbehaviors.ViewBehaviors(self.view)
        applogic._defaultRenderView = self.view

        self.mainWindow = QtGui.QMainWindow()
        self.mainWindow.setCentralWidget(self.view)
        self.mainWindow.resize(768 * (16 / 9.0), 768)
        self.mainWindow.setWindowTitle('Drake Visualizer')
        self.mainWindow.setWindowIcon(QtGui.QIcon(':/images/drake_logo.png'))

        self.settings = QtCore.QSettings()

        self.fileMenu = self.mainWindow.menuBar().addMenu('&File')
        self.viewMenu = self.mainWindow.menuBar().addMenu('&View')
        self.viewMenuManager = PythonQt.dd.ddViewMenu(self.viewMenu)

        self.drakeVisualizer = DrakeVisualizer(self.view)
        self.lcmglManager = lcmgl.LCMGLManager(
            self.view) if lcmgl.LCMGL_AVAILABLE else None

        model = om.getDefaultObjectModel()
        model.getTreeWidget().setWindowTitle('Scene Browser')
        model.getPropertiesPanel().setWindowTitle('Properties Panel')

        self.sceneBrowserDock = self.addWidgetToDock(
            model.getTreeWidget(), QtCore.Qt.LeftDockWidgetArea, visible=False)
        self.propertiesDock = self.addWidgetToDock(
            self.wrapScrollArea(model.getPropertiesPanel()),
            QtCore.Qt.LeftDockWidgetArea,
            visible=False)

        self.addViewMenuSeparator()

        self.screenGrabberPanel = ScreenGrabberPanel(self.view)
        self.screenGrabberDock = self.addWidgetToDock(
            self.screenGrabberPanel.widget,
            QtCore.Qt.RightDockWidgetArea,
            visible=False)

        self.cameraBookmarksPanel = camerabookmarks.CameraBookmarkWidget(
            self.view)
        self.cameraBookmarksDock = self.addWidgetToDock(
            self.cameraBookmarksPanel.widget,
            QtCore.Qt.RightDockWidgetArea,
            visible=False)

        self.cameraControlPanel = cameracontrolpanel.CameraControlPanel(
            self.view)
        self.cameraControlDock = self.addWidgetToDock(
            self.cameraControlPanel.widget,
            QtCore.Qt.RightDockWidgetArea,
            visible=False)

        act = self.fileMenu.addAction('&Quit')
        act.setShortcut(QtGui.QKeySequence('Ctrl+Q'))
        act.connect('triggered()', self.applicationInstance().quit)

        self.fileMenu.addSeparator()

        act = self.fileMenu.addAction('&Open Data...')
        act.setShortcut(QtGui.QKeySequence('Ctrl+O'))
        act.connect('triggered()', self._onOpenDataFile)

        applogic.addShortcut(self.mainWindow, 'F1', self._toggleObjectModel)
        applogic.addShortcut(self.mainWindow, 'F8', applogic.showPythonConsole)
        self.applicationInstance().connect('aboutToQuit()',
                                           self._onAboutToQuit)

        for obj in om.getObjects():
            obj.setProperty('Deletable', False)

        self.mainWindow.show()
        self._saveWindowState('MainWindowDefault')
        self._restoreWindowState('MainWindowCustom')
Пример #9
0
def addShortcut(widget, keySequence, func):
    shortcut = QtGui.QShortcut(QtGui.QKeySequence(keySequence), widget)
    shortcut.connect("activated()", func)
    shortcut.connect("activatedAmbiguously()", func)
    return shortcut
Пример #10
0
def addShortcut(keySequence, widget, slot):
    shortcut = QtGui.QShortcut(QtGui.QKeySequence(keySequence), widget)
    shortcut.connect('activated()', slot)
Пример #11
0
    def __init__(self):
        super(ExportQtGui, self).__init__()
        #--# Create Groups
        self.mainGroup = QtGui.QGroupBox('Export List')
        self.optionGroup = QtGui.QGroupBox('Options')
        #--# Create Layouts
        layoutV1_main = QtGui.QVBoxLayout()
        layoutV2_grp = QtGui.QVBoxLayout()
        layoutV3_grp = QtGui.QVBoxLayout()
        layoutH1_wdg = QtGui.QHBoxLayout()
        layoutH2_wdg = QtGui.QHBoxLayout()
        layoutH3_wdg = QtGui.QHBoxLayout()
        layoutH4_wdg = QtGui.QHBoxLayout()
        layoutH5_wdg = QtGui.QHBoxLayout()
        ## Build Layouts
        self.setLayout(layoutV1_main)
        self.mainGroup.setLayout(layoutV2_grp)
        self.optionGroup.setLayout(layoutV3_grp)
        layoutV2_grp.addLayout(layoutH1_wdg)
        layoutV2_grp.addLayout(layoutH2_wdg)
        layoutV3_grp.addLayout(layoutH3_wdg)
        layoutV3_grp.addLayout(layoutH4_wdg)
        layoutV3_grp.addLayout(layoutH5_wdg)
        #--# Export List TreeWidget
        self.exportList = QtGui.QTreeWidget()
        self.exportList.setSelectionMode(
            QtGui.QAbstractItemView.ExtendedSelection)
        self.exportList.setSortingEnabled(True)
        self.exportList.setAlternatingRowColors(True)
        #--# Create Widgets
        self.addBtn = QtGui.QToolButton(self)
        self.removeBtn = QtGui.QToolButton(self)
        self.clearBtn = QtGui.QToolButton(self)
        self.addAllBtn = QtGui.QToolButton(self)
        self.browseBtn = QtGui.QPushButton('Browse')
        self.exportBtn = QtGui.QPushButton('Export')
        self.formatCombo = QtGui.QComboBox()
        self.exportLabel = QtGui.QLabel('Path: ')
        self.formatLabel = QtGui.QLabel('Format: ')
        self.templateLabel = QtGui.QLabel('Template: ')
        self.templateLn = QtGui.QLineEdit(defaultTemplate)
        self.exportLn = QtGui.QLineEdit()
        ## Set Icons
        self.addBtn.setIcon(QtGui.QIcon('%s/Plus.png' % icon_path))
        self.removeBtn.setIcon(QtGui.QIcon('%s/Minus.png' % icon_path))
        self.clearBtn.setIcon(QtGui.QIcon('%s/Quit.png' % icon_path))
        self.addAllBtn.setIcon(QtGui.QIcon('%s/AddObject.png' % icon_path))
        #--# Populate Layouts
        layoutH1_wdg.addWidget(self.exportList)
        layoutH2_wdg.addWidget(self.addBtn)
        layoutH2_wdg.addWidget(self.removeBtn)
        layoutH2_wdg.addWidget(self.clearBtn)
        layoutH2_wdg.addWidget(self.addAllBtn)
        layoutH2_wdg.addStretch()
        layoutH3_wdg.addWidget(self.exportLabel)
        layoutH3_wdg.addWidget(self.exportLn)
        layoutH3_wdg.addWidget(self.browseBtn)
        layoutH4_wdg.addWidget(self.templateLabel)
        layoutH4_wdg.addWidget(self.templateLn)
        layoutH4_wdg.addWidget(self.formatLabel)
        layoutH4_wdg.addWidget(self.formatCombo)
        layoutH5_wdg.addWidget(self.exportBtn)
        ## Final
        layoutV1_main.addWidget(self.mainGroup)
        layoutV1_main.addWidget(self.optionGroup)
        #--# StyleSheets
        self.setStyleSheet("\
		QTreeWidget { alternate-background-color: rgb(100, 100, 100); } \
		")
        #--# Keyboard shortcuts
        self.deleteKey = QtGui.QShortcut(QtGui.QKeySequence('Delete'), self)
        #--# Connections
        self.addBtn.connect("clicked()", self.addUDIM)
        self.removeBtn.connect("clicked()",
                               lambda: self.manageTree(remove=True))
        self.clearBtn.connect("clicked()", self.clear)
        self.addAllBtn.connect("clicked()", self.addAllObjects)
        self.browseBtn.connect("clicked()", self.getExportPath)
        self.exportBtn.connect("clicked()", self.export)
        self.deleteKey.connect("activated()",
                               lambda: self.manageTree(remove=True))
        self.exportList.connect("itemDoubleClicked (QTreeWidgetItem *,int)",
                                lambda: self.manageTree(pick=True))
        #--# Init
        self.init()
        self.setHeader()