diff frontends/primitivus/primitivus @ 131:6cad483a6d84

Primitivus: menu is now working /!\ tooltips not managed yet, doesn't manage properly menu when it's displayed on several rows /!\ still need to manage other menus (chat menu)
author Goffi <goffi@goffi.org>
date Wed, 14 Jul 2010 19:36:40 +0800
parents 542682d67282
children 227394eb080c
line wrap: on
line diff
--- a/frontends/primitivus/primitivus	Wed Jul 14 16:14:48 2010 +0800
+++ b/frontends/primitivus/primitivus	Wed Jul 14 19:36:40 2010 +0800
@@ -66,6 +66,9 @@
                  ('my_nick', 'dark red,bold', 'default'),
                  ('other_nick', 'dark cyan,bold', 'default'),
                  ('menubar', 'light gray,bold', 'dark red'),
+                 ('selected_menu', 'light gray,bold', 'dark green'),
+                 ('menuitem', 'light gray,bold', 'dark red'),
+                 ('menuitem_focus', 'light gray,bold', 'dark green'),
                  ]
             
 class ChatList(QuickChatList):
@@ -91,14 +94,14 @@
         self.chat_wins=ChatList(self)
     
     def debug(self):
-        """convenience method to reset screen and launch pdb"""
+        """convenient method to reset screen and launch pdb"""
         import os
         os.system('reset')
         print 'Entered debug mode'
         pdb.set_trace()
 
     def write_log(self, log, file_name='/tmp/primitivus_log'):
-        #method to write log in a temporary file, useful for debugging
+        """method to write log in a temporary file, useful for debugging"""
         f=open(file_name, 'a')
         f.write(log+"\n")
         f.close()
@@ -123,9 +126,7 @@
         return input
 
     def keyHandler(self, input):
-        if input in ('q', 'Q') or input == 'ctrl x':
-            raise urwid.ExitMainLoop()
-        elif input == 'meta m':
+        if input == 'meta m':
             try:
                 if self.main_widget.header == None:
                     self.main_widget.header = self.menu
@@ -135,9 +136,6 @@
                 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 = 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:
                 center_widgets = self.center_part.widget_list
@@ -166,13 +164,23 @@
         except AttributeError:
             return input
 
+    def __buildMainMenu(self):
+        menu = custom_widgets.Menu(self.loop)
+        connect = _("Connect")
+        menu.addMenu(connect, connect, self.onConnectRequest)
+        menu.addMenu(connect, _("Disconnect"), self.onDisconnectRequest)
+        menu.addMenu(connect, _("Exit"), self.onExitRequest, 'ctrl x')
+        communication = _("Communication")
+        menu.addMenu(communication, _("Join room"), self.onJoinRoomRequest, 'meta j')
+        return menu 
+
     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 = custom_widgets.AdvancedEdit('> ')
         urwid.connect_signal(editBar,'click',self.onTextEntered)
-        self.menu = custom_widgets.Menu()
+        self.menu = self.__buildMainMenu()
         self.main_widget = custom_widgets.FocusFrame(self.center_part, header=self.menu, footer=editBar, focus_part='footer')
         return self.main_widget
 
@@ -224,6 +232,21 @@
             error (message)
             custom_widgets.Alert(_("Error"), message, ok_cb=self.removePopUp)        
 
+    #Menu events#
+    def onConnectRequest(self, menu):
+        self.bridge.connect(self.profile)
+
+    def onDisconnectRequest(self, menu):
+        self.bridge.disconnect(self.profile)
+
+    def onExitRequest(self, menu):
+        raise urwid.ExitMainLoop()
+
+    def onJoinRoomRequest(self, menu):
+        """User wants to join a MUC room"""
+        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)
+
 sat = PrimitivusApp()
 sat.start()