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