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()
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, )
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()
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)
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()
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()
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')
def addShortcut(widget, keySequence, func): shortcut = QtGui.QShortcut(QtGui.QKeySequence(keySequence), widget) shortcut.connect("activated()", func) shortcut.connect("activatedAmbiguously()", func) return shortcut
def addShortcut(keySequence, widget, slot): shortcut = QtGui.QShortcut(QtGui.QKeySequence(keySequence), widget) shortcut.connect('activated()', slot)
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()