Daniel Brötzmann pushed to branch master at gajim / gajim
Commits:
54248d4d by wurstsalat at 2021-12-07T20:30:02+01:00
WorkspaceSidebar: Add Edit… menu item
- - - - -
4 changed files:
- gajim/gtk/chat_page.py
- gajim/gtk/main.py
- gajim/gtk/workspace_dialog.py
- gajim/gtk/workspace_side_bar.py
Changes:
=====================================
gajim/gtk/chat_page.py
=====================================
@@ -130,7 +130,7 @@ def _on_filter_revealer_toggled(self, toggle_button):
@staticmethod
def _on_edit_workspace_clicked(_button):
- app.window.lookup_action('edit-workspace').activate()
+ app.window.activate_action('edit-workspace', GLib.Variant('s', ''))
def _on_chat_selected(self, _chat_list_stack: ChatListStack,
workspace_id: str, account: str,
=====================================
gajim/gtk/main.py
=====================================
@@ -176,7 +176,7 @@ def _on_signed_in(event):
def _add_actions(self):
actions = [
('add-workspace', 's', self._add_workspace),
- ('edit-workspace', None, self._edit_workspace),
+ ('edit-workspace', 's', self._edit_workspace),
('remove-workspace', None, self._remove_workspace),
('activate-workspace', 's', self._activate_workspace),
('add-chat', 'a{sv}', self._add_chat),
@@ -357,11 +357,11 @@ def add_workspace(self, workspace_id: str) -> None:
def _edit_workspace(self,
_action: Gio.SimpleAction,
- _param: Optional[GLib.Variant]) -> None:
-
- workspace_id = self.get_active_workspace()
- if workspace_id is not None:
- open_window('WorkspaceDialog', workspace_id=workspace_id)
+ param: GLib.Variant) -> None:
+ workspace_id = param.get_string() or None
+ if workspace_id is None:
+ workspace_id = self.get_active_workspace()
+ open_window('WorkspaceDialog', workspace_id=workspace_id)
def _remove_workspace(self,
_action: Gio.SimpleAction,
=====================================
gajim/gtk/workspace_dialog.py
=====================================
@@ -32,7 +32,7 @@
class WorkspaceDialog(Gtk.ApplicationWindow):
- def __init__(self, workspace_id: str = None) -> None:
+ def __init__(self, workspace_id: Optional[str] = None) -> None:
Gtk.ApplicationWindow.__init__(self)
self.set_name('WorkspaceDialog')
self.set_application(app.app)
=====================================
gajim/gtk/workspace_side_bar.py
=====================================
@@ -12,7 +12,12 @@
# 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 gi.repository import Gdk
+from gi.repository import Gio
+from gi.repository import GLib
from gi.repository import Gtk
from gajim.common import app
@@ -214,6 +219,8 @@ def __init__(self, workspace_id):
CommonWorkspace.__init__(self, workspace_id)
self.get_style_context().add_class('workspace-sidebar-item')
+ self._workspace_id = workspace_id
+
self._unread_label = Gtk.Label()
self._unread_label.get_style_context().add_class(
'unread-counter')
@@ -248,11 +255,42 @@ def __init__(self, workspace_id):
Gdk.DragAction.MOVE)
eventbox.connect('drag-begin', self._on_drag_begin)
eventbox.connect('drag-data-get', self._on_drag_data_get)
+ eventbox.connect('button-press-event', self._popup_menu)
eventbox.add(overlay)
-
self.add(eventbox)
self.show_all()
+ def _popup_menu(self, _widget, event):
+ if event.button != 3: # right click
+ return
+
+ menu = self._get_workspace_menu()
+
+ 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_workspace_menu(self) -> Gio.Menu:
+ menu_items: List[Any] = [
+ ('edit-workspace', _('Edit…')),
+ ]
+ menu = Gio.Menu()
+ for item in menu_items:
+ action, label = item
+ action = f'win.{action}'
+ menuitem = Gio.MenuItem.new(label, action)
+ variant = GLib.Variant('s', self._workspace_id)
+ menuitem.set_action_and_target_value(action, variant)
+ menu.append_item(menuitem)
+ return menu
+
def update_avatar(self):
self._image.update()
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/54248d4d97e1937835e050cbe5f1ebc8409ade46
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/54248d4d97e1937835e050cbe5f1ebc8409ade46
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