diff --git a/plugins/gtkgui/config.py b/plugins/gtkgui/config.py
index 41232f115..e1a382842 100644
--- a/plugins/gtkgui/config.py
+++ b/plugins/gtkgui/config.py
@@ -217,6 +217,13 @@ class preference_Window:
else:
self.plugin.config['mergeaccounts'] = 0
self.plugin.roster.regroup = self.plugin.config['mergeaccounts']
+ #use emoticons
+ chk = self.xml.get_widget('use_emoticons_checkbutton')
+ if chk.get_active():
+ self.plugin.config['useemoticons'] = 1
+ self.plugin.roster.mkemoticons()
+ else:
+ self.plugin.config['useemoticons'] = 0
#autopopup
if self.chk_autopp.get_active():
self.plugin.config['autopopup'] = 1
@@ -356,6 +363,8 @@ class preference_Window:
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Preferences', APP)
self.window = self.xml.get_widget('Preferences')
self.plugin = plugin
+ self.xml.get_widget('image_emoticons').set_from_file(\
+ 'plugins/gtkgui/pixmaps/smile.png')
self.combo_iconstyle = self.xml.get_widget('combo_iconstyle')
self.chk_autopp = self.xml.get_widget('chk_autopopup')
self.chk_autoppaway = self.xml.get_widget('chk_autopopupaway')
@@ -400,6 +409,10 @@ class preference_Window:
#Merge accounts
st = self.plugin.config['mergeaccounts']
self.xml.get_widget('merge_checkbutton').set_active(st)
+
+ #Use emoticons
+ st = self.plugin.config['useemoticons']
+ self.xml.get_widget('use_emoticons_checkbutton').set_active(st)
#Autopopup
st = self.plugin.config['autopopup']
diff --git a/plugins/gtkgui/emoticons/angry.png b/plugins/gtkgui/emoticons/angry.png
new file mode 100644
index 000000000..22e285d6b
Binary files /dev/null and b/plugins/gtkgui/emoticons/angry.png differ
diff --git a/plugins/gtkgui/emoticons/bat.png b/plugins/gtkgui/emoticons/bat.png
new file mode 100644
index 000000000..276760305
Binary files /dev/null and b/plugins/gtkgui/emoticons/bat.png differ
diff --git a/plugins/gtkgui/emoticons/beer.png b/plugins/gtkgui/emoticons/beer.png
new file mode 100644
index 000000000..b28d7e322
Binary files /dev/null and b/plugins/gtkgui/emoticons/beer.png differ
diff --git a/plugins/gtkgui/emoticons/biggrin.png b/plugins/gtkgui/emoticons/biggrin.png
new file mode 100644
index 000000000..dc3d8df97
Binary files /dev/null and b/plugins/gtkgui/emoticons/biggrin.png differ
diff --git a/plugins/gtkgui/emoticons/blush.png b/plugins/gtkgui/emoticons/blush.png
new file mode 100644
index 000000000..c4343210a
Binary files /dev/null and b/plugins/gtkgui/emoticons/blush.png differ
diff --git a/plugins/gtkgui/emoticons/boy.png b/plugins/gtkgui/emoticons/boy.png
new file mode 100644
index 000000000..9502e878b
Binary files /dev/null and b/plugins/gtkgui/emoticons/boy.png differ
diff --git a/plugins/gtkgui/emoticons/brflower.png b/plugins/gtkgui/emoticons/brflower.png
new file mode 100644
index 000000000..d8be5ea61
Binary files /dev/null and b/plugins/gtkgui/emoticons/brflower.png differ
diff --git a/plugins/gtkgui/emoticons/brheart.png b/plugins/gtkgui/emoticons/brheart.png
new file mode 100644
index 000000000..598d894a5
Binary files /dev/null and b/plugins/gtkgui/emoticons/brheart.png differ
diff --git a/plugins/gtkgui/emoticons/coffee.png b/plugins/gtkgui/emoticons/coffee.png
new file mode 100644
index 000000000..2890fe5f7
Binary files /dev/null and b/plugins/gtkgui/emoticons/coffee.png differ
diff --git a/plugins/gtkgui/emoticons/coolglasses.png b/plugins/gtkgui/emoticons/coolglasses.png
new file mode 100644
index 000000000..cbb49eda1
Binary files /dev/null and b/plugins/gtkgui/emoticons/coolglasses.png differ
diff --git a/plugins/gtkgui/emoticons/cry.png b/plugins/gtkgui/emoticons/cry.png
new file mode 100644
index 000000000..4136f7ff2
Binary files /dev/null and b/plugins/gtkgui/emoticons/cry.png differ
diff --git a/plugins/gtkgui/emoticons/cuffs.png b/plugins/gtkgui/emoticons/cuffs.png
new file mode 100644
index 000000000..ed033ad07
Binary files /dev/null and b/plugins/gtkgui/emoticons/cuffs.png differ
diff --git a/plugins/gtkgui/emoticons/devil.png b/plugins/gtkgui/emoticons/devil.png
new file mode 100644
index 000000000..f469a1d7b
Binary files /dev/null and b/plugins/gtkgui/emoticons/devil.png differ
diff --git a/plugins/gtkgui/emoticons/drink.png b/plugins/gtkgui/emoticons/drink.png
new file mode 100644
index 000000000..970a96131
Binary files /dev/null and b/plugins/gtkgui/emoticons/drink.png differ
diff --git a/plugins/gtkgui/emoticons/flower.png b/plugins/gtkgui/emoticons/flower.png
new file mode 100644
index 000000000..6151ff5aa
Binary files /dev/null and b/plugins/gtkgui/emoticons/flower.png differ
diff --git a/plugins/gtkgui/emoticons/frowning.png b/plugins/gtkgui/emoticons/frowning.png
new file mode 100644
index 000000000..ab04d33e7
Binary files /dev/null and b/plugins/gtkgui/emoticons/frowning.png differ
diff --git a/plugins/gtkgui/emoticons/girl.png b/plugins/gtkgui/emoticons/girl.png
new file mode 100644
index 000000000..e86a01120
Binary files /dev/null and b/plugins/gtkgui/emoticons/girl.png differ
diff --git a/plugins/gtkgui/emoticons/heart.png b/plugins/gtkgui/emoticons/heart.png
new file mode 100644
index 000000000..3088575f5
Binary files /dev/null and b/plugins/gtkgui/emoticons/heart.png differ
diff --git a/plugins/gtkgui/emoticons/hugleft.png b/plugins/gtkgui/emoticons/hugleft.png
new file mode 100644
index 000000000..fcc4c79e8
Binary files /dev/null and b/plugins/gtkgui/emoticons/hugleft.png differ
diff --git a/plugins/gtkgui/emoticons/hugright.png b/plugins/gtkgui/emoticons/hugright.png
new file mode 100644
index 000000000..5865d5a96
Binary files /dev/null and b/plugins/gtkgui/emoticons/hugright.png differ
diff --git a/plugins/gtkgui/emoticons/kiss.png b/plugins/gtkgui/emoticons/kiss.png
new file mode 100644
index 000000000..b951063f7
Binary files /dev/null and b/plugins/gtkgui/emoticons/kiss.png differ
diff --git a/plugins/gtkgui/emoticons/lamp.png b/plugins/gtkgui/emoticons/lamp.png
new file mode 100644
index 000000000..f1b63364c
Binary files /dev/null and b/plugins/gtkgui/emoticons/lamp.png differ
diff --git a/plugins/gtkgui/emoticons/mail.png b/plugins/gtkgui/emoticons/mail.png
new file mode 100644
index 000000000..776b380ba
Binary files /dev/null and b/plugins/gtkgui/emoticons/mail.png differ
diff --git a/plugins/gtkgui/emoticons/music.png b/plugins/gtkgui/emoticons/music.png
new file mode 100644
index 000000000..56fa9c3d0
Binary files /dev/null and b/plugins/gtkgui/emoticons/music.png differ
diff --git a/plugins/gtkgui/emoticons/no.png b/plugins/gtkgui/emoticons/no.png
new file mode 100644
index 000000000..c63797b9e
Binary files /dev/null and b/plugins/gtkgui/emoticons/no.png differ
diff --git a/plugins/gtkgui/emoticons/oh.png b/plugins/gtkgui/emoticons/oh.png
new file mode 100644
index 000000000..41907a232
Binary files /dev/null and b/plugins/gtkgui/emoticons/oh.png differ
diff --git a/plugins/gtkgui/emoticons/phone.png b/plugins/gtkgui/emoticons/phone.png
new file mode 100644
index 000000000..b5600c959
Binary files /dev/null and b/plugins/gtkgui/emoticons/phone.png differ
diff --git a/plugins/gtkgui/emoticons/photo.png b/plugins/gtkgui/emoticons/photo.png
new file mode 100644
index 000000000..d23027c97
Binary files /dev/null and b/plugins/gtkgui/emoticons/photo.png differ
diff --git a/plugins/gtkgui/emoticons/pussy.png b/plugins/gtkgui/emoticons/pussy.png
new file mode 100644
index 000000000..3b1473e08
Binary files /dev/null and b/plugins/gtkgui/emoticons/pussy.png differ
diff --git a/plugins/gtkgui/emoticons/rainbow.png b/plugins/gtkgui/emoticons/rainbow.png
new file mode 100644
index 000000000..01146145c
Binary files /dev/null and b/plugins/gtkgui/emoticons/rainbow.png differ
diff --git a/plugins/gtkgui/emoticons/smile.png b/plugins/gtkgui/emoticons/smile.png
new file mode 100644
index 000000000..981b7d915
Binary files /dev/null and b/plugins/gtkgui/emoticons/smile.png differ
diff --git a/plugins/gtkgui/emoticons/star.png b/plugins/gtkgui/emoticons/star.png
new file mode 100644
index 000000000..8d947d839
Binary files /dev/null and b/plugins/gtkgui/emoticons/star.png differ
diff --git a/plugins/gtkgui/emoticons/stare.png b/plugins/gtkgui/emoticons/stare.png
new file mode 100644
index 000000000..69b393e5d
Binary files /dev/null and b/plugins/gtkgui/emoticons/stare.png differ
diff --git a/plugins/gtkgui/emoticons/tongue.png b/plugins/gtkgui/emoticons/tongue.png
new file mode 100644
index 000000000..33cfb22e3
Binary files /dev/null and b/plugins/gtkgui/emoticons/tongue.png differ
diff --git a/plugins/gtkgui/emoticons/unhappy.png b/plugins/gtkgui/emoticons/unhappy.png
new file mode 100644
index 000000000..464b3de42
Binary files /dev/null and b/plugins/gtkgui/emoticons/unhappy.png differ
diff --git a/plugins/gtkgui/emoticons/wink.png b/plugins/gtkgui/emoticons/wink.png
new file mode 100644
index 000000000..d00392599
Binary files /dev/null and b/plugins/gtkgui/emoticons/wink.png differ
diff --git a/plugins/gtkgui/emoticons/yes.png b/plugins/gtkgui/emoticons/yes.png
new file mode 100644
index 000000000..91ea768e2
Binary files /dev/null and b/plugins/gtkgui/emoticons/yes.png differ
diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade
index 890007058..cffa3da9e 100644
--- a/plugins/gtkgui/gtkgui.glade
+++ b/plugins/gtkgui/gtkgui.glade
@@ -4173,6 +4173,116 @@ on the server.
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ True
+ Use Emoticons
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+
+
+ 0
+ False
+ False
+
+
+
+
+
+
+
+
+ 0
+ True
+ True
+
+
+
+
+
+ True
+
+
+ 0
+ False
+ True
+
+
+
+
+
+
+
+
+ False
+ True
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+ 0
+ True
+ True
+
+
+
+
+
+ True
+ Emoticons
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+ 0
+ False
+ False
+
+
+
+
+ tab
+
+
+
5
diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py
index bcb3697dc..0c3301d0c 100644
--- a/plugins/gtkgui/gtkgui.py
+++ b/plugins/gtkgui/gtkgui.py
@@ -223,7 +223,20 @@ class message_Window:
buffer.insert_with_tags_by_name(end_iter, ttxt, tag)
if len(otxt) > 0:
- buffer.insert(end_iter, otxt)
+ beg = 0
+ if self.plugin.config['useemoticons']:
+ index = 0
+ while index < len(otxt):
+ if otxt[index] in self.plugin.roster.begin_emot:
+ for s in self.plugin.roster.emoticons:
+ l = len(s)
+ if s == otxt[index:index+l]:
+ buffer.insert(end_iter, otxt[beg:index])
+ buffer.insert_pixbuf(end_iter, self.plugin.roster.emoticons[s])
+ index+=l
+ beg = index
+ index+=1
+ buffer.insert(end_iter, otxt[beg:])
#scroll to the end of the textview
conversation.scroll_to_mark(buffer.get_mark('end'), 0.1, 0, 0, 0)
@@ -1721,6 +1734,102 @@ class roster_Window:
self.plugin.windows[account]['browser'] = \
browseAgent_Window(self.plugin, account)
+ def mkemoticons(self):
+ """initialize emoticons array"""
+ emots = {':-)' : 'smile.png',
+ ':)' : 'smile.png',
+ ';-)' : 'wink.png',
+ ';)' : 'wink.png',
+ ':-p' : 'tongue.png',
+ ':-P' : 'tongue.png',
+ ':p' : 'tongue.png',
+ ':P' : 'tongue.png',
+ ':d' : 'biggrin.png',
+ ':D' : 'biggrin.png',
+ ':-d' : 'biggrin.png',
+ ':-D' : 'biggrin.png',
+ ':>' : 'biggrin.png',
+ ':->' : 'biggrin.png',
+ ':(' : 'unhappy.png',
+ ':-(' : 'unhappy.png',
+ ';(' : 'cry.png',
+ ';-(' : 'cry.png',
+ ':\'(' : 'cry.png',
+ ';\'-(' : 'cry.png',
+ ':-O' : 'oh.png',
+ ':-o' : 'oh.png',
+ ':O' : 'oh.png',
+ ':o' : 'oh.png',
+ ':-@' : 'angry.png',
+ ':@' : 'angry.png',
+ ':-$' : 'blush.png',
+ ':$' : 'blush.png',
+ ':-|' : 'stare.png',
+ ':|' : 'stare.png',
+ ':-S' : 'frowing.png',
+ ':-s' : 'frowing.png',
+ ':S' : 'frowing.png',
+ ':s' : 'frowing.png',
+ 'B-)' : 'coolglasses.png',
+ 'B)' : 'coolglasses.png',
+ '8-)' : 'coolglasses.png',
+ '8)' : 'coolglasses.png',
+ '(H)' : 'coolglasses.png',
+ '(h)' : 'coolglasses.png',
+ ':-[' : 'bat.png',
+ ':[' : 'bat.png',
+ '(l)' : 'heart.png',
+ '(L)' : 'heart.png',
+ '(u)' : 'brheart.png',
+ '(U)' : 'brheart.png',
+ '(y)' : 'yes.png',
+ '(Y)' : 'yes.png',
+ '(n)' : 'no.png',
+ '(N)' : 'no.png',
+ '(z)' : 'boy.png',
+ '(Z)' : 'boy.png',
+ '(@)' : 'pussy.png',
+ '(})' : 'hugleft.png',
+ '({)' : 'hugright.png',
+ '(6)' : 'devil.png',
+ '(r)' : 'rainbow.png',
+ '(R)' : 'rainbow.png',
+ '(w)' : 'brflower.png',
+ '(W)' : 'brflower.png',
+ '(f)' : 'flower.png',
+ '(F)' : 'flower.png',
+ '(p)' : 'photo.png',
+ '(P)' : 'photo.png',
+ '(t)' : 'phone.png',
+ '(T)' : 'phone.png',
+ '(*)' : 'star.png',
+ '(8)' : 'music.png',
+ '(i)' : 'lamp.png',
+ '(I)' : 'lamp.png',
+ '(b)' : 'beer.png',
+ '(B)' : 'beer.png',
+ '(d)' : 'drink.png',
+ '(D)' : 'drink.png',
+ '(c)' : 'coffee.png',
+ '(C)' : 'coffee.png',
+ '(%)' : 'cuffs.png',
+ '(e)' : 'mail.png',
+ '(E)' : 'mail.png',
+ '(k)' : 'kiss.png',
+ '(K)' : 'kiss.png'
+ }
+ path = 'plugins/gtkgui/emoticons/'
+ self.emoticons = {}
+ self.begin_emot = ""
+ for e in emots:
+ file = path + emots[e]
+ if not os.path.exists(file):
+ continue
+ pix = gtk.gdk.pixbuf_new_from_file(file)
+ self.emoticons[e] = pix
+ if not e[0] in self.begin_emot:
+ self.begin_emot += e[0]
+
def mkpixbufs(self):
"""initialise pixbufs array"""
iconstyle = self.plugin.config['iconstyle']
@@ -1915,6 +2024,8 @@ class roster_Window:
model.set_sort_column_id(1, gtk.SORT_ASCENDING)
self.tree.set_model(model)
self.mkpixbufs()
+ if self.plugin.config['useemoticons']:
+ self.mkemoticons()
liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.Image)
self.cb = gtk.ComboBox()
@@ -2580,6 +2691,7 @@ class plugin:
'userfont': 'Sans 10',\
'saveposition': 1,\
'mergeaccounts': 0,\
+ 'useemoticons': 1,\
'x-position': 0,\
'y-position': 0,\
'width': 150,\
diff --git a/plugins/gtkgui/pixmaps/smile.png b/plugins/gtkgui/pixmaps/smile.png
new file mode 100644
index 000000000..981b7d915
Binary files /dev/null and b/plugins/gtkgui/pixmaps/smile.png differ