Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: cbca090e by wurstsalat at 2021-12-22T23:42:31+01:00 ChatList: Improve message preview
- - - - - df4329fc by wurstsalat at 2021-12-23T00:01:48+01:00 XMLConsole: Typing
- - - - -
2 changed files:
- gajim/gtk/chat_list.py - gajim/gtk/xml_console.py
Changes:
===================================== gajim/gtk/chat_list.py ===================================== @@ -861,9 +861,9 @@ def set_message_text(self, text = text.replace('/me', f'* {nickname}', 1) text = f'<i>{text}</i>'
- # Split by newline and display last line + # Split by newline and display last line (or first, if last is newline) lines = text.split('\n') - text = lines[-1] + text = lines[-1] or lines[0] self._ui.message_label.set_markup(text)
if icon is None:
===================================== gajim/gtk/xml_console.py ===================================== @@ -12,6 +12,11 @@ # You should have received a copy of the GNU General Public License # along with Gajim. If not, see http://www.gnu.org/licenses/.
+from typing import Any +from typing import List +from typing import Optional +from typing import Tuple + import time
import nbxmpp @@ -22,6 +27,7 @@
from gajim.common import app from gajim.common import ged +from gajim.common.const import Direction from gajim.common.i18n import _
from .builder import get_builder @@ -37,7 +43,7 @@
class XMLConsoleWindow(Gtk.ApplicationWindow, EventHelper): - def __init__(self): + def __init__(self) -> None: Gtk.ApplicationWindow.__init__(self) EventHelper.__init__(self) self.set_application(app.app) @@ -47,8 +53,8 @@ def __init__(self): self.set_show_menubar(False) self.set_name('XMLConsoleWindow')
- self.selected_account = None - self._selected_send_account = None + self.selected_account: Optional[str] = None + self._selected_send_account: Optional[str] = None self.presence = True self.message = True self.iq = True @@ -64,7 +70,8 @@ def __init__(self): self._set_titlebar() self.add(self._ui.box)
- self._ui.paned.set_position(self._ui.paned.get_property('max-position')) + self._ui.paned.set_position( + self._ui.paned.get_property('max-position'))
self._combo = MaxWidthComboBoxText() self._combo.set_max_size(200) @@ -90,7 +97,7 @@ def __init__(self):
self.show_all()
- self.connect('key_press_event', self._on_key_press_event) + self.connect('key_press_event', self._on_key_press) self._ui.connect_signals(self)
self.register_events([ @@ -99,7 +106,7 @@ def __init__(self): ('style-changed', ged.GUI1, self._on_style_changed) ])
- def _get_style_scheme(self): + def _get_style_scheme(self) -> Optional[GtkSource.StyleScheme]: if app.css_config.prefer_dark: style_scheme = self._style_scheme_manager.get_scheme( 'solarized-dark') @@ -108,22 +115,22 @@ def _get_style_scheme(self): 'solarized-light') return style_scheme
- def _on_style_changed(self, *args): + def _on_style_changed(self, *args: Any) -> None: style_scheme = self._get_style_scheme() if style_scheme is not None: self._ui.sourceview.get_buffer().set_style_scheme(style_scheme)
- def _on_value_change(self, combo): + def _on_value_change(self, combo: Gtk.ComboBox) -> None: self._selected_send_account = combo.get_active_id()
- def _set_titlebar(self): + def _set_titlebar(self) -> None: if self.selected_account is None: title = _('All Accounts') else: title = app.get_jid_from_account(self.selected_account) self._ui.headerbar.set_subtitle(title)
- def _create_tags(self): + def _create_tags(self) -> None: tags = [ 'incoming', 'outgoing', @@ -135,7 +142,7 @@ def _create_tags(self): for tag_name in tags: self._ui.sourceview.get_buffer().create_tag(tag_name)
- def _on_key_press_event(self, _widget, event): + def _on_key_press(self, _widget: Gtk.Widget, event: Gdk.EventKey) -> None: if event.keyval == Gdk.KEY_Escape: if self._ui.search_revealer.get_child_revealed(): self._ui.search_revealer.set_reveal_child(False) @@ -153,10 +160,15 @@ def _on_key_press_event(self, _widget, event): self._ui.search_toggle.set_active( not self._ui.search_revealer.get_child_revealed()) if event.keyval == Gdk.KEY_F3: - self._find(True) + self._find(Direction.NEXT)
- def _on_row_activated(self, _listbox, row): + def _on_row_activated(self, + _listbox: Gtk.ListBox, + row: Gtk.ListBoxRow + ) -> None: text = row.get_child().get_text() + + # pylint: disable=line-too-long input_text = None if text == 'Presence': input_text = ( @@ -180,13 +192,14 @@ def _on_row_activated(self, _listbox, row): '<iq to="" type="get" xmlns="jabber:client">\n' '<query xmlns="http://jabber.org/protocol/disco#info"></query>\n' '</iq>') + # pylint: enable=line-too-long
if input_text is not None: buffer_ = self._ui.input_entry.get_buffer() buffer_.set_text(input_text) self._ui.input_entry.grab_focus()
- def _on_send(self, *args): + def _on_send(self, *args: Any) -> None: if not self._selected_send_account: return if not app.account_is_available(self._selected_send_account): @@ -217,13 +230,13 @@ def _on_send(self, *args): self.last_stanza = stanza buffer_.set_text('')
- def _on_paste_last(self, *args): + def _on_paste_last(self, *args: Any) -> None: buffer_ = self._ui.input_entry.get_buffer() if buffer_ is not None and self.last_stanza is not None: buffer_.set_text(self.last_stanza) self._ui.input_entry.grab_focus()
- def _on_input(self, button, *args): + def _on_input(self, button: Gtk.ToggleButton) -> None: if button.get_active(): self._ui.paned.get_child2().show() self._ui.send.show() @@ -238,18 +251,21 @@ def _on_input(self, button, *args): self._combo.hide() self._ui.menubutton.hide()
- def _on_search_toggled(self, button): + def _on_search_toggled(self, button: Gtk.ToggleButton) -> None: self._ui.search_revealer.set_reveal_child(button.get_active()) self._ui.search_entry.grab_focus()
- def _on_search_activate(self, _widget): - self._find(True) + def _on_search_activate(self, _entry: Gtk.SearchEntry) -> None: + self._find(Direction.NEXT)
- def _on_search_clicked(self, button): - forward = bool(button is self._ui.search_forward) - self._find(forward) + def _on_search_clicked(self, button: Gtk.ToolButton) -> None: + if button is self._ui.search_forward: + direction = Direction.NEXT + else: + direction = Direction.PREV + self._find(direction)
- def _find(self, forward): + def _find(self, direction: Direction) -> None: search_str = self._ui.search_entry.get_text() textbuffer = self._ui.sourceview.get_buffer() cursor_mark = textbuffer.get_insert() @@ -265,7 +281,7 @@ def _find(self, forward): if search_str != self.last_search: current_pos = textbuffer.get_start_iter()
- if forward: + if direction == Direction.NEXT: match = current_pos.forward_search( search_str, Gtk.TextSearchFlags.VISIBLE_ONLY | @@ -287,7 +303,7 @@ def _find(self, forward): self.last_search = search_str
@staticmethod - def _get_accounts(): + def _get_accounts() -> List[Tuple[str, str]]: accounts = app.get_accounts_sorted() combo_accounts = [] for account in accounts: @@ -296,8 +312,8 @@ def _get_accounts(): combo_accounts.append(('AccountWizard', 'Account Wizard')) return combo_accounts
- def _on_filter_options(self, *args): - if self.filter_dialog: + def _on_filter_options(self, _button: Gtk.Button) -> None: + if self.filter_dialog is not None: self.filter_dialog.present() return
@@ -337,17 +353,17 @@ def _on_filter_options(self, *args): settings, self.selected_account) self.filter_dialog.connect('destroy', self._on_filter_destroyed)
- def _on_filter_destroyed(self, _win): + def _on_filter_destroyed(self, _widget: Gtk.Widget) -> None: self.filter_dialog = None
- def _on_clear(self, *args): + def _on_clear(self, _button: Gtk.Button) -> None: self._ui.sourceview.get_buffer().set_text('')
- def _set_account(self, value, _data): + def _set_account(self, value: str, _data: Any) -> None: self.selected_account = value self._set_titlebar()
- def _on_setting(self, value, data): + def _on_setting(self, value: bool, data: str) -> None: setattr(self, data, value) value = not value table = self._ui.sourceview.get_buffer().get_tag_table()
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/318d70c0e6f6d7b290cebc7c59364859...