parent
e994b8f402
commit
d6b7916f2b
|
@ -15,6 +15,7 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import nbxmpp
|
import nbxmpp
|
||||||
|
from gi.repository import Gdk
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
|
|
||||||
from gajim.common import app
|
from gajim.common import app
|
||||||
|
@ -25,6 +26,7 @@ from gajim.common.caps_cache import muc_caps_cache
|
||||||
from gajim.gtk.dialogs import ErrorDialog
|
from gajim.gtk.dialogs import ErrorDialog
|
||||||
from gajim.gtk.dataform import DataFormWidget
|
from gajim.gtk.dataform import DataFormWidget
|
||||||
from gajim.gtk.util import get_builder
|
from gajim.gtk.util import get_builder
|
||||||
|
from gajim.gtk.util import ensure_not_destroyed
|
||||||
|
|
||||||
log = logging.getLogger('gajim.gtk.groupchat_config')
|
log = logging.getLogger('gajim.gtk.groupchat_config')
|
||||||
|
|
||||||
|
@ -36,6 +38,7 @@ class GroupchatConfig(Gtk.ApplicationWindow):
|
||||||
self.set_position(Gtk.WindowPosition.CENTER)
|
self.set_position(Gtk.WindowPosition.CENTER)
|
||||||
self.set_show_menubar(False)
|
self.set_show_menubar(False)
|
||||||
self.set_title(_('Group Chat Configuration'))
|
self.set_title(_('Group Chat Configuration'))
|
||||||
|
self._destroyed = False
|
||||||
|
|
||||||
self.account = account
|
self.account = account
|
||||||
self.jid = jid
|
self.jid = jid
|
||||||
|
@ -77,6 +80,8 @@ class GroupchatConfig(Gtk.ApplicationWindow):
|
||||||
|
|
||||||
self._ui.connect_signals(self)
|
self._ui.connect_signals(self)
|
||||||
self.connect('delete-event', self._cancel)
|
self.connect('delete-event', self._cancel)
|
||||||
|
self.connect('destroy', self._on_destroy)
|
||||||
|
self.connect('key-press-event', self._on_key_press)
|
||||||
self.show_all()
|
self.show_all()
|
||||||
self._ui.stack.notify('visible-child-name')
|
self._ui.stack.notify('visible-child-name')
|
||||||
|
|
||||||
|
@ -291,6 +296,10 @@ class GroupchatConfig(Gtk.ApplicationWindow):
|
||||||
|
|
||||||
return add, remove, modified
|
return add, remove, modified
|
||||||
|
|
||||||
|
def _on_key_press(self, _widget, event):
|
||||||
|
if event.keyval == Gdk.KEY_Escape:
|
||||||
|
self._on_cancel()
|
||||||
|
|
||||||
def _on_cancel(self, *args):
|
def _on_cancel(self, *args):
|
||||||
self._cancel()
|
self._cancel()
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
@ -300,6 +309,9 @@ class GroupchatConfig(Gtk.ApplicationWindow):
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
con.get_module('MUC').cancel_config(self.jid)
|
con.get_module('MUC').cancel_config(self.jid)
|
||||||
|
|
||||||
|
def _on_destroy(self, *args):
|
||||||
|
self._destroyed = True
|
||||||
|
|
||||||
def _set_affiliations(self):
|
def _set_affiliations(self):
|
||||||
add, remove, modified = self._get_diff()
|
add, remove, modified = self._get_diff()
|
||||||
|
|
||||||
|
@ -339,6 +351,7 @@ class GroupchatConfig(Gtk.ApplicationWindow):
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
con.get_module('MUC').set_affiliation(self.jid, diff_dict)
|
con.get_module('MUC').set_affiliation(self.jid, diff_dict)
|
||||||
|
|
||||||
|
@ensure_not_destroyed
|
||||||
def _on_affiliations_received(self, result):
|
def _on_affiliations_received(self, result):
|
||||||
if result.is_error:
|
if result.is_error:
|
||||||
log.info('Error while requesting %s affiliations: %s',
|
log.info('Error while requesting %s affiliations: %s',
|
||||||
|
|
|
@ -25,6 +25,7 @@ import sys
|
||||||
import logging
|
import logging
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from functools import wraps
|
||||||
|
|
||||||
from gi.repository import Gdk
|
from gi.repository import Gdk
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
|
@ -489,3 +490,12 @@ def get_hardware_key_codes(keyval):
|
||||||
if not valid:
|
if not valid:
|
||||||
return []
|
return []
|
||||||
return [key.keycode for key in key_map_keys]
|
return [key.keycode for key in key_map_keys]
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_not_destroyed(func):
|
||||||
|
@wraps(func)
|
||||||
|
def func_wrapper(self, *args, **kwargs):
|
||||||
|
if self._destroyed:
|
||||||
|
return
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
return func_wrapper
|
||||||
|
|
Loading…
Reference in New Issue