Mercurial > libervia-backend
diff 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 |
line wrap: on
line diff
--- a/frontends/src/primitivus/primitivus Tue Dec 24 01:31:18 2013 +0100 +++ b/frontends/src/primitivus/primitivus Tue Dec 24 15:18:31 2013 +0100 @@ -281,8 +281,15 @@ except AttributeError: return input + def _dynamicMenuCb(self, xmlui): + misc = {} + ui = XMLUI(self, xml_data = xmlui) + ui.show('popup') - def __buildMenuRoller(self): + def _dynamicMenuEb(self, failure): + self.showDialog(_(u"Error while calling menu"), type="error") + + def _buildMenuRoller(self): menu = sat_widgets.Menu(self.loop) general = _("General") menu.addMenu(general, _("Connect"), self.onConnectRequest) @@ -301,29 +308,28 @@ #FIXME: do this in a more generic way (in quickapp) add_menus = self.bridge.getMenus() def add_menu_cb(menu): - category, item = menu - id = self.bridge.callMenu(category, item, "NORMAL", self.profile) - self.current_action_ids.add(id) + category, name = menu + self.bridge.asyncCallMenu(category, name, Const.MENU_NORMAL, self.profile, callback=self._dynamicMenuCb, errback=self._dynamicMenuEb) for new_menu in add_menus: - category,item,type = new_menu - assert(type=="NORMAL") #TODO: manage other types - menu.addMenu(unicode(category), unicode(item), add_menu_cb) + type_, category, name = new_menu + assert(type_=="NORMAL") #TODO: manage other types + menu.addMenu(unicode(category), unicode(name), add_menu_cb) menu_roller = sat_widgets.MenuRoller([(_('Main menu'),menu)]) return menu_roller - def __buildMainWidget(self): + def _buildMainWidget(self): self.contact_list = ContactList(self, on_click=self.contactSelected, on_change=lambda w: self.redraw()) #self.center_part = urwid.Columns([('weight',2,self.contact_list),('weight',8,Chat('',self))]) self.center_part = urwid.Columns([('weight', 2, self.contact_list), ('weight', 8, urwid.Filler(urwid.Text('')))]) self.editBar = EditBar(self) - self.menu_roller = self.__buildMenuRoller() + self.menu_roller = self._buildMenuRoller() self.main_widget = sat_widgets.FocusFrame(self.center_part, header=self.menu_roller, footer=self.editBar, focus_part='footer') return self.main_widget def plug_profile(self, profile_key='@DEFAULT@'): - self.loop.widget = self.__buildMainWidget() + self.loop.widget = self._buildMainWidget() self.redraw() QuickApp.plug_profile(self, profile_key)