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"""