Daniel Brötzmann pushed to branch master at gajim / gajim
Commits:
08f9b39a by wurstsalat at 2023-02-21T20:28:27+01:00
imprv: Add message menu entry for deleting messages locally
- - - - -
6 changed files:
- gajim/common/storage/archive.py
- gajim/gtk/const.py
- gajim/gtk/control.py
- gajim/gtk/conversation/view.py
- gajim/gtk/main.py
- gajim/gtk/menus.py
Changes:
=====================================
gajim/common/storage/archive.py
=====================================
@@ -1197,6 +1197,19 @@ def insert_into_logs(self,
return lastrowid
+ @timeit
+ def delete_message_from_logs(self, log_line_id: int) -> None:
+ '''
+ Delete a message from the `logs` table
+
+ :param log_line_id: The message's log_line_id
+ '''
+ sql = 'DELETE FROM logs WHERE log_line_id = ?'
+ self._con.execute(sql, (log_line_id, ))
+
+ self._delayed_commit()
+ log.info('Deleted message with log_line_id %s', log_line_id)
+
@timeit
def set_message_error(self,
account_jid: str,
=====================================
gajim/gtk/const.py
=====================================
@@ -194,6 +194,7 @@ def __str__(self):
('input-clear', None, True),
('show-emoji-chooser', None, True),
('activate-message-selection', 'u', True),
+ ('delete-message-locally', 'u', True),
('correct-message', None, False),
('copy-message', 's', True),
('retract-message', 'a{sv}', False),
=====================================
gajim/gtk/control.py
=====================================
@@ -570,6 +570,9 @@ def _add_message(self,
else:
self._jump_to_end_button.add_unread_count()
+ def remove_message(self, log_line_id: int) -> None:
+ self._scrolled_view.remove_message(log_line_id)
+
def reset_view(self) -> None:
self._scrolled_view.reset()
=====================================
gajim/gtk/conversation/view.py
=====================================
@@ -664,6 +664,11 @@ def _reduce_messages_after(self) -> None:
row = self._get_row_at_index(len(self._list_box.get_children()) - 1)
row.destroy()
+ def remove_message(self, log_line_id: int) -> None:
+ row = self.get_row_by_log_line_id(log_line_id)
+ if row is not None:
+ row.destroy()
+
def scroll_to_message_and_highlight(self, log_line_id: int) -> None:
highlight_row = None
for row in cast(list[BaseRow], self._list_box.get_children()):
=====================================
gajim/gtk/main.py
=====================================
@@ -424,6 +424,7 @@ def _connect_actions(self) -> None:
('preview-open-link', self._on_preview_action),
('copy-message', self._on_copy_message),
('retract-message', self._on_retract_message),
+ ('delete-message-locally', self._on_delete_message_locally),
('add-workspace', self._add_workspace),
('edit-workspace', self._edit_workspace),
('remove-workspace', self._remove_workspace),
@@ -649,6 +650,26 @@ def _on_retract(reason: str) -> None:
input_str=_('Spam'),
transient_for=app.window).show()
+ def _on_delete_message_locally(self,
+ _action: Gio.SimpleAction,
+ param: GLib.Variant
+ ) -> None:
+
+ def _on_delete() -> None:
+ log_line_id = param.get_uint32()
+ app.storage.archive.delete_message_from_logs(log_line_id)
+ control = self.get_control()
+ control.remove_message(log_line_id)
+
+ ConfirmationDialog(
+ _('Delete Message'),
+ _('Delete message locally?'),
+ _('This message will be deleted from your local chat history'),
+ [DialogButton.make('Cancel'),
+ DialogButton.make('Delete',
+ callback=_on_delete)],
+ transient_for=app.window).show()
+
def _on_window_motion_notify(self,
_widget: Gtk.ApplicationWindow,
_event: Gdk.EventMotion
=====================================
gajim/gtk/menus.py
=====================================
@@ -726,6 +726,12 @@ def get_chat_row_menu(contact: types.ChatContactT,
'win.retract-message',
param))
+ if log_line_id is not None:
+ menu_items.append(
+ (p_('Message row action', 'Delete Message Locally…'),
+ 'win.delete-message-locally',
+ GLib.Variant('u', log_line_id or 0)))
+
return GajimMenu.from_list(menu_items)
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/08f9b39aaf96af1fefeebc443de5149bed6de036
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/08f9b39aaf96af1fefeebc443de5149bed6de036
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits