diff frontends/primitivus/primitivus @ 128:2240f34f6452

Primitivus: misc fixes + menubar first draft - Menu bar: first draft of class - Password widget fixed - change some str to unicode, notably for JID
author Goffi <goffi@goffi.org>
date Tue, 13 Jul 2010 02:24:59 +0800
parents 55d3ef84f01f
children 542682d67282
line wrap: on
line diff
--- a/frontends/primitivus/primitivus	Mon Jul 12 18:55:27 2010 +0800
+++ b/frontends/primitivus/primitivus	Tue Jul 13 02:24:59 2010 +0800
@@ -28,7 +28,7 @@
 from profile_manager import ProfileManager
 from contact_list import ContactList
 from chat import Chat
-from custom_widgets import AdvancedEdit,FocusFrame,InputDialog,Alert
+import custom_widgets
 import pdb
 """from window import Window
 from editbox import EditBox
@@ -65,6 +65,7 @@
                  ('date', 'light gray', 'default'),
                  ('my_nick', 'dark red,bold', 'default'),
                  ('other_nick', 'dark cyan,bold', 'default'),
+                 ('menubar', 'light gray,bold', 'dark red'),
                  ]
             
 class ChatList(QuickChatList):
@@ -118,10 +119,18 @@
     def keyHandler(self, input):
         if input in ('q', 'Q') or input == 'ctrl x':
             raise urwid.ExitMainLoop()
+        elif input == 'meta m':
+            try:
+                if self.main_widget.header == None:
+                    self.main_widget.header = self.menu
+                else:
+                    self.main_widget.header = None
+            except AttributeError:
+                pass
         elif input == 'ctrl d' and 'D' in self.bridge.getVersion(): #Debug only for dev versions
             self.debug()
         elif input == 'meta j': #user wants to join a room
-            pop_up_widget = InputDialog(_("Entering a MUC room"), _("Please enter MUC's JID"), default_txt = 'test@conference.necton2.int', cancel_cb=self.removePopUp, ok_cb=self.onJoinRoom)
+            pop_up_widget = custom_widgets.InputDialog(_("Entering a MUC room"), _("Please enter MUC's JID"), default_txt = 'test@conference.necton2.int', cancel_cb=self.removePopUp, ok_cb=self.onJoinRoom)
             self.showPopUp(pop_up_widget)
         elif input == 'f2': #user wants to (un)hide the contact_list
             try:
@@ -136,14 +145,19 @@
             except AttributeError:
                 #The main widget is not built (probably in Profile Manager)
                 pass
+        try:
+            return self.menu.checkShortcuts(input)
+        except AttributeError:
+            return input
 
     def __buildMainWidget(self):
         self.contactList = ContactList(self, self.CM, on_click = self.contactSelected, on_change=lambda w: self.redraw())
         #self.center_part = urwid.Columns([('weight',2,self.contactList),('weight',8,Chat('',self))])
         self.center_part = urwid.Columns([('weight',2,self.contactList), ('weight',8,urwid.Filler(urwid.Text('')))])
-        editBar = AdvancedEdit('> ')
+        editBar = custom_widgets.AdvancedEdit('> ')
         urwid.connect_signal(editBar,'click',self.onTextEntered)
-        self.main_widget = FocusFrame(self.center_part, footer=editBar, focus_part='footer')
+        self.menu = custom_widgets.Menu()
+        self.main_widget = custom_widgets.FocusFrame(self.center_part, header=self.menu, footer=editBar, focus_part='footer')
         return self.main_widget
 
     def plug_profile(self, profile_key='@DEFAULT@'):
@@ -192,7 +206,7 @@
         else:
             message = _("'%s' is an invalid JID !") % room_jid
             error (message)
-            Alert(_("Error"), message, ok_cb=self.removePopUp)        
+            custom_widgets.Alert(_("Error"), message, ok_cb=self.removePopUp)        
 
 sat = PrimitivusApp()
 sat.start()