Source code for kiwi.ui.widgets.textview

#
# Kiwi: a Framework and Enhanced Widgets for Python
#
# Copyright (C) 2003-2005 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>
#            Gustavo Rahal <gustavo@async.com.br>
#            Evandro Vale Miquelito <evandro@async.com.br>
#            Johan Dahlin <jdahlin@async.com.br>

"""GtkTextView support for the Kiwi Framework"""

import datetime

import gobject
import gtk

from kiwi import ValueUnset
from kiwi.datatypes import number
from kiwi.python import deprecationwarn
from kiwi.ui.proxywidget import ValidatableProxyWidgetMixin
from kiwi.utils import gsignal, type_register

[docs]class ProxyTextView(gtk.TextView, ValidatableProxyWidgetMixin): __gtype_name__ = 'ProxyTextView' data_value = gobject.property(type=str, nick='Data Value') data_type = gobject.property( getter=ValidatableProxyWidgetMixin.get_data_type, setter=ValidatableProxyWidgetMixin.set_data_type, type=str, blurb='Data Type') mandatory = gobject.property(type=bool, default=False) model_attribute = gobject.property(type=str, blurb='Model attribute') gsignal('content-changed') gsignal('validation-changed', bool) gsignal('validate', object, retval=object) allowed_data_types = (basestring, datetime.date) + number def __init__(self): self._is_unset = True gtk.TextView.__init__(self) self.props.data_type = str ValidatableProxyWidgetMixin.__init__(self) self._textbuffer = gtk.TextBuffer() self._textbuffer.connect('changed', self._on_textbuffer__changed) self.set_buffer(self._textbuffer) def _on_textbuffer__changed(self, textbuffer): self._is_unset = False self.emit('content-changed') self.read()
[docs] def read(self): if self._is_unset: return ValueUnset textbuffer = self._textbuffer data = textbuffer.get_text(textbuffer.get_start_iter(), textbuffer.get_end_iter()) return self._from_string(data)
[docs] def update(self, data): if data is ValueUnset: self._textbuffer.set_text("") self._is_unset = True return elif data is None: text = "" else: self.is_unset = False text = self._as_string(data) self._textbuffer.set_text(text)
[docs]class TextView(ProxyTextView): def __init__(self): deprecationwarn( 'TextView is deprecated, use ProxyTextView instead', stacklevel=3) ProxyTextView.__init__(self)
type_register(TextView)