def _build_menu_bar(self):
self.menuBar = wx.MenuBar()
# File menu
file_menu = wx.Menu()
wx.App.SetMacExitMenuItemId(wx.ID_EXIT)
exit_item = file_menu.Append(wx.ID_EXIT, "E&xit\tCtrl-Q", "Exit NodeMCU PyFlasher")
exit_item.SetBitmap(images.Exit.GetBitmap())
self.Bind(wx.EVT_MENU, self._on_exit_app, exit_item)
self.menuBar.Append(file_menu, "&File")
# Help menu
help_menu = wx.Menu()
help_item = help_menu.Append(wx.ID_ABOUT, '&About NodeMCU PyFlasher', 'About')
self.Bind(wx.EVT_MENU, self._on_help_about, help_item)
self.menuBar.Append(help_menu, '&Help')
self.SetMenuBar(self.menuBar)
python类EVT_MENU的实例源码
import_OpenGL_cube_and_cone.py 文件源码
项目:Python-GUI-Programming-Cookbook-Second-Edition
作者: PacktPublishing
项目源码
文件源码
阅读 18
收藏 0
点赞 0
评论 0
def OnInit(self):
frame = wx.Frame(None, -1, "RunDemo: ", pos=(0,0),
style=wx.DEFAULT_FRAME_STYLE, name="run a sample")
menuBar = wx.MenuBar()
menu = wx.Menu()
item = menu.Append(wx.ID_EXIT, "E&xit", "Exit demo")
self.Bind(wx.EVT_MENU, self.OnExitApp, item)
menuBar.Append(menu, "&File")
frame.SetMenuBar(menuBar)
frame.Show(True)
frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
win = runTest(frame)
# set the frame to a good size for showing the two buttons
frame.SetSize((200,400))
win.SetFocus()
self.window = win
frect = frame.GetRect()
self.SetTopWindow(frame)
self.frame = frame
return True
def createMenus(self):
# Creating the menubar.
menuBar = wx.MenuBar()
# Setting up the menu.
filemenu = wx.Menu()
filemenu.Append(ID_MENU_FILE_READ, "Read"," Read last numbers dialed SIM.")
filemenu.AppendSeparator()
filemenu.Append(ID_MENU_FILE_EXPORT, "Export..."," Export your LND to file")
filemenu.Append(ID_MENU_FILE_IMPORT, "Import..."," Import your LND from file")
filemenu.AppendSeparator()
filemenu.Append(ID_MENU_FILE_EXIT, "Close"," Close the lnd")
# Adding the "filemenu" to the MenuBar
menuBar.Append(filemenu,"&File")
# Adding the MenuBar to the Frame content.
self.SetMenuBar(menuBar)
#Add the menu handlers
wx.EVT_MENU(self, ID_MENU_FILE_READ, self.read)
wx.EVT_MENU(self, ID_MENU_FILE_EXPORT, self.doExport)
wx.EVT_MENU(self, ID_MENU_FILE_IMPORT, self.doImport)
wx.EVT_MENU(self, ID_MENU_FILE_EXIT, self.closeWindow)
def createMenus(self):
# Creating the menubar.
menuBar = wx.MenuBar()
# Setting up the menu.
filemenu = wx.Menu()
filemenu.Append(ID_MENU_FILE_READ, "Read"," Read your phonebook contacts from your SIM.")
filemenu.AppendSeparator()
filemenu.Append(ID_MENU_FILE_EXPORT, "Export..."," Export your phone contacts to file")
filemenu.Append(ID_MENU_FILE_IMPORT, "Import..."," Import your phone contacts from file")
filemenu.AppendSeparator()
filemenu.Append(ID_MENU_FILE_EXIT, "Close"," Close the phonebook")
# Adding the "filemenu" to the MenuBar
menuBar.Append(filemenu,"&File")
# Adding the MenuBar to the Frame content.
self.SetMenuBar(menuBar)
#Add the menu handlers
wx.EVT_MENU(self, ID_MENU_FILE_READ, self.read)
wx.EVT_MENU(self, ID_MENU_FILE_EXPORT, self.doExport)
wx.EVT_MENU(self, ID_MENU_FILE_IMPORT, self.doImport)
wx.EVT_MENU(self, ID_MENU_FILE_EXIT, self.closeWindow)
def _build_menu(self):
"""Build the application menu."""
menubar = wx.MenuBar()
file_menu = wx.Menu()
help_menu = wx.Menu()
self.Bind(wx.EVT_MENU, self._directory_chooser, file_menu.Append(wx.ID_OPEN, 'Open directory...'))
self.Bind(wx.EVT_MENU, self._open_settings, file_menu.Append(wx.ID_PROPERTIES, 'Settings...'))
file_menu.AppendSeparator()
self.Bind(wx.EVT_MENU, lambda evt: self.Close(), file_menu.Append(wx.ID_EXIT))
self.Bind(wx.EVT_MENU, self._open_about, help_menu.Append(wx.ID_ABOUT))
self.Bind(wx.EVT_MENU, lambda evt: wx.LaunchDefaultBrowser("http://irida-miseq-uploader.readthedocs.io/en/latest/"), help_menu.Append(wx.ID_HELP))
menubar.Append(file_menu, '&File')
menubar.Append(help_menu, '&Help')
self.SetMenuBar(menubar)
def init_settings_popup_menu(self):
menu = wx.Menu()
menu.Append(wx.NewId(), 'Show in GUI:').Enable(False)
wx_id = wx.NewId()
self.settings_menu_sky_item = menu.AppendCheckItem(wx_id, ' Sky')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_sky_item)
self.settings_menu_sky_item.Check(True)
wx_id = wx.NewId()
self.settings_menu_flat_item = menu.AppendCheckItem(wx_id, ' Flat')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_flat_item)
self.settings_menu_flat_item.Check(True)
wx_id = wx.NewId()
self.settings_menu_autoload_item = menu.AppendCheckItem(wx_id, ' Auto-load')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_autoload_item)
self.settings_menu_autoload_item.Check(True)
wx_id = wx.NewId()
self.settings_menu_activemq_item = menu.AppendCheckItem(wx_id, ' ActiveMQ')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_activemq_item)
self.settings_menu_activemq_item.Check(True)
self.settings_popup_menu = menu
def init_cmap_popup_menu(self):
cmap_button_bitmap_height = 10
cmap_button_bitmap_width = 200
cmap_menu_bitmap_height = 20
cmap_menu_bitmap_width = 200
self.cmap_button_bitmaps = {}
self.cmap_menu_bitmaps = {}
for cmap in self.ztv_frame.available_cmaps:
temp = cm.ScalarMappable(cmap=cmap)
rgba = temp.to_rgba(np.outer(np.ones(cmap_button_bitmap_height, dtype=np.uint8),
np.arange(cmap_button_bitmap_width, dtype=np.uint8)))
self.cmap_button_bitmaps[cmap] = wx.BitmapFromBufferRGBA(cmap_button_bitmap_width, cmap_button_bitmap_height,
np.uint8(np.round(rgba*255)))
rgba = temp.to_rgba(np.outer(np.ones(cmap_menu_bitmap_height, dtype=np.uint8),
np.arange(cmap_menu_bitmap_width, dtype=np.uint8)))
self.cmap_menu_bitmaps[cmap] = wx.BitmapFromBufferRGBA(cmap_menu_bitmap_width, cmap_menu_bitmap_height,
np.uint8(np.round(rgba*255)))
menu = wx.Menu()
for cmap in self.ztv_frame.available_cmaps:
menu_item = menu.AppendCheckItem(self.cmap_to_eventID[cmap], cmap)
wx.EVT_MENU(menu, self.cmap_to_eventID[cmap], self.on_change_cmap_event)
if hasattr(menu_item, 'SetBitmap'):
menu_item.SetBitmap(self.cmap_menu_bitmaps[cmap])
self.cmap_popup_menu = menu
def init_settings_popup_menu(self):
menu = wx.Menu()
menu.Append(wx.NewId(), 'Show in GUI:').Enable(False)
wx_id = wx.NewId()
self.settings_menu_sky_item = menu.AppendCheckItem(wx_id, ' Sky')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_sky_item)
self.settings_menu_sky_item.Check(True)
wx_id = wx.NewId()
self.settings_menu_flat_item = menu.AppendCheckItem(wx_id, ' Flat')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_flat_item)
self.settings_menu_flat_item.Check(True)
wx_id = wx.NewId()
self.settings_menu_autoload_item = menu.AppendCheckItem(wx_id, ' Auto-load')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_autoload_item)
self.settings_menu_autoload_item.Check(True)
wx_id = wx.NewId()
self.settings_menu_activemq_item = menu.AppendCheckItem(wx_id, ' ActiveMQ')
wx.EVT_MENU(menu, wx_id, self.on_settings_menu_activemq_item)
self.settings_menu_activemq_item.Check(True)
self.settings_popup_menu = menu
def init_cmap_popup_menu(self):
cmap_button_bitmap_height = 10
cmap_button_bitmap_width = 200
cmap_menu_bitmap_height = 20
cmap_menu_bitmap_width = 200
self.cmap_button_bitmaps = {}
self.cmap_menu_bitmaps = {}
for cmap in self.ztv_frame.available_cmaps:
temp = cm.ScalarMappable(cmap=cmap)
rgba = temp.to_rgba(np.outer(np.ones(cmap_button_bitmap_height, dtype=np.uint8),
np.arange(cmap_button_bitmap_width, dtype=np.uint8)))
self.cmap_button_bitmaps[cmap] = wx.BitmapFromBufferRGBA(cmap_button_bitmap_width, cmap_button_bitmap_height,
np.uint8(np.round(rgba*255)))
rgba = temp.to_rgba(np.outer(np.ones(cmap_menu_bitmap_height, dtype=np.uint8),
np.arange(cmap_menu_bitmap_width, dtype=np.uint8)))
self.cmap_menu_bitmaps[cmap] = wx.BitmapFromBufferRGBA(cmap_menu_bitmap_width, cmap_menu_bitmap_height,
np.uint8(np.round(rgba*255)))
menu = wx.Menu()
for cmap in self.ztv_frame.available_cmaps:
menu_item = menu.AppendCheckItem(self.cmap_to_eventID[cmap], cmap)
wx.EVT_MENU(menu, self.cmap_to_eventID[cmap], self.on_change_cmap_event)
if hasattr(menu_item, 'SetBitmap'):
menu_item.SetBitmap(self.cmap_menu_bitmaps[cmap])
self.cmap_popup_menu = menu
def _init_coll_HelpMenu_Items(self, parent):
AppendMenu(parent, help='', id=wx.ID_HELP,
kind=wx.ITEM_NORMAL, text=_(u'PLCOpenEditor') + '\tF1')
# AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS,
# kind=wx.ITEM_NORMAL, text=u'PLCOpen\tF2')
# AppendMenu(parent, help='', id=wx.ID_HELP_CONTEXT,
# kind=wx.ITEM_NORMAL, text=u'IEC 61131-3\tF3')
def handler(event):
return wx.MessageBox(
version.GetCommunityHelpMsg(),
_(u'Community support'),
wx.OK | wx.ICON_INFORMATION)
id = wx.NewId()
parent.Append(help='', id=id, kind=wx.ITEM_NORMAL, text=_(u'Community support'))
self.Bind(wx.EVT_MENU, handler, id=id)
AppendMenu(parent, help='', id=wx.ID_ABOUT,
kind=wx.ITEM_NORMAL, text=_(u'About'))
self.Bind(wx.EVT_MENU, self.OnPLCOpenEditorMenu, id=wx.ID_HELP)
# self.Bind(wx.EVT_MENU, self.OnPLCOpenMenu, id=wx.ID_HELP_CONTENTS)
self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT)
def ResetEditorToolBar(self):
EditorToolBar = self.Panes["EditorToolBar"]
for item in self.CurrentEditorToolBar:
if wx.VERSION >= (2, 6, 0):
self.Unbind(wx.EVT_MENU, id=item)
else:
self.Disconnect(id=item, eventType=wx.wxEVT_COMMAND_MENU_SELECTED)
if EditorToolBar:
EditorToolBar.DeleteTool(item)
if EditorToolBar:
EditorToolBar.Realize()
self.AUIManager.GetPane("EditorToolBar").BestSize(EditorToolBar.GetBestSize())
self.AUIManager.GetPane("EditorToolBar").Hide()
self.AUIManager.Update()
def GenerateTreeMenu(self, x, y, scaling, menu, base_path, var_class, tree):
for child_name, child_type, (child_tree, child_dimensions) in tree:
if base_path:
child_path = "%s.%s" % (base_path, child_name)
else:
child_path = child_name
if len(child_dimensions) > 0:
child_path += "[%s]" % ",".join([str(dimension[0]) for dimension in child_dimensions])
child_name += "[]"
new_id = wx.NewId()
AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=child_name)
self.ParentWindow.Bind(wx.EVT_MENU, self.GetAddVariableBlockFunction(x, y, scaling, var_class, child_path, child_type), id=new_id)
if len(child_tree) > 0:
new_id = wx.NewId()
child_menu = wx.Menu(title='')
self.GenerateTreeMenu(x, y, scaling, child_menu, child_path, var_class, child_tree)
menu.AppendMenu(new_id, "%s." % child_name, child_menu)
def PopupForceMenu(self):
iec_path = self.GetElementIECPath(self.SelectedElement)
if iec_path is not None:
menu = wx.Menu(title='')
new_id = wx.NewId()
AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Force value"))
self.Bind(wx.EVT_MENU, self.GetForceVariableMenuFunction(iec_path.upper(), self.SelectedElement), id=new_id)
new_id = wx.NewId()
AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Release value"))
self.Bind(wx.EVT_MENU, self.GetReleaseVariableMenuFunction(iec_path.upper()), id=new_id)
if self.SelectedElement.IsForced():
menu.Enable(new_id, True)
else:
menu.Enable(new_id, False)
if self.Editor.HasCapture():
self.Editor.ReleaseMouse()
self.Editor.PopupMenu(menu)
menu.Destroy()
def __init__(self, pyroserver, level):
wx.TaskBarIcon.__init__(self)
self.pyroserver = pyroserver
# Set the image
self.UpdateIcon(None)
self.level = level
# bind some events
self.Bind(wx.EVT_MENU, self.OnTaskBarStartPLC, id=self.TBMENU_START)
self.Bind(wx.EVT_MENU, self.OnTaskBarStopPLC, id=self.TBMENU_STOP)
self.Bind(wx.EVT_MENU, self.OnTaskBarChangeName, id=self.TBMENU_CHANGE_NAME)
self.Bind(wx.EVT_MENU, self.OnTaskBarChangeInterface, id=self.TBMENU_CHANGE_INTERFACE)
self.Bind(wx.EVT_MENU, self.OnTaskBarLiveShell, id=self.TBMENU_LIVE_SHELL)
self.Bind(wx.EVT_MENU, self.OnTaskBarWXInspector, id=self.TBMENU_WXINSPECTOR)
self.Bind(wx.EVT_MENU, self.OnTaskBarChangePort, id=self.TBMENU_CHANGE_PORT)
self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD)
self.Bind(wx.EVT_MENU, self.OnTaskBarQuit, id=self.TBMENU_QUIT)
def __init__(self, app):
self.model = Model()
self.model.attach(self)
self.frame = MainFrame()
self.sizer = wx.BoxSizer(wx.HORIZONTAL)
self.central_panel = None
self.frame.SetSizer(self.sizer)
self.frame.Layout()
self.config_check = -1
self.frame.Bind(wx.EVT_MENU, lambda event: self.create_central_panel(event, False), self.frame.training_rec_menu_item)
self.frame.Bind(wx.EVT_MENU, lambda event: self.create_central_panel(event, True), self.frame.start_rec_menu_item)
self.frame.Bind(wx.EVT_MENU, self.create_dialog_max_time, self.frame.max_time_menu_item)
self.frame.Bind(wx.EVT_MENU, self.create_dialog_partial_time, self.frame.partial_time_menu_item)
self.frame.Bind(wx.EVT_MENU, self.create_dialog_partial_time, self.frame.sett3)
Publisher().subscribe(self.update_status, "update_status")
Publisher().subscribe(self.create_dialog_speaker_name, "crea_dialog")
Publisher().subscribe(self.update_speakers_list, "update_speakers_list")
Publisher().subscribe(self.clear_speakers_list, "clear_speakers_list")
Publisher().subscribe(self.toogle_stop_button, "toogle_button")
def on_field_view_ready(self, dispatcher, view):
assert view is not None
view.Bind(EVT_MENU, self.imp.on_addr_rel,
id=XRCID('field_menu_address_relative'))
view.Bind(EVT_MENU, self.imp.on_addr_abs,
id=XRCID('field_menu_address_absolute'))
view.Bind(EVT_MENU, self.imp.on_addr_hex,
id=XRCID('field_menu_address_base_hex'))
view.Bind(EVT_MENU, self.imp.on_addr_dec,
id=XRCID('field_menu_address_base_dec'))
view.Bind(EVT_MENU, self.imp.on_dump_to_disk,
id=XRCID('field_menu_dump_to_disk'))
view.Bind(EVT_MENU, self.imp.on_parse_substream,
id=XRCID('field_menu_parse_substream'))
view.Bind(EVT_MENU, self.imp.on_open_window_here,
id=XRCID('field_menu_open_window_here'))
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"Panel Switcher Tutorial")
self.panel_one = PanelOne(self)
self.panel_two = PanelTwo(self)
self.panel_two.Hide()
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.panel_one, 1, wx.EXPAND)
self.sizer.Add(self.panel_two, 1, wx.EXPAND)
self.SetSizer(self.sizer)
menubar = wx.MenuBar()
fileMenu = wx.Menu()
switch_panels_menu_item = fileMenu.Append(
wx.ID_ANY,
"Switch Panels",
"Some text")
self.Bind(wx.EVT_MENU, self.onSwitchPanels,
switch_panels_menu_item)
menubar.Append(fileMenu, '&File')
self.SetMenuBar(menubar)
def __init__(self):
wx.TaskBarIcon.__init__(self)
self.SetIcon(AppResource.TaskIcon.getIcon(), C_APP_NAME)
self.ID_NAME = wx.NewId()
self.ID_EXIT = wx.NewId()
self.ID_AUTHOR = wx.NewId()
self.Bind(wx.EVT_MENU, self.OnExitEvent, id=self.ID_EXIT)
self.Bind(wx.EVT_MENU, self.OnHelpEvent, id=self.ID_AUTHOR)
GUI_wxPython.py 文件源码
项目:Python-GUI-Programming-Cookbook-Second-Edition
作者: PacktPublishing
项目源码
文件源码
阅读 18
收藏 0
点赞 0
评论 0
def createMenu(self):
menu= wx.Menu()
menu.Append(wx.ID_NEW, "New", "Create something new")
menu.AppendSeparator()
_exit = menu.Append(wx.ID_EXIT, "Exit", "Exit the GUI")
self.Bind(wx.EVT_MENU, self.exitGUI, _exit)
menuBar = wx.MenuBar()
menuBar.Append(menu, "File")
menu1= wx.Menu()
menu1.Append(wx.ID_ABOUT, "About", "wxPython GUI")
menuBar.Append(menu1, "Help")
self.SetMenuBar(menuBar)
#----------------------------------------------------------
def createMenu(self, menuData):
menu = wx.Menu()
for eachLabel, eachStatus, eachHandler in menuData:
if not eachLabel:
menu.AppendSeparator()
continue
menuItem = menu.Append(-1, eachLabel, eachStatus)
self.Bind(wx.EVT_MENU, eachHandler, menuItem)
return menu
############################################################################
#
# Handling methods, rather self explaining
#
def CreateMenuBar(self):
menubar = wx.MenuBar()
fileMenu = wx.Menu()
nitem = fileMenu.Append(wx.ID_NEW, '&New', 'New project' )
oitem = fileMenu.Append(wx.ID_OPEN, '&Open', 'Open project')
self.ritem = fileMenu.Append(wx.ID_SAVEAS, '&Render\tCtrl-r', 'Render')
self.iitem = fileMenu.Append(wx.ID_ANY, '&Import\tCtrl-i', 'Import image directory')
self.qitem = fileMenu.Append(wx.ID_EXIT, '&Quit', 'Quit application')
editMenu = wx.Menu()
self.zitem = editMenu.Append(wx.ID_UNDO, '&Undo\tCtrl-z', 'Undo Delete')
#yitem = editMenu.Append(wx.ID_REDO, '&Redo', 'Redo')
self.ditem = editMenu.Append(wx.ID_DELETE, '&Delete\tDelete', 'Delete')
pitem = editMenu.Append(wx.ID_PREFERENCES, '&Preferences\tCtrl-,', 'Preferences')
helpMenu = wx.Menu()
aitem = helpMenu.Append(wx.ID_ABOUT, '&About\tCtrl-?', 'About Stopgo')
menubar.Append(fileMenu, '&File')
menubar.Append(editMenu, '&Edit')
menubar.Append(helpMenu, '&Help')
self.Bind(wx.EVT_MENU, lambda event, args=(False): self.OpenFile(event,args), oitem)
self.Bind(wx.EVT_MENU, self.NewFile, nitem)
self.Bind(wx.EVT_MENU, self.Pref, pitem)
self.Bind(wx.EVT_MENU, lambda event,args=(False): ingest.Ingest(self),self.iitem)
self.Bind(wx.EVT_MENU, self.SimpleQuit, self.qitem)
self.Bind(wx.EVT_CLOSE, self.SimpleQuit, self.qitem)
self.Bind(wx.EVT_MENU, self.About, aitem)
self.SetMenuBar(menubar)
def BindKeys(self,dbfile):
'''
Bind keyboard shortcuts for application.
'''
self.Bind(wx.EVT_MENU, lambda event, args=('MENU_DEL',dbfile): self.OnKeyDown(event,args), self.ditem)
self.Bind(wx.EVT_MENU, lambda event, args=dbfile: self.Undo(event,args), self.zitem)
self.Bind(wx.EVT_BUTTON, lambda event, args=('wx.WXK_SPACE',dbfile): self.OnKeyDown(event,args), self.bplay)
self.Bind(wx.EVT_BUTTON, lambda event, args=(dbfile): self.CaptureCanvas(event,args), self.brec)
self.panel3.Bind(wx.EVT_KEY_DOWN, lambda event, args=(dbfile): self.OnKeyDown(event, args))
self.panel3.Bind(wx.EVT_LEFT_DOWN, self.OnMouseClick)
self.Bind(wx.EVT_MENU, lambda event, args=(dbfile):self.OnQuit(event,args), self.qitem)
self.Bind(wx.EVT_CLOSE, lambda event, args=(dbfile):self.OnQuit(event,args), self.qitem)
self.Bind(wx.EVT_MENU, lambda event, args=(dbfile):self.OnRender(event,args), self.ritem)
def OnRightClick(self, event):
menu = wx.Menu()
tPopupID0 = wx.NewId()
tPopupID1 = wx.NewId()
tPopupID2 = wx.NewId()
tPopupID3 = wx.NewId()
tPopupID4 = wx.NewId()
tPopupID5 = wx.NewId()
menu.Append(tPopupID2, "Edit")
menu.Append(tPopupID0, "New")
menu.Append(tPopupID1, "Copy")
menu.AppendSeparator()
menu.Append(tPopupID3, "Delete")
menu.Append(tPopupID4, "Delete All")
wx.EVT_MENU(self, tPopupID2, self.OnPopupEdit)
wx.EVT_MENU(self, tPopupID0, self.OnPopupNew)
wx.EVT_MENU(self, tPopupID1, self.OnPopupCopy)
wx.EVT_MENU(self, tPopupID3, self.OnPopupDelete)
wx.EVT_MENU(self, tPopupID4, self.OnPopupDeleteAll)
if len(self.itemDataMap) == 0:
for m in menu.GetMenuItems():
m.Enable(False)
m = menu.FindItemById(tPopupID0)
m.Enable(True)
self.PopupMenu(menu, wx.Point(self.x, self.y))
menu.Destroy()
event.Skip()
def OnRightClick(self, event):
menu = wx.Menu()
tPopupID0 = wx.NewId()
tPopupID1 = wx.NewId()
tPopupID2 = wx.NewId()
tPopupID3 = wx.NewId()
tPopupID4 = wx.NewId()
tPopupID5 = wx.NewId()
menu.Append(tPopupID2, "Edit")
menu.Append(tPopupID0, "New")
menu.Append(tPopupID1, "Copy")
menu.AppendSeparator()
menu.Append(tPopupID3, "Delete")
menu.Append(tPopupID4, "Delete All")
wx.EVT_MENU(self, tPopupID2, self.OnPopupEdit)
wx.EVT_MENU(self, tPopupID0, self.OnPopupNew)
wx.EVT_MENU(self, tPopupID1, self.OnPopupCopy)
wx.EVT_MENU(self, tPopupID3, self.OnPopupDelete)
wx.EVT_MENU(self, tPopupID4, self.OnPopupDeleteAll)
if len(self.itemDataMap) == 0:
for m in menu.GetMenuItems():
m.Enable(False)
m = menu.FindItemById(tPopupID0)
m.Enable(True)
self.PopupMenu(menu, wx.Point(self.x, self.y))
menu.Destroy()
event.Skip()
def OnRightClick(self, event):
tsubPopupID1 = 10
tsubPopupID2 = 11
tsubPopupID3 = 12
submenu = wx.Menu()
submenu.Append(tsubPopupID1, "Read")
submenu.Append(tsubPopupID2, "Unread")
submenu.Append(tsubPopupID3, "Deleted")
wx.EVT_MENU(self, tsubPopupID1, self.OnPopupMarkRead)
wx.EVT_MENU(self, tsubPopupID2, self.OnPopupMarkUnread)
wx.EVT_MENU(self, tsubPopupID3, self.OnPopupMarkDeleted)
menu = wx.Menu()
tPopupID0 = wx.NewId()
tPopupID1 = wx.NewId()
tPopupID2 = wx.NewId()
tPopupID3 = wx.NewId()
tPopupID4 = wx.NewId()
tPopupID5 = wx.NewId()
menu.AppendMenu(tPopupID1, "Mark as", submenu)
menu.AppendSeparator()
menu.Append(tPopupID2, "Edit")
menu.Append(tPopupID0, "New")
menu.Append(tPopupID1, "Copy")
menu.AppendSeparator()
menu.Append(tPopupID3, "Delete")
menu.Append(tPopupID4, "Delete All")
wx.EVT_MENU(self, tPopupID2, self.OnPopupEdit)
wx.EVT_MENU(self, tPopupID0, self.OnPopupNew)
wx.EVT_MENU(self, tPopupID1, self.OnPopupCopy)
wx.EVT_MENU(self, tPopupID3, self.OnPopupDelete)
wx.EVT_MENU(self, tPopupID4, self.OnPopupDeleteAll)
self.PopupMenu(menu, wx.Point(self.x, self.y))
menu.Destroy()
event.Skip()
def _unbindfuncs(self):
# I would need a list of the functions that been bound to unbind them
while True:
try:
widget, event, dynboundmethod = self._dynbindings.pop()
except IndexError:
break # no more items in the list
else:
if event in [wx.EVT_MENU, wx.EVT_TOOL]:
self.Unbind(event, handler=dynboundmethod, id=widget.GetId())
elif event in [wx.EVT_SIZE]:
self.Unbind(event, handler=dynboundmethod)
else:
widget.Unbind(event, handler=dynboundmethod)
def _bindfuncs(self):
# wx classes throw exception if getmember is applied to the instance (self)
methods = inspect.getmembers(self.__class__, inspect.ismethod)
for mname, method in methods:
dynbindings = getattr(method, '_dynbinding', None)
if dynbindings is None:
continue
for dynbinding in dynbindings:
if dynbinding:
eventname, widgetprefix, widgetname = dynbinding
event = getattr(wx, eventname, None)
if event is None:
print 'Method', mname
print 'Failed to find eventname', eventname
continue
name = 'm_' + widgetprefix.lower() + widgetname.lower()
widget = None
for attrname in dir(self):
if attrname.lower() == name:
widget = getattr(self, attrname)
break
if not widget:
print 'Method', mname
print 'Failed to find widget', name
continue
boundmethod = method.__get__(self, self.__class__)
self._dynbindings.append((widget, event, boundmethod))
if event in [wx.EVT_MENU, wx.EVT_TOOL]:
self.Bind(event, boundmethod, id=widget.GetId())
elif event in [wx.EVT_SIZE]:
self.Bind(event, boundmethod)
else:
widget.Bind(event, boundmethod)
def _append_menu_item(self, menu, wx_id, title, fxn):
if wx_id is None:
wx_id = wx.NewId()
menu.Append(wx_id, title)
wx.EVT_MENU(menu, wx_id, fxn)
return wx_id
def init_popup_menu(self):
self.popup_menu_needs_rebuild = False
if self.popup_menu is not None:
self.popup_menu.Destroy()
menu = wx.Menu()
menu.Append(wx.NewId(), 'Cursor mode:').Enable(False)
self.cursor_mode_to_eventID = {}
cmd_num = 1
for cursor_mode in self.popup_menu_cursor_modes:
fxn = self.available_cursor_modes[cursor_mode]['set-to-mode']
wx_id = wx.NewId()
menu.AppendCheckItem(wx_id, ' ' + cursor_mode + '\tCtrl+' + str(cmd_num))
wx.EVT_MENU(menu, wx_id, fxn)
self.cursor_mode_to_eventID[cursor_mode] = wx_id
self.Bind(wx.EVT_MENU, fxn, id=wx_id)
self.accelerator_table.append((wx.ACCEL_CMD, ord(str(cmd_num)), wx_id))
cmd_num += 1
menu.AppendSeparator()
image_cmap_submenu = wx.Menu()
for cmap in self.ztv_frame.available_cmaps:
menu_item = image_cmap_submenu.AppendCheckItem(self.cmap_to_eventID[cmap], cmap)
wx.EVT_MENU(image_cmap_submenu, self.cmap_to_eventID[cmap], self.on_change_cmap_event)
menu_item.SetBitmap(self.cmap_bitmaps[cmap])
menu.AppendMenu(-1, 'Color Maps', image_cmap_submenu)
wx_id = wx.NewId()
self.menu_item_invert_map = menu.AppendCheckItem(wx_id, 'Invert Color Map')
wx.EVT_MENU(menu, wx_id, self.ztv_frame.invert_cmap)
self.menu_item_invert_map.Check(self.ztv_frame.is_cmap_inverted)
image_scaling_submenu = wx.Menu()
for scaling in self.ztv_frame.available_scalings:
menu_item = image_scaling_submenu.AppendCheckItem(self.scaling_to_eventID[scaling], scaling)
wx.EVT_MENU(image_scaling_submenu, self.scaling_to_eventID[scaling], self.on_change_scaling_event)
menu.AppendMenu(-1, 'Scaling', image_scaling_submenu)
menu.AppendSeparator()
self.popup_menu_cur_fits_header_eventID = wx.NewId()
self._append_menu_item(menu, self.popup_menu_cur_fits_header_eventID, 'FITS Header',
self.on_display_cur_fits_header)
self.popup_menu = menu
self.SetAcceleratorTable(wx.AcceleratorTable(self.accelerator_table))
def _append_menu_item(self, menu, wx_id, title, fxn):
if wx_id is None:
wx_id = wx.NewId()
menu.Append(wx_id, title)
wx.EVT_MENU(menu, wx_id, fxn)
return wx_id