def _handle_telemetry_context_menu(self, pos): item = self.ui.telemetryTreeWidget.itemAt(pos) if item.childCount() > 0: return menu = QtGui.QMenu(self) left_action = menu.addAction('Plot Left') right_action = menu.addAction('Plot Right') menu.addSeparator() copy_name = menu.addAction('Copy Name') copy_value = menu.addAction('Copy Value') requested = menu.exec_(self.ui.telemetryTreeWidget.mapToGlobal(pos)) if requested == left_action or requested == right_action: name = _get_item_name(item) root = _get_item_root(item) record = self._telemetry_records[root] leaf = name.split('.', 1)[1] axis = 0 if requested == right_action: axis = 1 plot_item = self.ui.plotWidget.add_plot(name, record.get_signal(leaf), axis) self.ui.plotItemCombo.addItem(name, plot_item) elif requested == copy_name: QtGui.QApplication.clipboard().setText(item.text(0)) elif requested == copy_value: QtGui.QApplication.clipboard().setText(item.text(1)) else: # The user cancelled. pass
def _get_magic_menu(self,menuidentifier, menulabel=None): """return a submagic menu by name, and create it if needed parameters: ----------- menulabel : str Label for the menu Will infere the menu name from the identifier at creation if menulabel not given. To do so you have too give menuidentifier as a CamelCassedString """ menu = self._magic_menu_dict.get(menuidentifier,None) if not menu : if not menulabel: menulabel = re.sub("([a-zA-Z]+)([A-Z][a-z])","\g<1> \g<2>",menuidentifier) menu = QtGui.QMenu(menulabel,self.magic_menu) self._magic_menu_dict[menuidentifier]=menu self.magic_menu.insertMenu(self.magic_menu_separator,menu) return menu
def _context_menu_make(self, pos): """ Reimplemented to return a custom context menu for images. """ format = self._control.cursorForPosition(pos).charFormat() name = format.stringProperty(QtGui.QTextFormat.ImageName) if name: menu = QtGui.QMenu() menu.addAction('Copy Image', lambda: self._copy_image(name)) menu.addAction('Save Image As...', lambda: self._save_image(name)) menu.addSeparator() svg = self._name_to_svg_map.get(name, None) if svg is not None: menu.addSeparator() menu.addAction('Copy SVG', lambda: svg_to_clipboard(svg)) menu.addAction('Save SVG As...', lambda: save_svg(svg, self._control)) else: menu = super(RichIPythonWidget, self)._context_menu_make(pos) return menu