本文整理汇总了Python中tryton.gui.window.view_form.screen.Screen.set_cursor方法的典型用法代码示例。如果您正苦于以下问题:Python Screen.set_cursor方法的具体用法?Python Screen.set_cursor怎么用?Python Screen.set_cursor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tryton.gui.window.view_form.screen.Screen
的用法示例。
在下文中一共展示了Screen.set_cursor方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Many2Many
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
self.wid_text.grab_focus()
return False
def destroy(self):
self.screen.destroy()
def color_set(self, name):
super(Many2Many, self).color_set(name)
widget = self._color_widget()
# if the style to apply is different from readonly then insensitive
# cellrenderers should use the default insensitive color
if name != 'readonly':
widget.modify_text(gtk.STATE_INSENSITIVE,
self.colors['text_color_insensitive'])
def _sig_add(self, *args):
if not self.focus_out:
return
domain = self.field.domain_get(self.record)
add_remove = self.record.expr_eval(self.attrs.get('add_remove'))
if add_remove:
domain = [domain, add_remove]
context = self.field.context_get(self.record)
value = self.wid_text.get_text().decode('utf-8')
self.focus_out = False
def callback(result):
self.focus_out = True
if result:
ids = [x[0] for x in result]
self.screen.load(ids, modified=True)
self.screen.display(res_id=ids[0])
self.screen.set_cursor()
self.wid_text.set_text('')
win = WinSearch(self.attrs['relation'], callback, sel_multi=True,
context=context, domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
views_preload=self.attrs.get('views', {}),
new=self.attrs.get('create', True))
win.screen.search_filter(quote(value))
win.show()
def _sig_remove(self, *args):
self.screen.remove(remove=True)
def _on_activate(self):
self._sig_edit()
def _sig_edit(self):
if not self.screen.current_record:
return
# Create a new screen that is not linked to the parent otherwise on the
# save of the record will trigger the save of the parent
domain = self.field.domain_get(self.record)
add_remove = self.record.expr_eval(self.attrs.get('add_remove'))
if add_remove:
domain = [domain, add_remove]
context = self.field.context_get(self.record)
screen = Screen(self.attrs['relation'], domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
mode=['form'], views_preload=self.attrs.get('views', {}),
readonly=self.attrs.get('readonly', False),
context=context)
screen.load([self.screen.current_record.id])
示例2: Many2Many
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
super(Many2Many, self).color_set(name)
widget = self._color_widget()
# if the style to apply is different from readonly then insensitive
# cellrenderers should use the default insensitive color
if name != 'readonly':
widget.modify_text(gtk.STATE_INSENSITIVE,
self.colors['text_color_insensitive'])
def _sig_add(self, *args, **kwargs):
if not self.focus_out:
return
domain = self.field.domain_get(self.record)
context = self.field.context_get(self.record)
value = self.wid_text.get_text()
self.focus_out = False
try:
if value:
dom = [('rec_name', 'ilike', '%' + value + '%'), domain]
else:
dom = domain
ids = RPCExecute('model', self.attrs['relation'], 'search',
dom, 0, CONFIG['client.limit'], None, context=context)
except RPCException:
self.focus_out = True
return False
def callback(result):
self.focus_out = True
if result:
ids = [x[0] for x in result]
self.screen.load(ids, modified=True)
self.screen.display(res_id=ids[0])
self.screen.set_cursor()
self.wid_text.set_text('')
if len(ids) != 1 or not value or kwargs.get('win_search', False):
WinSearch(self.attrs['relation'], callback, sel_multi=True,
ids=ids, context=context, domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
views_preload=self.attrs.get('views', {}),
new=self.attrs.get('create', True))
else:
callback([(i, None) for i in ids])
def _sig_remove(self, *args):
self.screen.remove(remove=True)
def _on_activate(self):
self._sig_edit()
def _sig_edit(self):
if self.screen.current_record:
def callback(result):
if result:
self.screen.current_record.save()
else:
self.screen.current_record.cancel()
WinForm(self.screen, callback)
def _readonly_set(self, value):
self._readonly = value
self._set_button_sensitive()
def _set_button_sensitive(self):
if self.record and self.field:
field_size = self.record.expr_eval(self.attrs.get('size'))
示例3: One2Many
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
)
self.but_del.set_sensitive(
bool(not self._readonly and self.attrs.get("delete", True) and self._position and access["delete"])
)
self.but_undel.set_sensitive(bool(not self._readonly and not size_limit and self._position))
self.but_open.set_sensitive(bool(self._position and access["read"] and has_form))
self.but_next.set_sensitive(bool(self._position and self._position < self._length))
self.but_pre.set_sensitive(bool(self._position and self._position > 1))
if self.attrs.get("add_remove"):
self.but_add.set_sensitive(
bool(not self._readonly and not size_limit and access["write"] and access["read"])
)
self.but_remove.set_sensitive(
bool(not self._readonly and self._position and access["write"] and access["read"])
)
self.wid_text.set_sensitive(self.but_add.get_sensitive())
# New button must be added to focus chain to allow keyboard only
# creation when there is no existing record on form view.
focus_chain = self.title_box.get_focus_chain() or []
if o2m_size == 0 and self.screen.current_view.view_type == "form":
if self.but_new not in focus_chain:
focus_chain.append(self.but_new)
else:
if self.but_new in focus_chain:
focus_chain.remove(self.but_new)
self.title_box.set_focus_chain(focus_chain)
def _validate(self):
record = self.screen.current_record
if record:
fields = self.screen.current_view.get_fields()
if not record.validate(fields):
self.screen.display(set_cursor=True)
return False
if self.screen.pre_validate and not record.pre_validate():
return False
return True
def _sig_new(self, *args):
if not common.MODELACCESS[self.screen.model_name]["create"]:
return
if not self._validate():
return
if self.attrs.get("product"):
self._new_product()
else:
self._new_single()
def _new_single(self):
ctx = {}
ctx.update(self.field.context_get(self.record))
sequence = None
for view in self.screen.views:
if view.view_type == "tree":
sequence = view.attributes.get("sequence")
if sequence:
break
def update_sequence():
if sequence:
self.screen.group.set_sequence(field=sequence)
for widget in [self] + self.view.widgets[self.field_name]:
if (
示例4: Form
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
message_str += _('Model:') + ' ' + self.model
message(message_str)
return True
def revision(self, widget=None):
if not self.modified_save():
return
current_id = (self.screen.current_record.id
if self.screen.current_record else None)
try:
revisions = RPCExecute('model', self.model, 'history_revisions',
[r.id for r in self.screen.selected_records])
except RPCException:
return
revision = self.screen.context.get('_datetime')
format_ = self.screen.context.get('date_format', '%x')
format_ += ' %X.%f'
revision = Revision(revisions, revision, format_).run()
# Prevent too old revision in form view
if (self.screen.current_view.view_type == 'form'
and revision
and revision < revisions[-1][0]):
revision = revisions[-1][0]
if revision != self.screen.context.get('_datetime'):
self.screen.clear()
# Update root group context that will be propagated
self.screen.group._context['_datetime'] = revision
if self.screen.current_view.view_type != 'form':
self.screen.search_filter(
self.screen.screen_container.get_text())
else:
# Test if record exist in revisions
self.screen.load([current_id])
self.screen.display(set_cursor=True)
self.update_revision()
def update_revision(self):
revision = self.screen.context.get('_datetime')
if revision:
format_ = self.screen.context.get('date_format', '%x')
format_ += ' %X.%f'
revision = datetime_strftime(revision, format_)
self.title.set_label('%s @ %s' % (self.name, revision))
else:
self.title.set_label(self.name)
self.set_buttons_sensitive(revision)
def set_buttons_sensitive(self, revision=None):
if not revision:
access = common.MODELACCESS[self.model]
self.buttons['new'].props.sensitive = access['create']
self.buttons['save'].props.sensitive = (
access['create'] or access['write'])
else:
for button in ['new', 'save']:
self.buttons[button].props.sensitive = False
def sig_remove(self, widget=None):
if not common.MODELACCESS[self.model]['delete']:
return
if self.screen.current_view.view_type == 'form':
msg = _('Are you sure to remove this record?')
else:
msg = _('Are you sure to remove those records?')
if sur(msg):
if not self.screen.remove(delete=True, force_remove=True):
示例5: One2Many
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
def _sig_activate(self, *args):
self._sig_add()
self.wid_text.grab_focus()
def _focus_out(self, *args):
if self.wid_text.get_text():
self._sig_add()
def _sig_add(self, *args):
self.view.set_value()
domain = self.field.domain_get(self.record)
context = self.field.context_get(self.record)
domain = domain[:]
domain.extend(self.record.expr_eval(self.attrs.get('add_remove')))
removed_ids = self.field.get_removed_ids(self.record)
try:
if self.wid_text.get_text():
dom = [('rec_name', 'ilike',
'%' + self.wid_text.get_text() + '%'),
['OR', domain, ('id', 'in', removed_ids)]]
else:
dom = ['OR', domain, ('id', 'in', removed_ids)]
ids = RPCExecute('model', self.attrs['relation'], 'search', dom,
0, CONFIG['client.limit'], None, context=context)
except RPCException:
return False
def callback(result):
if result:
ids = [x[0] for x in result]
self.screen.load(ids, modified=True)
self.screen.display(res_id=ids[0])
self.screen.set_cursor()
self.wid_text.set_text('')
if len(ids) != 1:
WinSearch(self.attrs['relation'], callback, sel_multi=True,
ids=ids, context=context, domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
views_preload=self.attrs.get('views', {}))
else:
callback([(i, None) for i in ids])
def _sig_label(self, screen, signal_data):
name = '_'
if signal_data[0] >= 1:
name = str(signal_data[0])
self.but_open.set_sensitive(True)
self.but_del.set_sensitive(not self._readonly)
if self.attrs.get('add_remove'):
self.but_remove.set_sensitive(not self._readonly)
if signal_data[0] < signal_data[1]:
self.but_next.set_sensitive(True)
else:
self.but_next.set_sensitive(False)
if signal_data[0] > 1:
self.but_pre.set_sensitive(True)
else:
self.but_pre.set_sensitive(False)
self.but_del.set_sensitive(not self._readonly)
self.but_undel.set_sensitive(not self._readonly)
else:
self.but_open.set_sensitive(False)
self.but_del.set_sensitive(False)
self.but_undel.set_sensitive(False)
self.but_next.set_sensitive(False)
示例6: One2Many
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
self.but_pre.set_sensitive(bool(
self._position
and self._position > 1))
if self.attrs.get('add_remove'):
self.but_add.set_sensitive(bool(
not self._readonly
and not size_limit
and access['write']
and access['read']))
self.but_remove.set_sensitive(bool(
not self._readonly
and self._position
and access['write']
and access['read']))
self.wid_text.set_sensitive(self.but_add.get_sensitive())
# New button must be added to focus chain to allow keyboard only
# creation when there is no existing record on form view.
focus_chain = self.title_box.get_focus_chain() or []
if o2m_size == 0 and self.screen.current_view.view_type == 'form':
if self.but_new not in focus_chain:
focus_chain.append(self.but_new)
else:
if self.but_new in focus_chain:
focus_chain.remove(self.but_new)
self.title_box.set_focus_chain(focus_chain)
def _validate(self):
self.view.set_value()
record = self.screen.current_record
if record:
fields = self.screen.current_view.get_fields()
if not record.validate(fields):
self.screen.display(set_cursor=True)
return False
if self.screen.pre_validate and not record.pre_validate():
return False
return True
def _sig_new(self, *args):
if not common.MODELACCESS[self.screen.model_name]['create']:
return
if not self._validate():
return
if self.attrs.get('product'):
self._new_product()
else:
self._new_single()
def _new_single(self):
ctx = {}
ctx.update(self.field.context_get(self.record))
sequence = None
for view in self.screen.views:
if view.view_type == 'tree':
sequence = view.attributes.get('sequence')
if sequence:
break
def update_sequence():
if sequence:
self.screen.group.set_sequence(field=sequence)
if self.screen.current_view.editable:
self.screen.new()
示例7: Form
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
self.message_info(_('Record saved!'), 'green')
return True
else:
self.message_info(_('Invalid form!'))
return False
def sig_previous(self, widget=None):
if not self.modified_save():
return
self.screen.display_prev()
self.message_info('')
self.activate_save()
def sig_next(self, widget=None):
if not self.modified_save():
return
self.screen.display_next()
self.message_info('')
self.activate_save()
def sig_reload(self, test_modified=True):
if not hasattr(self, 'screen'):
return False
if test_modified and self.screen.modified():
res = sur_3b(_('This record has been modified\n'
'do you want to save it ?'))
if res == 'ok':
self.sig_save(None)
elif res == 'ko':
pass
else:
return False
self.screen.cancel_current()
set_cursor = False
if self.screen.current_view.view_type != 'form':
obj_id = self.id_get()
self.screen.search_filter(self.screen.screen_container.get_text())
for record in self.screen.group:
if record.id == obj_id:
self.screen.current_record = record
set_cursor = True
break
self.screen.display(set_cursor=set_cursor)
self.message_info('')
self.activate_save()
return True
def sig_action(self, widget):
if self.buttons['action'].props.sensitive:
self.buttons['action'].props.active = True
def sig_print(self, widget):
if self.buttons['print'].props.sensitive:
self.buttons['print'].props.active = True
def sig_print_open(self, widget):
if self.buttons['open'].props.sensitive:
self.buttons['open'].props.active = True
def sig_print_email(self, widget):
if self.buttons['email'].props.sensitive:
self.buttons['email'].props.active = True
def sig_relate(self, widget):
if self.buttons['relate'].props.sensitive:
self.buttons['relate'].props.active = True
示例8: Many2Many
# 需要导入模块: from tryton.gui.window.view_form.screen import Screen [as 别名]
# 或者: from tryton.gui.window.view_form.screen.Screen import set_cursor [as 别名]
#.........这里部分代码省略.........
del self.widget
def color_set(self, name):
super(Many2Many, self).color_set(name)
widget = self._color_widget()
# if the style to apply is different from readonly then insensitive
# cellrenderers should use the default insensitive color
if name != 'readonly':
widget.modify_text(gtk.STATE_INSENSITIVE,
self.colors['text_color_insensitive'])
def _focus_out(self, *args):
if self.wid_text.get_text():
self._sig_add()
def _sig_add(self, *args):
if not self.focus_out:
return
domain = self.field.domain_get(self.record)
context = self.field.context_get(self.record)
value = self.wid_text.get_text()
self.focus_out = False
try:
if value:
dom = [('rec_name', 'ilike', '%' + value + '%'), domain]
else:
dom = domain
ids = RPCExecute('model', self.attrs['relation'], 'search',
dom, 0, CONFIG['client.limit'], None, context=context)
except RPCException:
self.focus_out = True
return False
def callback(result):
self.focus_out = True
if result:
ids = [x[0] for x in result]
self.screen.load(ids, modified=True)
self.screen.display(res_id=ids[0])
self.screen.set_cursor()
self.wid_text.set_text('')
if len(ids) != 1 or not value:
WinSearch(self.attrs['relation'], callback, sel_multi=True,
ids=ids, context=context, domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
views_preload=self.attrs.get('views', {}))
else:
callback([(i, None) for i in ids])
def _sig_remove(self, *args):
self.screen.remove(remove=True)
def _sig_activate(self, *args):
self._sig_add()
self.wid_text.grab_focus()
def _on_activate(self):
self._sig_edit()
def _sig_edit(self):
if self.screen.current_record:
def callback(result):
if result:
self.screen.current_record.save()
else:
self.screen.current_record.cancel()
WinForm(self.screen, callback)
def _readonly_set(self, value):
self._readonly = value
self.wid_text.set_editable(not value)
self.wid_text.set_sensitive(not value)
self.but_remove.set_sensitive(not value)
self.but_add.set_sensitive(not value)
def _sig_label(self, screen, signal_data):
if signal_data[0] >= 1:
self.but_remove.set_sensitive(not self._readonly)
else:
self.but_remove.set_sensitive(False)
def display(self, record, field):
super(Many2Many, self).display(record, field)
if field is None:
self.screen.new_group()
self.screen.current_record = None
self.screen.parent = True
self.screen.display()
return False
new_group = field.get_client(record)
if id(self.screen.group) != id(new_group):
self.screen.group = new_group
self.screen.display()
return True
def set_value(self, record, field):
self.screen.save_tree_state()
self.screen.current_view.set_value()
return True