Changeset 10023

Show
Ignore:
Timestamp:
07/25/08 02:43:01 (3 months ago)
Author:
js
Message:

* Better rendering of mood in roster.

(Only takes space if needed now)

* Possibility to disable display of mood in roster from preferences.

(Also works on the fly with the new rendering method)

* Minor improvements in the translation of the moods to German.

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/data/glade/preferences_window.glade

    r9828 r10023  
    7474                            </child> 
    7575                            <child> 
    76                               <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> 
    77                                 <property name="visible">True</property> 
    78                                 <property name="can_focus">True</property> 
    79                                 <property name="tooltip" translatable="yes">If checked, Gajim will sort contacts in roster window and groupchats by their status and not by the shown name</property> 
    80                                 <property name="label" translatable="yes">_Sort contacts by status</property> 
     76                              <widget class="GtkCheckButton" id="show_mood_in_roster_checkbutton"> 
     77                                <property name="visible">True</property> 
     78                                <property name="can_focus">True</property> 
     79                                <property name="tooltip" translatable="yes">If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats</property> 
     80                                <property name="label" translatable="yes">Display m_ood of contacts in roster</property> 
    8181                                <property name="use_underline">True</property> 
    8282                                <property name="response_id">0</property> 
    8383                                <property name="draw_indicator">True</property> 
    84                                 <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> 
     84                                <signal name="toggled" handler="on_show_mood_in_roster_checkbutton_toggled"/> 
    8585                              </widget> 
    8686                              <packing> 
     
    8888                                <property name="fill">False</property> 
    8989                                <property name="position">2</property> 
     90                              </packing> 
     91                            </child> 
     92                            <child> 
     93                              <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> 
     94                                <property name="visible">True</property> 
     95                                <property name="can_focus">True</property> 
     96                                <property name="tooltip" translatable="yes">If checked, Gajim will sort contacts in roster window and groupchats by their status and not by the shown name</property> 
     97                                <property name="label" translatable="yes">_Sort contacts by status</property> 
     98                                <property name="use_underline">True</property> 
     99                                <property name="response_id">0</property> 
     100                                <property name="draw_indicator">True</property> 
     101                                <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> 
     102                              </widget> 
     103                              <packing> 
     104                                <property name="expand">False</property> 
     105                                <property name="fill">False</property> 
     106                                <property name="position">3</property> 
    90107                              </packing> 
    91108                            </child> 
  • trunk/po/de.po

    r10007 r10023  
    47144714#: ../src/common/helpers.py:350 
    47154715msgid "afraid" 
    4716 msgstr "Fürchtend" 
     4716msgstr "Verängstigt" 
    47174717 
    47184718#: ../src/common/helpers.py:350 
    47194719msgid "amazed" 
    4720 msgstr "Überrascht" 
     4720msgstr "Verblüfft" 
    47214721 
    47224722#: ../src/common/helpers.py:350 
  • trunk/src/common/pep.py

    r10022 r10023  
    6363                                del contact.mood['text'] 
    6464 
    65         gajim.interface.roster.draw_contact(user, name) 
     65        gajim.interface.roster.draw_mood(user, name) 
    6666        ctrl = gajim.interface.msg_win_mgr.get_control(user, name) 
    6767        if ctrl: 
  • trunk/src/config.py

    r9906 r10023  
    9393                # Display avatars in roster 
    9494                st = gajim.config.get('show_avatars_in_roster') 
    95                 self.xml.get_widget('show_avatars_in_roster_checkbutton').set_active(st) 
     95                self.xml.get_widget('show_avatars_in_roster_checkbutton'). \ 
     96                        set_active(st)  
    9697 
    9798                # Display status msg under contact name in roster 
    9899                st = gajim.config.get('show_status_msgs_in_roster') 
    99                 self.xml.get_widget('show_status_msgs_in_roster_checkbutton').set_active( 
    100                         st) 
     100                self.xml.get_widget('show_status_msgs_in_roster_checkbutton'). \ 
     101                        set_active( st) 
     102 
     103                # Display mood in roster 
     104                st = gajim.config.get('show_mood_in_roster') 
     105                self.xml.get_widget('show_mood_in_roster_checkbutton'). \ 
     106                        set_active(st) 
    101107 
    102108                # Sort contacts by show 
     
    527533                        if ctl.type_id == message_control.TYPE_GC: 
    528534                                ctl.update_ui() 
     535 
     536        def on_show_mood_in_roster_checkbutton_toggled(self, widget): 
     537                self.on_checkbutton_toggled(widget, 'show_mood_in_roster') 
     538                gajim.interface.roster.setup_and_draw_roster() 
    529539 
    530540        def on_sort_by_show_checkbutton_toggled(self, widget): 
  • trunk/src/roster_window.py

    r10022 r10023  
    7777C_JID, # the jid of the row 
    7878C_ACCOUNT, # cellrenderer text that holds account name 
    79 C_MOOD, 
     79C_MOOD_PIXBUF, 
    8080C_AVATAR_PIXBUF, # avatar_pixbuf 
    8181C_PADLOCK_PIXBUF, # use for account row only 
     
    609609                        for c, acc in brothers: 
    610610                                self.draw_contact(c.jid, acc) 
     611                                self.draw_mood(c.jid, acc) 
    611612                                self.draw_avatar(c.jid, acc) 
    612613 
     
    653654 
    654655                self.draw_contact(jid, account) 
     656                self.draw_mood(jid, account) 
    655657                self.draw_avatar(jid, account) 
    656658                self.draw_account(account) 
     
    710712                        for c, acc in contacts: 
    711713                                self.draw_contact(c.jid, acc) 
     714                                self.draw_mood(c.jid, acc) 
    712715                                self.draw_avatar(c.jid, acc) 
    713716                        for group in contact.get_shown_groups(): 
     
    766769                                        for c, acc in brothers: 
    767770                                                self.draw_contact(c.jid, acc) 
     771                                                self.draw_mood(c.jid, acc) 
    768772                                                self.draw_avatar(c.jid, acc) 
    769773 
     
    11751179                                self.model[child_iter][C_IMG] = img 
    11761180                                self.model[child_iter][C_NAME] = name 
    1177                                  
    1178                                 if contact.mood.has_key('mood') \ 
    1179                                 and contact.mood['mood'] in MOODS: 
    1180                                         self.model[child_iter][C_MOOD] = \ 
    1181                                                 gtkgui_helpers.load_mood_icon( 
    1182                                                 contact.mood['mood']) 
    1183                                 elif contact.mood.has_key('mood'): 
    1184                                         self.model[child_iter][C_MOOD] = \ 
    1185                                                 gtkgui_helpers.load_mood_icon( 
    1186                                                 'unknown') 
    1187                                 else: 
    1188                                         self.model[child_iter][C_MOOD] = None 
    11891181 
    11901182                        # We are a little brother 
     
    12051197 
    12061198 
     1199        def draw_mood(self, jid, account): 
     1200                iters = self._get_contact_iter(jid, account, model = self.model) 
     1201                if not iters or not gajim.config.get('show_mood_in_roster'): 
     1202                        return 
     1203                jid = self.model[iters[0]][C_JID] 
     1204                jid = jid.decode('utf-8') 
     1205                contact = gajim.contacts.get_contact(account, jid) 
     1206                if contact.mood.has_key('mood') \ 
     1207                and contact.mood['mood'] in MOODS: 
     1208                        pixbuf = gtkgui_helpers.load_mood_icon( 
     1209                                contact.mood['mood']).get_pixbuf() 
     1210                elif contact.mood.has_key('mood'): 
     1211                        pixbuf = gtkgui_helpers.load_mood_image( 
     1212                                'unknown').get_pixbuf() 
     1213                else: 
     1214                        pixbuf = None 
     1215                for child_iter in iters: 
     1216                        self.model[child_iter][C_MOOD_PIXBUF] = pixbuf 
     1217                return False 
     1218 
     1219 
    12071220        def draw_avatar(self, jid, account): 
    12081221                iters = self._get_contact_iter(jid, account, model = self.model) 
     
    12511264                        for jid in jids: 
    12521265                                self.draw_contact(jid, account) 
     1266                                self.draw_mood(jid, account) 
    12531267                                self.draw_avatar(jid, account) 
    12541268                                yield True 
     
    12641278                # avatar_pixbuf, padlock_pixbuf) 
    12651279                self.model = gtk.TreeStore(gtk.Image, str, str, str, str, 
    1266                         gtk.Image, gtk.gdk.Pixbuf, gtk.gdk.Pixbuf) 
     1280                        gtk.gdk.Pixbuf, gtk.gdk.Pixbuf, gtk.gdk.Pixbuf) 
    12671281 
    12681282                self.model.set_sort_func(1, self._compareIters) 
     
    36663680                        for c, acc in brothers: 
    36673681                                self.draw_contact(c.jid, acc) 
     3682                                self.draw_mood(c.jid, acc) 
    36683683                                self.draw_avatar(c.jid, acc) 
    36693684 
     
    41724187                                renderer.set_property('xpad', 8) 
    41734188 
     4189 
     4190        def _fill_mood_pixbuf_rederer(self, column, renderer, model, titer, 
     4191        data = None): 
     4192                '''When a row is added, set properties for avatar renderer''' 
     4193                theme = gajim.config.get('roster_theme') 
     4194                type_ = model[titer][C_TYPE] 
     4195                if type_ in ('group', 'account'): 
     4196                        renderer.set_property('visible', False) 
     4197                        return 
     4198 
     4199                # allocate space for the icon only if needed 
     4200                if model[titer][C_MOOD_PIXBUF]: 
     4201                        renderer.set_property('visible', True) 
     4202                else: 
     4203                        renderer.set_property('visible', False) 
     4204                if type_: # prevent type_ = None, see http://trac.gajim.org/ticket/2534 
     4205                        if not model[titer][C_JID] or not model[titer][C_ACCOUNT]: 
     4206                                # This can append at the moment we add the row 
     4207                                return 
     4208                        jid = model[titer][C_JID].decode('utf-8') 
     4209                        account = model[titer][C_ACCOUNT].decode('utf-8') 
     4210                        if jid in gajim.newly_added[account]: 
     4211                                renderer.set_property('cell-background', gajim.config.get( 
     4212                                        'just_connected_bg_color')) 
     4213                        elif jid in gajim.to_be_removed[account]: 
     4214                                renderer.set_property('cell-background', gajim.config.get( 
     4215                                        'just_disconnected_bg_color')) 
     4216                        else: 
     4217                                color = gajim.config.get_per('themes', theme, 'contactbgcolor') 
     4218                                if color: 
     4219                                        renderer.set_property('cell-background', color) 
     4220                                else: 
     4221                                        renderer.set_property('cell-background', None) 
     4222                renderer.set_property('xalign', 1) # align pixbuf to the right 
     4223 
     4224 
    41744225        def _fill_avatar_pixbuf_rederer(self, column, renderer, model, titer, 
    41754226        data = None): 
     
    59766027                col.set_cell_data_func(render_text, self._nameCellDataFunc, None) 
    59776028 
    5978                 if gajim.config.get('show_mood_in_roster'): 
    5979                         render_image = cell_renderer_image.CellRendererImage( 
    5980                                 0, 0) 
    5981                         col.pack_start(render_image, expand = False) 
    5982                         col.add_attribute(render_image, 'image', C_MOOD) 
    5983                         col.set_cell_data_func(render_image, 
    5984                                 self._iconCellDataFunc, None) 
     6029                render_pixbuf = gtk.CellRendererPixbuf() 
     6030                col.pack_start(render_pixbuf, expand = False) 
     6031                col.add_attribute(render_pixbuf, 'pixbuf', C_MOOD_PIXBUF) 
     6032                col.set_cell_data_func(render_pixbuf, 
     6033                        self._fill_mood_pixbuf_rederer, None) 
    59856034 
    59866035                if gajim.config.get('avatar_position_in_roster') == 'right':