Daniel Brötzmann pushed to branch mainwindow at gajim / gajim
Commits:
4e168244 by wurstsalat at 2021-11-14T13:40:49+01:00
StartChat: Add 'Forget this Group Chat' menu action
- - - - -
4 changed files:
- gajim/app_actions.py
- gajim/application.py
- gajim/gtk/start_chat.py
- gajim/gui_menu_builder.py
Changes:
=====================================
gajim/app_actions.py
=====================================
@@ -17,6 +17,8 @@
from gi.repository import Gtk
from gi.repository import Gdk
+from nbxmpp import JID
+
from gajim.common import app
from gajim.common import helpers
from gajim.common.app import interface
@@ -262,6 +264,12 @@ def start_chat(_action, param):
account, jid = param.get_strv()
app.interface.start_chat_from_jid(account, jid)
+def forget_groupchat(_action, param):
+ account, jid = param.unpack()
+ client = app.get_client(account)
+ client.get_module('Bookmarks').remove(JID.from_string(jid))
+ window = open_window('StartChatDialog')
+ window.remove_row(account, jid)
def on_groupchat_join(_action, param):
account, jid = param.get_strv()
=====================================
gajim/application.py
=====================================
@@ -398,6 +398,7 @@ def add_actions(self):
('open-link', 'as', app_actions.open_link),
('open-mail', 's', app_actions.open_mail),
('create-groupchat', 's', app_actions.on_create_gc),
+ ('forget-groupchat', 'as', app_actions.forget_groupchat),
('groupchat-join', 'as', app_actions.on_groupchat_join),
]
=====================================
gajim/gtk/start_chat.py
=====================================
@@ -35,6 +35,8 @@
from gajim.common.const import MUC_DISCO_ERRORS
from gajim.common.modules.util import as_task
+from gajim.gui_menu_builder import get_start_chat_row_menu
+
from .chat_filter import ChatFilter
from .groupchat_info import GroupChatInfoScrolled
from .groupchat_nick import NickChooser
@@ -126,6 +128,12 @@ def __init__(self):
def set_search_text(self, text):
self._ui.search_entry.set_text(text)
+ def remove_row(self, account: str, jid: str) -> None:
+ for row in self._ui.listbox.get_children():
+ if row.account == account and row.jid == jid:
+ row.destroy()
+ return
+
def _global_search_active(self):
return self._ui.global_search_toggle.get_active()
@@ -747,9 +755,32 @@ def __init__(self, account, contact, jid, name,
show_account,
grid.add(box)
- self.add(grid)
+ eventbox = Gtk.EventBox()
+ eventbox.connect('button-press-event', self._popup_menu)
+ eventbox.add(grid)
+ self.add(eventbox)
self.show_all()
+ def _popup_menu(self, _widget, event):
+ if not self.groupchat:
+ return
+
+ if event.button != 3: # right click
+ return
+
+ menu = get_start_chat_row_menu(self.account, self.jid)
+
+ rectangle = Gdk.Rectangle()
+ rectangle.x = event.x
+ rectangle.y = event.y
+ rectangle.width = rectangle.height = 1
+
+ popover = Gtk.Popover.new_from_model(self, menu)
+ popover.set_relative_to(self)
+ popover.set_position(Gtk.PositionType.RIGHT)
+ popover.set_pointing_to(rectangle)
+ popover.popup()
+
def _get_avatar_image(self, contact):
if self.new:
icon_name = 'avatar-default'
=====================================
gajim/gui_menu_builder.py
=====================================
@@ -485,6 +485,22 @@ def get_subscription_menu(account: str, jid: str) ->
Gio.Menu:
return menu
+def get_start_chat_row_menu(account: str, jid: Union[JID, str]) -> Gio.Menu:
+ jid = str(jid)
+ menu_items: List[Tuple[str, str]] = [
+ ('forget-groupchat', _('Forget this Group Chat')),
+ ]
+ menu = Gio.Menu()
+ for item in menu_items:
+ action, label = item
+ action = f'app.{action}'
+ menuitem = Gio.MenuItem.new(label, action)
+ variant_list = GLib.Variant('as', [account, jid])
+ menuitem.set_action_and_target_value(action, variant_list)
+ menu.append_item(menuitem)
+ return menu
+
+
def get_chat_list_row_menu(workspace_id: str, account: str,
jid: Union[JID, str], pinned: bool) -> Gio.Menu:
jid = str(jid)
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/4e168244b4e02b1f96727f8950e2c9583ac0b670
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/4e168244b4e02b1f96727f8950e2c9583ac0b670
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