little cleanup

This commit is contained in:
louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 2010-02-10 16:47:43 +00:00
parent b9a05fe48a
commit d2a4ecf9a5
6 changed files with 35 additions and 26 deletions

View file

@ -19,7 +19,7 @@
import sys
# disable any printout (this would mess the display)
stderr = sys.stderr
STDERR = sys.stderr
sys.stderr = open('/dev/null', 'w')
sys.stdout = open('/dev/null', 'w')
@ -28,21 +28,22 @@ from multiuserchat import MultiUserChat
from config import config
from handler import Handler
from gui import Gui
from curses import wrapper, initscr
from curses import initscr
import curses
import signal
signal.signal(signal.SIGINT, signal.SIG_IGN)
import traceback
def exception_handler(type_, value, tb):
def exception_handler(type_, value, trace):
"""
on any traceback: exit ncurses and print the traceback
then exit the program
"""
curses.echo()
curses.endwin()
traceback.print_exception(type_, value, tb, None, stderr)
traceback.print_exception(type_, value, trace, None, STDERR)
sys.exit()
sys.excepthook = exception_handler
@ -63,9 +64,18 @@ class Client(object):
self.connection.start()
self.gui = Gui(self.stdscr, MultiUserChat(self.connection.client))
def launch(self):
"""
launch
"""
self.gui.main_loop(self.stdscr)
def main():
"""
main function
"""
client = Client()
client.gui.main_loop(client.stdscr)
client.launch()
sys.exit()
if __name__ == '__main__':

View file

@ -45,7 +45,7 @@ class Config(RawConfigParser):
elif type(default) == float:
res = self.getfloat(option)
elif type(default) == bool:
res = self.getbool(option)
res = self.getboolean(option)
else:
res = self.getstr(option)
except NoOptionError:
@ -75,7 +75,7 @@ class Config(RawConfigParser):
RawConfigParser.write(self, f)
f.close()
def setAndSave(self, option, value):
def set_and_save(self, option, value):
self.set(option, value)
self.save()

View file

@ -23,7 +23,6 @@ import xmpp
from config import config
from logging import logger
from threading import Thread
from multiuserchat import MultiUserChat
from handler import Handler
class Connection(Thread):
@ -100,7 +99,8 @@ class Connection(Thread):
def process(self, timeout=10):
if self.online:
try:self.client.Process(timeout)
try:
self.client.Process(timeout)
except:
pass # FIXME
else:

View file

@ -29,7 +29,6 @@ locale.setlocale(locale.LC_ALL, '')
import sys
import curses
from curses import textpad
from datetime import datetime
from handler import Handler
@ -48,8 +47,8 @@ class User(object):
self.color = randrange(2, 10)
def update(self, affiliation, show, status, role):
self.affiliation = None
self.show = None
self.affiliation = affiliation
self.show = show
self.status = status
self.role = role
@ -75,14 +74,15 @@ class Room(object):
if not msg:
logger.info('msg is None..., %s' % (nick))
return
self.lines.append((datetime.now(), nick.encode('utf-8'), msg.encode('utf-8')))
self.lines.append((datetime.now(), nick.encode('utf-8'),
msg.encode('utf-8')))
def add_info(self, info):
""" info, like join/quit/status messages"""
try:
self.lines.append((datetime.now(), info.encode('utf-8')))
return info.encode('utf-8')
except: # I JUST FUCKING HATE THIS .encode.decode.shit !!!
except:
self.lines.append((datetime.now(), info))
return info
@ -100,11 +100,11 @@ class Room(object):
status = stanza.getStatus()
role = stanza.getRole()
if not self.joined: # user in the room BEFORE us.
self.users.append(User(nick, affiliation, show, status, role))
if nick.encode('utf-8') == self.own_nick:
self.joined = True
return self.add_info(_("Your nickname is %s") % (nick))
return self.add_info(_("%s is in the room") % (nick.encode-('utf-8')))
self.users.append(User(nick, affiliation, show, status, role))
if nick.encode('utf-8') == self.own_nick:
self.joined = True
return self.add_info(_("Your nickname is %s") % (nick))
return self.add_info(_("%s is in the room") % (nick.encode-('utf-8')))
change_nick = stanza.getStatusCode() == '303'
kick = stanza.getStatusCode() == '307'
user = self.get_user_by_name(nick)
@ -239,7 +239,7 @@ class Gui(object):
self.window.do_command(key)
def current_room(self):
return self.rooms[0]
return self.rooms[0]
def get_room_by_name(self, name):
for room in self.rooms:
@ -293,7 +293,7 @@ class Gui(object):
nick_from = ''
room = self.get_room_by_name(room_from)
if not room:
self.information(_("message received for a non-existing room: %s") % (name))
self.information(_("message received for a non-existing room: %s") % (room_from))
return
body = stanza.getBody()
if not body:
@ -320,7 +320,7 @@ class Gui(object):
from_room = stanza.getFrom().getStripped()
room = self.get_room_by_name(from_room)
if not room:
self.information(_("presence received for a non-existing room: %s") % (name))
self.information(_("presence received for a non-existing room: %s") % (from_room))
if stanza.getType() == 'error':
msg = _("Error: %s") % stanza.getError()
else:
@ -446,7 +446,7 @@ class Gui(object):
res = roomname+'/'+nick
else:
res = roomname
config.setAndSave('rooms', bookmarked+':'+res)
config.set_and_save('rooms', bookmarked+':'+res)
def command_set(self, args):
if len(args) != 2:
@ -454,7 +454,7 @@ class Gui(object):
return
option = args[0]
value = args[1]
config.setAndSave(option, value)
config.set_and_save(option, value)
msg = "%s=%s" % (option, value)
room = self.current_room()
room.add_info(msg)

View file

@ -50,7 +50,7 @@ class MultiUserChat(object):
def on_connected(self, jid):
self.own_jid = jid
rooms = config.get('rooms', '')
if rooms == '':
if rooms == '' or type(rooms) != str:
return
else:
rooms = rooms.split(':')

View file

@ -18,7 +18,6 @@
# along with Poezio. If not, see <http://www.gnu.org/licenses/>.
import curses
from logging import logger
class Win(object):
def __init__(self, height, width, y, x, parent_win):