18 from ..context
import IS_WINDOWS, IS_MAC
20 ID_CustomizeToolbar = wx.ID_HIGHEST + 1
26 self.
_mb_mb = wx.MenuBar()
39 for name
in [
'File',
'Edit',
'Tools',
'Help']:
49 index = [m.name
for m
in self.
_menus_menus].index(
'&Help')
51 index = len(self.
_menus_menus)
52 self.
_menus_menus.insert(index, menu)
53 self.
_mb_mb.Insert(index, menu.wx_menu, menu.name)
56 menu = self.
_find_menu_find_menu(action.menu_name)
59 menu.add_menu_item(action)
62 registered = self.
_name_builder_name_builder.get_registered_name(name)
65 for menu
in self.
_menus_menus:
66 if menu.name == registered:
83 if self.
wx_menuwx_menu == event.GetMenu()
and not self.
_open_open:
84 self.
_open_open =
True
85 for menu_item
in self.
_menu_items_menu_items.values():
86 menu_item.refresh_availability()
91 self.
_open_open =
False
92 for menu_item
in self.
_menu_items_menu_items.values():
93 menu_item.set_enabled()
98 self.
_menu_items_menu_items[menu_item.id] = menu_item
99 menu_item.register(action)
102 if action.is_separator():
111 pos = action.get_insertion_index(self.
wx_menuwx_menu)
112 menu_item.set_wx_menu_item(self.
wx_menuwx_menu.InsertSeparator(pos))
116 for menu_item
in self.
_menu_items_menu_items.values():
122 return menu_item.name == self.
_get_name_get_name(action, build_new=
False)
125 get_name = build_new
and self.
_name_builder_name_builder.get_name
or \
127 if not action.shortcut:
128 return get_name(action.name)
129 sht = action.get_shortcut()
131 return '%s (%s)' % (get_name(action.name), sht)
132 return '%s' % get_name(action.name)
135 name_with_accelerator = self.
_get_name_get_name(action, build_new=
True)
136 menu_item =
MenuItem(self.
_frame_frame, self, name_with_accelerator)
137 pos = action.get_insertion_index(self.
wx_menuwx_menu)
138 wx_menu_item = wx.MenuItem(self.
wx_menuwx_menu, menu_item.id, menu_item.name, action.doc)
140 wx_menu_item.SetBitmap(action.icon)
141 wx_menu_item = self.
wx_menuwx_menu.Insert(pos, wx_menu_item)
142 menu_item.set_wx_menu_item(wx_menu_item)
169 return self.
_names_names[name.replace(
'&',
'').upper()]
174 self.
_names_names[name.replace(
'&',
'').upper()] = name
177 index = name.find(
'&') + 1
183 name = name.replace(
'&',
'')
184 for pos, char
in enumerate(name):
186 return '%s&%s' % (name[:pos], name[pos:])
191 if char
not in self.
_accelerators_accelerators
and char !=
u' ':
211 action.register(self)
215 self.
_menu_menu.remove_menu_item(self.
idid)
233 _MenuItem.set_wx_menu_item(self, wx_menu_item)
244 class _RideSearchMenuItem():
251 self.
_handler_handler(*args, **kwargs)
264 action.register(self)
265 action.inform_changes_in_enabled_status(self)
269 self.
_toolbar_toolbar.remove_toolbar_button(self)
282 if action.has_shortcut()
and action.has_action():
283 delegator = self.
_actions_actions.setdefault(action.get_shortcut(),
286 delegator.add(action)
287 action.register(self)
291 key = action.get_shortcut()
292 if self.
_actions_actions[key].remove(action):
298 for delegator
in self.
_actions_actions.values():
300 flags, key_code = delegator.shortcut.parse()
303 accelerators.append(wx.AcceleratorEntry(flags, key_code,
305 self.
_frame_frame.SetAcceleratorTable(wx.AcceleratorTable(accelerators))
313 self.
idid = wx.NewIdRef()
317 self.
_actions_actions.append(action)
319 self.
_frame_frame.Bind(wx.EVT_MENU, self, id=self.
idid)
325 self.
_frame_frame.Unbind(wx.EVT_MENU, id=self.
idid)
330 for action
in self.
_actions_actions:
331 if action.is_active():
336 for action
in self.
_actions_actions:
338 if not (IS_WINDOWS
or IS_MAC):
def __init__(self, frame, shortcut=None)
def __call__(self, event)
def remove(self, action)
Removes action and returns True if delegator is empty.
def __init__(self, frame)
def _update_accelerator_table(self)
def unregister(self, action)
def register(self, action)
def _use_given_accelerator(self, name)
def _register(self, name)
def _accelerator_is_free(self, char)
def _generate_accelerator(self, name)
def get_registered_name(self, name)