Author: js Date: 2008-07-22 23:08:52 +0200 (Tue, 22 Jul 2008) New Revision: 9986
Modified: trunk/data/glade/message_window.glade trunk/src/chat_control.py trunk/src/common/config.py trunk/src/common/configpaths.py trunk/src/common/gajim.py trunk/src/common/helpers.py trunk/src/common/pep.py trunk/src/dialogs.py trunk/src/gtkgui_helpers.py Log: Show mood in chat window.
Modified: trunk/data/glade/message_window.glade =================================================================== --- trunk/data/glade/message_window.glade 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/data/glade/message_window.glade 2008-07-22 21:08:52 UTC (rev 9986) @@ -64,6 +64,42 @@ </packing> </child> <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="mood_image"> + <property name="no_show_all">True</property> + <property name="stock">gtk-missing-image</property> + </widget> + </child> + <child> + <widget class="GtkImage" id="activity_image"> + <property name="no_show_all">True</property> + <property name="stock">gtk-missing-image</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="tune_image"> + <property name="no_show_all">True</property> + <property name="stock">gtk-missing-image</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">15</property> + <property name="position">2</property> + </packing> + </child> + <child> <widget class="GtkEventBox" id="avatar_eventbox"> <property name="visible">True</property> <property name="visible_window">False</property> @@ -77,7 +113,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> </widget> @@ -111,23 +147,22 @@ <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> - <widget class="GtkButton" id="authentication_button"> - <property name="no_show_all">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="relief">GTK_RELIEF_NONE</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <child> - <widget class="GtkImage" id="lock_image"> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="stock">gtk-dialog-authentication</property> - <property name="icon_size">1</property> - </widget> - </child> - </widget> + <widget class="GtkButton" id="authentication_button"> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="no_show_all">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <child> + <widget class="GtkImage" id="lock_image"> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-dialog-authentication</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> <packing> <property name="expand">False</property> - <property name="padding">0</property> </packing> </child> <child>
Modified: trunk/src/chat_control.py =================================================================== --- trunk/src/chat_control.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/chat_control.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -45,7 +45,9 @@ from common.logger import Constants constants = Constants() from common.rst_xhtml_generator import create_xhtml -from common.xmpp.protocol import NS_XHTML, NS_FILE, NS_MUC, NS_RECEIPTS, NS_ESESSION +from common.pep import MOODS +from common.xmpp.protocol import NS_XHTML, NS_FILE, NS_MUC, NS_RECEIPTS +from common.xmpp.protocol import NS_ESESSION
try: import gtkspell @@ -1083,6 +1085,12 @@
self.update_toolbar()
+ self._mood_image = self.xml.get_widget('mood_image') + self._activity_image = self.xml.get_widget('activity_image') + self._tune_image = self.xml.get_widget('tune_image') + + self.update_mood() + # keep timeout id and window obj for possible big avatar # it is on enter-notify and leave-notify so no need to be # per jid @@ -1186,6 +1194,37 @@ else: self._convert_to_gc_button.set_sensitive(False)
+ def update_mood(self): + if self.contact.mood.has_key('mood'): + mood = gobject.markup_escape_text( + self.contact.mood['mood']) + else: + mood = None + + if self.contact.mood.has_key('text'): + text = gobject.markup_escape_text( + self.contact.mood['text']) + else: + text = '' + + if mood is not None: + if mood in MOODS: + self._mood_image.set_from_pixbuf( + gtkgui_helpers.load_mood_icon( + mood).get_pixbuf()) + # Translate standard moods + mood = _(mood) + else: + self._mood_image.set_from_pixbuf( + gtkgui_helpers.load_mood_icon( + 'unknown').get_pixbuf()) + + self._mood_image.set_tooltip_markup('<b>%s</b>%s%s' % + (mood, '\n' if text is not '' else '', text)) + self._mood_image.show() + else: + self._mood_image.hide() + def on_avatar_eventbox_enter_notify_event(self, widget, event): ''' we enter the eventbox area so we under conditions add a timeout
Modified: trunk/src/common/config.py =================================================================== --- trunk/src/common/config.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/common/config.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -51,6 +51,7 @@ class Config:
DEFAULT_ICONSET = 'dcraven' + DEFAULT_MOOD_ICONSET = 'default' if sys.platform == 'darwin': DEFAULT_OPENWITH = 'open' DEFAULT_BROWSER = 'open -a Safari' @@ -92,6 +93,7 @@ 'last_status_msg_offline': [ opt_str, '' ], 'trayicon': [ opt_bool, True, '', True ], 'iconset': [ opt_str, DEFAULT_ICONSET, '', True ], + 'mood_iconset': [ opt_str, DEFAULT_MOOD_ICONSET, '', True ], 'use_transports_iconsets': [ opt_bool, True, '', True ], 'inmsgcolor': [ opt_color, '#a34526', '', True ], 'outmsgcolor': [ opt_color, '#164e6f', '', True ],
Modified: trunk/src/common/configpaths.py =================================================================== --- trunk/src/common/configpaths.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/common/configpaths.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -79,9 +79,9 @@
# LOG is deprecated k = ( 'LOG', 'LOG_DB', 'VCARD', 'AVATAR', 'MY_EMOTS', - 'MY_ICONSETS', 'MY_CACERTS') + 'MY_ICONSETS', 'MY_MOOD_ICONSETS', 'MY_CACERTS') v = (u'logs', u'logs.db', u'vcards', u'avatars', u'emoticons', - u'iconsets', u'cacerts.pem') + u'iconsets', u'moods', u'cacerts.pem')
if os.name == 'nt': v = map(lambda x: x.capitalize(), v)
Modified: trunk/src/common/gajim.py =================================================================== --- trunk/src/common/gajim.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/common/gajim.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -81,6 +81,7 @@ AVATAR_PATH = gajimpaths['AVATAR'] MY_EMOTS_PATH = gajimpaths['MY_EMOTS'] MY_ICONSETS_PATH = gajimpaths['MY_ICONSETS'] +MY_MOOD_ICONSETS_PATH = gajimpaths['MY_MOOD_ICONSETS'] MY_CACERTS = gajimpaths['MY_CACERTS'] TMP = gajimpaths['TMP'] DATA_DIR = gajimpaths['DATA']
Modified: trunk/src/common/helpers.py =================================================================== --- trunk/src/common/helpers.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/common/helpers.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -1179,6 +1179,12 @@ elif os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, iconset)): return os.path.join(gajim.MY_ICONSETS_PATH, iconset)
+def get_mood_iconset_path(iconset): + if os.path.isdir(os.path.join(gajim.DATA_DIR, 'moods', iconset)): + return os.path.join(gajim.DATA_DIR, 'moods', iconset) + elif os.path.isdir(os.path.join(gajim.MY_MOOD_ICONSETS_PATH, iconset)): + return os.path.join(gajim.MY_MOOD_ICONSETS_PATH, iconset) + def get_transport_path(transport): if os.path.isdir(os.path.join(gajim.DATA_DIR, 'iconsets', 'transports', transport)):
Modified: trunk/src/common/pep.py =================================================================== --- trunk/src/common/pep.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/common/pep.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -1,5 +1,16 @@ from common import gajim, xmpp
+MOODS = ['None', 'afraid', 'amazed', 'angry', 'annoyed', 'anxious', 'aroused', + 'ashamed', 'bored', 'brave', 'calm', 'cold', 'confused', 'contented', + 'cranky', 'curious', 'depressed', 'disappointed', 'disgusted', + 'distracted', 'embarrassed', 'excited', 'flirtatious', 'frustrated', + 'grumpy', 'guilty', 'happy', 'hot', 'humbled', 'humiliated', 'hungry', + 'hurt', 'impressed', 'in_awe', 'in_love', 'indignant', 'interested', + 'intoxicated', 'invincible', 'jealous', 'lonely', 'mean', 'moody', + 'nervous', 'neutral', 'offended', 'playful', 'proud', 'relieved', + 'remorseful', 'restless', 'sad', 'sarcastic', 'serious', 'shocked', + 'shy', 'sick', 'sleepy', 'stressed', 'surprised', 'thirsty', 'worried'] + def user_mood(items, name, jid): has_child = False retract = False
Modified: trunk/src/dialogs.py =================================================================== --- trunk/src/dialogs.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/dialogs.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -37,6 +37,7 @@ import dataforms_widget
from random import randrange +from common.pep import MOODS
try: import gtkspell @@ -442,19 +443,7 @@ self.window.destroy()
class ChangeMoodDialog: - moods = ['None', 'afraid', 'amazed', 'angry', 'annoyed', 'anxious', - 'aroused', 'ashamed', 'bored', 'brave', 'calm', - 'cold', 'confused', 'contented', 'cranky', 'curious', - 'depressed', 'disappointed', 'disgusted', 'distracted', - 'embarrassed', 'excited', 'flirtatious', 'frustrated', - 'grumpy', 'guilty', 'happy', 'hot', 'humbled', - 'humiliated', 'hungry', 'hurt', 'impressed', 'in_awe', - 'in_love', 'indignant', 'interested', 'intoxicated', - 'invincible', 'jealous', 'lonely', 'mean', 'moody', - 'nervous', 'neutral', 'offended', 'playful', 'proud', - 'relieved', 'remorseful', 'restless', 'sad', 'sarcastic', - 'serious', 'shocked', 'shy', 'sick', 'sleepy', - 'stressed', 'surprised', 'thirsty', 'worried'] + moods = MOODS def __init__(self, account): self.account = account self.xml = gtkgui_helpers.get_glade('change_mood_dialog.glade')
Modified: trunk/src/gtkgui_helpers.py =================================================================== --- trunk/src/gtkgui_helpers.py 2008-07-22 20:29:31 UTC (rev 9985) +++ trunk/src/gtkgui_helpers.py 2008-07-22 21:08:52 UTC (rev 9986) @@ -882,10 +882,17 @@ def load_icon(icon_name): '''load an icon from the iconset in 16x16''' iconset = gajim.config.get('iconset') - path = os.path.join(helpers.get_iconset_path(iconset), '16x16' + '/') + path = os.path.join(helpers.get_iconset_path(iconset), '16x16', '') icon_list = _load_icon_list([icon_name], path) return icon_list[icon_name]
+def load_mood_icon(icon_name): + '''load an icon from the mood iconset in 16x16''' + iconset = gajim.config.get('mood_iconset') + path = os.path.join(helpers.get_mood_iconset_path(iconset), '') + icon_list = _load_icon_list([icon_name], path) + return icon_list[icon_name] + def load_icons_meta(): '''load and return - AND + small icons to put on top left of an icon for meta contacts.'''