Ticket #2962: gajim-0.11.2-sexy.patch

File gajim-0.11.2-sexy.patch, 8.6 KB (added by khorne, 2 years ago)

libsexy patch against 0.11.2

  • data/glade/message_window.glade

    diff -ubBwr gajim-0.11.2/data/glade/message_window.glade gajim-0.11.2-sexy/data/glade/message_window.glade
    old new  
    104104                          </child> 
    105105 
    106106                          <child> 
     107                            <widget class="GtkEventBox" id="banner_eventbox"> 
     108                              <property name="visible">True</property> 
     109                              <property name="visible_window">True</property> 
     110                              <property name="above_child">False</property> 
     111 
     112                              <child> 
     113                                <widget class="GtkVBox" id="banner_vbox"> 
     114                                  <property name="border_width">5</property> 
     115                                  <property name="visible">True</property> 
     116                                  <property name="homogeneous">False</property> 
     117                                  <property name="spacing">0</property> 
     118 
     119                                  <child> 
    107120                            <widget class="GtkLabel" id="banner_name_label"> 
    108121                              <property name="visible">True</property> 
    109                               <property name="label">&lt;span weight=&quot;heavy&quot; size=&quot;large&quot;&gt;Contact name&lt;/span&gt; 
    110 Status message</property> 
     122                                      <property name="label">&lt;span weight=&quot;heavy&quot; size=&quot;large&quot;&gt;Contact name&lt;/span&gt;</property> 
    111123                              <property name="use_underline">False</property> 
    112124                              <property name="use_markup">True</property> 
    113125                              <property name="justify">GTK_JUSTIFY_LEFT</property> 
    114126                              <property name="wrap">False</property> 
    115127                              <property name="selectable">False</property> 
    116                               <property name="xalign">0.0500000007451</property> 
     128                                      <property name="xalign">0</property> 
    117129                              <property name="yalign">0.5</property> 
    118130                              <property name="xpad">0</property> 
    119                               <property name="ypad">5</property> 
     131                                      <property name="ypad">0</property> 
    120132                              <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> 
    121133                              <property name="width_chars">-1</property> 
    122134                              <property name="single_line_mode">False</property> 
     
    124136                            </widget> 
    125137                            <packing> 
    126138                              <property name="padding">0</property> 
     139                                      <property name="expand">False</property> 
     140                                      <property name="fill">False</property> 
     141                                    </packing> 
     142                                  </child> 
     143 
     144                                  <child> 
     145                                    <placeholder/> 
     146                                  </child> 
     147                                </widget> 
     148                              </child> 
     149                            </widget> 
     150                            <packing> 
     151                              <property name="padding">0</property> 
    127152                              <property name="expand">True</property> 
    128153                              <property name="fill">True</property> 
    129154                            </packing> 
  • src/chat_control.py

    Tylko w gajim-0.11.2-sexy/data/glade: message_window.glade.bak
    Tylko w gajim-0.11.2-sexy/data/glade: message_window.gladep
    Tylko w gajim-0.11.2-sexy/data/glade: message_window.gladep.bak
    diff -ubBwr gajim-0.11.2/src/chat_control.py gajim-0.11.2-sexy/src/chat_control.py
    old new  
    2525import dialogs 
    2626import history_window 
    2727import notify 
     28import re 
    2829 
    2930from common import gajim 
    3031from common import helpers 
     
    4344except: 
    4445        HAS_GTK_SPELL = False 
    4546 
     47try: 
     48        import sexy 
     49        HAS_SEXY = True 
     50 
     51except: 
     52        HAS_SEXY = False 
    4653 
    4754# the next script, executed in the "po" directory, 
    4855# generates the following list. 
     
    5158#echo "{_('en'):'en'",$LANG"}" 
    5259langs = {_('English'): 'en', _('Belarusian'): 'be', _('Bulgarian'): 'bg', _('Briton'): 'br', _('Czech'): 'cs', _('German'): 'de', _('Greek'): 'el', _('British'): 'en_GB', _('Esperanto'): 'eo', _('Spanish'): 'es', _('Basc'): 'eu', _('French'): 'fr', _('Croatian'): 'hr', _('Italian'): 'it', _('Norwegian (b)'): 'nb', _('Dutch'): 'nl', _('Norwegian'): 'no', _('Polish'): 'pl', _('Portuguese'): 'pt', _('Brazilian Portuguese'): 'pt_BR', _('Russian'): 'ru', _('Serbian'): 'sr', _('Slovak'): 'sk', _('Swedish'): 'sv', _('Chinese (Ch)'): 'zh_CN'} 
    5360 
     61urlfinder = re.compile("(https?://|www|ftp)[^ ]+") 
     62 
     63def make_href(match): 
     64        return '<a href="%s">%s</a>' % (match.group(), match.group()) 
    5465 
    5566################################################################################ 
    5667class ChatControlBase(MessageControl): 
     
    117128        event_keymod): 
    118129                pass # Derived should implement this rather than connecting to the event itself. 
    119130 
     131        def status_url_clicked(self, widget, url): 
     132                helpers.launch_browser_mailer('url',url) 
     133 
    120134        def __init__(self, type_id, parent_win, widget_name, contact, acct,  
    121135        resource = None): 
    122136                MessageControl.__init__(self, type_id, parent_win, widget_name, 
     
    135149                        self._on_banner_eventbox_button_press_event) 
    136150                self.handlers[id] = widget 
    137151 
     152                if HAS_SEXY: 
     153                        self.banner_status_label = sexy.UrlLabel() 
     154                        self.banner_status_label.connect('url_activated', self.status_url_clicked) 
     155                else: 
     156                        self.banner_status_label = gtk.Label() 
     157                self.banner_status_label.set_selectable(True) 
     158                self.banner_status_label.set_alignment(0,0.5) 
     159 
     160                banner_vbox = self.xml.get_widget('banner_vbox') 
     161                banner_vbox.pack_start(self.banner_status_label) 
     162                self.banner_status_label.show() 
     163 
    138164                # Create textviews and connect signals 
    139165                self.conv_textview = ConversationTextview(self.account) 
    140166 
     
    218243                                        'words feature will not be used')) 
    219244                                gajim.config.set('use_speller', False) 
    220245 
    221                 self.style_event_id = 0 
    222246                self.conv_textview.tv.show() 
    223247                self._paint_banner() 
    224248 
     
    285309 
    286310        def _paint_banner(self): 
    287311                '''Repaint banner with theme color''' 
    288                 theme = gajim.config.get('roster_theme') 
    289                 bgcolor = gajim.config.get_per('themes', theme, 'bannerbgcolor') 
    290                 textcolor = gajim.config.get_per('themes', theme, 'bannertextcolor') 
    291                 # the backgrounds are colored by using an eventbox by 
    292                 # setting the bg color of the eventbox and the fg of the name_label 
    293                 banner_eventbox = self.xml.get_widget('banner_eventbox') 
    294                 banner_name_label = self.xml.get_widget('banner_name_label') 
    295                 self.disconnect_style_event(banner_name_label) 
    296                 if bgcolor: 
    297                         banner_eventbox.modify_bg(gtk.STATE_NORMAL,  
    298                                 gtk.gdk.color_parse(bgcolor)) 
    299                         default_bg = False 
    300                 else: 
    301                         default_bg = True 
    302                 if textcolor: 
    303                         banner_name_label.modify_fg(gtk.STATE_NORMAL, 
    304                                 gtk.gdk.color_parse(textcolor)) 
    305                         default_fg = False 
    306                 else: 
    307                         default_fg = True 
    308                 if default_bg or default_fg: 
    309                         self._on_style_set_event(banner_name_label, None, default_fg, 
    310                                 default_bg) 
    311          
    312         def disconnect_style_event(self, widget): 
    313                 if self.style_event_id: 
    314                         widget.disconnect(self.style_event_id) 
    315                         del self.handlers[self.style_event_id] 
    316                         self.style_event_id = 0  
    317          
    318         def connect_style_event(self, widget, set_fg = False, set_bg = False): 
    319                 self.disconnect_style_event(widget) 
    320                 self.style_event_id = widget.connect('style-set', 
    321                         self._on_style_set_event, set_fg, set_bg) 
    322                 self.handlers[self.style_event_id] = widget 
    323          
    324         def _on_style_set_event(self, widget, style, *opts): 
    325                 '''set style of widget from style class *.Frame.Eventbox  
    326                         opts[0] == True -> set fg color 
    327                         opts[1] == True -> set bg color''' 
    328                 banner_eventbox = self.xml.get_widget('banner_eventbox') 
    329                 self.disconnect_style_event(widget) 
    330                 if opts[1]: 
    331                         bg_color = widget.style.bg[gtk.STATE_SELECTED] 
    332                         banner_eventbox.modify_bg(gtk.STATE_NORMAL, bg_color) 
    333                 if opts[0]: 
    334                         fg_color = widget.style.fg[gtk.STATE_SELECTED] 
    335                         widget.modify_fg(gtk.STATE_NORMAL, fg_color) 
    336                 self.connect_style_event(widget, opts[0], opts[1]) 
     312                pass 
    337313         
    338314        def _on_keypress_event(self, widget, event): 
    339315                if event.state & gtk.gdk.CONTROL_MASK: 
     
    10431019                jid = contact.jid 
    10441020 
    10451021                banner_name_label = self.xml.get_widget('banner_name_label') 
     1022                banner_vbox = self.xml.get_widget('banner_vbox') 
    10461023                banner_eventbox = self.xml.get_widget('banner_eventbox') 
    10471024                 
    10481025                name = contact.get_shown_name() 
     
    10741051                        self.status_tooltip.set_tip(banner_eventbox, status) 
    10751052                        self.status_tooltip.enable() 
    10761053                        banner_name_label.set_ellipsize(pango.ELLIPSIZE_END) 
     1054                        self.banner_status_label.set_ellipsize(pango.ELLIPSIZE_END) 
    10771055                        status = helpers.reduce_chars_newlines(status, max_lines = 1) 
    10781056                status_escaped = gtkgui_helpers.escape_for_pango_markup(status) 
    10791057 
     
    11041082                        # weight="heavy" size="x-large" 
    11051083                        label_text = '<span %s>%s</span><span %s>%s</span>' % \ 
    11061084                                (font_attrs, name, font_attrs_small, acct_info) 
     1085 
    11071086                if status_escaped: 
    1108                         label_text += '\n<span %s>%s</span>' %\ 
    1109                                 (font_attrs_small, status_escaped) 
     1087                        if HAS_SEXY: 
     1088                                status_text = urlfinder.sub(make_href, status_escaped) 
     1089                                status_text = '<span %s>%s</span>' % (font_attrs_small, status_text) 
     1090                        else: 
     1091                                status_text = '<span %s>%s</span>' % (font_attrs_small, status_escaped) 
     1092 
     1093                        self.banner_status_label.set_markup(status_text) 
    11101094                else: 
    11111095                        self.status_tooltip.disable() 
    11121096                # setup the label that holds name and jid