Source code for kiwi.ui.delegates

#
# Kiwi: a Framework and Enhanced Widgets for Python
#
# Copyright (C) 2002, 2003 Async Open Source
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
# USA
#
# Author(s): Christian Reis <kiko@async.com.br>
#            Lorenzo Gil Sanchez <lgs@sicem.biz>
#            Johan Dahlin <jdahlin@async.com.br>
#

"""Defines the Delegate classes that are included in the Kiwi Framework."""

from kiwi.ui.views import SlaveView, BaseView
from kiwi.controllers import BaseController
from kiwi.python import deprecationwarn

[docs]class Delegate(BaseView, BaseController): """A class that combines view and controller functionality into a single package. The Delegate class possesses a top-level window. """ def __init__(self, toplevel=None, widgets=(), gladefile=None, toplevel_name=None, delete_handler=None, keyactions=None): """Creates a new Delegate. The keyactions parameter is sent to :class:`kiwi.controllers.BaseController`, the rest are sent to :class:`kiwi.ui.views.BaseView` """ if gladefile: deprecationwarn( 'gladefile is deprecated in Delegate, ' 'use GladeDelegate instead', stacklevel=3) BaseView.__init__(self, toplevel=toplevel, widgets=widgets, gladefile=gladefile, toplevel_name=toplevel_name, delete_handler=delete_handler) BaseController.__init__(self, view=self, keyactions=keyactions)
[docs]class GladeDelegate(BaseView, BaseController): """A class that combines view and controller functionality into a single package. The Delegate class possesses a top-level window. """ def __init__(self, gladefile=None, toplevel_name=None, domain=None, delete_handler=None, keyactions=None): """Creates a new GladeDelegate. The keyactions parameter is sent to :class:`kiwi.controllers.BaseController`, the rest are sent to :class:`kiwi.ui.views.BaseView` """ BaseView.__init__(self, gladefile=gladefile, toplevel_name=toplevel_name, domain=domain, delete_handler=delete_handler) BaseController.__init__(self, view=self, keyactions=keyactions)
[docs]class SlaveDelegate(SlaveView, BaseController): """A class that combines view and controller functionality into a single package. It does not possess a top-level window, but is instead intended to be plugged in to a View or Delegate using attach_slave(). """ def __init__(self, toplevel=None, widgets=(), gladefile=None, toplevel_name=None, keyactions=None): """ The keyactions parameter is sent to :class:`kiwi.controllers.BaseController`, the rest are sent to :class:`kiwi.ui.views.SlaveView` """ if gladefile: deprecationwarn( 'gladefile is deprecated in Delegate, ' 'use GladeSlaveDelegate instead', stacklevel=3) SlaveView.__init__(self, toplevel, widgets, gladefile, toplevel_name) BaseController.__init__(self, view=self, keyactions=keyactions)
[docs]class GladeSlaveDelegate(SlaveView, BaseController): """A class that combines view and controller functionality into a single package. It does not possess a top-level window, but is instead intended to be plugged in to a View or Delegate using attach_slave(). """ def __init__(self, gladefile=None, toplevel_name=None, domain=None, keyactions=None): """ The keyactions parameter is sent to :class:`kiwi.controllers.BaseController`, the rest are sent to :class:`kiwi.ui.views.SlavseView` """ SlaveView.__init__(self, gladefile=gladefile, toplevel_name=toplevel_name, domain=domain) BaseController.__init__(self, view=self, keyactions=keyactions)
[docs]class ProxyDelegate(Delegate): """A class that combines view, controller and proxy functionality into a single package. The Delegate class possesses a top-level window. :ivar model: the model :ivar proxy: the proxy """ def __init__(self, model, proxy_widgets=None, gladefile=None, toplevel=None, widgets=(), toplevel_name=None, domain=None, delete_handler=None, keyactions=None): """Creates a new Delegate. :param model: instance to be attached :param proxy_widgets: The keyactions parameter is sent to :class:`kiwi.controllers.BaseController`, the rest are sent to :class:`kiwi.ui.views.BaseView` """ BaseView.__init__(self, toplevel, widgets, gladefile, toplevel_name, domain, delete_handler) self.model = model self.proxy = self.add_proxy(model, proxy_widgets) self.proxy.proxy_updated = self.proxy_updated BaseController.__init__(self, view=self, keyactions=keyactions)
[docs] def set_model(self, model): """ Set model. :param model: """ self.proxy.set_model(model) self.model = model
[docs] def proxy_updated(self, widget, attribute, value): # Can be overriden in subclasses pass
[docs] def update(self, attribute): self.proxy.update(attribute)
[docs]class ProxySlaveDelegate(GladeSlaveDelegate): """A class that combines view, controller and proxy functionality into a single package. It does not possess a top-level window, but is instead intended to be plugged in to a View or Delegate using attach_slave() :ivar model: the model :ivar proxy: the proxy """ def __init__(self, model, proxy_widgets=None, gladefile=None, toplevel_name=None, domain=None, keyactions=None): """Creates a new Delegate. :param model: instance to be attached :param proxy_widgets: The keyactions parameter is sent to :class:`kiwi.controllers.BaseController`, the rest are sent to :class:`kiwi.ui.views.BaseView` """ GladeSlaveDelegate.__init__(self, gladefile, toplevel_name, domain, keyactions) self.model = model self.proxy = self.add_proxy(model, proxy_widgets) self.proxy.proxy_updated = self.proxy_updated
[docs] def set_model(self, model): """ Set model. :param model: """ self.proxy.set_model(model) self.model = model
[docs] def proxy_updated(self, widget, attribute, value): # Can be overriden in subclasses pass
[docs] def update(self, attribute): self.proxy.update(attribute)