Many changes :
New class and variable names New variable fot glade file Button in chat window instead of label New image loader
This commit is contained in:
parent
f913e4cd0e
commit
60b56d4649
12 changed files with 1505 additions and 709 deletions
BIN
plugins/gtkgui/about.png
Normal file
BIN
plugins/gtkgui/about.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
File diff suppressed because it is too large
Load diff
|
@ -24,9 +24,10 @@ from gtk import TRUE, FALSE
|
|||
import gtk.glade,gobject
|
||||
import os,string,time,Queue
|
||||
import common.optparser,common.sleepy
|
||||
#CONFPATH = "~/.gajim/config"
|
||||
Wbrowser = 0
|
||||
Waccounts = 0
|
||||
browserWindow = 0
|
||||
accountsWindow = 0
|
||||
|
||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
||||
|
||||
class user:
|
||||
"""Informations concerning each users"""
|
||||
|
@ -49,7 +50,7 @@ class user:
|
|||
self.resource = args[6]
|
||||
else: raise TypeError, 'bad arguments'
|
||||
|
||||
class info_user:
|
||||
class infoUser_Window:
|
||||
"""Class for user's information window"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
|
@ -61,19 +62,34 @@ class info_user:
|
|||
|
||||
def on_close(self, widget):
|
||||
"""Save user's informations and update the roster on the Jabber server"""
|
||||
#TODO: send things to server only if changes are done
|
||||
#update: to know if things have changed to send things
|
||||
# to server only if changes are done
|
||||
update = 0
|
||||
#update user.name if it's not ""
|
||||
newName = self.entry_name.get_text()
|
||||
if newName != '':
|
||||
self.user.name = newName
|
||||
if newName != self.user.name:
|
||||
update = 1
|
||||
if newName != '':
|
||||
self.user.name = newName
|
||||
#update user.groups and redraw the user in the roster
|
||||
old_groups = self.user.groups
|
||||
self.r.remove_user(self.user)
|
||||
self.user.groups = []
|
||||
model = self.list2.get_model()
|
||||
model.foreach(self.add_grp_to_user)
|
||||
self.r.add_user(self.user)
|
||||
self.r.queueOUT.put(('UPDUSER', (self.user.jid, self.user.name, \
|
||||
self.user.groups)))
|
||||
for g in old_groups:
|
||||
if not g in self.user.groups:
|
||||
update = 1
|
||||
break
|
||||
if not update:
|
||||
for g in self.user.groups:
|
||||
if not g in old_groups:
|
||||
update = 1
|
||||
break
|
||||
if update:
|
||||
self.r.queueOUT.put(('UPDUSER', (self.user.jid, self.user.name, \
|
||||
self.user.groups)))
|
||||
self.delete_event(self)
|
||||
|
||||
def add_grp(self, model, path, iter, stors):
|
||||
|
@ -110,25 +126,25 @@ class info_user:
|
|||
"""Initialize both available and current listStores"""
|
||||
#list available
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
for i in self.r.l_group.keys():
|
||||
if i != 'Agents' and i not in self.user.groups:
|
||||
for g in self.r.l_group.keys():
|
||||
if g != 'Agents' and g not in self.user.groups:
|
||||
iter = store.append()
|
||||
store.set(iter, 0, i)
|
||||
store.set(iter, 0, g)
|
||||
self.list1.set_model(store)
|
||||
column = gtk.TreeViewColumn('Available', gtk.CellRendererText(), text=0)
|
||||
self.list1.append_column(column)
|
||||
|
||||
#list_current
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
for i in self.user.groups:
|
||||
for g in self.user.groups:
|
||||
iter = store.append()
|
||||
store.set(iter, 0, i)
|
||||
store.set(iter, 0, g)
|
||||
self.list2.set_model(store)
|
||||
column = gtk.TreeViewColumn('Available', gtk.CellRendererText(), text=0)
|
||||
self.list2.append_column(column)
|
||||
|
||||
def __init__(self, user, roster):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Info_user')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Info_user')
|
||||
self.window = xml.get_widget("Info_user")
|
||||
self.r = roster
|
||||
self.user = user
|
||||
|
@ -155,7 +171,7 @@ class info_user:
|
|||
self.on_new_key_pressed)
|
||||
|
||||
|
||||
class prefs:
|
||||
class preference_Window:
|
||||
"""Class for Preferences window"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
|
@ -259,20 +275,40 @@ class prefs:
|
|||
self.write_cfg()
|
||||
self.window.destroy()
|
||||
|
||||
def change_notebook_page(self, number):
|
||||
self.notebook.set_current_page(number)
|
||||
|
||||
def on_lookfeel_button_clicked(self, widget, data=None):
|
||||
self.change_notebook_page(0)
|
||||
|
||||
def on_events_button_clicked(self, widget, data=None):
|
||||
self.change_notebook_page(1)
|
||||
|
||||
def on_presence_button_clicked(self, widget, data=None):
|
||||
self.change_notebook_page(2)
|
||||
|
||||
def __init__(self, roster):
|
||||
"""Initialize Preference window"""
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Prefs')
|
||||
self.window = xml.get_widget("Prefs")
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'preferences_window')
|
||||
self.window = xml.get_widget('preferences_window')
|
||||
self.r = roster
|
||||
self.da_in = xml.get_widget("drawing_in")
|
||||
self.da_out = xml.get_widget("drawing_out")
|
||||
self.da_status = xml.get_widget("drawing_status")
|
||||
self.combo_iconstyle = xml.get_widget("combo_iconstyle")
|
||||
self.chk_autopp = xml.get_widget("chk_autopopup")
|
||||
self.chk_autoaway = xml.get_widget("chk_autoaway")
|
||||
self.spin_autoawaytime = xml.get_widget("spin_autoawaytime")
|
||||
self.chk_autoxa = xml.get_widget("chk_autoxa")
|
||||
self.spin_autoxatime = xml.get_widget("spin_autoxatime")
|
||||
self.da_in = xml.get_widget('drawing_in')
|
||||
self.da_out = xml.get_widget('drawing_out')
|
||||
self.da_status = xml.get_widget('drawing_status')
|
||||
self.combo_iconstyle = xml.get_widget('combo_iconstyle')
|
||||
self.chk_autopp = xml.get_widget('chk_autopopup')
|
||||
self.chk_autoaway = xml.get_widget('chk_autoaway')
|
||||
self.spin_autoawaytime = xml.get_widget('spin_autoawaytime')
|
||||
self.chk_autoxa = xml.get_widget('chk_autoxa')
|
||||
self.spin_autoxatime = xml.get_widget('spin_autoxatime')
|
||||
self.notebook = xml.get_widget('preferences_notebook')
|
||||
|
||||
button = xml.get_widget('lookfeel_button')
|
||||
button.connect('clicked', self.on_lookfeel_button_clicked)
|
||||
button = xml.get_widget('events_button')
|
||||
button.connect('clicked', self.on_events_button_clicked)
|
||||
button = xml.get_widget('presence_button')
|
||||
button.connect('clicked', self.on_presence_button_clicked)
|
||||
|
||||
#Color for incomming messages
|
||||
colSt = self.r.plugin.config['inmsgcolor']
|
||||
|
@ -311,34 +347,33 @@ class prefs:
|
|||
self.combo_iconstyle.entry.set_text(self.r.iconstyle)
|
||||
|
||||
#Autopopup
|
||||
st = 0
|
||||
if self.r.plugin.config.has_key('autopopup'):
|
||||
st = self.r.plugin.config['autopopup']
|
||||
else:
|
||||
st = 0
|
||||
self.chk_autopp.set_active(st)
|
||||
|
||||
#Autoaway
|
||||
st = 1
|
||||
if self.r.plugin.config.has_key('autoaway'):
|
||||
st = self.r.plugin.config['autoaway']
|
||||
else:
|
||||
st = 1
|
||||
self.chk_autoaway.set_active(st)
|
||||
|
||||
#Autoawaytime
|
||||
st = 10
|
||||
if self.r.plugin.config.has_key('autoawaytime'):
|
||||
st = self.r.plugin.config['autoawaytime']
|
||||
else:
|
||||
st = 10
|
||||
self.spin_autoawaytime.set_value(st)
|
||||
|
||||
#Autoxa
|
||||
st = 1
|
||||
if self.r.plugin.config.has_key('autoxa'):
|
||||
st = self.r.plugin.config['autoxa']
|
||||
else:
|
||||
st = 1
|
||||
self.chk_autoxa.set_active(st)
|
||||
|
||||
#Autoxatime
|
||||
st = 20
|
||||
if self.r.plugin.config.has_key('autoxatime'):
|
||||
st = self.r.plugin.config['autoxatime']
|
||||
else:
|
||||
st = 20
|
||||
self.spin_autoxatime.set_value(st)
|
||||
|
||||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
|
@ -346,7 +381,7 @@ class prefs:
|
|||
self.on_color_button_clicked)
|
||||
xml.signal_connect('on_ok_clicked', self.on_ok)
|
||||
|
||||
class away_msg:
|
||||
class awayMsg_Window:
|
||||
"""Class for Away Message Window"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
|
@ -361,22 +396,21 @@ class away_msg:
|
|||
def run(self):
|
||||
"""Wait for Ok button to be pressed and return away messsage"""
|
||||
rep = self.window.run()
|
||||
msg = ''
|
||||
if rep == gtk.RESPONSE_OK:
|
||||
beg, end = self.txtBuffer.get_bounds()
|
||||
msg = self.txtBuffer.get_text(beg, end, 0)
|
||||
self.window.destroy()
|
||||
if not msg:
|
||||
msg = ""
|
||||
return msg
|
||||
|
||||
def __init__(self):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Away_msg')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Away_msg')
|
||||
self.window = xml.get_widget("Away_msg")
|
||||
txt = xml.get_widget("textview")
|
||||
self.txtBuffer = txt.get_buffer()
|
||||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
|
||||
class add:
|
||||
class addContact_Window:
|
||||
"""Class for Add user window"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
|
@ -394,7 +428,7 @@ class add:
|
|||
|
||||
def __init__(self, roster, jid=None):
|
||||
self.r = roster
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Add')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Add')
|
||||
self.entry_who = xml.get_widget('entry_who')
|
||||
self.textview_sub = xml.get_widget("textview_sub")
|
||||
if jid:
|
||||
|
@ -403,30 +437,30 @@ class add:
|
|||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
xml.signal_connect('on_button_sub_clicked', self.on_subscribe)
|
||||
|
||||
class warning:
|
||||
class warning_Window:
|
||||
"""Class for warning window : print a warning message"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
self.window.destroy()
|
||||
|
||||
def __init__(self, txt):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Warning')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Warning')
|
||||
self.window = xml.get_widget("Warning")
|
||||
xml.get_widget('label').set_text(txt)
|
||||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
|
||||
class about:
|
||||
class about_Window:
|
||||
"""Class for about window"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
self.Wabout.destroy()
|
||||
|
||||
def __init__(self):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'About')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'About')
|
||||
self.Wabout = xml.get_widget("About")
|
||||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
|
||||
class account_pref:
|
||||
class accountPreference_Window:
|
||||
"""Class for account informations"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
|
@ -448,10 +482,10 @@ class account_pref:
|
|||
name = self.entryName.get_text()
|
||||
jid = self.entryJid.get_text()
|
||||
if (name == ''):
|
||||
warning('You must enter a name for this account')
|
||||
warning_Window('You must enter a name for this account')
|
||||
return 0
|
||||
if (jid == '') or (string.count(jid, '@') != 1):
|
||||
warning('You must enter a Jabber ID for this account\n\
|
||||
warning_Window('You must enter a Jabber ID for this account\n\
|
||||
For example : login@hostname')
|
||||
return 0
|
||||
else:
|
||||
|
@ -464,7 +498,7 @@ class account_pref:
|
|||
#if it's a new account
|
||||
else:
|
||||
if name in self.accs.r.accounts:
|
||||
warning('An account already has this name')
|
||||
warning_Window('An account already has this name')
|
||||
return 0
|
||||
#if we neeed to register a new account
|
||||
if self.check.get_active():
|
||||
|
@ -483,7 +517,7 @@ class account_pref:
|
|||
|
||||
#info must be a dictionnary
|
||||
def __init__(self, accs, infos = {}):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Account')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Account')
|
||||
self.window = xml.get_widget("Account")
|
||||
self.entryPass = xml.get_widget("entry_password")
|
||||
self.entryRessource = xml.get_widget("entry_ressource")
|
||||
|
@ -491,22 +525,21 @@ class account_pref:
|
|||
self.entryName = xml.get_widget("entry_name")
|
||||
self.entryJid = xml.get_widget("entry_jid")
|
||||
self.accs = accs
|
||||
self.mod = FALSE
|
||||
if infos:
|
||||
self.mod = TRUE
|
||||
self.acc = infos['name']
|
||||
self.init_account(infos)
|
||||
self.check.set_sensitive(FALSE)
|
||||
else:
|
||||
self.mod = FALSE
|
||||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
xml.signal_connect('on_save_clicked', self.on_save_clicked)
|
||||
|
||||
class accounts:
|
||||
class accounts_Window:
|
||||
"""Class for accounts window : lists of accounts"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
global Waccounts
|
||||
Waccounts = 0
|
||||
global accountsWindow
|
||||
accountsWindow = 0
|
||||
self.window.destroy()
|
||||
|
||||
def init_accounts(self):
|
||||
|
@ -525,7 +558,7 @@ class accounts:
|
|||
|
||||
def on_new_clicked(self, widget):
|
||||
"""When new button is clicked : open an account information window"""
|
||||
account_pref(self)
|
||||
accountPreference_Window(self)
|
||||
|
||||
def on_delete_clicked(self, widget):
|
||||
"""When delete button is clicked :
|
||||
|
@ -551,11 +584,11 @@ class accounts:
|
|||
'@' + self.r.plugin.accounts[account]["hostname"]
|
||||
infos['password'] = self.r.plugin.accounts[account]["password"]
|
||||
infos['ressource'] = self.r.plugin.accounts[account]["ressource"]
|
||||
account_pref(self, infos)
|
||||
accountPreference_Window(self, infos)
|
||||
|
||||
def __init__(self, roster):
|
||||
self.r = roster
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Accounts')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Accounts')
|
||||
self.window = xml.get_widget("Accounts")
|
||||
self.treeview = xml.get_widget("treeview")
|
||||
self.modButt = xml.get_widget("modify_button")
|
||||
|
@ -577,7 +610,7 @@ class accounts:
|
|||
xml.signal_connect('on_modify_clicked', self.on_modify_clicked)
|
||||
self.init_accounts()
|
||||
|
||||
class confirm:
|
||||
class confirm_Window:
|
||||
"""Class for confirmation window :
|
||||
window that appears to confirm the removal of a contact"""
|
||||
def delete_event(self, widget):
|
||||
|
@ -596,7 +629,7 @@ class confirm:
|
|||
self.delete_event(self)
|
||||
|
||||
def __init__(self, roster, iter):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Confirm')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Confirm')
|
||||
self.window = xml.get_widget('Confirm')
|
||||
self.r = roster
|
||||
self.iter = iter
|
||||
|
@ -606,7 +639,7 @@ class confirm:
|
|||
xml.signal_connect('on_okbutton_clicked', self.req_usub)
|
||||
xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||
|
||||
class authorize:
|
||||
class authorize_Window:
|
||||
"""Class for authorization window :
|
||||
window that appears when a user wants to add us to his/her roster"""
|
||||
def delete_event(self, widget):
|
||||
|
@ -618,7 +651,7 @@ class authorize:
|
|||
self.r.queueOUT.put(('AUTH', self.jid))
|
||||
self.delete_event(self)
|
||||
if not self.r.l_contact.has_key(self.jid):
|
||||
add(self.r, self.jid)
|
||||
addContact_Window(self.r, self.jid)
|
||||
|
||||
def deny(self, widget):
|
||||
"""refuse the request"""
|
||||
|
@ -626,7 +659,7 @@ class authorize:
|
|||
self.delete_event(self)
|
||||
|
||||
def __init__(self, roster, jid):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Sub_req')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Sub_req')
|
||||
self.window = xml.get_widget('Sub_req')
|
||||
self.r = roster
|
||||
self.jid = jid
|
||||
|
@ -635,7 +668,7 @@ class authorize:
|
|||
xml.signal_connect('on_button_deny_clicked', self.deny)
|
||||
xml.signal_connect('on_button_close_clicked', self.delete_event)
|
||||
|
||||
class agent_reg:
|
||||
class agentRegistration_Window:
|
||||
"""Class for agent registration window :
|
||||
window that appears when we want to subscribe to an agent"""
|
||||
def delete_event(self, widget):
|
||||
|
@ -668,7 +701,7 @@ class agent_reg:
|
|||
self.delete_event(self)
|
||||
|
||||
def __init__(self, agent, infos, roster):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'agent_reg')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'agent_reg')
|
||||
self.agent = agent
|
||||
self.infos = infos
|
||||
self.r = roster
|
||||
|
@ -682,13 +715,13 @@ class agent_reg:
|
|||
xml.signal_connect('on_button_cancel_clicked', self.delete_event)
|
||||
xml.signal_connect('on_button_ok_clicked', self.on_ok)
|
||||
|
||||
class browser:
|
||||
"""Class for rbowser agent window :
|
||||
class browseAgent_Window:
|
||||
"""Class for bowser agent window :
|
||||
to know the agents on the selected server"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
global Wbrowser
|
||||
Wbrowser = 0
|
||||
global browserWindow
|
||||
browserWindow = 0
|
||||
self.window.destroy()
|
||||
|
||||
def browse(self):
|
||||
|
@ -719,7 +752,7 @@ class browser:
|
|||
self.delete_event(self)
|
||||
|
||||
def __init__(self, roster):
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'browser')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'browser')
|
||||
self.window = xml.get_widget('browser')
|
||||
self.treeview = xml.get_widget('treeview')
|
||||
self.r = roster
|
||||
|
@ -740,9 +773,9 @@ class browser:
|
|||
if self.r.connected:
|
||||
self.browse()
|
||||
else:
|
||||
warning("You must be connected to view Agents")
|
||||
warning_Window("You must be connected to view Agents")
|
||||
|
||||
class message:
|
||||
class message_Window:
|
||||
"""Class for chat window"""
|
||||
def delete_event(self, widget):
|
||||
"""close window"""
|
||||
|
@ -816,15 +849,16 @@ class message:
|
|||
def __init__(self, user, roster):
|
||||
self.user = user
|
||||
self.r = roster
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Chat')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Chat')
|
||||
self.hbox = xml.get_widget('hbox1')
|
||||
self.hbox.set_property('resize-mode', 2)
|
||||
self.window = xml.get_widget('Chat')
|
||||
self.window.set_title('Chat with ' + user.name)
|
||||
self.img = xml.get_widget('image')
|
||||
self.img.set_from_pixbuf(self.r.pixbufs[user.show])
|
||||
xml.get_widget('label_contact').set_text(user.name + ' <'\
|
||||
xml.get_widget('button_contact').set_label(user.name + ' <'\
|
||||
+ user.jid + '>')
|
||||
xml.get_widget('button_contact').set_resize_mode(gtk.RESIZE_QUEUE)
|
||||
self.message = xml.get_widget('message')
|
||||
self.message.grab_focus()
|
||||
self.conversation = xml.get_widget('conversation')
|
||||
|
@ -850,7 +884,7 @@ class message:
|
|||
color = '#00ff00' #green
|
||||
self.tagStatus.set_property("foreground", color)
|
||||
|
||||
class roster:
|
||||
class roster_Window:
|
||||
"""Class for main gtk window"""
|
||||
def add_user(self, u):
|
||||
"""Add a user to the roster and add groups if they aren't in roster"""
|
||||
|
@ -957,8 +991,8 @@ class roster:
|
|||
u.status = status
|
||||
|
||||
def on_info(self, widget, jid):
|
||||
"""Call info_user class to display user's information"""
|
||||
info_user(self.l_contact[jid]['user'], self)
|
||||
"""Call infoUser_Window class to display user's information"""
|
||||
infoUser_Window(self.l_contact[jid]['user'], self)
|
||||
|
||||
def mk_menu_c(self, event, iter):
|
||||
"""Make user's popup menu"""
|
||||
|
@ -1057,12 +1091,12 @@ class roster:
|
|||
|
||||
def on_req_usub(self, widget, iter):
|
||||
"""Remove a user"""
|
||||
window_confirm = confirm(self, iter)
|
||||
window_confirm = confirm_Window(self, iter)
|
||||
|
||||
def on_status_changed(self, widget):
|
||||
"""When we change our status"""
|
||||
if widget.name != 'online' and widget.name != 'offline':
|
||||
w = away_msg()
|
||||
w = awayMsg_Window()
|
||||
txt = w.run()
|
||||
else:
|
||||
txt = widget.name
|
||||
|
@ -1071,30 +1105,31 @@ class roster:
|
|||
|
||||
def on_prefs(self, widget):
|
||||
"""When preferences is selected :
|
||||
call the prefs class"""
|
||||
window = prefs(self)
|
||||
call the preference_Window class"""
|
||||
window = preference_Window(self)
|
||||
|
||||
def on_add(self, widget):
|
||||
"""When add user is selected :
|
||||
call the add class"""
|
||||
window_add = add(self)
|
||||
window_add = addContact_Window(self)
|
||||
|
||||
def on_about(self, widget):
|
||||
"""When about is selected :
|
||||
call the about class"""
|
||||
window_about = about()
|
||||
window_about = about_Window()
|
||||
|
||||
def on_accounts(self, widget):
|
||||
"""When accounts is seleted :
|
||||
call the accounts class to modify accounts"""
|
||||
global Waccounts
|
||||
if not Waccounts:
|
||||
Waccounts = accounts(self)
|
||||
global accountsWindow
|
||||
if not accountsWindow:
|
||||
accountsWindow = accounts_Window(self)
|
||||
|
||||
def on_quit(self, widget):
|
||||
"""When we quit the gtk plugin :
|
||||
tell that to the core and exit gtk"""
|
||||
self.queueOUT.put(('QUIT',''))
|
||||
print "plugin gtkgui stopped"
|
||||
gtk.mainquit()
|
||||
|
||||
def on_row_activated(self, widget, path, col=0):
|
||||
|
@ -1112,7 +1147,7 @@ class roster:
|
|||
if self.tab_messages.has_key(jid):
|
||||
self.tab_messages[jid].window.present()
|
||||
elif self.l_contact.has_key(jid):
|
||||
self.tab_messages[jid] = message(self.l_contact[jid]['user'], self)
|
||||
self.tab_messages[jid] = message_Window(self.l_contact[jid]['user'], self)
|
||||
if self.tab_queues.has_key(jid):
|
||||
self.tab_messages[jid].read_queue(self.tab_queues[jid])
|
||||
|
||||
|
@ -1139,7 +1174,7 @@ class roster:
|
|||
if self.tab_messages.has_key(jid):
|
||||
self.tab_messages[jid].window.present()
|
||||
elif self.l_contact.has_key(jid):
|
||||
self.tab_messages[jid] = message(self.l_contact[jid]['user'], self)
|
||||
self.tab_messages[jid] = message_Window(self.l_contact[jid]['user'], self)
|
||||
if self.tab_queues.has_key(jid):
|
||||
self.tab_messages[jid].read_queue(self.tab_queues[jid])
|
||||
else:
|
||||
|
@ -1151,9 +1186,9 @@ class roster:
|
|||
def on_browse(self, widget):
|
||||
"""When browse agent is selected :
|
||||
Call browse class"""
|
||||
global Wbrowser
|
||||
if not Wbrowser:
|
||||
Wbrowser = browser(self)
|
||||
global browserWindow
|
||||
if not browserWindow:
|
||||
browserWindow = browseAgent_Window(self)
|
||||
|
||||
def mkpixbufs(self):
|
||||
"""initialise pixbufs array"""
|
||||
|
@ -1161,17 +1196,21 @@ class roster:
|
|||
self.pixbufs = {}
|
||||
for state in ('online', 'away', 'xa', 'dnd', 'offline', \
|
||||
'requested', 'message', 'opened', 'closed', 'not in list'):
|
||||
#open an animated gif file if it exists oterelse a xpm file
|
||||
if not os.path.exists(self.path + state + '.gif'):
|
||||
if not os.path.exists(self.path + state + '.xpm'):
|
||||
print 'No such file : ' + self.path + state + '.gif / xpm'
|
||||
self.pixbufs[state] = None
|
||||
else:
|
||||
pix = gtk.gdk.pixbuf_new_from_file(self.path + state + '.xpm')
|
||||
self.pixbufs[state] = pix
|
||||
else:
|
||||
pix = gtk.gdk.pixbufAnimation(self.path + state + '.gif')
|
||||
# try to open a pixfile with the correct method
|
||||
files = []
|
||||
files.append(self.path + state + '.gif')
|
||||
files.append(self.path + state + '.png')
|
||||
files.append(self.path + state + '.xpm')
|
||||
self.pixbufs[state] = None
|
||||
for file in files:
|
||||
if not os.path.exists(file):
|
||||
continue
|
||||
fct = gtk.gdk.pixbuf_new_from_file
|
||||
if file.find('.gif') != -1:
|
||||
fct = gtk.gdk.pixbufAnimation
|
||||
pix = fct(file)
|
||||
self.pixbufs[state] = pix
|
||||
break
|
||||
|
||||
def on_show_off(self, widget):
|
||||
"""when show offline option is changed :
|
||||
|
@ -1181,7 +1220,7 @@ class roster:
|
|||
|
||||
def __init__(self, queueOUT, plug):
|
||||
# FIXME : handle no file ...
|
||||
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Gajim')
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'Gajim')
|
||||
self.window = xml.get_widget('Gajim')
|
||||
self.tree = xml.get_widget('treeview')
|
||||
self.plugin = plug
|
||||
|
@ -1268,17 +1307,25 @@ class plugin:
|
|||
"""Class called by the core in a new thread"""
|
||||
def wait(self, what):
|
||||
"""Wait for a message from Core"""
|
||||
#TODO: timeout, save messages that don't fit
|
||||
#TODO: timeout
|
||||
temp_q = Queue.Queue(50)
|
||||
while 1:
|
||||
if not self.queueIN.empty():
|
||||
ev = self.queueIN.get()
|
||||
if ev[0] == what:
|
||||
return ev[1]
|
||||
if ev[0] == what and ev[1][0] == 'GtkGui':
|
||||
#Restore messages
|
||||
while not temp_q.empty():
|
||||
ev2 = temp_q.get()
|
||||
self.queueIN.put(ev)
|
||||
return ev[1][1]
|
||||
else:
|
||||
#Save messages
|
||||
temp_q.put(ev)
|
||||
time.sleep(0.1)
|
||||
|
||||
def read_queue(self):
|
||||
"""Read queue from the core and execute commands from it"""
|
||||
global Wbrowser
|
||||
global browserWindow
|
||||
model = self.r.tree.get_model()
|
||||
while self.queueIN.empty() == 0:
|
||||
ev = self.queueIN.get()
|
||||
|
@ -1287,7 +1334,7 @@ class plugin:
|
|||
self.r.mklists(ev[1])
|
||||
self.r.draw_roster()
|
||||
elif ev[0] == 'WARNING':
|
||||
warning(ev[1])
|
||||
warning_Window(ev[1])
|
||||
elif ev[0] == 'STATUS':
|
||||
st = ""
|
||||
for i in range(7):
|
||||
|
@ -1302,8 +1349,8 @@ class plugin:
|
|||
self.r.chg_status(j, 'offline', 'Disconnected')
|
||||
elif self.r.connected == 0:
|
||||
self.r.connected = 1
|
||||
self.sleeper = common.sleepy.Sleepy(\
|
||||
self.autoawaytime*60, self.autoxatime*60)
|
||||
self.sleeper = None#common.sleepy.Sleepy(\
|
||||
#self.autoawaytime*60, self.autoxatime*60)
|
||||
|
||||
elif ev[0] == 'NOTIFY':
|
||||
jid = string.split(ev[1][0], '/')[0]
|
||||
|
@ -1366,12 +1413,12 @@ class plugin:
|
|||
if not self.r.tab_messages.has_key(jid):
|
||||
if self.r.l_contact.has_key(jid):
|
||||
self.r.tab_messages[jid] = \
|
||||
message(self.r.l_contact[jid]['user'], self.r)
|
||||
message_Window(self.r.l_contact[jid]['user'], self.r)
|
||||
if self.r.tab_messages.has_key(jid):
|
||||
self.r.tab_messages[jid].print_conversation(ev[1][1])
|
||||
|
||||
elif ev[0] == 'SUBSCRIBE':
|
||||
authorize(self.r, ev[1])
|
||||
authorize_Window(self.r, ev[1])
|
||||
elif ev[0] == 'SUBSCRIBED':
|
||||
jid = ev[1]['jid']
|
||||
if self.r.l_contact.has_key(jid):
|
||||
|
@ -1383,25 +1430,25 @@ class plugin:
|
|||
user1 = user(jid, jid, ['general'], 'online', \
|
||||
'online', 'to', ev[1]['ressource'])
|
||||
self.r.add_user(user1)
|
||||
warning("You are now authorized by " + jid)
|
||||
warning_Window("You are now authorized by " + jid)
|
||||
elif ev[0] == 'UNSUBSCRIBED':
|
||||
warning("You are now unsubscribed by " + jid)
|
||||
warning_Window("You are now unsubscribed by " + jid)
|
||||
#TODO: change icon
|
||||
elif ev[0] == 'AGENTS':
|
||||
if Wbrowser:
|
||||
Wbrowser.agents(ev[1])
|
||||
if browserWindow:
|
||||
browserWindow.agents(ev[1])
|
||||
elif ev[0] == 'AGENT_INFO':
|
||||
if not ev[1][1].has_key('instructions'):
|
||||
warning('error contacting %s' % ev[1][0])
|
||||
warning_Window('error contacting %s' % ev[1][0])
|
||||
else:
|
||||
Wreg = agent_reg(ev[1][0], ev[1][1], self.r)
|
||||
Wreg = agentRegistration_Window(ev[1][0], ev[1][1], self.r)
|
||||
#('ACC_OK', (hostname, login, pasword, name, ressource))
|
||||
elif ev[0] == 'ACC_OK':
|
||||
self.accounts[ev[1][3]] = {'ressource': ev[1][4], \
|
||||
'password': ev[1][2], 'hostname': ev[1][0], 'name': ev[1][1]}
|
||||
self.r.queueOUT.put(('CONFIG', ('accounts', self.r.plugin.accounts)))
|
||||
if (Waccounts != 0):
|
||||
Waccounts.init_accounts()
|
||||
if (accountsWindow != 0):
|
||||
accountsWindow.init_accounts()
|
||||
elif ev[0] == 'QUIT':
|
||||
self.r.on_quit(self)
|
||||
return 1
|
||||
|
@ -1436,12 +1483,12 @@ class plugin:
|
|||
gtk.threads_init()
|
||||
gtk.threads_enter()
|
||||
self.queueIN = quIN
|
||||
quOUT.put(('ASK_CONFIG', 'GtkGui'))
|
||||
quOUT.put(('ASK_CONFIG', ('GtkGui', 'GtkGui')))
|
||||
self.config = self.wait('CONFIG')
|
||||
quOUT.put(('ASK_CONFIG', 'accounts'))
|
||||
quOUT.put(('ASK_CONFIG', ('GtkGui', 'accounts')))
|
||||
self.accounts = self.wait('CONFIG')
|
||||
#TODO: if no config : default config and save it
|
||||
self.r = roster(quOUT, self)
|
||||
self.r = roster_Window(quOUT, self)
|
||||
if self.config.has_key('autoaway'):
|
||||
self.autoaway = self.config['autoaway']
|
||||
else:
|
||||
|
|
125
plugins/gtkgui/icons/sun/away.xpm
Normal file
125
plugins/gtkgui/icons/sun/away.xpm
Normal file
|
@ -0,0 +1,125 @@
|
|||
/* XPM */
|
||||
static char * away_xpm[] = {
|
||||
"16 16 106 2",
|
||||
" c None",
|
||||
". c #E3D244",
|
||||
"+ c #EAD735",
|
||||
"@ c #EDDA40",
|
||||
"# c #ECDA43",
|
||||
"$ c #ECDB47",
|
||||
"% c #EDDA42",
|
||||
"& c #EBD943",
|
||||
"* c #EAD944",
|
||||
"= c #EDDC41",
|
||||
"- c #EFDD47",
|
||||
"; c #EDDA3E",
|
||||
"> c #EEDC45",
|
||||
", c #FFEF98",
|
||||
"' c #EEDD47",
|
||||
") c #FFEE5C",
|
||||
"! c #EFDD46",
|
||||
"~ c #FFE849",
|
||||
"{ c #E7D646",
|
||||
"] c #E7D95E",
|
||||
"^ c #E9D847",
|
||||
"/ c #F7E653",
|
||||
"( c #F1E486",
|
||||
"_ c #F6EFA2",
|
||||
": c #EFE48A",
|
||||
"< c #EFEAAA",
|
||||
"[ c #E8EEE3",
|
||||
"} c #E9EFDC",
|
||||
"| c #E2EBE8",
|
||||
"1 c #E7EBD1",
|
||||
"2 c #EAEED9",
|
||||
"3 c #E8EDE6",
|
||||
"4 c #E9E398",
|
||||
"5 c #E1E7E9",
|
||||
"6 c #BEC3C5",
|
||||
"7 c #CED3D5",
|
||||
"8 c #C3C8CA",
|
||||
"9 c #EAECEE",
|
||||
"0 c #E4E8E0",
|
||||
"a c #E7EEE5",
|
||||
"b c #E0E6E6",
|
||||
"c c #DAE1E0",
|
||||
"d c #DBE4E5",
|
||||
"e c #E2EBE9",
|
||||
"f c #E1E9E9",
|
||||
"g c #E2E8E3",
|
||||
"h c #E7EEEF",
|
||||
"i c #E0E6E7",
|
||||
"j c #C1C6C8",
|
||||
"k c #D7DCDE",
|
||||
"l c #C3C8C9",
|
||||
"m c #F1F3F4",
|
||||
"n c #E8EDEB",
|
||||
"o c #E2E7E3",
|
||||
"p c #E4ECE5",
|
||||
"q c #DAE2E1",
|
||||
"r c #D6DEDE",
|
||||
"s c #D6DFDF",
|
||||
"t c #E0E9EA",
|
||||
"u c #E1EAEB",
|
||||
"v c #E2EAEB",
|
||||
"w c #E4EBEC",
|
||||
"x c #DAE1E2",
|
||||
"y c #E2E8E9",
|
||||
"z c #E4EAEB",
|
||||
"A c #CDD2D2",
|
||||
"B c #EDF2ED",
|
||||
"C c #E3E8E6",
|
||||
"D c #E3EBE4",
|
||||
"E c #DDE5E2",
|
||||
"F c #D9E1E0",
|
||||
"G c #DBE3E3",
|
||||
"H c #E3EDEE",
|
||||
"I c #E4EEEF",
|
||||
"J c #E1E9EA",
|
||||
"K c #DDE4E5",
|
||||
"L c #DCE3E4",
|
||||
"M c #E1E7E8",
|
||||
"N c #E3EAEB",
|
||||
"O c #CDD2D3",
|
||||
"P c #C0C5C7",
|
||||
"Q c #E5EDEE",
|
||||
"R c #DEE4E1",
|
||||
"S c #E0E7E3",
|
||||
"T c #E6EDE7",
|
||||
"U c #E6EDED",
|
||||
"V c #E7F0F1",
|
||||
"W c #E5EFF0",
|
||||
"X c #E2E9EA",
|
||||
"Y c #E6EDEE",
|
||||
"Z c #D4DCDD",
|
||||
"` c #D0D7D8",
|
||||
" . c #BEC5C5",
|
||||
".. c #C9D2D2",
|
||||
"+. c #C4CECE",
|
||||
"@. c #C6CECF",
|
||||
"#. c #C9D0D1",
|
||||
"$. c #E8F1F2",
|
||||
"%. c #C3CACB",
|
||||
"&. c #BFC5C6",
|
||||
"*. c #D5DCDD",
|
||||
"=. c #CACFD0",
|
||||
"-. c #CCD1D2",
|
||||
";. c #C4CBCC",
|
||||
">. c #CBD2D2",
|
||||
",. c #B7C0C2",
|
||||
" ",
|
||||
" . + ",
|
||||
" @ # $ . ",
|
||||
" % @ & * = - - ",
|
||||
" ; > , , , , ' ) - ",
|
||||
" ! , , ~ ~ , , { ",
|
||||
"] ] , , ~ ~ ~ ~ , , ^ / - ",
|
||||
" ] ( _ _ ~ ~ ~ ~ , ^ ",
|
||||
" ] : < [ } | 1 2 3 4 5 6 7 ",
|
||||
"8 9 ] 0 a b c d e f g h i j k l ",
|
||||
"8 m n o p q r s t u v w x y z A ",
|
||||
"8 8 B C D E F G H I J K L M N O ",
|
||||
" P Q R S T U V W v X K N Y 6 ",
|
||||
" 8 Z ` ...+.@.#.$.%.&.*.=. ",
|
||||
" -.;. >.,. -. ",
|
||||
" "};
|
21
plugins/gtkgui/icons/sun/closed.xpm
Normal file
21
plugins/gtkgui/icons/sun/closed.xpm
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* XPM */
|
||||
static char * closed_xpm[] = {
|
||||
"16 16 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
" ",
|
||||
" ",
|
||||
" .. ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
"............... ",
|
||||
"................",
|
||||
"............... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" .. ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
64
plugins/gtkgui/icons/sun/dnd.xpm
Normal file
64
plugins/gtkgui/icons/sun/dnd.xpm
Normal file
|
@ -0,0 +1,64 @@
|
|||
/* XPM */
|
||||
static char * dnd_xpm[] = {
|
||||
"16 16 45 1",
|
||||
" c None",
|
||||
". c #717171",
|
||||
"+ c #9E9E9E",
|
||||
"@ c #9B9B9B",
|
||||
"# c #9F9F9F",
|
||||
"$ c #A1A1A1",
|
||||
"% c #9C9C9C",
|
||||
"& c #989898",
|
||||
"* c #999999",
|
||||
"= c #A3A3A3",
|
||||
"- c #A2A2A2",
|
||||
"; c #959595",
|
||||
"> c #949494",
|
||||
", c #8F8F8F",
|
||||
"' c #898989",
|
||||
") c #969696",
|
||||
"! c #939393",
|
||||
"~ c #888888",
|
||||
"{ c #8C8C8C",
|
||||
"] c #828282",
|
||||
"^ c #7A7A7A",
|
||||
"/ c #858585",
|
||||
"( c #8A8A8A",
|
||||
"_ c #868686",
|
||||
": c #9D9D9D",
|
||||
"< c #8D8D8D",
|
||||
"[ c #8B8B8B",
|
||||
"} c #9A9A9A",
|
||||
"| c #AAAAAA",
|
||||
"1 c #797979",
|
||||
"2 c #909090",
|
||||
"3 c #838383",
|
||||
"4 c #7D7D7D",
|
||||
"5 c #808080",
|
||||
"6 c #B6A200",
|
||||
"7 c #848484",
|
||||
"8 c #979797",
|
||||
"9 c #8E8E8E",
|
||||
"0 c #878787",
|
||||
"a c #B7AE5F",
|
||||
"b c #FFE400",
|
||||
"c c #FEFFA8",
|
||||
"d c #B8AF61",
|
||||
"e c #B7AE60",
|
||||
"f c #FEF466",
|
||||
" .... .... ",
|
||||
" .+@+.....#$.. ",
|
||||
" .%&*=.$-*;;$. ",
|
||||
"..+>,')!&#;~{@..",
|
||||
".-&]^/(_,:)<[}|.",
|
||||
".-)1^2345;)6>@..",
|
||||
".$)7,890.aab%%. ",
|
||||
"..@8....abbca. ",
|
||||
" ... bcaa ",
|
||||
" abca ",
|
||||
" abca ",
|
||||
" aaabcd ",
|
||||
" abbcce ",
|
||||
" abfaa ",
|
||||
" aba ",
|
||||
" a "};
|
21
plugins/gtkgui/icons/sun/message.xpm
Normal file
21
plugins/gtkgui/icons/sun/message.xpm
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* XPM */
|
||||
static char * message_xpm[] = {
|
||||
"16 16 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
" ",
|
||||
" ",
|
||||
" .... ... ",
|
||||
" .... ... ",
|
||||
" .... .... ",
|
||||
" ..... . .. ",
|
||||
" .. .. . .. ",
|
||||
" .. .. . .. ",
|
||||
" .. ... .. .. ",
|
||||
" .. .. . .. ",
|
||||
" .. .. . .. ",
|
||||
" .. ... .. ",
|
||||
" .. .. .. ",
|
||||
" .. .. .. ",
|
||||
" .... .....",
|
||||
" "};
|
62
plugins/gtkgui/icons/sun/offline.xpm
Normal file
62
plugins/gtkgui/icons/sun/offline.xpm
Normal file
|
@ -0,0 +1,62 @@
|
|||
/* XPM */
|
||||
static char * offline2_xpm[] = {
|
||||
"16 16 43 1",
|
||||
" c None",
|
||||
". c #887D1D",
|
||||
"+ c #8A801D",
|
||||
"@ c #92851D",
|
||||
"# c #9C8D1D",
|
||||
"$ c #AC9D25",
|
||||
"% c #867B1D",
|
||||
"& c #BFB445",
|
||||
"* c #BFB863",
|
||||
"= c #BFBA76",
|
||||
"- c #C0B969",
|
||||
"; c #93871D",
|
||||
"> c #BFB23B",
|
||||
", c #BFB342",
|
||||
"' c #BFB85D",
|
||||
") c #BFBA77",
|
||||
"! c #BFAE26",
|
||||
"~ c #BFB551",
|
||||
"{ c #BFB866",
|
||||
"] c #BFB86B",
|
||||
"^ c #BFB973",
|
||||
"/ c #BFB02D",
|
||||
"( c #BFB134",
|
||||
"_ c #BFB65B",
|
||||
": c #BFB860",
|
||||
"< c #BFB13A",
|
||||
"[ c #BFB970",
|
||||
"} c #BFB54F",
|
||||
"| c #BFBA80",
|
||||
"1 c #BFB975",
|
||||
"2 c #BFB974",
|
||||
"3 c #BFB33D",
|
||||
"4 c #BFBA7A",
|
||||
"5 c #BFB030",
|
||||
"6 c #BFB136",
|
||||
"7 c #BFB868",
|
||||
"8 c #BFB450",
|
||||
"9 c #BFB85E",
|
||||
"0 c #BFB864",
|
||||
"a c #BFB44E",
|
||||
"b c #BFB96E",
|
||||
"c c #BFB550",
|
||||
"d c #C0B64D",
|
||||
" .+@#$ ",
|
||||
" %%&*=-; ",
|
||||
" %%>,'))% ",
|
||||
" %!!~{]^% ",
|
||||
" %!!/'^)% ",
|
||||
" %/(_:^)% ",
|
||||
" %!<,^][% ",
|
||||
" %!,}|12% ",
|
||||
" %!3,422% ",
|
||||
" %!56777% ",
|
||||
" %!!8999% ",
|
||||
" %!!/'90% ",
|
||||
" %!!a9b=% ",
|
||||
" %%!8b=^% ",
|
||||
" %%c*:d; ",
|
||||
" .+@#$ "};
|
81
plugins/gtkgui/icons/sun/online.xpm
Normal file
81
plugins/gtkgui/icons/sun/online.xpm
Normal file
|
@ -0,0 +1,81 @@
|
|||
/* XPM */
|
||||
static char * online_xpm[] = {
|
||||
"16 16 62 1",
|
||||
" c None",
|
||||
". c #E6CB02",
|
||||
"+ c #E6C104",
|
||||
"@ c #E6CA02",
|
||||
"# c #E6D101",
|
||||
"$ c #E6C603",
|
||||
"% c #FFDE03",
|
||||
"& c #E6C902",
|
||||
"* c #E6CD02",
|
||||
"= c #E6BA05",
|
||||
"- c #E6C004",
|
||||
"; c #FFDA04",
|
||||
"> c #FFDC04",
|
||||
", c #FFDE04",
|
||||
"' c #E6D001",
|
||||
") c #E6BA06",
|
||||
"! c #E6BC05",
|
||||
"~ c #FFD305",
|
||||
"{ c #FFD505",
|
||||
"] c #FFD704",
|
||||
"^ c #FFD904",
|
||||
"/ c #FFDB04",
|
||||
"( c #FFDD03",
|
||||
"_ c #FFDF03",
|
||||
": c #E6CC02",
|
||||
"< c #FFD106",
|
||||
"[ c #FFD306",
|
||||
"} c #FFD506",
|
||||
"| c #FFD705",
|
||||
"1 c #FFDD04",
|
||||
"2 c #E6B606",
|
||||
"3 c #FFCD07",
|
||||
"4 c #FFCF06",
|
||||
"5 c #FFD405",
|
||||
"6 c #FFD905",
|
||||
"7 c #E6C903",
|
||||
"8 c #E6B007",
|
||||
"9 c #E6B207",
|
||||
"0 c #FFC807",
|
||||
"a c #FFCB07",
|
||||
"b c #FFCC06",
|
||||
"c c #FFCE07",
|
||||
"d c #FFD007",
|
||||
"e c #E6B307",
|
||||
"f c #FFC808",
|
||||
"g c #FFCA08",
|
||||
"h c #FFCF07",
|
||||
"i c #FFD206",
|
||||
"j c #FFD605",
|
||||
"k c #E6C404",
|
||||
"l c #FFCC07",
|
||||
"m c #FFD006",
|
||||
"n c #FFD406",
|
||||
"o c #E6AE08",
|
||||
"p c #FFC608",
|
||||
"q c #FFCE06",
|
||||
"r c #E6BF04",
|
||||
"s c #E6AA09",
|
||||
"t c #E6B208",
|
||||
"u c #E6B906",
|
||||
"v c #E6BB05",
|
||||
"w c #E6B506",
|
||||
" . ",
|
||||
" + @ # ",
|
||||
" + $%& * ",
|
||||
" = -+;>,&. ' ",
|
||||
" )!~{]^/(_.: ",
|
||||
" =<[}|^/1& ",
|
||||
" 234<~5|6/(7 ",
|
||||
"890abcd[}|6/(7@ ",
|
||||
" efg3h<i5j6k ",
|
||||
" 9fal4min+ ",
|
||||
" o8pfglqdir+ ",
|
||||
" s 8tfgluv + ",
|
||||
" o 9fw u ",
|
||||
" s 9 u ",
|
||||
" 8 ",
|
||||
" "};
|
21
plugins/gtkgui/icons/sun/opened.xpm
Normal file
21
plugins/gtkgui/icons/sun/opened.xpm
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* XPM */
|
||||
static char * opened_xpm[] = {
|
||||
"16 16 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" .. ... .. ",
|
||||
" ... ... ... ",
|
||||
" ......... ",
|
||||
" ....... ",
|
||||
" ..... ",
|
||||
" ... ",
|
||||
" . "};
|
21
plugins/gtkgui/icons/sun/requested.xpm
Normal file
21
plugins/gtkgui/icons/sun/requested.xpm
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* XPM */
|
||||
static char * requested_xpm[] = {
|
||||
"16 16 2 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
" ",
|
||||
" ... ",
|
||||
" . .. ",
|
||||
" .. .. ",
|
||||
" ... .. ",
|
||||
" .. ",
|
||||
" .. ",
|
||||
" .. ",
|
||||
" .. ",
|
||||
" . ",
|
||||
" . ",
|
||||
" ",
|
||||
" . ",
|
||||
" ... ",
|
||||
" . ",
|
||||
" "};
|
68
plugins/gtkgui/icons/sun/xa.xpm
Normal file
68
plugins/gtkgui/icons/sun/xa.xpm
Normal file
|
@ -0,0 +1,68 @@
|
|||
/* XPM */
|
||||
static char * extend_away_xpm[] = {
|
||||
"16 16 49 1",
|
||||
" c None",
|
||||
". c #B8B8B8",
|
||||
"+ c #AEAEAE",
|
||||
"@ c #AFAFAF",
|
||||
"# c #B5B5B5",
|
||||
"$ c #B7B7B7",
|
||||
"% c #B0B0B0",
|
||||
"& c #A8A8A8",
|
||||
"* c #EAEAEA",
|
||||
"= c #B3B3B3",
|
||||
"- c #ABABAB",
|
||||
"; c #E2E2E2",
|
||||
"> c #DDDDDD",
|
||||
", c #EBEBEB",
|
||||
"' c #B1B1B1",
|
||||
") c #B6B6B6",
|
||||
"! c #A9A9A9",
|
||||
"~ c #D7D7D7",
|
||||
"{ c #D9D9D9",
|
||||
"] c #E8E8E8",
|
||||
"^ c #EFEFEF",
|
||||
"/ c #E3E3E3",
|
||||
"( c #E1E1E1",
|
||||
"_ c #DADADA",
|
||||
": c #F5F5F5",
|
||||
"< c #E0E0E0",
|
||||
"[ c #E7E7E7",
|
||||
"} c #D6D6D6",
|
||||
"| c #DFDFDF",
|
||||
"1 c #E5E5E5",
|
||||
"2 c #EDEDED",
|
||||
"3 c #F1F1F1",
|
||||
"4 c #B2B2B2",
|
||||
"5 c #DEDEDE",
|
||||
"6 c #E6E6E6",
|
||||
"7 c #F0F0F0",
|
||||
"8 c #F3F3F3",
|
||||
"9 c #EEEEEE",
|
||||
"0 c #ECECEC",
|
||||
"a c #ACACAC",
|
||||
"b c #E4E4E4",
|
||||
"c c #F8F8F8",
|
||||
"d c #DCDCDC",
|
||||
"e c #D4D4D4",
|
||||
"f c #ADADAD",
|
||||
"g c #A2A2A2",
|
||||
"h c #B4B4B4",
|
||||
"i c #A3D7F9",
|
||||
"j c #48B1F4",
|
||||
" ... +@#$ ",
|
||||
" %&*=$-;>,'.)## ",
|
||||
".!~{]^/(_],:*<[=",
|
||||
".]}{|1<[/123;>;4",
|
||||
"4[5(//67^890]62#",
|
||||
"a6b5~~<6ac923.. ",
|
||||
"@!&d}e(,'.32f. ",
|
||||
" #agg&+ h' ",
|
||||
" ij ji ij ",
|
||||
" ",
|
||||
" ji ij ji ",
|
||||
" ",
|
||||
" ji ",
|
||||
" ij ij ",
|
||||
" ",
|
||||
" "};
|
Loading…
Add table
Reference in a new issue