Mercurial > libervia-backend
comparison frontends/primitivus/primitivus @ 166:b318d2b58887
Primitivus: parameters management via XMLUI
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 09 Aug 2010 21:39:41 +0800 |
parents | 2fa58703f1b7 |
children | a2655a0a4eac |
comparison
equal
deleted
inserted
replaced
165:8a2053de6f8c | 166:b318d2b58887 |
---|---|
79 | 79 |
80 class PrimitivusApp(QuickApp): | 80 class PrimitivusApp(QuickApp): |
81 | 81 |
82 def __init__(self): | 82 def __init__(self): |
83 self.CM = QuickContactManagement() #FIXME: not the best place | 83 self.CM = QuickContactManagement() #FIXME: not the best place |
84 QuickApp.__init__(self) | 84 QuickApp.__init__(self) |
85 | 85 |
86 ## main loop setup ## | 86 ## main loop setup ## |
87 self.main_widget = ProfileManager(self) | 87 self.main_widget = ProfileManager(self) |
88 self.loop = urwid.MainLoop(self.main_widget, const_PALETTE, event_loop=urwid.GLibEventLoop(), input_filter=self.inputFilter, unhandled_input=self.keyHandler) | 88 self.loop = urwid.MainLoop(self.main_widget, const_PALETTE, event_loop=urwid.GLibEventLoop(), input_filter=self.inputFilter, unhandled_input=self.keyHandler) |
89 | 89 |
181 def __buildMenuRoller(self): | 181 def __buildMenuRoller(self): |
182 menu = custom_widgets.Menu(self.loop) | 182 menu = custom_widgets.Menu(self.loop) |
183 general = _("General") | 183 general = _("General") |
184 menu.addMenu(general, _("Connect"), self.onConnectRequest) | 184 menu.addMenu(general, _("Connect"), self.onConnectRequest) |
185 menu.addMenu(general, _("Disconnect"), self.onDisconnectRequest) | 185 menu.addMenu(general, _("Disconnect"), self.onDisconnectRequest) |
186 menu.addMenu(general, _("Parameters"), self.onParam) | |
186 menu.addMenu(general, _("About"), self.onAboutRequest) | 187 menu.addMenu(general, _("About"), self.onAboutRequest) |
187 menu.addMenu(general, _("Exit"), self.onExitRequest, 'ctrl x') | 188 menu.addMenu(general, _("Exit"), self.onExitRequest, 'ctrl x') |
188 contact = _("Contact") | 189 contact = _("Contact") |
189 menu.addMenu(contact, _("Add contact"), self.onAddContactRequest) | 190 menu.addMenu(contact, _("Add contact"), self.onAddContactRequest) |
190 menu.addMenu(contact, _("Remove contact"), self.onRemoveContactRequest) | 191 menu.addMenu(contact, _("Remove contact"), self.onRemoveContactRequest) |
234 self.loop.widget = display_widget | 235 self.loop.widget = display_widget |
235 else: | 236 else: |
236 self.notBar.addPopUp(pop_up_widget) | 237 self.notBar.addPopUp(pop_up_widget) |
237 | 238 |
238 def notify(self, message): | 239 def notify(self, message): |
240 """"Notify message to user via notification bar""" | |
239 self.notBar.addMessage(message) | 241 self.notBar.addMessage(message) |
240 | 242 |
243 def addWindow(self, widget): | |
244 """Display a window if possible, | |
245 else add it in the notification bar queue | |
246 @param widget: BoxWidget""" | |
247 assert(len(self.center_part.widget_list)<=2) | |
248 wid_idx = len(self.center_part.widget_list)-1 | |
249 self.center_part.widget_list[wid_idx] = widget | |
250 self.menu_roller.removeMenu(_('Chat menu')) | |
251 self.contactList.unselectAll() | |
252 self.redraw() | |
253 | |
254 def removeWindow(self): | |
255 """Remove window showed on the right column""" | |
256 #TODO: to a better Window management than this crappy hack | |
257 assert(len(self.center_part.widget_list)<=2) | |
258 wid_idx = len(self.center_part.widget_list)-1 | |
259 self.center_part.widget_list[wid_idx] = urwid.Filler(urwid.Text('')) | |
260 self.redraw() | |
261 | |
241 def contactSelected(self, contact_list): | 262 def contactSelected(self, contact_list): |
242 contact = contact_list.get_contact() | 263 contact = contact_list.get_contact() |
243 if contact: | 264 if contact: |
244 assert(len(self.center_part.widget_list)==2) | 265 assert(len(self.center_part.widget_list)==2) |
245 self.center_part.widget_list[1] = self.chat_wins[contact] | 266 self.center_part.widget_list[1] = self.chat_wins[contact] |
297 if data['type'] == _('registration'): | 318 if data['type'] == _('registration'): |
298 title = _('Registration') | 319 title = _('Registration') |
299 misc['target'] = data['target'] | 320 misc['target'] = data['target'] |
300 misc['action_back'] = self.bridge.gatewayRegister | 321 misc['action_back'] = self.bridge.gatewayRegister |
301 ui = XMLUI(self, title=title, xml_data = data['xml'], misc = misc) | 322 ui = XMLUI(self, title=title, xml_data = data['xml'], misc = misc) |
302 assert(len(self.center_part.widget_list)==2) | 323 self.addWindow(ui) |
303 self.center_part.widget_list[1] = ui | |
304 self.menu_roller.removeMenu(_('Chat menu')) | |
305 self.contactList.selected = None | |
306 self.redraw() | |
307 else: | 324 else: |
308 error (_("FIXME FIXME FIXME: type [%s] not implemented") % type) | 325 error (_("FIXME FIXME FIXME: type [%s] not implemented") % type) |
309 raise NotImplementedError | 326 raise NotImplementedError |
310 | 327 |
311 ##DIALOGS CALLBACKS## | 328 ##DIALOGS CALLBACKS## |
339 self.bridge.connect(self.profile) | 356 self.bridge.connect(self.profile) |
340 | 357 |
341 def onDisconnectRequest(self, menu): | 358 def onDisconnectRequest(self, menu): |
342 self.bridge.disconnect(self.profile) | 359 self.bridge.disconnect(self.profile) |
343 | 360 |
361 def onParam(self, menu): | |
362 params = XMLUI(self,xml_data=self.bridge.getParamsUI(self.profile)) | |
363 self.addWindow(params) | |
364 | |
344 def onExitRequest(self, menu): | 365 def onExitRequest(self, menu): |
345 raise urwid.ExitMainLoop() | 366 raise urwid.ExitMainLoop() |
346 | 367 |
347 def onJoinRoomRequest(self, menu): | 368 def onJoinRoomRequest(self, menu): |
348 """User wants to join a MUC room""" | 369 """User wants to join a MUC room""" |