#!/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 . from gettext import (bindtextdomain, textdomain, bind_textdomain_codeset, gettext as _) bindtextdomain('poezio') textdomain('poezio') bind_textdomain_codeset('poezio', 'utf-8') import locale locale.setlocale(locale.LC_ALL, '') import sys import curses from datetime import datetime import common from handler import Handler from config import config from window import Window from user import User from room import Room class Gui(object): """ User interface using ncurses """ def __init__(self, stdscr=None, muc=None): self.room_number = 0 self.init_curses(stdscr) self.stdscr = stdscr self.rooms = [Room('Info', '', self.next_room_number())] self.window = Window(stdscr) self.window.new_room(self.current_room()) self.window.refresh(self.rooms) self.muc = muc self.commands = { 'help': (self.command_help, _('OLOL, this is SOOO recursive')), 'join': (self.command_join, _("""Usage: /join [room_name][/nick] [password]\nJoin: Join the specified room. You can specify a nickname after a slash (/). If no nickname is specified, you will use the default_nick in the configuration file. You can omit the room name: you will then join the room you\'re looking at (useful if you were kicked). You can also provide a password to join the room.\nExamples:\n/join room@server.tld\n/join room@server.tld/ John\n/join /me_again\n/join\n/join room@server.tld/my_nick password\n/join / pass""")), 'quit': (self.command_quit, _("""Usage: /quit\nQuit: Just disconnect from the server and exit poezio.""")), 'exit': (self.command_quit, _("""Usage: /exit\nExit: Just disconnect from the server and exit poezio.""")), 'next': (self.rotate_rooms_right, _("""Usage: /next\nNext: Go to the next room.""")), 'n': (self.rotate_rooms_right, _("""Usage: /n\nN: Go to the next room.""")), 'prev': (self.rotate_rooms_left, _("""Usage: /prev\nPrev: Go to the previous room.""")), 'p': (self.rotate_rooms_left, _("""Usage: /p\nP: Go to the previous room.""")), 'win': (self.command_win, _("""Usage: /win \nWin: Go to the specified room.""")), 'w': (self.command_win, _("""Usage: /w \nW: Go to the specified room.""")), 'ignore': (self.command_ignore, _("""Usage: /ignore \Ignore: Ignore a specified nickname.""")), 'unignore': (self.command_unignore, _("""Usage: /unignore \Unignore: Remove the specified nickname from the ignore list.""")), 'part': (self.command_part, _("""Usage: /part [message]\n Part: disconnect from a room. You can specify an optional message.""")), 'show': (self.command_show, _("""Usage: /show [status]\nShow: Change your availability and (optionaly) your status. The argument is one of "avail, available, ok, here, chat, away, afk, dnd, busy, xa" and the optional [message] argument will be your status message""")), 'away': (self.command_away, _("""Usage: /away [message]\nAway: Sets your availability to away and (optional) sets your status message. This is equivalent to '/show away [message]'""")), 'busy': (self.command_busy, _("""Usage: /busy [message]\nBusy: Sets your availability to busy and (optional) sets your status message. This is equivalent to '/show busy [message]'""")), 'avail': (self.command_avail, _("""Usage: /avail [message]\n Avail: Sets your availability to available and (optional) sets your status message. This is equivalent to '/show available [message]'""")), 'available': (self.command_avail, _("""Usage: /available [message]\nAvailable: Sets your availability to available and (optional) sets your status message. This is equivalent to '/show available [message]'""")), 'bookmark': (self.command_bookmark, _("""Usage: /bookmark [roomname][/nick]\nBookmark: Bookmark the specified room (you will then auto-join it on each poezio start). This commands uses the same syntaxe as /join. Type /help join for syntaxe examples. Note that when typing "/bookmark" on its own, the room will be bookmarked with the nickname you\'re currently using in this room (instead of default_nick)""")), 'set': (self.command_set, _("""Usage: /set