summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui.py51
-rw-r--r--src/poezio.cfg2
2 files changed, 44 insertions, 9 deletions
diff --git a/src/gui.py b/src/gui.py
index fd47e4e5..82dd96a1 100644
--- a/src/gui.py
+++ b/src/gui.py
@@ -89,11 +89,20 @@ class Room(object):
self.joined = True
return self.add_info("%s is in the room" % (nick))
change_nick = stanza.getStatusCode() == '303'
+ kick = stanza.getStatusCode() == '307'
for user in self.users:
if user.nick == nick:
if change_nick:
user.change_nick(stanza.getNick())
return self.add_info('%s is now known as %s' % (nick, stanza.getNick()))
+ if kick:
+ reason = stanza.getReason().encode('utf-8') or ''
+ by = stanza.getActor().encode('utf-8') or ''
+ if nick == self.own_nick:
+ self.joined = False
+ return self.add_info('You have been kicked by %s. Reason: %s' % (by, reason))
+ else:
+ return self.add_info('%s has been kicked by %s. Reason: %s' % (nick, by, reason))
if status == 'offline' or role == 'none':
self.users.remove(user)
return self.add_info('%s has left the room' % (nick))
@@ -133,6 +142,10 @@ class Gui(object):
"KEY_HOME": self.window.input.key_home,
"KEY_DOWN": self.window.input.key_down,
"KEY_DC": self.window.input.key_dc,
+ "KEY_F(5)": self.rotate_rooms_left,
+ "KEY_F(6)": self.rotate_rooms_right,
+ "kLFT5": self.rotate_rooms_left,
+ "kRIT5": self.rotate_rooms_right,
"KEY_BACKSPACE": self.window.input.key_backspace
}
@@ -146,6 +159,8 @@ class Gui(object):
while 1:
curses.doupdate()
key = stdscr.getkey()
+ # print key
+ # sys.exit()
if str(key) in self.key_func.keys():
self.key_func[key]()
elif len(key) >= 4:
@@ -157,9 +172,11 @@ class Gui(object):
elif ord(key) < 32:
continue
else:
- if ord(key) == 27 and ord(stdscr.getkey()) == 91 \
- and ord(stdscr.getkey()) == 51: # FIXME: ugly ugly workaroung.
- self.window.input.key_dc()
+ if ord(key) == 27 and ord(stdscr.getkey()) == 91:
+ last = ord(stdscr.getkey()) # FIXME: ugly ugly workaroung.
+ if last == 51:
+ self.window.input.key_dc()
+ continue
elif ord(key) > 190 and ord(key) < 225:
key = key+stdscr.getkey()
elif ord(key) == 226:
@@ -195,6 +212,7 @@ class Gui(object):
curses.endwin()
def on_connected(self):
+ self.information("Welcome on Poezio \o/ !")
pass
def join_room(self, room, nick):
@@ -202,11 +220,11 @@ class Gui(object):
self.rooms.insert(0, Room(room, nick))
self.window.refresh(self.current_room())
- def rotate_rooms_left(self, args):
+ def rotate_rooms_left(self, args=None):
self.rooms.append(self.rooms.pop(0))
self.window.refresh(self.current_room())
- def rotate_rooms_right(self, args):
+ def rotate_rooms_right(self, args=None):
self.rooms.insert(0, self.rooms.pop())
self.window.refresh(self.current_room())
@@ -219,20 +237,28 @@ class Gui(object):
nick_from = ''
room = self.get_room_by_name(room_from)
if not room:
- return logger.warning("message received for a non-existing room: %s" % (name))
+ self.information("message received for a non-existing room: %s" % (name))
+ return
body = stanza.getBody()
if not body:
body = stanza.getSubject()
- room.add_info("%s changed the subject to: %s" % (nick_from, stanza.getSubject()))
+ info = room.add_info("%s changed the subject to: %s" % (nick_from, stanza.getSubject()))
+ self.window.text_win.add_line(room, (datetime.now(), info))
+ room.topic = stanza.getSubject().encode('utf-8').replace('\n', '|')
+ if room == self.current_room():
+ self.window.topic_win.refresh(room.topic)
+ curses.doupdate()
else:
room.add_message(nick_from, body)
self.window.text_win.add_line(room, (datetime.now(), nick_from.encode('utf-8'), body.encode('utf-8')))
if room == self.current_room():
self.window.text_win.refresh(room.name)
self.window.input.refresh()
- curses.doupdate()
+ curses.doupdate()
def room_presence(self, stanza):
+ if len(sys.argv) > 1:
+ self.information(str(stanza))
from_nick = stanza.getFrom().getResource()
from_room = stanza.getFrom().getStripped()
room = self.get_room_by_name(from_room)
@@ -263,9 +289,18 @@ class Gui(object):
def command_join(self, args):
room = args[0]
+ r = self.get_room_by_name(room)
+ if r: # if we are already in the room
+ self.information("already in room [%s]" % room)
+ return
self.muc.join_room(room, "poezio")
self.join_room(room, 'poezio')
+ def information(self, msg):
+ room = self.get_room_by_name("Info")
+ info = room.add_info(msg)
+ self.window.text_win.add_line(room, (datetime.now(), info))
+
def command_quit(self, args):
self.reset_curses()
sys.exit()
diff --git a/src/poezio.cfg b/src/poezio.cfg
index 0ed663ed..9c88220e 100644
--- a/src/poezio.cfg
+++ b/src/poezio.cfg
@@ -3,7 +3,7 @@ logfile = logs
resource = poezio
server = louiz.org
port = 5222
-rooms = discussion@kikoo.louiz.org/ウェブ登録サイト
+rooms = discussion@kikoo.louiz.org/poezio:test@chat.jabberfr.org/poezio