Ticket #2962: gajim-0.11.2-sexy.patch
| File gajim-0.11.2-sexy.patch, 8.6 KB (added by khorne, 2 years ago) |
|---|
-
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 104 104 </child> 105 105 106 106 <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> 107 120 <widget class="GtkLabel" id="banner_name_label"> 108 121 <property name="visible">True</property> 109 <property name="label"><span weight="heavy" size="large">Contact name</span> 110 Status message</property> 122 <property name="label"><span weight="heavy" size="large">Contact name</span></property> 111 123 <property name="use_underline">False</property> 112 124 <property name="use_markup">True</property> 113 125 <property name="justify">GTK_JUSTIFY_LEFT</property> 114 126 <property name="wrap">False</property> 115 127 <property name="selectable">False</property> 116 <property name="xalign">0.0500000007451</property>128 <property name="xalign">0</property> 117 129 <property name="yalign">0.5</property> 118 130 <property name="xpad">0</property> 119 <property name="ypad">5</property>131 <property name="ypad">0</property> 120 132 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> 121 133 <property name="width_chars">-1</property> 122 134 <property name="single_line_mode">False</property> … … 124 136 </widget> 125 137 <packing> 126 138 <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> 127 152 <property name="expand">True</property> 128 153 <property name="fill">True</property> 129 154 </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 25 25 import dialogs 26 26 import history_window 27 27 import notify 28 import re 28 29 29 30 from common import gajim 30 31 from common import helpers … … 43 44 except: 44 45 HAS_GTK_SPELL = False 45 46 47 try: 48 import sexy 49 HAS_SEXY = True 50 51 except: 52 HAS_SEXY = False 46 53 47 54 # the next script, executed in the "po" directory, 48 55 # generates the following list. … … 51 58 #echo "{_('en'):'en'",$LANG"}" 52 59 langs = {_('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'} 53 60 61 urlfinder = re.compile("(https?://|www|ftp)[^ ]+") 62 63 def make_href(match): 64 return '<a href="%s">%s</a>' % (match.group(), match.group()) 54 65 55 66 ################################################################################ 56 67 class ChatControlBase(MessageControl): … … 117 128 event_keymod): 118 129 pass # Derived should implement this rather than connecting to the event itself. 119 130 131 def status_url_clicked(self, widget, url): 132 helpers.launch_browser_mailer('url',url) 133 120 134 def __init__(self, type_id, parent_win, widget_name, contact, acct, 121 135 resource = None): 122 136 MessageControl.__init__(self, type_id, parent_win, widget_name, … … 135 149 self._on_banner_eventbox_button_press_event) 136 150 self.handlers[id] = widget 137 151 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 138 164 # Create textviews and connect signals 139 165 self.conv_textview = ConversationTextview(self.account) 140 166 … … 218 243 'words feature will not be used')) 219 244 gajim.config.set('use_speller', False) 220 245 221 self.style_event_id = 0222 246 self.conv_textview.tv.show() 223 247 self._paint_banner() 224 248 … … 285 309 286 310 def _paint_banner(self): 287 311 '''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 337 313 338 314 def _on_keypress_event(self, widget, event): 339 315 if event.state & gtk.gdk.CONTROL_MASK: … … 1043 1019 jid = contact.jid 1044 1020 1045 1021 banner_name_label = self.xml.get_widget('banner_name_label') 1022 banner_vbox = self.xml.get_widget('banner_vbox') 1046 1023 banner_eventbox = self.xml.get_widget('banner_eventbox') 1047 1024 1048 1025 name = contact.get_shown_name() … … 1074 1051 self.status_tooltip.set_tip(banner_eventbox, status) 1075 1052 self.status_tooltip.enable() 1076 1053 banner_name_label.set_ellipsize(pango.ELLIPSIZE_END) 1054 self.banner_status_label.set_ellipsize(pango.ELLIPSIZE_END) 1077 1055 status = helpers.reduce_chars_newlines(status, max_lines = 1) 1078 1056 status_escaped = gtkgui_helpers.escape_for_pango_markup(status) 1079 1057 … … 1104 1082 # weight="heavy" size="x-large" 1105 1083 label_text = '<span %s>%s</span><span %s>%s</span>' % \ 1106 1084 (font_attrs, name, font_attrs_small, acct_info) 1085 1107 1086 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) 1110 1094 else: 1111 1095 self.status_tooltip.disable() 1112 1096 # setup the label that holds name and jid
