Mercurial > libervia-backend
comparison frontends/src/primitivus/primitivus @ 755:e3ad48a2aab2
core, frontends: callMenu is now async and don't use callback_id anymore
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 24 Dec 2013 15:18:31 +0100 |
parents | f49945d728de |
children | 93bd868b8fb6 |
comparison
equal
deleted
inserted
replaced
754:f021bf27a557 | 755:e3ad48a2aab2 |
---|---|
279 try: | 279 try: |
280 return self.menu_roller.checkShortcuts(input) | 280 return self.menu_roller.checkShortcuts(input) |
281 except AttributeError: | 281 except AttributeError: |
282 return input | 282 return input |
283 | 283 |
284 | 284 def _dynamicMenuCb(self, xmlui): |
285 def __buildMenuRoller(self): | 285 misc = {} |
286 ui = XMLUI(self, xml_data = xmlui) | |
287 ui.show('popup') | |
288 | |
289 def _dynamicMenuEb(self, failure): | |
290 self.showDialog(_(u"Error while calling menu"), type="error") | |
291 | |
292 def _buildMenuRoller(self): | |
286 menu = sat_widgets.Menu(self.loop) | 293 menu = sat_widgets.Menu(self.loop) |
287 general = _("General") | 294 general = _("General") |
288 menu.addMenu(general, _("Connect"), self.onConnectRequest) | 295 menu.addMenu(general, _("Connect"), self.onConnectRequest) |
289 menu.addMenu(general, _("Disconnect"), self.onDisconnectRequest) | 296 menu.addMenu(general, _("Disconnect"), self.onDisconnectRequest) |
290 menu.addMenu(general, _("Parameters"), self.onParam) | 297 menu.addMenu(general, _("Parameters"), self.onParam) |
299 menu.addMenu(communication, _("Search directory"), self.onSearchDirectory) | 306 menu.addMenu(communication, _("Search directory"), self.onSearchDirectory) |
300 #additionals menus | 307 #additionals menus |
301 #FIXME: do this in a more generic way (in quickapp) | 308 #FIXME: do this in a more generic way (in quickapp) |
302 add_menus = self.bridge.getMenus() | 309 add_menus = self.bridge.getMenus() |
303 def add_menu_cb(menu): | 310 def add_menu_cb(menu): |
304 category, item = menu | 311 category, name = menu |
305 id = self.bridge.callMenu(category, item, "NORMAL", self.profile) | 312 self.bridge.asyncCallMenu(category, name, Const.MENU_NORMAL, self.profile, callback=self._dynamicMenuCb, errback=self._dynamicMenuEb) |
306 self.current_action_ids.add(id) | |
307 for new_menu in add_menus: | 313 for new_menu in add_menus: |
308 category,item,type = new_menu | 314 type_, category, name = new_menu |
309 assert(type=="NORMAL") #TODO: manage other types | 315 assert(type_=="NORMAL") #TODO: manage other types |
310 menu.addMenu(unicode(category), unicode(item), add_menu_cb) | 316 menu.addMenu(unicode(category), unicode(name), add_menu_cb) |
311 | 317 |
312 menu_roller = sat_widgets.MenuRoller([(_('Main menu'),menu)]) | 318 menu_roller = sat_widgets.MenuRoller([(_('Main menu'),menu)]) |
313 return menu_roller | 319 return menu_roller |
314 | 320 |
315 def __buildMainWidget(self): | 321 def _buildMainWidget(self): |
316 self.contact_list = ContactList(self, on_click=self.contactSelected, on_change=lambda w: self.redraw()) | 322 self.contact_list = ContactList(self, on_click=self.contactSelected, on_change=lambda w: self.redraw()) |
317 #self.center_part = urwid.Columns([('weight',2,self.contact_list),('weight',8,Chat('',self))]) | 323 #self.center_part = urwid.Columns([('weight',2,self.contact_list),('weight',8,Chat('',self))]) |
318 self.center_part = urwid.Columns([('weight', 2, self.contact_list), ('weight', 8, urwid.Filler(urwid.Text('')))]) | 324 self.center_part = urwid.Columns([('weight', 2, self.contact_list), ('weight', 8, urwid.Filler(urwid.Text('')))]) |
319 | 325 |
320 self.editBar = EditBar(self) | 326 self.editBar = EditBar(self) |
321 self.menu_roller = self.__buildMenuRoller() | 327 self.menu_roller = self._buildMenuRoller() |
322 self.main_widget = sat_widgets.FocusFrame(self.center_part, header=self.menu_roller, footer=self.editBar, focus_part='footer') | 328 self.main_widget = sat_widgets.FocusFrame(self.center_part, header=self.menu_roller, footer=self.editBar, focus_part='footer') |
323 return self.main_widget | 329 return self.main_widget |
324 | 330 |
325 def plug_profile(self, profile_key='@DEFAULT@'): | 331 def plug_profile(self, profile_key='@DEFAULT@'): |
326 self.loop.widget = self.__buildMainWidget() | 332 self.loop.widget = self._buildMainWidget() |
327 self.redraw() | 333 self.redraw() |
328 QuickApp.plug_profile(self, profile_key) | 334 QuickApp.plug_profile(self, profile_key) |
329 | 335 |
330 def removePopUp(self, widget=None): | 336 def removePopUp(self, widget=None): |
331 "Remove current pop-up, and if there is other in queue, show it" | 337 "Remove current pop-up, and if there is other in queue, show it" |