mirror of git://git.psyced.org/git/pypsyc
93 lines
3.0 KiB
Python
93 lines
3.0 KiB
Python
import gtk
|
|
from pypsyc.objects import PSYCObject
|
|
|
|
class PlaceTab(gtk.Frame, PSYCObject):
|
|
def __init__(self, netname, center):
|
|
gtk.Frame.__init__(self, label = netname)
|
|
PSYCObject.__init__(self, netname, center)
|
|
|
|
vbox = gtk.VBox()
|
|
self.add(vbox)
|
|
|
|
self.textview = gtk.TextView()
|
|
self.textview.set_cursor_visible(gtk.FALSE)
|
|
self.textview.set_wrap_mode(gtk.WRAP_WORD)
|
|
self.textview.set_editable(gtk.FALSE)
|
|
self.textbuf = self.textview.get_buffer()
|
|
|
|
hbox = gtk.HPaned()
|
|
hbox.pack1(self.textview)
|
|
vbox.pack_start(hbox)
|
|
|
|
# uni, nick
|
|
self.nicklist = gtk.ListStore(str, str)
|
|
self.nicklist.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
|
nickview = gtk.TreeView()
|
|
nickview.set_model(self.nicklist)
|
|
nickview.set_headers_visible(gtk.FALSE)
|
|
|
|
col = gtk.TreeViewColumn('Nick', gtk.CellRendererText(), text = 1)
|
|
col.set_resizable(gtk.FALSE)
|
|
nickview.append_column(col)
|
|
|
|
hbox.pack2(nickview, shrink=gtk.FALSE, resize=gtk.FALSE)
|
|
|
|
self.entry = gtk.Entry()
|
|
self.entry.set_text('')
|
|
self.entry.connect('activate', self.onEntry)
|
|
vbox.pack_end(self.entry, gtk.FALSE)
|
|
self.show_all()
|
|
def append_text(self, text):
|
|
iter = self.textbuf.get_end_iter()
|
|
text = text.encode('utf-8') + '\n'
|
|
self.textbuf.insert(iter, text)
|
|
iter = self.textbuf.get_end_iter()
|
|
self.textbuf.place_cursor(iter)
|
|
mark = self.textbuf.get_insert()
|
|
self.textview.scroll_mark_onscreen(mark)
|
|
def onEntry(self, widget):
|
|
text = self.entry.get_text()
|
|
#print self.netname, '>>', text
|
|
self.entry.set_text('')
|
|
# handle a command... yes this should not be done that way
|
|
if text and text[0] == '/':
|
|
cmd = text[1:].upper()
|
|
if cmd == 'PART':
|
|
self.sendmsg({'_target' : self.netname},
|
|
{},
|
|
'_request_leave',
|
|
'')
|
|
return
|
|
self.sendmsg({'_target' : self.netname},
|
|
{},
|
|
'_message_public',
|
|
text)
|
|
def msg(self, vars, mc, data, caller):
|
|
if mc == '_message_public':
|
|
self.append_text('%s: %s'%(vars['_nick'], data))
|
|
return
|
|
if mc == '_message_public_question':
|
|
self.append_text('%s %s: %s'%(vars['_nick'],
|
|
'fragt',
|
|
data))
|
|
return
|
|
if mc == '_message_public_text_action':
|
|
self.append_text('%s %s: %s'%(vars['_nick'],
|
|
vars['_action'],
|
|
data))
|
|
return
|
|
if mc == '_status_place_members':
|
|
# _list_members, _list_members_nicks
|
|
for i in range(0, len(vars['_list_members'])):
|
|
self.nicklist.append((vars['_list_members'][i],
|
|
vars['_list_members_nicks'][i]))
|
|
return
|
|
if mc.startswith('_notice_place_leave'):
|
|
return
|
|
if mc.startswith('_notice_place_enter'):
|
|
self.nicklist.append((vars['_source'], vars['_nick']))
|
|
return
|
|
PSYCObject.msg(self, vars, mc, data, caller)
|
|
|
|
|