#!/usr/bin/python # -*- coding:utf-8 -*- # # Copyright 2010 Le Coz Florent # # This file is part of Poezio. # # Poezio is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # Poezio is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Poezio. If not, see . import sys from connection import Connection from multiuserchat import MultiUserChat from config import config from handler import Handler from gui import Gui from curses import wrapper, initscr import curses import signal signal.signal(signal.SIGINT, signal.SIG_IGN) # disable any printout (this would mess the display) stderr = sys.stderr sys.stderr = open('/dev/null', 'w') sys.stdout = open('/dev/null', 'w') import traceback def exception_handler(type_, value, tb): """ 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) sys.exit() sys.excepthook = exception_handler class Client(object): """ Main class Just read some configuration and instantiate the classes """ def __init__(self): self.handler = Handler() self.resource = config.get('resource', 'poezio') self.server = config.get('server', 'louiz.org') self.connection = Connection(self.server, self.resource) self.stdscr = initscr() self.connection.start() self.gui = Gui(self.stdscr, MultiUserChat(self.connection.client)) def main(): client = Client() client.gui.main_loop(client.stdscr) sys.exit() if __name__ == '__main__': main()