本文整理汇总了Python中kiwi.ui.widgets.entry.ProxyEntry.show方法的典型用法代码示例。如果您正苦于以下问题:Python ProxyEntry.show方法的具体用法?Python ProxyEntry.show怎么用?Python ProxyEntry.show使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kiwi.ui.widgets.entry.ProxyEntry
的用法示例。
在下文中一共展示了ProxyEntry.show方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _setup_entry_slave
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
def _setup_entry_slave(self, box=None):
widget = ProxyEntry()
# Try to simulate insensitive appearance for non-editable entries
# while keeping them selectable
widget.set_editable(self.sensitive)
if not self.sensitive:
style = widget.get_style()
widget.modify_text(
gtk.STATE_NORMAL, style.text[gtk.STATE_INSENSITIVE])
widget.modify_base(
gtk.STATE_NORMAL, style.base[gtk.STATE_INSENSITIVE])
widget.data_type = unicode
widget.model_attribute = "field_value"
self.proxy.add_widget("field_value", widget)
if box is None:
self.container.add(widget)
else:
box.pack_start(widget)
widget.show()
widget.connect('validate', self._on_entry__validate)
widget.connect('validation-changed',
self._on_entry__validation_changed)
self._entry = widget
示例2: _setup_entry_slave
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
def _setup_entry_slave(self, box=None):
widget = ProxyEntry()
widget.props.sensitive = self.sensitive
widget.data_type = unicode
widget.model_attribute = "field_value"
self.proxy.add_widget("field_value", widget)
if box is None:
self.container.add(widget)
else:
box.pack_start(widget)
widget.show()
widget.connect("validate", self._on_entry__validate)
widget.connect("validation-changed", self._on_entry__validation_changed)
self._entry = widget
示例3: _setup_entry_slave
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
def _setup_entry_slave(self, box=None):
widget = ProxyEntry()
# Try to simulate insensitive appearance for non-editable entries
# while keeping them selectable
widget.set_editable(self.sensitive)
if not self.sensitive:
sc = widget.get_style_context()
sc.add_class('visualmode')
widget.data_type = str
widget.model_attribute = "field_value"
self.proxy.add_widget("field_value", widget)
if box is None:
self.container.add(widget)
else:
box.pack_start(widget, True, True, 0)
widget.show()
widget.connect('validate', self._on_entry__validate)
widget.connect('validation-changed',
self._on_entry__validation_changed)
self._entry = widget
示例4: StartNewLoanStep
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
class StartNewLoanStep(WizardEditorStep):
gladefile = 'SalesPersonStep'
model_type = Loan
proxy_widgets = ['client', 'salesperson', 'expire_date',
'client_category']
def _setup_widgets(self):
# Hide total and subtotal
self.table1.hide()
self.hbox4.hide()
# Hide invoice number details
self.invoice_number_label.hide()
self.invoice_number.hide()
# Hide cost center combobox
self.cost_center_lbl.hide()
self.cost_center.hide()
# Responsible combo
self.salesperson_lbl.set_text(_(u'Responsible:'))
self.salesperson.model_attribute = 'responsible'
users = self.store.find(LoginUser, is_active=True)
self.salesperson.prefill(api.for_person_combo(users))
self.salesperson.set_sensitive(False)
self._fill_clients_combo()
self._fill_clients_category_combo()
self.expire_date.mandatory = True
# CFOP combo
self.cfop_lbl.hide()
self.cfop.hide()
self.create_cfop.hide()
# Transporter/RemovedBy Combo
self.transporter_lbl.set_text(_(u'Removed By:'))
self.create_transporter.hide()
# removed_by widget
self.removed_by = ProxyEntry(unicode)
self.removed_by.model_attribute = 'removed_by'
if 'removed_by' not in self.proxy_widgets:
self.proxy_widgets.append('removed_by')
self.removed_by.show()
self._replace_widget(self.transporter, self.removed_by)
# Operation Nature widget
self.operation_nature.hide()
self.nature_lbl.hide()
def _fill_clients_combo(self):
# FIXME: This should not be using a normal ProxyComboEntry,
# we need a specialized widget that does the searching
# on demand.
items = Client.get_active_items(self.store)
self.client.prefill(items)
self.client.mandatory = True
def _fill_clients_category_combo(self):
categories = self.store.find(ClientCategory)
self.client_category.prefill(api.for_combo(categories, empty=''))
def _replace_widget(self, old_widget, new_widget):
# retrieve the position, since we will replace two widgets later.
parent = old_widget.get_parent()
top = parent.child_get_property(old_widget, 'top-attach')
bottom = parent.child_get_property(old_widget, 'bottom-attach')
left = parent.child_get_property(old_widget, 'left-attach')
right = parent.child_get_property(old_widget, 'right-attach')
parent.remove(old_widget)
parent.attach(new_widget, left, right, top, bottom)
parent.child_set_property(new_widget, 'y-padding', 3)
parent.child_set_property(new_widget, 'x-padding', 3)
#
# WizardStep hooks
#
def post_init(self):
self.toogle_client_details()
self.register_validate_function(self.wizard.refresh_next)
self.force_validation()
def next_step(self):
return LoanItemStep(self.wizard, self, self.store, self.model)
def has_previous_step(self):
return False
def setup_proxies(self):
self._setup_widgets()
self.proxy = self.add_proxy(self.model,
StartNewLoanStep.proxy_widgets)
def toogle_client_details(self):
client = self.client.read()
self.client_details.set_sensitive(bool(client))
#.........这里部分代码省略.........
示例5: CalculatorPopup
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
class CalculatorPopup(PopupWindow):
"""A popup calculator for entries
Right now it supports both
:class:`kiwi.ui.widgets.spinbutton.ProxySpinButton` and
:class:`kiwi.ui.widgets.entry.ProxyEntry`, as long as their
data types are numeric (e.g. int, currency, Decimal, etc)
"""
#: The add mode. Any value typed on the entry will be added to the
#: original value. e.g. 10% means +10%
MODE_ADD = 0
#: The sub mode. Any value typed on the entry will be subtracted from the
#: original value. e.g. 10% means -10%
MODE_SUB = 1
_mode = None
_data_type_mapper = {
'currency': currency,
'Decimal': decimal.Decimal,
}
def __init__(self, entry, mode):
"""
:param entry: a :class:`kiwi.ui.widgets.spinbutton.ProxySpinButton`
or a :class:`kiwi.ui.widgets.entry.ProxyEntry` subclass
:param mode: one of :attr:`.MODE_ADD`, :attr:`.MODE_SUB`
"""
self._mode = mode
self._new_value = None
self._data_type = self._data_type_mapper[entry.data_type]
self._converter = converter.get_converter(self._data_type)
super(CalculatorPopup, self).__init__(entry)
#
# Public API
#
def get_main_widget(self):
# This is done on entry to check where to put the validation/mandatory
# icons. We should put the calculator on the other side.
# Note that spinbuttons are always right aligned and thus
# xalign will always be 1.0
if self.attached_widget.get_alignment() > 0.5:
self._icon_pos = 'secondary-icon'
else:
self._icon_pos = 'primary-icon'
self.attached_widget.set_property(self._icon_pos + '-activatable', True)
self.attached_widget.set_property(
self._icon_pos + '-tooltip-text',
_("Do calculations on top of this value"))
self.attached_widget.connect(
'notify::sensitive', self._on_entry_sensitive__notify)
self.attached_widget.connect('icon-press', self._on_entry__icon_press)
self._toggle_calculator_icon()
vbox = Gtk.VBox(spacing=6)
vbox.show()
self._main_label = Gtk.Label()
self._main_label.set_ellipsize(Pango.EllipsizeMode.END)
vbox.pack_start(self._main_label, True, True, 0)
self._main_label.show()
self._entry = ProxyEntry()
# FIXME: We need a model_attribute here or else the entry.is_valid()
# will always return None. Check proxywidget.py's FIXME to see why
self._entry.model_attribute = 'not_used'
self._entry.connect('validate', self._on_entry__validate)
self._entry.connect_after('changed', self._after_entry__changed)
self._entry.set_alignment(1.0)
vbox.pack_start(self._entry, True, True, 0)
self._entry.show()
hbox = Gtk.HBox(spacing=6)
vbox.pack_start(hbox, True, True, 0)
hbox.show()
self._label = Gtk.Label()
self._label.set_property('xalign', 1.0)
self._label.set_use_markup(True)
hbox.pack_start(self._label, True, True, 0)
self._label.show()
self._warning = Gtk.Image()
hbox.pack_start(self._warning, False, False, 0)
return vbox
def validate_popup(self):
try:
self._new_value = self._data_type(self.attached_widget.get_text())
except decimal.InvalidOperation:
return False
self._entry.set_text('')
self._entry.set_tooltip_text(_("Use absolute or percentage (%) value"))
#.........这里部分代码省略.........
示例6: AccountEditor
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
class AccountEditor(BaseEditor):
""" Account Editor """
gladefile = "AccountEditor"
proxy_widgets = ['description', 'code']
model_type = Account
model_name = _('Account')
def __init__(self, store, model=None, parent_account=None):
self._last_account_type = None
self._bank_number = -1
self._bank_widgets = []
self._bank_option_widgets = []
self._option_fields = {}
self._test_button = None
self.existing = model is not None
self.parent_account = parent_account
self.bank_model = _TemporaryBankAccount()
BaseEditor.__init__(self, store, model)
action_area = self.main_dialog.action_area
action_area.set_layout(gtk.BUTTONBOX_END)
action_area.pack_start(self._test_button, expand=False, fill=False)
action_area.set_child_secondary(self._test_button, True)
self._test_button.show()
#
# BaseEditor hooks
#
def create_model(self, store):
return Account(description=u"",
account_type=Account.TYPE_CASH,
store=store)
def _setup_widgets(self):
self._test_button = gtk.Button(_("Print a test bill"))
self._test_button.connect('clicked',
self._on_test_button__clicked)
self.parent_accounts = AccountTree(with_code=False, create_mode=True)
self.parent_accounts.connect('selection-changed',
self._on_parent_accounts__selection_changed)
self.tree_box.pack_start(self.parent_accounts)
self.tree_box.reorder_child(self.parent_accounts, 0)
if self.model == sysparam(self.store).IMBALANCE_ACCOUNT:
self.account_type.set_sensitive(False)
self.account_type.prefill(Account.account_type_descriptions)
account_type = self.model.account_type
self.parent_accounts.insert_initial(self.store,
edited_account=self.model)
if self.parent_account:
account = self.parent_accounts.get_account_by_id(
self.parent_account.id)
self.parent_accounts.select(account)
if not self.existing:
account_type = account.account_type
self.account_type.select(account_type)
self.parent_accounts.show()
def setup_proxies(self):
self._setup_widgets()
self.add_proxy(self.model, AccountEditor.proxy_widgets)
def validate_confirm(self):
if not self.model.description:
return False
account = self.parent_accounts.get_selected()
if not account:
return True
return account.selectable
def on_confirm(self):
new_parent = self.parent_accounts.get_selected()
if new_parent:
new_parent = new_parent.account
if new_parent != self.model:
self.model.parent = new_parent
self.model.account_type = self.account_type.get_selected()
self._save_bank()
def refresh_ok(self, value):
BaseEditor.refresh_ok(self, value)
account_type = self.account_type.get_selected()
if account_type != Account.TYPE_BANK:
value = False
self._test_button.set_sensitive(value)
# Private
def _save_bank(self):
bank_account = self.model.bank
if not bank_account:
bank_account = BankAccount(account=self.model,
store=self.store)
# FIXME: Who sets this to a str?
bank_account.bank_account = unicode(self.bank_model.bank_account)
bank_account.bank_branch = unicode(self.bank_model.bank_branch)
#.........这里部分代码省略.........
示例7: _update_bank_type
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
def _update_bank_type(self):
self._remove_bank_option_widgets()
bank_number = self.bank_type.get_selected()
bank_info = None
if bank_number:
bank_info = get_bank_info_by_number(bank_number)
self.bank_number = ProxyEntry()
self.bank_number.props.data_type = int
self.bank_number.set_sensitive(False)
bank_number_lbl = self._add_widget(api.escape(_("Number:")),
self.bank_number, options=True)
self.bank_branch = ProxyEntry()
self.bank_branch.connect('validate', self._on_bank_branch__validate,
bank_info)
self.bank_branch.props.data_type = 'str'
self.bank_branch.props.mandatory = True
self.bank_branch.model_attribute = "bank_branch"
bank_branch_lbl = self._add_widget(api.escape(_("Agency:")),
self.bank_branch, options=True)
if bank_number is not None:
bank_branch_lbl.show()
self.bank_branch.show()
else:
bank_branch_lbl.hide()
self.bank_account = ProxyEntry()
self.bank_account.connect('validate', self._on_bank_account__validate,
bank_info)
self._add_widget(api.escape(_("Account:")),
self.bank_account, options=True)
self.bank_account.model_attribute = "bank_account"
self.bank_account.props.data_type = 'str'
if bank_number is not None:
self.bank_account.props.mandatory = True
self.bank_account.show()
attributes = ['bank_account', 'bank_branch',
'bank_number']
if bank_number is not None:
bank_number_lbl.show()
self.bank_number.show()
self.bank_model.bank_number = bank_number
for i, option in enumerate(bank_info.get_extra_options()):
name = 'option' + str(i)
entry = ProxyEntry()
entry.model_attribute = name
setattr(self, name, entry)
# Set the model attr too so it can be validated
setattr(self.bank_model, name, u'')
entry.props.data_type = 'str'
entry.connect('validate', self._on_bank_option__validate,
bank_info, option)
self._add_widget("<i>%s</i>:" % (api.escape(option.capitalize()), ),
entry, options=True)
entry.show()
self._option_fields[option] = entry
attributes.append(entry.model_attribute)
else:
bank_number_lbl.hide()
self.bank_proxy = self.add_proxy(
self.bank_model, attributes)
self._fill_bank_account()
示例8: CalculatorPopup
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
class CalculatorPopup(gtk.Window):
"""A popup calculator for entries
Right now it supports both
:class:`kiwi.ui.widgets.spinbutton.ProxySpinButton` and
:class:`kiwi.ui.widgets.entry.ProxyEntry`, as long as their
data types are numeric (e.g. int, currency, Decimal, etc)
"""
#: The add mode. Any value typed on the entry will be added to the
#: original value. e.g. 10% means +10%
MODE_ADD = 0
#: The sub mode. Any value typed on the entry will be subtracted from the
#: original value. e.g. 10% means -10%
MODE_SUB = 1
_mode = None
_data_type_mapper = {
'currency': currency,
'Decimal': decimal.Decimal,
}
def __init__(self, entry, mode):
"""
:param entry: a :class:`kiwi.ui.widgets.spinbutton.ProxySpinButton`
or a :class:`kiwi.ui.widgets.entry.ProxyEntry` subclass
:param mode: one of :attr:`.MODE_ADD`, :attr:`.MODE_SUB`
"""
self._mode = mode
self._new_value = None
self._popped_entry = entry
self._data_type = self._data_type_mapper[entry.data_type]
self._converter = converter.get_converter(self._data_type)
gtk.Window.__init__(self, gtk.WINDOW_POPUP)
self._create_ui()
#
# Public API
#
def popup(self):
if not self._popped_entry.get_realized():
return
toplevel = self._popped_entry.get_toplevel().get_toplevel()
if (isinstance(toplevel, (gtk.Window, gtk.Dialog)) and
toplevel.get_group()):
toplevel.get_group().add_window(self)
# width is meant for the popup window
x, y, width, height = self._get_position()
self.set_size_request(width, -1)
self.move(x, y)
self.show_all()
if not self._popup_grab_window():
self.hide()
return
self.grab_add()
self._update_ui()
def popdown(self):
if not self._popped_entry.get_realized():
return
self.grab_remove()
self.hide()
self._popped_entry.grab_focus()
#
# Private
#
def _create_ui(self):
self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.KEY_PRESS_MASK)
self.connect('key-press-event', self._on__key_press_event)
self.connect('button-press-event', self._on__button_press_event)
# This is done on entry to check where to put the validation/mandatory
# icons. We should put the calculator on the other side.
# Note that spinbuttons are always right aligned and thus
# xalign will always be 1.0
if self._popped_entry.get_property('xalign') > 0.5:
self._icon_pos = 'secondary-icon'
else:
self._icon_pos = 'primary-icon'
self._popped_entry.set_property(self._icon_pos + '-activatable', True)
self._popped_entry.set_property(self._icon_pos + '-tooltip-text',
_("Do calculations on top of this value"))
self._popped_entry.connect('notify::sensitive',
self._on_popped_entry_sensitive__notify)
self._popped_entry.connect('icon-press',
self._on_popped_entry__icon_press)
self._toggle_calculator_icon()
#.........这里部分代码省略.........
示例9: DateEntry
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
class DateEntry(Gtk.Box):
"""I am an entry which you can input a date on.
In addition to an Gtk.Entry I also contain a button
with an arrow you can click to get popup window with a Gtk.Calendar
for which you can use to select the date
"""
gsignal('changed')
gsignal('activate')
def __init__(self):
super(DateEntry, self).__init__(orientation=Gtk.Orientation.HORIZONTAL)
self.get_style_context().add_class(Gtk.STYLE_CLASS_LINKED)
self._popping_down = False
self._old_date = None
self._block_changed = False
# This will force both the entry and the button have the same height
self._sizegroup = Gtk.SizeGroup.new(Gtk.SizeGroupMode.VERTICAL)
# bootstrap problems, kiwi.ui.widgets.entry imports dateentry
# we need to use a proxy entry because we want the mask
from kiwi.ui.widgets.entry import ProxyEntry
self.entry = ProxyEntry()
# Set datatype before connecting to change event, to not get when the
# mask is set
self.entry.set_property('data-type', datetime.date)
self.entry.connect('changed', self._on_entry__changed)
self.entry.connect('activate', self._on_entry__activate)
mask = self.entry.get_mask()
if mask:
self.entry.set_width_chars(len(mask))
self.pack_start(self.entry, True, True, 0)
self.entry.set_valign(Gtk.Align.CENTER)
self._sizegroup.add_widget(self.entry)
self.entry.show()
self._button = Gtk.ToggleButton()
self._button.set_valign(Gtk.Align.CENTER)
self._button.connect('scroll-event', self._on_entry__scroll_event)
self._button.connect('toggled', self._on_button__toggled)
self._button.set_focus_on_click(False)
self.pack_start(self._button, False, False, 0)
self._sizegroup.add_widget(self._button)
self._button.show()
arrow = Gtk.Arrow(arrow_type=Gtk.ArrowType.DOWN, shadow_type=Gtk.ShadowType.NONE)
self._button.add(arrow)
arrow.show()
self._popup = _DateEntryPopup(self)
self._popup.connect('date-selected', self._on_popup__date_selected)
self._popup.connect('hide', self._on_popup__hide)
self._popup.set_size_request(-1, 24)
self.set_valign(Gtk.Align.CENTER)
# Virtual methods
def do_grab_focus(self):
self.entry.grab_focus()
# Callbacks
def _on_entry__changed(self, entry):
try:
date = self.get_date()
except ValidationError:
date = None
self._changed(date)
def _on_entry__activate(self, entry):
self.emit('activate')
def _on_entry__scroll_event(self, entry, event):
if event.direction == Gdk.ScrollDirection.UP:
days = 1
elif event.direction == Gdk.ScrollDirection.DOWN:
days = -1
else:
return
try:
date = self.get_date()
except ValidationError:
date = None
if not date:
newdate = datetime.date.today()
else:
newdate = date + datetime.timedelta(days=days)
self.set_date(newdate)
def _on_button__toggled(self, button):
if self._popping_down:
return
try:
date = self.get_date()
except ValidationError:
#.........这里部分代码省略.........
示例10: DateEntry
# 需要导入模块: from kiwi.ui.widgets.entry import ProxyEntry [as 别名]
# 或者: from kiwi.ui.widgets.entry.ProxyEntry import show [as 别名]
class DateEntry(gtk.HBox):
"""I am an entry which you can input a date on.
In addition to an gtk.Entry I also contain a button
with an arrow you can click to get popup window with a gtk.Calendar
for which you can use to select the date
"""
gsignal('changed')
gsignal('activate')
def __init__(self):
gtk.HBox.__init__(self)
self._popping_down = False
self._old_date = None
# bootstrap problems, kiwi.ui.widgets.entry imports dateentry
# we need to use a proxy entry because we want the mask
from kiwi.ui.widgets.entry import ProxyEntry
self.entry = ProxyEntry()
self.entry.connect('changed', self._on_entry__changed)
self.entry.connect('activate', self._on_entry__activate)
self.entry.set_property('data-type', datetime.date)
mask = self.entry.get_mask()
if mask:
self.entry.set_width_chars(len(mask))
self.pack_start(self.entry, False, False)
self.entry.show()
self._button = gtk.ToggleButton()
self._button.connect('scroll-event', self._on_entry__scroll_event)
self._button.connect('toggled', self._on_button__toggled)
self._button.set_focus_on_click(False)
self.pack_start(self._button, False, False)
self._button.show()
arrow = gtk.Arrow(gtk.ARROW_DOWN, gtk.SHADOW_NONE)
self._button.add(arrow)
arrow.show()
self._popup = _DateEntryPopup(self)
self._popup.connect('date-selected', self._on_popup__date_selected)
self._popup.connect('hide', self._on_popup__hide)
self._popup.set_size_request(-1, 24)
# Virtual methods
def do_grab_focus(self):
self.entry.grab_focus()
# Callbacks
def _on_entry__changed(self, entry):
try:
date = self.get_date()
except ValidationError:
date = None
self._changed(date)
def _on_entry__activate(self, entry):
self.emit('activate')
def _on_entry__scroll_event(self, entry, event):
if event.direction == gdk.SCROLL_UP:
days = 1
elif event.direction == gdk.SCROLL_DOWN:
days = -1
else:
return
try:
date = self.get_date()
except ValidationError:
date = None
if not date:
newdate = datetime.date.today()
else:
newdate = date + datetime.timedelta(days=days)
self.set_date(newdate)
def _on_button__toggled(self, button):
if self._popping_down:
return
try:
date = self.get_date()
except ValidationError:
date = None
self._popup.popup(date)
def _on_popup__hide(self, popup):
self._popping_down = True
self._button.set_active(False)
self._popping_down = False
def _on_popup__date_selected(self, popup, date):
self.set_date(date)
popup.popdown()
self.entry.grab_focus()
self.entry.set_position(len(self.entry.get_text()))
#.........这里部分代码省略.........