Move ManagePEPServicesWindow into gtk module
This commit is contained in:
		
							parent
							
								
									07c87a4194
								
							
						
					
					
						commit
						cd9ffc7ebf
					
				
					 4 changed files with 136 additions and 111 deletions
				
			
		
							
								
								
									
										110
									
								
								gajim/config.py
									
										
									
									
									
								
							
							
						
						
									
										110
									
								
								gajim/config.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2836,116 +2836,6 @@ class AccountCreationWizardWindow:
 | 
			
		|||
        app.interface.roster.setup_and_draw_roster()
 | 
			
		||||
        gui_menu_builder.build_accounts_menu()
 | 
			
		||||
 | 
			
		||||
class ManagePEPServicesWindow:
 | 
			
		||||
    def __init__(self, account):
 | 
			
		||||
        self.xml = gtkgui_helpers.get_gtk_builder('manage_pep_services_window.ui')
 | 
			
		||||
        self.window = self.xml.get_object('manage_pep_services_window')
 | 
			
		||||
        self.window.set_transient_for(app.interface.roster.window)
 | 
			
		||||
        self.xml.get_object('configure_button').set_sensitive(False)
 | 
			
		||||
        self.xml.get_object('delete_button').set_sensitive(False)
 | 
			
		||||
        self.xml.connect_signals(self)
 | 
			
		||||
        self.account = account
 | 
			
		||||
        self._con = app.connections[self.account]
 | 
			
		||||
 | 
			
		||||
        self.init_services()
 | 
			
		||||
        self.xml.get_object('services_treeview').get_selection().connect(
 | 
			
		||||
                'changed', self.on_services_selection_changed)
 | 
			
		||||
 | 
			
		||||
        app.ged.register_event_handler('pubsub-config-received', ged.GUI1,
 | 
			
		||||
            self._nec_pep_config_received)
 | 
			
		||||
 | 
			
		||||
        self.window.show_all()
 | 
			
		||||
 | 
			
		||||
    def on_manage_pep_services_window_destroy(self, widget):
 | 
			
		||||
        '''close window'''
 | 
			
		||||
        del app.interface.instances[self.account]['pep_services']
 | 
			
		||||
        app.ged.remove_event_handler('pubsub-config-received', ged.GUI1,
 | 
			
		||||
            self._nec_pep_config_received)
 | 
			
		||||
 | 
			
		||||
    def on_close_button_clicked(self, widget):
 | 
			
		||||
        self.window.destroy()
 | 
			
		||||
 | 
			
		||||
    def on_services_selection_changed(self, sel):
 | 
			
		||||
        self.xml.get_object('configure_button').set_sensitive(True)
 | 
			
		||||
        self.xml.get_object('delete_button').set_sensitive(True)
 | 
			
		||||
 | 
			
		||||
    def init_services(self):
 | 
			
		||||
        self.treeview = self.xml.get_object('services_treeview')
 | 
			
		||||
        # service, access_model, group
 | 
			
		||||
        self.treestore = Gtk.ListStore(str)
 | 
			
		||||
        self.treeview.set_model(self.treestore)
 | 
			
		||||
 | 
			
		||||
        col = Gtk.TreeViewColumn('Service')
 | 
			
		||||
        self.treeview.append_column(col)
 | 
			
		||||
 | 
			
		||||
        cellrenderer_text = Gtk.CellRendererText()
 | 
			
		||||
        col.pack_start(cellrenderer_text, True)
 | 
			
		||||
        col.add_attribute(cellrenderer_text, 'text', 0)
 | 
			
		||||
 | 
			
		||||
        jid = self._con.get_own_jid().getStripped()
 | 
			
		||||
        self._con.get_module('Discovery').disco_items(
 | 
			
		||||
            jid, success_cb=self._items_received, error_cb=self._items_error)
 | 
			
		||||
 | 
			
		||||
    def _items_received(self, from_, node, items):
 | 
			
		||||
        jid = self._con.get_own_jid().getStripped()
 | 
			
		||||
        for item in items:
 | 
			
		||||
            if item['jid'] == jid and 'node' in item:
 | 
			
		||||
                self.treestore.append([item['node']])
 | 
			
		||||
 | 
			
		||||
    def _items_error(self, from_, error):
 | 
			
		||||
        ErrorDialog('Error', error)
 | 
			
		||||
 | 
			
		||||
    def node_removed(self, jid, node):
 | 
			
		||||
        if jid != app.get_jid_from_account(self.account):
 | 
			
		||||
            return
 | 
			
		||||
        model = self.treeview.get_model()
 | 
			
		||||
        iter_ = model.get_iter_first()
 | 
			
		||||
        while iter_:
 | 
			
		||||
            if model[iter_][0] == node:
 | 
			
		||||
                model.remove(iter_)
 | 
			
		||||
                break
 | 
			
		||||
            iter_ = model.iter_next(iter_)
 | 
			
		||||
 | 
			
		||||
    def node_not_removed(self, jid, node, msg):
 | 
			
		||||
        if jid != app.get_jid_from_account(self.account):
 | 
			
		||||
            return
 | 
			
		||||
        WarningDialog(_('PEP node was not removed'),
 | 
			
		||||
            _('PEP node %(node)s was not removed: %(message)s') % {'node': node,
 | 
			
		||||
            'message': msg})
 | 
			
		||||
 | 
			
		||||
    def on_delete_button_clicked(self, widget):
 | 
			
		||||
        selection = self.treeview.get_selection()
 | 
			
		||||
        if not selection:
 | 
			
		||||
            return
 | 
			
		||||
        model, iter_ = selection.get_selected()
 | 
			
		||||
        node = model[iter_][0]
 | 
			
		||||
        our_jid = app.get_jid_from_account(self.account)
 | 
			
		||||
        con = app.connections[self.account]
 | 
			
		||||
        con.get_module('PubSub').send_pb_delete(our_jid, node,
 | 
			
		||||
                           on_ok=self.node_removed,
 | 
			
		||||
                           on_fail=self.node_not_removed)
 | 
			
		||||
 | 
			
		||||
    def on_configure_button_clicked(self, widget):
 | 
			
		||||
        selection = self.treeview.get_selection()
 | 
			
		||||
        if not selection:
 | 
			
		||||
            return
 | 
			
		||||
        model, iter_ = selection.get_selected()
 | 
			
		||||
        node = model[iter_][0]
 | 
			
		||||
        our_jid = app.get_jid_from_account(self.account)
 | 
			
		||||
        con = app.connections[self.account]
 | 
			
		||||
        con.get_module('PubSub').request_pb_configuration(our_jid, node)
 | 
			
		||||
 | 
			
		||||
    def _nec_pep_config_received(self, obj):
 | 
			
		||||
        def on_ok(form, node):
 | 
			
		||||
            form.type_ = 'submit'
 | 
			
		||||
            our_jid = app.get_jid_from_account(self.account)
 | 
			
		||||
            con = app.connections[self.account]
 | 
			
		||||
            con.get_module('PubSub').send_pb_configure(our_jid, node, form)
 | 
			
		||||
        window = dialogs.DataFormWindow(obj.form, (on_ok, obj.node))
 | 
			
		||||
        title = _('Configure %s') % obj.node
 | 
			
		||||
        window.set_title(title)
 | 
			
		||||
        window.show_all()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ManageSoundsWindow:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,3 +54,4 @@ from gajim.gtk.xml_console import XMLConsoleWindow
 | 
			
		|||
from gajim.gtk.privacy_list import PrivacyListsWindow
 | 
			
		||||
from gajim.gtk.single_message import SingleMessageWindow
 | 
			
		||||
from gajim.gtk.server_info import ServerInfoDialog
 | 
			
		||||
from gajim.gtk.pep_config import ManagePEPServicesWindow
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										133
									
								
								gajim/gtk/pep_config.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								gajim/gtk/pep_config.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,133 @@
 | 
			
		|||
# This file is part of Gajim.
 | 
			
		||||
#
 | 
			
		||||
# Gajim is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published
 | 
			
		||||
# by the Free Software Foundation; version 3 only.
 | 
			
		||||
#
 | 
			
		||||
# Gajim is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with Gajim. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
from gi.repository import Gtk
 | 
			
		||||
 | 
			
		||||
from gajim.common import app
 | 
			
		||||
from gajim.common import ged
 | 
			
		||||
from gajim.gtk import ErrorDialog
 | 
			
		||||
from gajim.gtk import WarningDialog
 | 
			
		||||
from gajim.gtk.util import get_builder
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ManagePEPServicesWindow:
 | 
			
		||||
    def __init__(self, account):
 | 
			
		||||
        self.xml = get_builder('manage_pep_services_window.ui')
 | 
			
		||||
        self.window = self.xml.get_object('manage_pep_services_window')
 | 
			
		||||
        self.window.set_transient_for(app.interface.roster.window)
 | 
			
		||||
        self.xml.get_object('configure_button').set_sensitive(False)
 | 
			
		||||
        self.xml.get_object('delete_button').set_sensitive(False)
 | 
			
		||||
        self.xml.connect_signals(self)
 | 
			
		||||
        self.account = account
 | 
			
		||||
        self._con = app.connections[self.account]
 | 
			
		||||
 | 
			
		||||
        self.init_services()
 | 
			
		||||
        self.xml.get_object('services_treeview').get_selection().connect(
 | 
			
		||||
            'changed', self.on_services_selection_changed)
 | 
			
		||||
 | 
			
		||||
        app.ged.register_event_handler(
 | 
			
		||||
            'pubsub-config-received', ged.GUI1, self._nec_pep_config_received)
 | 
			
		||||
 | 
			
		||||
        self.window.show_all()
 | 
			
		||||
 | 
			
		||||
    def on_manage_pep_services_window_destroy(self, widget):
 | 
			
		||||
        del app.interface.instances[self.account]['pep_services']
 | 
			
		||||
        app.ged.remove_event_handler(
 | 
			
		||||
            'pubsub-config-received', ged.GUI1, self._nec_pep_config_received)
 | 
			
		||||
 | 
			
		||||
    def on_close_button_clicked(self, widget):
 | 
			
		||||
        self.window.destroy()
 | 
			
		||||
 | 
			
		||||
    def on_services_selection_changed(self, sel):
 | 
			
		||||
        self.xml.get_object('configure_button').set_sensitive(True)
 | 
			
		||||
        self.xml.get_object('delete_button').set_sensitive(True)
 | 
			
		||||
 | 
			
		||||
    def init_services(self):
 | 
			
		||||
        self.treeview = self.xml.get_object('services_treeview')
 | 
			
		||||
        # service, access_model, group
 | 
			
		||||
        self.treestore = Gtk.ListStore(str)
 | 
			
		||||
        self.treeview.set_model(self.treestore)
 | 
			
		||||
 | 
			
		||||
        col = Gtk.TreeViewColumn('Service')
 | 
			
		||||
        self.treeview.append_column(col)
 | 
			
		||||
 | 
			
		||||
        cellrenderer_text = Gtk.CellRendererText()
 | 
			
		||||
        col.pack_start(cellrenderer_text, True)
 | 
			
		||||
        col.add_attribute(cellrenderer_text, 'text', 0)
 | 
			
		||||
 | 
			
		||||
        jid = self._con.get_own_jid().getStripped()
 | 
			
		||||
        self._con.get_module('Discovery').disco_items(
 | 
			
		||||
            jid, success_cb=self._items_received, error_cb=self._items_error)
 | 
			
		||||
 | 
			
		||||
    def _items_received(self, from_, node, items):
 | 
			
		||||
        jid = self._con.get_own_jid().getStripped()
 | 
			
		||||
        for item in items:
 | 
			
		||||
            if item['jid'] == jid and 'node' in item:
 | 
			
		||||
                self.treestore.append([item['node']])
 | 
			
		||||
 | 
			
		||||
    def _items_error(self, from_, error):
 | 
			
		||||
        ErrorDialog('Error', error)
 | 
			
		||||
 | 
			
		||||
    def node_removed(self, jid, node):
 | 
			
		||||
        if jid != app.get_jid_from_account(self.account):
 | 
			
		||||
            return
 | 
			
		||||
        model = self.treeview.get_model()
 | 
			
		||||
        iter_ = model.get_iter_first()
 | 
			
		||||
        while iter_:
 | 
			
		||||
            if model[iter_][0] == node:
 | 
			
		||||
                model.remove(iter_)
 | 
			
		||||
                break
 | 
			
		||||
            iter_ = model.iter_next(iter_)
 | 
			
		||||
 | 
			
		||||
    def node_not_removed(self, jid, node, msg):
 | 
			
		||||
        if jid != app.get_jid_from_account(self.account):
 | 
			
		||||
            return
 | 
			
		||||
        WarningDialog(
 | 
			
		||||
            _('PEP node was not removed'),
 | 
			
		||||
            _('PEP node %(node)s was not removed: %(message)s') % {
 | 
			
		||||
                'node': node, 'message': msg})
 | 
			
		||||
 | 
			
		||||
    def on_delete_button_clicked(self, widget):
 | 
			
		||||
        selection = self.treeview.get_selection()
 | 
			
		||||
        if not selection:
 | 
			
		||||
            return
 | 
			
		||||
        model, iter_ = selection.get_selected()
 | 
			
		||||
        node = model[iter_][0]
 | 
			
		||||
        our_jid = app.get_jid_from_account(self.account)
 | 
			
		||||
        con = app.connections[self.account]
 | 
			
		||||
        con.get_module('PubSub').send_pb_delete(our_jid, node,
 | 
			
		||||
                                                on_ok=self.node_removed,
 | 
			
		||||
                                                on_fail=self.node_not_removed)
 | 
			
		||||
 | 
			
		||||
    def on_configure_button_clicked(self, widget):
 | 
			
		||||
        selection = self.treeview.get_selection()
 | 
			
		||||
        if not selection:
 | 
			
		||||
            return
 | 
			
		||||
        model, iter_ = selection.get_selected()
 | 
			
		||||
        node = model[iter_][0]
 | 
			
		||||
        our_jid = app.get_jid_from_account(self.account)
 | 
			
		||||
        con = app.connections[self.account]
 | 
			
		||||
        con.get_module('PubSub').request_pb_configuration(our_jid, node)
 | 
			
		||||
 | 
			
		||||
    def _nec_pep_config_received(self, obj):
 | 
			
		||||
        def on_ok(form, node):
 | 
			
		||||
            form.type_ = 'submit'
 | 
			
		||||
            our_jid = app.get_jid_from_account(self.account)
 | 
			
		||||
            con = app.connections[self.account]
 | 
			
		||||
            con.get_module('PubSub').send_pb_configure(our_jid, node, form)
 | 
			
		||||
        from gajim.dialogs import DataFormWindow
 | 
			
		||||
        window = DataFormWindow(obj.form, (on_ok, obj.node))
 | 
			
		||||
        title = _('Configure %s') % obj.node
 | 
			
		||||
        window.set_title(title)
 | 
			
		||||
        window.show_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -68,6 +68,7 @@ from gajim.gtk import InformationDialog
 | 
			
		|||
from gajim.gtk import NonModalConfirmationDialog
 | 
			
		||||
from gajim.gtk import SingleMessageWindow
 | 
			
		||||
from gajim.gtk import AddNewContactWindow
 | 
			
		||||
from gajim.gtk import ManagePEPServicesWindow
 | 
			
		||||
 | 
			
		||||
from gajim.common.const import AvatarSize
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3654,7 +3655,7 @@ class RosterWindow:
 | 
			
		|||
            app.interface.instances[account]['pep_services'].window.present()
 | 
			
		||||
        else:
 | 
			
		||||
            app.interface.instances[account]['pep_services'] = \
 | 
			
		||||
                config.ManagePEPServicesWindow(account)
 | 
			
		||||
                ManagePEPServicesWindow(account)
 | 
			
		||||
 | 
			
		||||
    def on_add_new_contact(self, widget, account):
 | 
			
		||||
        AddNewContactWindow(account)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue