contacts from transports now use their protocol state images
13
data/iconsets/transports/gadugadu/closed.xpm
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* XPM */
|
||||
static char * closed_xpm[] = {
|
||||
"6 8 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
". ",
|
||||
".. ",
|
||||
"... ",
|
||||
".... ",
|
||||
"... ",
|
||||
".. ",
|
||||
". ",
|
||||
" "};
|
BIN
data/iconsets/transports/gadugadu/dnd.png
Normal file
After Width: | Height: | Size: 517 B |
11
data/iconsets/transports/gadugadu/opened.xpm
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* XPM */
|
||||
static char * opened_xpm[] = {
|
||||
"7 6 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
".......",
|
||||
" ..... ",
|
||||
" ... ",
|
||||
" . ",
|
||||
" ",
|
||||
" "};
|
BIN
data/iconsets/transports/gadugadu/xa.png
Normal file
After Width: | Height: | Size: 517 B |
13
data/iconsets/transports/icq/closed.xpm
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* XPM */
|
||||
static char * closed_xpm[] = {
|
||||
"6 8 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
". ",
|
||||
".. ",
|
||||
"... ",
|
||||
".... ",
|
||||
"... ",
|
||||
".. ",
|
||||
". ",
|
||||
" "};
|
BIN
data/iconsets/transports/icq/connecting.png
Normal file
After Width: | Height: | Size: 505 B |
BIN
data/iconsets/transports/icq/error.png
Normal file
After Width: | Height: | Size: 505 B |
BIN
data/iconsets/transports/icq/message.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
11
data/iconsets/transports/icq/opened.xpm
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* XPM */
|
||||
static char * opened_xpm[] = {
|
||||
"7 6 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
".......",
|
||||
" ..... ",
|
||||
" ... ",
|
||||
" . ",
|
||||
" ",
|
||||
" "};
|
BIN
data/iconsets/transports/msn/chat.png
Normal file
After Width: | Height: | Size: 554 B |
13
data/iconsets/transports/msn/closed.xpm
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* XPM */
|
||||
static char * closed_xpm[] = {
|
||||
"6 8 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
". ",
|
||||
".. ",
|
||||
"... ",
|
||||
".... ",
|
||||
"... ",
|
||||
".. ",
|
||||
". ",
|
||||
" "};
|
BIN
data/iconsets/transports/msn/connecting.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
data/iconsets/transports/msn/error.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
data/iconsets/transports/msn/invisible.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
data/iconsets/transports/msn/message.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
11
data/iconsets/transports/msn/opened.xpm
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* XPM */
|
||||
static char * opened_xpm[] = {
|
||||
"7 6 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
".......",
|
||||
" ..... ",
|
||||
" ... ",
|
||||
" . ",
|
||||
" ",
|
||||
" "};
|
BIN
data/iconsets/transports/msn/requested.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
data/iconsets/transports/msn/xa.png
Normal file
After Width: | Height: | Size: 512 B |
BIN
data/iconsets/transports/yahoo/chat.png
Normal file
After Width: | Height: | Size: 210 B |
13
data/iconsets/transports/yahoo/closed.xpm
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* XPM */
|
||||
static char * closed_xpm[] = {
|
||||
"6 8 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
". ",
|
||||
".. ",
|
||||
"... ",
|
||||
".... ",
|
||||
"... ",
|
||||
".. ",
|
||||
". ",
|
||||
" "};
|
BIN
data/iconsets/transports/yahoo/connecting.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
data/iconsets/transports/yahoo/error.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
data/iconsets/transports/yahoo/invisible.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
data/iconsets/transports/yahoo/message.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
11
data/iconsets/transports/yahoo/opened.xpm
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* XPM */
|
||||
static char * opened_xpm[] = {
|
||||
"7 6 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
".......",
|
||||
" ..... ",
|
||||
" ... ",
|
||||
" . ",
|
||||
" ",
|
||||
" "};
|
BIN
data/iconsets/transports/yahoo/requested.png
Normal file
After Width: | Height: | Size: 206 B |
Before Width: | Height: | Size: 176 B |
Before Width: | Height: | Size: 180 B |
|
@ -1,47 +0,0 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<icondef>
|
||||
<meta>
|
||||
<name>Stellar-Transport (default)</name>
|
||||
<version>1.0</version>
|
||||
<description>Default Psi 0.9.3 iconset</description>
|
||||
<creation>2003-07-17</creation>
|
||||
<home>http://psi.affinix.com</home>
|
||||
<author email='jmkim@uci.edu'>Jason Kim</author>
|
||||
<author jid='mblsha@jabber.ru' email='mblsha@users.sourceforge.net' www='http://maz.sf.net'>Michail Pishchagin (icondef.xml)</author>
|
||||
</meta>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/online</x>
|
||||
<object mime='image/png'>online.png</object>
|
||||
</icon>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/chat</x>
|
||||
<object mime='image/png'>online.png</object> <!-- FIXME -->
|
||||
</icon>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/invisible</x>
|
||||
<object mime='image/png'>online.png</object> <!-- FIXME -->
|
||||
</icon>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/offline</x>
|
||||
<object mime='image/png'>offline.png</object>
|
||||
</icon>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/away</x>
|
||||
<object mime='image/png'>away.png</object>
|
||||
</icon>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/xa</x>
|
||||
<object mime='image/png'>xa.png</object>
|
||||
</icon>
|
||||
|
||||
<icon>
|
||||
<x xmlns='name'>status/dnd</x>
|
||||
<object mime='image/png'>dnd.png</object>
|
||||
</icon>
|
||||
</icondef>
|
Before Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 172 B |
Before Width: | Height: | Size: 191 B |
|
@ -208,7 +208,7 @@ class Interface:
|
|||
self.roster.to_be_removed[account].append(user1.jid)
|
||||
if user1.jid in self.roster.newly_added[account]:
|
||||
self.roster.newly_added[account].remove(user1.jid)
|
||||
self.roster.redraw_jid(user1.jid, account)
|
||||
self.roster.draw_contact(user1.jid, account)
|
||||
if not self.queues[account].has_key(jid):
|
||||
gobject.timeout_add(5000, self.roster.really_remove_user, \
|
||||
user1, account)
|
||||
|
@ -220,7 +220,7 @@ class Interface:
|
|||
#It must be an agent
|
||||
if self.roster.contacts[account].has_key(ji):
|
||||
#Update existing iter
|
||||
self.roster.redraw_jid(ji, account)
|
||||
self.roster.draw_contact(ji, account)
|
||||
elif self.roster.contacts[account].has_key(ji):
|
||||
#It isn't an agent
|
||||
self.roster.chg_user_status(user1, array[1], array[2], account)
|
||||
|
@ -463,7 +463,7 @@ class Interface:
|
|||
user.ask = array[3]
|
||||
if array[4]:
|
||||
user.groups = array[4]
|
||||
self.roster.redraw_jid(jid, account)
|
||||
self.roster.draw_contact(jid, account)
|
||||
|
||||
def read_sleepy(self):
|
||||
'''Check if we are idle'''
|
||||
|
|
|
@ -100,7 +100,7 @@ class Roster_window:
|
|||
def remove_newly_added(self, jid, account):
|
||||
if jid in self.newly_added[account]:
|
||||
self.newly_added[account].remove(jid)
|
||||
self.redraw_jid(jid, account)
|
||||
self.draw_contact(jid, account)
|
||||
|
||||
def add_user_to_roster(self, jid, account):
|
||||
'''Add a user to the roster and add groups if they aren't in roster'''
|
||||
|
@ -109,7 +109,7 @@ class Roster_window:
|
|||
return
|
||||
users = self.contacts[account][jid]
|
||||
user = users[0]
|
||||
if user.jid.find('@') <= 0:
|
||||
if user.jid.find('@') == -1: # if not '@' it's an agent
|
||||
user.groups = ['Agents']
|
||||
elif user.groups == []:
|
||||
user.groups.append('General')
|
||||
|
@ -146,7 +146,7 @@ class Roster_window:
|
|||
if self.groups[account][g]['expand']:
|
||||
self.tree.expand_row(model.get_path(iterG),
|
||||
False)
|
||||
self.redraw_jid(jid, account)
|
||||
self.draw_contact(jid, account)
|
||||
|
||||
def really_remove_user(self, user, account):
|
||||
if user.jid in self.to_be_removed[account]:
|
||||
|
@ -173,8 +173,8 @@ class Roster_window:
|
|||
if group_empty:
|
||||
del self.groups[account][group]
|
||||
|
||||
def redraw_jid(self, jid, account):
|
||||
'''draw the correct pixbuf and name'''
|
||||
def draw_contact(self, jid, account):
|
||||
'''draw the correct state image and name'''
|
||||
model = self.tree.get_model()
|
||||
iters = self.get_user_iter(jid, account)
|
||||
if len(iters) == 0:
|
||||
|
@ -189,19 +189,46 @@ class Roster_window:
|
|||
if u.priority > prio:
|
||||
prio = u.priority
|
||||
user = u
|
||||
jabber_state_images = self.pixbufs
|
||||
for iter in iters:
|
||||
if jid.find('@') <= 0: # It's an agent
|
||||
img = self.pixbufs[user.show]
|
||||
if jid.find('@aim.') != -1:
|
||||
state_images = self.transports_state_images['aim']
|
||||
elif jid.find('@gadugadu.') != -1:
|
||||
state_images = self.transports_state_images['gadugadu']
|
||||
elif jid.find('@icq.') != -1:
|
||||
state_images = self.transports_state_images['icq']
|
||||
elif jid.find('@msn.') != -1:
|
||||
state_images = self.transports_state_images['msn']
|
||||
elif jid.find('@yahoo.') != -1:
|
||||
state_images = self.transports_state_images['yahoo']
|
||||
else:
|
||||
state_images = jabber_state_images
|
||||
|
||||
if jid.find('@') == -1: # if not '@' it's an agent
|
||||
if name.find('aim.') != -1:
|
||||
state_images = self.transports_state_images['aim']
|
||||
elif name.find('gadugadu.') != -1:
|
||||
state_images = self.transports_state_images['gadugadu']
|
||||
elif name.find('icq.') != -1:
|
||||
state_images = self.transports_state_images['icq']
|
||||
elif name.find('msn.') != -1:
|
||||
state_images = self.transports_state_images['msn']
|
||||
elif name.find('yahoo.') != -1:
|
||||
state_images = self.transports_state_images['yahoo']
|
||||
else:
|
||||
state_images = jabber_state_images
|
||||
|
||||
img = state_images[user.show]
|
||||
elif self.plugin.queues[account].has_key(jid):
|
||||
img = self.pixbufs['message']
|
||||
img = state_images['message']
|
||||
else:
|
||||
if user.sub != 'both':
|
||||
if user.ask == 'subscribe':
|
||||
img = self.pixbufs['requested']
|
||||
img = state_images['requested']
|
||||
else:
|
||||
img = self.pixbufs['not in the roster']
|
||||
img = state_images['not in the roster']
|
||||
else:
|
||||
img = self.pixbufs[user.show]
|
||||
img = state_images[user.show]
|
||||
model.set_value(iter, 0, img)
|
||||
model.set_value(iter, 1, name)
|
||||
|
||||
|
@ -368,15 +395,15 @@ class Roster_window:
|
|||
not self.plugin.queues[account].has_key(user.jid):
|
||||
if len(luser) > 1:
|
||||
luser.remove(user)
|
||||
self.redraw_jid(user.jid, account)
|
||||
self.draw_contact(user.jid, account)
|
||||
elif not showOffline:
|
||||
self.remove_user(user, account)
|
||||
else:
|
||||
self.redraw_jid(user.jid, account)
|
||||
self.draw_contact(user.jid, account)
|
||||
else:
|
||||
if not self.get_user_iter(user.jid, account):
|
||||
self.add_user_to_roster(user.jid, account)
|
||||
self.redraw_jid(user.jid, account)
|
||||
self.draw_contact(user.jid, account)
|
||||
#Print status in chat window
|
||||
if self.plugin.windows[account]['chats'].has_key(user.jid):
|
||||
self.plugin.windows[account]['chats'][user.jid].set_image(user.jid)
|
||||
|
@ -877,7 +904,7 @@ class Roster_window:
|
|||
if not self.plugin.queues[account].has_key(jid):
|
||||
model = self.tree.get_model()
|
||||
self.plugin.queues[account][jid] = Queue.Queue(50)
|
||||
self.redraw_jid(jid, account)
|
||||
self.draw_contact(jid, account)
|
||||
if self.plugin.systray_enabled:
|
||||
self.plugin.systray.add_jid(jid, account)
|
||||
self.plugin.queues[account][jid].put((msg, tim))
|
||||
|
@ -1102,7 +1129,7 @@ class Roster_window:
|
|||
for u in self.contacts[account][jid]:
|
||||
u.name = new_text
|
||||
gajim.connections[account].update_user(jid, new_text, u.groups)
|
||||
self.redraw_jid(jid, account)
|
||||
self.draw_contact(jid, account)
|
||||
elif type == 'group':
|
||||
old_name = model.get_value(iter, 1)
|
||||
#get all users in that group
|
||||
|
@ -1153,14 +1180,18 @@ class Roster_window:
|
|||
image.set_from_file(file)
|
||||
break
|
||||
|
||||
def init_transports_pixbufs(self, arg, dirname, fnames):
|
||||
def init_transports_state_images(self, dirname, fnames):
|
||||
name_only = os.path.basename(dirname)
|
||||
if name_only == 'transports' or name_only == '.svn':
|
||||
return
|
||||
for fname in fnames:
|
||||
transport_kind = name_only
|
||||
return
|
||||
self.transports_pixbufs[transport_kind][fname] = 'be'
|
||||
for fname in fnames: # fname is abs
|
||||
if fname == '.svn':
|
||||
continue
|
||||
state = unicode(fname[:-4]) # without extension
|
||||
state = state.replace('_', ' ') # make '_' a space for dict key
|
||||
path_to_fname = os.path.join(dirname, fname)
|
||||
image = gtk.Image()
|
||||
image.set_from_file(path_to_fname)
|
||||
image.show()
|
||||
self.transports_state_images[name_only][state] = image
|
||||
|
||||
def reload_pixbufs(self):
|
||||
self.mkpixbufs()
|
||||
|
@ -1387,8 +1418,16 @@ class Roster_window:
|
|||
model.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
||||
self.tree.set_model(model)
|
||||
self.mkpixbufs()
|
||||
self.transports_pixbufs = { 'aim': {}, 'gadugadu': {}, 'icq': {}, 'msn': {}, 'yahoo': {} }
|
||||
os.path.walk('../data/iconsets/transports', self.init_transports_pixbufs, None) # arg is None
|
||||
self.transports_state_images = { 'aim': {}, 'gadugadu': {}, 'icq': {}, 'msn': {}, 'yahoo': {} }
|
||||
|
||||
path = '../data/iconsets/transports'
|
||||
folders = os.listdir('../data/iconsets/transports')
|
||||
for folder in folders:
|
||||
if folder == '.svn':
|
||||
continue
|
||||
folder = os.path.join(path, folder)
|
||||
image_files = os.listdir(folder)
|
||||
self.init_transports_state_images(folder, image_files)
|
||||
|
||||
liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.Image,
|
||||
gobject.TYPE_STRING)
|
||||
|
|
|
@ -211,7 +211,7 @@ class Tabbed_chat_window(chat.Chat):
|
|||
self.plugin.roster.nb_unread -= 1
|
||||
self.plugin.roster.show_title()
|
||||
del self.plugin.queues[self.account][jid]
|
||||
self.plugin.roster.redraw_jid(jid, self.account)
|
||||
self.plugin.roster.draw_contact(jid, self.account)
|
||||
if self.plugin.systray_enabled:
|
||||
self.plugin.systray.remove_jid(jid, self.account)
|
||||
showOffline = gajim.config.get('showoffline')
|
||||
|
|