Daniel Brötzmann pushed to branch master at gajim / gajim

Commits:

4 changed files:

Changes:

  • gajim/data/gui/xml_console.ui
    ... ... @@ -2,6 +2,7 @@
    2 2
     <!-- Generated with glade 3.38.2 -->
    
    3 3
     <interface>
    
    4 4
       <requires lib="gtk+" version="3.22"/>
    
    5
    +  <requires lib="gtksourceview" version="4.0"/>
    
    5 6
       <object class="GtkHeaderBar" id="headerbar">
    
    6 7
         <property name="visible">True</property>
    
    7 8
         <property name="can-focus">False</property>
    
    ... ... @@ -193,7 +194,7 @@
    193 194
                     <property name="can-focus">True</property>
    
    194 195
                     <property name="shadow-type">in</property>
    
    195 196
                     <child>
    
    196
    -                  <object class="GtkTextView" id="textview">
    
    197
    +                  <object class="GtkSourceView" id="sourceview">
    
    197 198
                         <property name="visible">True</property>
    
    198 199
                         <property name="can-focus">True</property>
    
    199 200
                         <property name="editable">False</property>
    
    ... ... @@ -201,6 +202,7 @@
    201 202
                         <property name="right-margin">6</property>
    
    202 203
                         <property name="top-margin">6</property>
    
    203 204
                         <property name="bottom-margin">6</property>
    
    205
    +                    <property name="monospace">True</property>
    
    204 206
                       </object>
    
    205 207
                     </child>
    
    206 208
                   </object>
    

  • gajim/gtk/conversation/code_widget.py
    ... ... @@ -22,6 +22,7 @@
    22 22
     from gi.repository import GtkSource
    
    23 23
     
    
    24 24
     from gajim.common import app
    
    25
    +from gajim.common import ged
    
    25 26
     from gajim.common.i18n import _
    
    26 27
     
    
    27 28
     log = logging.getLogger('gajim.gui.conversation.code_widget')
    
    ... ... @@ -98,12 +99,25 @@ def __init__(self) -> None:
    98 99
             self._source_manager = GtkSource.LanguageManager.get_default()
    
    99 100
             self._style_scheme_manager = GtkSource.StyleSchemeManager.get_default()
    
    100 101
     
    
    102
    +        app.ged.register_event_handler('style-changed',
    
    103
    +                                       ged.GUI1,
    
    104
    +                                       self._on_style_changed)
    
    105
    +
    
    106
    +        style_scheme = self._get_style_scheme()
    
    107
    +        if style_scheme is not None:
    
    108
    +            self.get_buffer().set_style_scheme(style_scheme)
    
    109
    +
    
    110
    +    def _get_style_scheme(self):
    
    101 111
             if app.css_config.prefer_dark:
    
    102 112
                 style_scheme = self._style_scheme_manager.get_scheme(
    
    103 113
                     'solarized-dark')
    
    104 114
             else:
    
    105 115
                 style_scheme = self._style_scheme_manager.get_scheme(
    
    106 116
                     'solarized-light')
    
    117
    +        return style_scheme
    
    118
    +
    
    119
    +    def _on_style_changed(self, *args):
    
    120
    +        style_scheme = self._get_style_scheme()
    
    107 121
             if style_scheme is not None:
    
    108 122
                 self.get_buffer().set_style_scheme(style_scheme)
    
    109 123
     
    

  • gajim/gtk/conversation/rows/message.py
    ... ... @@ -210,7 +210,8 @@ def __init__(self,
    210 210
             self.show_all()
    
    211 211
     
    
    212 212
         def update_text_tags(self) -> None:
    
    213
    -        self._message_widget.update_text_tags()
    
    213
    +        if isinstance(self._message_widget, MessageWidget):
    
    214
    +            self._message_widget.update_text_tags()
    
    214 215
     
    
    215 216
         def _check_for_highlight(self, content: ParsingResult) -> None:
    
    216 217
             needs_highlight = message_needs_highlight(
    

  • gajim/gtk/xml_console.py
    ... ... @@ -18,6 +18,7 @@
    18 18
     from gi.repository import Gdk
    
    19 19
     from gi.repository import Gtk
    
    20 20
     from gi.repository import GLib
    
    21
    +from gi.repository import GtkSource
    
    21 22
     
    
    22 23
     from gajim.common import app
    
    23 24
     from gajim.common import ged
    
    ... ... @@ -41,7 +42,7 @@ def __init__(self):
    41 42
             EventHelper.__init__(self)
    
    42 43
             self.set_application(app.app)
    
    43 44
             self.set_position(Gtk.WindowPosition.CENTER)
    
    44
    -        self.set_default_size(600, 600)
    
    45
    +        self.set_default_size(800, 600)
    
    45 46
             self.set_resizable(True)
    
    46 47
             self.set_show_menubar(False)
    
    47 48
             self.set_name('XMLConsoleWindow')
    
    ... ... @@ -77,6 +78,16 @@ def __init__(self):
    77 78
             self._ui.actionbar.pack_end(self._combo)
    
    78 79
     
    
    79 80
             self._create_tags()
    
    81
    +
    
    82
    +        source_manager = GtkSource.LanguageManager.get_default()
    
    83
    +        lang = source_manager.get_language('xml')
    
    84
    +        self._ui.sourceview.get_buffer().set_language(lang)
    
    85
    +
    
    86
    +        self._style_scheme_manager = GtkSource.StyleSchemeManager.get_default()
    
    87
    +        style_scheme = self._get_style_scheme()
    
    88
    +        if style_scheme is not None:
    
    89
    +            self._ui.sourceview.get_buffer().set_style_scheme(style_scheme)
    
    90
    +
    
    80 91
             self.show_all()
    
    81 92
     
    
    82 93
             self.connect('key_press_event', self._on_key_press_event)
    
    ... ... @@ -85,8 +96,23 @@ def __init__(self):
    85 96
             self.register_events([
    
    86 97
                 ('stanza-received', ged.GUI1, self._nec_stanza_received),
    
    87 98
                 ('stanza-sent', ged.GUI1, self._nec_stanza_sent),
    
    99
    +            ('style-changed', ged.GUI1, self._on_style_changed)
    
    88 100
             ])
    
    89 101
     
    
    102
    +    def _get_style_scheme(self):
    
    103
    +        if app.css_config.prefer_dark:
    
    104
    +            style_scheme = self._style_scheme_manager.get_scheme(
    
    105
    +                'solarized-dark')
    
    106
    +        else:
    
    107
    +            style_scheme = self._style_scheme_manager.get_scheme(
    
    108
    +                'solarized-light')
    
    109
    +        return style_scheme
    
    110
    +
    
    111
    +    def _on_style_changed(self, *args):
    
    112
    +        style_scheme = self._get_style_scheme()
    
    113
    +        if style_scheme is not None:
    
    114
    +            self._ui.sourceview.get_buffer().set_style_scheme(style_scheme)
    
    115
    +
    
    90 116
         def _on_value_change(self, combo):
    
    91 117
             self._selected_send_account = combo.get_active_id()
    
    92 118
     
    
    ... ... @@ -98,21 +124,16 @@ def _set_titlebar(self):
    98 124
             self._ui.headerbar.set_subtitle(title)
    
    99 125
     
    
    100 126
         def _create_tags(self):
    
    101
    -        buffer_ = self._ui.textview.get_buffer()
    
    102
    -        in_color = app.css_config.get_value(
    
    103
    -            '.gajim-incoming-nickname', StyleAttr.COLOR)
    
    104
    -        out_color = app.css_config.get_value(
    
    105
    -            '.gajim-outgoing-nickname', StyleAttr.COLOR)
    
    106
    -
    
    107
    -        tags = ['presence', 'message', 'stream', 'iq']
    
    108
    -
    
    109
    -        tag = buffer_.create_tag('incoming')
    
    110
    -        tag.set_property('foreground', in_color)
    
    111
    -        tag = buffer_.create_tag('outgoing')
    
    112
    -        tag.set_property('foreground', out_color)
    
    113
    -
    
    127
    +        tags = [
    
    128
    +            'incoming',
    
    129
    +            'outgoing',
    
    130
    +            'presence',
    
    131
    +            'message',
    
    132
    +            'stream',
    
    133
    +            'iq'
    
    134
    +        ]
    
    114 135
             for tag_name in tags:
    
    115
    -            buffer_.create_tag(tag_name)
    
    136
    +            self._ui.sourceview.get_buffer().create_tag(tag_name)
    
    116 137
     
    
    117 138
         def _on_key_press_event(self, _widget, event):
    
    118 139
             if event.keyval == Gdk.KEY_Escape:
    
    ... ... @@ -230,7 +251,7 @@ def _on_search_clicked(self, button):
    230 251
     
    
    231 252
         def _find(self, forward):
    
    232 253
             search_str = self._ui.search_entry.get_text()
    
    233
    -        textbuffer = self._ui.textview.get_buffer()
    
    254
    +        textbuffer = self._ui.sourceview.get_buffer()
    
    234 255
             cursor_mark = textbuffer.get_insert()
    
    235 256
             current_pos = textbuffer.get_iter_at_mark(cursor_mark)
    
    236 257
     
    
    ... ... @@ -262,7 +283,7 @@ def _find(self, forward):
    262 283
                 match_start, match_end = match
    
    263 284
                 textbuffer.select_range(match_start, match_end)
    
    264 285
                 mark = textbuffer.create_mark('last_pos', match_end, True)
    
    265
    -            self._ui.textview.scroll_to_mark(mark, 0, True, 0.5, 0.5)
    
    286
    +            self._ui.sourceview.scroll_to_mark(mark, 0, True, 0.5, 0.5)
    
    266 287
             self.last_search = search_str
    
    267 288
     
    
    268 289
         @staticmethod
    
    ... ... @@ -320,7 +341,7 @@ def _on_filter_destroyed(self, _win):
    320 341
             self.filter_dialog = None
    
    321 342
     
    
    322 343
         def _on_clear(self, *args):
    
    323
    -        self._ui.textview.get_buffer().set_text('')
    
    344
    +        self._ui.sourceview.get_buffer().set_text('')
    
    324 345
     
    
    325 346
         def _set_account(self, value, _data):
    
    326 347
             self.selected_account = value
    
    ... ... @@ -329,7 +350,7 @@ def _set_account(self, value, _data):
    329 350
         def _on_setting(self, value, data):
    
    330 351
             setattr(self, data, value)
    
    331 352
             value = not value
    
    332
    -        table = self._ui.textview.get_buffer().get_tag_table()
    
    353
    +        table = self._ui.sourceview.get_buffer().get_tag_table()
    
    333 354
             tag = table.lookup(data)
    
    334 355
             if data in ('incoming', 'outgoing'):
    
    335 356
                 if value:
    
    ... ... @@ -365,7 +386,7 @@ def _print_stanza(self, event, kind):
    365 386
     
    
    366 387
             at_the_end = util.at_the_end(self._ui.scrolled)
    
    367 388
     
    
    368
    -        buffer_ = self._ui.textview.get_buffer()
    
    389
    +        buffer_ = self._ui.sourceview.get_buffer()
    
    369 390
             end_iter = buffer_.get_end_iter()
    
    370 391
     
    
    371 392
             type_ = kind