def _create_popup_menu(self, widget): # remove, hide menu = misc.wxGladePopupMenu(self.name) widgetclass = self.__class__.__name__.lstrip("Edit") if self.widget and self.is_visible(): # hide window i = misc.append_menu_item(menu, -1, _('Hide Design Window')) misc.bind_menu_item_after(widget, i, self.hide_widget) else: i = misc.append_menu_item(menu, -1, _('Show Design Window')) misc.bind_menu_item_after(widget, i, common.app_tree.show_toplevel, None, self) menu.AppendSeparator() i = misc.append_menu_item(menu, -1, _('Remove %s\tDel')%widgetclass, wx.ART_DELETE) misc.bind_menu_item_after(widget, i, self.remove) i = misc.append_menu_item(menu, -1, _('Duplicate %s')%widgetclass, wx.ART_COPY) misc.bind_menu_item_after(widget, i, self.duplicate) # paste i = misc.append_menu_item(menu, -1, _('Paste Sizer\tCtrl+V'), wx.ART_PASTE) misc.bind_menu_item_after(widget, i, clipboard.paste, self) if self.sizer is not None or not clipboard.check("sizer"): i.Enable(False) # preview menu.AppendSeparator() i = misc.append_menu_item(menu, -1, _('Preview %s\tF5'%widgetclass)) misc.bind_menu_item(widget, i, self.preview_parent) return menu
def popup_menu(self, event): if self.widget: if not self._rmenu: COPY_ID, REMOVE_ID, CUT_ID = [wx.NewId() for i in range(3)] self._rmenu = misc.wxGladePopupMenu(self.name) misc.append_item(self._rmenu, REMOVE_ID, _('Remove\tDel'), wx.ART_DELETE) misc.append_item(self._rmenu, COPY_ID, _('Copy\tCtrl+C'), wx.ART_COPY) misc.append_item(self._rmenu, CUT_ID, _('Cut\tCtrl+X'), wx.ART_CUT) def bind(method): return lambda e: wx.CallAfter(method) wx.EVT_MENU(self.widget, REMOVE_ID, bind(self.remove)) wx.EVT_MENU(self.widget, COPY_ID, bind(self.clipboard_copy)) wx.EVT_MENU(self.widget, CUT_ID, bind(self.clipboard_cut)) # paste PASTE_ID = wx.NewId() misc.append_item(self._rmenu, PASTE_ID, _('Paste\tCtrl+V'), wx.ART_PASTE) wx.EVT_MENU(self.widget, PASTE_ID, bind(self.clipboard_paste)) PREVIEW_ID = wx.NewId() self._rmenu.AppendSeparator() misc.append_item(self._rmenu, PREVIEW_ID, _('Preview')) wx.EVT_MENU(self.widget, PREVIEW_ID, bind(self.preview_parent)) self.setup_preview_menu() self.widget.PopupMenu(self._rmenu, event.GetPosition())
def popup_menu(self, event): if self.widget: if not self._rmenu: REMOVE_ID, HIDE_ID = [wx.NewId() for i in range(2)] self._rmenu = misc.wxGladePopupMenu(self.name) misc.append_item(self._rmenu, REMOVE_ID, _('Remove\tDel'), wx.ART_DELETE) misc.append_item(self._rmenu, HIDE_ID, _('Hide')) def bind(method): return lambda e: misc.wxCallAfter(method) wx.EVT_MENU(self.widget, REMOVE_ID, bind(self.remove)) wx.EVT_MENU(self.widget, HIDE_ID, bind(self.hide_widget)) # paste PASTE_ID = wx.NewId() misc.append_item(self._rmenu, PASTE_ID, _('Paste\tCtrl+V'), wx.ART_PASTE) wx.EVT_MENU(self.widget, PASTE_ID, bind(self.clipboard_paste)) PREVIEW_ID = wx.NewId() self._rmenu.AppendSeparator() misc.append_item(self._rmenu, PREVIEW_ID, _('Preview')) wx.EVT_MENU(self.widget, PREVIEW_ID, bind(self.preview_parent)) self.setup_preview_menu() self.widget.PopupMenu(self._rmenu, event.GetPosition())
def _create_popup_menu(self, widget): menu = misc.wxGladePopupMenu(self.name) # edit: remove/copy/cut widgetclass = self.__class__.__name__.lstrip("Edit") i = misc.append_menu_item(menu, -1, _('Remove %s\tDel')%widgetclass, wx.ART_DELETE) misc.bind_menu_item_after(widget, i, self.remove) i = misc.append_menu_item( menu, -1, _('Copy\tCtrl+C'), wx.ART_COPY ) misc.bind_menu_item_after(widget, i, clipboard.copy, self) i = misc.append_menu_item( menu, -1, _('Cut\tCtrl+X'), wx.ART_CUT ) misc.bind_menu_item_after(widget, i, clipboard.cut, self) menu.AppendSeparator() if self.sizer and hasattr(self.sizer, "_add_popup_menu_items"): self.sizer._add_popup_menu_items(menu, self, widget) # preview (create or close?) p = misc.get_toplevel_widget(self) if p is not None and p.preview_is_visible(): item = _('Close preview (%s)\tF5') % p.name else: item = _('Preview (%s)\tF5') % p.name i = misc.append_menu_item( menu, -1, item ) #misc.bind_menu_item_after(widget, i, self.preview_parent) misc.bind_menu_item(widget, i, self.preview_parent) return menu
def _create_popup_menu(self, widget): menu = misc.wxGladePopupMenu(self.name) if self.IS_TOPLEVEL: if self.widget and self.is_visible(): item = misc.append_menu_item(menu, -1, _('Hide')) misc.bind_menu_item_after(widget, item, self.hide_widget) else: i = misc.append_menu_item(menu, -1, _('Show')) misc.bind_menu_item_after(widget, i, common.app_tree.show_toplevel, None, self) menu.AppendSeparator() i = misc.append_menu_item(menu, -1, _('Remove ToolBar\tDel'), wx.ART_DELETE) misc.bind_menu_item_after(widget, i, self.remove) i = misc.append_menu_item(menu, -1, _('Copy\tCtrl+C'), wx.ART_COPY) misc.bind_menu_item_after(widget, i, clipboard.copy, self) i = misc.append_menu_item(menu, -1, _('Cut\tCtrl+X'), wx.ART_CUT) misc.bind_menu_item_after(widget, i, clipboard.cut, self) item = misc.append_menu_item(menu, -1, _('Edit tools ...')) misc.bind_menu_item_after(widget, item, self.properties["tools"].edit_tools) return menu
def _create_popup_menu(self, widget): self._destroy_popup_menu() menu = misc.wxGladePopupMenu("Application") i = misc.append_menu_item(menu, -1, _('Generate Code')) misc.bind_menu_item_after( widget, i, self.generate_code) # a property, but it can be called self._rmenu = (menu, widget) # store for destryoing and unbinding return menu
def _create_popup_menu(self, widget=None): REMOVE_ID, HIDE_ID = [wx.NewId() for i in range(2)] menu = misc.wxGladePopupMenu(self.name) misc.append_menu_item(menu, REMOVE_ID, _('Remove MenuBar\tDel'), wx.ART_DELETE) misc.append_menu_item(menu, HIDE_ID, _('Hide')) if widget is None: widget = self.widget wx.EVT_MENU(widget, REMOVE_ID, misc.exec_after(self.remove)) wx.EVT_MENU(widget, HIDE_ID, misc.exec_after(self.hide_widget)) self._rmenu = (menu, widget)
def _create_popup_menu(self, widget): menu = misc.wxGladePopupMenu(self.name) # edit: remove/copy/cut widgetclass = self.__class__.__name__.lstrip("Edit") i = misc.append_menu_item(menu, -1, _('Remove %s\tDel')%widgetclass, wx.ART_DELETE) misc.bind_menu_item_after(widget, i, self.remove) i = misc.append_menu_item( menu, -1, _('Copy\tCtrl+C'), wx.ART_COPY ) misc.bind_menu_item_after(widget, i, clipboard.copy, self) i = misc.append_menu_item( menu, -1, _('Cut\tCtrl+X'), wx.ART_CUT ) misc.bind_menu_item_after(widget, i, clipboard.cut, self) menu.AppendSeparator() # rows/cols if inside a grid sizer if "rows" in self.sizer.PROPERTIES: row, col = self.sizer._get_row_col(self.pos) i = misc.append_menu_item(menu, -1, _('Insert Row before') ) misc.bind_menu_item_after(widget, i, self.sizer.insert_row, self.pos) i = misc.append_menu_item(menu, -1, _('Insert Column before') ) misc.bind_menu_item_after(widget, i, self.sizer.insert_col, self.pos) if row==self.sizer.rows-1: # last row i = misc.append_menu_item(menu, -1, _('Add Row') ) misc.bind_menu_item_after(widget, i, self.sizer.insert_row, -1) if col==self.sizer.cols-1: # last col i = misc.append_menu_item(menu, -1, _('Add Column') ) misc.bind_menu_item_after(widget, i, self.sizer.insert_col, -1) menu.AppendSeparator() if not self.sizer.is_virtual() and self.sizer._can_add_insert_slots(): # slots i = misc.append_menu_item(menu, -1, _('Insert Slot before\tCtrl+I') ) misc.bind_menu_item_after(widget, i, self.sizer.insert_slot, self.pos) i = misc.append_menu_item(menu, -1, _('Insert Slots before...\tCtrl+Shift+I') ) misc.bind_menu_item_after(widget, i, self.sizer.insert_slot, self.pos, True) if self.pos==len(self.sizer.children)-1: # last slot -> allow to add i = misc.append_menu_item(menu, -1, _('Add Slot\tCtrl+A') ) misc.bind_menu_item_after(widget, i, self.sizer.add_slot) i = misc.append_menu_item(menu, -1, _('Add Slots...\tCtrl+Shift+A') ) misc.bind_menu_item_after(widget, i, self.sizer.add_slot, True) menu.AppendSeparator() # preview (create or close?) p = misc.get_toplevel_widget(self) if p is not None and p.preview_is_visible(): item = _('Close preview (%s)\tF5') % p.name else: item = _('Preview (%s)\tF5') % p.name i = misc.append_menu_item( menu, -1, item ) #misc.bind_menu_item_after(widget, i, self.preview_parent) misc.bind_menu_item(widget, i, self.preview_parent) return menu
def _create_popup_menu(self): REMOVE_ID = wx.NewId() HIDE_ID = wx.NewId() self._rmenu = misc.wxGladePopupMenu(self.name) misc.append_menu_item(self._rmenu, REMOVE_ID, _('Remove ToolBar\tDel'), wx.ART_DELETE) misc.append_menu_item(self._rmenu, HIDE_ID, _('Hide')) wx.EVT_MENU(self.pwidget, REMOVE_ID, misc.exec_after(self.remove)) wx.EVT_MENU(self.pwidget, HIDE_ID, misc.exec_after(self.hide_widget)) self._rmenu = (menu, widget) # store for destryoing and unbinding return menu
def __init__(self, parent, application): id = wx.NewId() style = wx.TR_DEFAULT_STYLE|wx.TR_HAS_VARIABLE_ROW_HEIGHT if wx.Platform == '__WXGTK__': style |= wx.TR_NO_LINES|wx.TR_FULL_ROW_HIGHLIGHT elif wx.Platform == '__WXMAC__': style &= ~wx.TR_ROW_LINES wx.TreeCtrl.__init__(self, parent, id, style=style) root_node = Tree.Node(application) self.cur_widget = None # reference to the selected widget Tree.__init__(self, root_node, application) image_list = wx.ImageList(21, 21) image_list.Add(wx.Bitmap(os.path.join(common.icons_path, 'application.xpm'), wx.BITMAP_TYPE_XPM)) for w in WidgetTree.images: ## WidgetTree.images[w] = image_list.Add(wx.Bitmap( ## WidgetTree.images[w], wx.BITMAP_TYPE_XPM)) WidgetTree.images[w] = image_list.Add( misc.get_xpm_bitmap(WidgetTree.images[w])) self.AssignImageList(image_list) root_node.item = self.AddRoot(_('Application'), 0) self.SetPyData(root_node.item, root_node) self.skip_select = 0 # necessary to avoid an infinite loop on win32, as # SelectItem fires an EVT_TREE_SEL_CHANGED event self.title = ' ' self.set_title(self.title) self.auto_expand = True # this control the automatic expansion of # nodes: it is set to False during xml loading self._show_menu = misc.wxGladePopupMenu('widget') # popup menu to # show toplevel # widgets SHOW_ID = wx.NewId() self._show_menu.Append(SHOW_ID, _('Show')) wx.EVT_TREE_SEL_CHANGED(self, id, self.on_change_selection) wx.EVT_RIGHT_DOWN(self, self.popup_menu) wx.EVT_LEFT_DCLICK(self, self.show_toplevel) wx.EVT_MENU(self, SHOW_ID, self.show_toplevel) def on_key_down(event): evt_flags = 0 if event.ControlDown(): evt_flags = wx.ACCEL_CTRL evt_key = event.GetKeyCode() for flags, key, function in misc.accel_table: if evt_flags == flags and evt_key == key: wx.CallAfter(function) break event.Skip() wx.EVT_KEY_DOWN(self, on_key_down)
def __init__(self, parent, application): id = wx.NewId() style = wx.TR_DEFAULT_STYLE|wx.TR_HAS_VARIABLE_ROW_HEIGHT if wx.Platform == '__WXGTK__': style |= wx.TR_NO_LINES|wx.TR_FULL_ROW_HIGHLIGHT elif wx.Platform == '__WXMAC__': style &= ~wx.TR_ROW_LINES wx.TreeCtrl.__init__(self, parent, id, style=style) root_node = Tree.Node(application) self.cur_widget = None # reference to the selected widget Tree.__init__(self, root_node, application) image_list = wx.ImageList(21, 21) image_list.Add(wx.Bitmap(os.path.join(common.wxglade_path, 'icons/application.xpm'), wx.BITMAP_TYPE_XPM)) for w in WidgetTree.images: ## WidgetTree.images[w] = image_list.Add(wx.Bitmap( ## WidgetTree.images[w], wx.BITMAP_TYPE_XPM)) WidgetTree.images[w] = image_list.Add( misc.get_xpm_bitmap(WidgetTree.images[w])) self.AssignImageList(image_list) root_node.item = self.AddRoot(_('Application'), 0) self.SetPyData(root_node.item, root_node) self.skip_select = 0 # necessary to avoid an infinite loop on win32, as # SelectItem fires an EVT_TREE_SEL_CHANGED event self.title = ' ' self.set_title(self.title) self.auto_expand = True # this control the automatic expansion of # nodes: it is set to False during xml loading self._show_menu = misc.wxGladePopupMenu('widget') # popup menu to # show toplevel # widgets SHOW_ID = wx.NewId() self._show_menu.Append(SHOW_ID, _('Show')) wx.EVT_TREE_SEL_CHANGED(self, id, self.on_change_selection) wx.EVT_RIGHT_DOWN(self, self.popup_menu) wx.EVT_LEFT_DCLICK(self, self.show_toplevel) wx.EVT_MENU(self, SHOW_ID, self.show_toplevel) def on_key_down(event): evt_flags = 0 if event.ControlDown(): evt_flags = wx.ACCEL_CTRL evt_key = event.GetKeyCode() for flags, key, function in misc.accel_table: if evt_flags == flags and evt_key == key: wx.CallAfter(function) break event.Skip() wx.EVT_KEY_DOWN(self, on_key_down)
def popup_menu(self, event): if self.parent is not None: return # do nothing in this case if self.widget: if not self._rmenu: REMOVE_ID, HIDE_ID = [wx.NewId() for i in range(2)] self._rmenu = misc.wxGladePopupMenu(self.name) misc.append_item(self._rmenu, REMOVE_ID, _('Remove\tDel'), wx.ART_DELETE) misc.append_item(self._rmenu, HIDE_ID, _('Hide')) def bind(method): return lambda e: misc.wxCallAfter(method) wx.EVT_MENU(self.widget, REMOVE_ID, bind(self.remove)) wx.EVT_MENU(self.widget, HIDE_ID, bind(self.hide_widget)) self.widget.PopupMenu(self._rmenu, event.GetPosition())
def _create_popup_menu(self, widget=None): if widget is None: widget = self.widget menu = misc.wxGladePopupMenu(self.name) i = misc.append_menu_item(menu, -1, _('Remove Panel\tDel'), wx.ART_DELETE) misc.bind_menu_item_after(widget, i, self.remove) i = misc.append_menu_item(menu, -1, _('Copy\tCtrl+C'), wx.ART_COPY) misc.bind_menu_item_after(widget, i, clipboard.copy, self) i = misc.append_menu_item(menu, -1, _('Cut\tCtrl+X'), wx.ART_CUT) misc.bind_menu_item_after(widget, i, clipboard.cut, self) i = misc.append_menu_item(menu, -1, _('Paste Sizer\tCtrl+V'), wx.ART_PASTE) misc.bind_menu_item_after(widget, i, clipboard.paste, self) if self.top_sizer is not None or not clipboard.check("sizer"): i.Enable(False) if self.sizer and not self.sizer.is_virtual( ) and self.sizer._can_add_insert_slots(): menu.AppendSeparator() # slots i = misc.append_menu_item(menu, -1, _('Insert Slot before\tCtrl+I')) misc.bind_menu_item_after(widget, i, self.sizer.insert_slot, self.pos) i = misc.append_menu_item( menu, -1, _('Insert Slots before...\tCtrl+Shift+I')) misc.bind_menu_item_after(widget, i, self.sizer.insert_slot, self.pos, True) if self.pos == len( self.sizer.children) - 1: # last slot -> allow to add i = misc.append_menu_item(menu, -1, _('Add Slot\tCtrl+A')) misc.bind_menu_item_after(widget, i, self.sizer.add_slot) i = misc.append_menu_item(menu, -1, _('Add Slots...\tCtrl+Shift+A')) misc.bind_menu_item_after(widget, i, self.sizer.add_slot, True) menu.AppendSeparator() i = misc.append_menu_item(menu, -1, _('Preview')) misc.bind_menu_item_after(widget, i, self.preview_parent) return menu
def _create_popup_menu(self, widget=None): if widget is None: widget = self.widget menu = misc.wxGladePopupMenu(self.name) if self.widget and self.is_visible(): item = misc.append_menu_item(menu, -1, _('Hide')) misc.bind_menu_item_after(widget, item, self.hide_widget) else: i = misc.append_menu_item(menu, -1, _('Show')) misc.bind_menu_item_after(widget, i, common.app_tree.show_toplevel, None, self) menu.AppendSeparator() item = misc.append_menu_item(menu, -1, _('Remove MenuBar\tDel'), wx.ART_DELETE) misc.bind_menu_item_after(widget, item, self.remove) item = misc.append_menu_item(menu, -1, _('Edit menus ...')) misc.bind_menu_item_after(widget, item, self.properties["menus"].edit_menus) return menu
def _create_popup_menu(self, widget=None): if widget is None: widget = self.widget menu = misc.wxGladePopupMenu(self.name) i = misc.append_menu_item(menu, -1, _('Remove Panel\tDel'), wx.ART_DELETE) misc.bind_menu_item_after(widget, i, self.remove) i = misc.append_menu_item(menu, -1, _('Copy\tCtrl+C'), wx.ART_COPY) misc.bind_menu_item_after(widget, i, clipboard.copy, self) i = misc.append_menu_item(menu, -1, _('Cut\tCtrl+X'), wx.ART_CUT) misc.bind_menu_item_after(widget, i, clipboard.cut, self) i = misc.append_menu_item(menu, -1, _('Paste Sizer\tCtrl+V'), wx.ART_PASTE) misc.bind_menu_item_after(widget, i, clipboard.paste, self) if self.top_sizer is not None or not clipboard.check("sizer"): i.Enable(False) menu.AppendSeparator() if self.sizer: self.sizer._add_popup_menu_items(menu, self, widget) i = misc.append_menu_item(menu, -1, _('Preview')) misc.bind_menu_item_after(widget, i, self.preview_parent) return menu
def _create_popup_menu(self, widget): menu = misc.wxGladePopupMenu("Application") i = misc.append_menu_item(menu, -1, _('Generate Code')) misc.bind_menu_item_after( widget, i, self.generate_code) # a property, but it can be called # paste if clipboard.check("menubar"): i = misc.append_menu_item(menu, -1, _('Paste MenuBar\tCtrl+V'), wx.ART_PASTE) misc.bind_menu_item_after(widget, i, clipboard.paste, self) elif clipboard.check("toolbar"): i = misc.append_menu_item(menu, -1, _('Paste ToolBar\tCtrl+V'), wx.ART_PASTE) misc.bind_menu_item_after(widget, i, clipboard.paste, self) else: i = misc.append_menu_item(menu, -1, _('Paste Toplevel Window\tCtrl+V'), wx.ART_PASTE) misc.bind_menu_item_after(widget, i, clipboard.paste, self) if not clipboard.check("window"): i.Enable(False) return menu
def popup_menu(self, event): if self.widget: if not self._rmenu: REMOVE_ID, HIDE_ID = [wx.NewId() for i in range(2)] self._rmenu = misc.wxGladePopupMenu(self.name) misc.append_item(self._rmenu, REMOVE_ID, _("Remove\tDel"), wx.ART_DELETE) misc.append_item(self._rmenu, HIDE_ID, _("Hide")) def bind(method): return lambda e: misc.wxCallAfter(method) wx.EVT_MENU(self.widget, REMOVE_ID, bind(self.remove)) wx.EVT_MENU(self.widget, HIDE_ID, bind(self.hide_widget)) # paste PASTE_ID = wx.NewId() misc.append_item(self._rmenu, PASTE_ID, _("Paste\tCtrl+V"), wx.ART_PASTE) wx.EVT_MENU(self.widget, PASTE_ID, bind(self.clipboard_paste)) PREVIEW_ID = wx.NewId() self._rmenu.AppendSeparator() misc.append_item(self._rmenu, PREVIEW_ID, _("Preview")) wx.EVT_MENU(self.widget, PREVIEW_ID, bind(self.preview_parent)) self.setup_preview_menu() self.widget.PopupMenu(self._rmenu, event.GetPosition())
def _create_popup_menu(self, widget): menu = misc.wxGladePopupMenu("Application") i = misc.append_menu_item(menu, -1, _('Generate Code')) misc.bind_menu_item_after( widget, i, self.generate_code) # a property, but it can be called return menu