def __init__(self, view, attrs): super(Button, self).__init__() self.attrs = attrs self.renderer = CellRendererButton(attrs.get('string', _('Unknown'))) self.view = view self.renderer.connect('clicked', self.button_clicked)
def __init__(self, treeview, screen, attrs=None): super(Button, self).__init__() self.attrs = attrs or {} self.renderer = CellRendererButton(attrs.get('string', _('Unknown'))) self.treeview = treeview self.screen = screen self.renderer.connect('clicked', self.button_clicked)
class Button(object): def __init__(self, view, attrs): super(Button, self).__init__() self.attrs = attrs self.renderer = CellRendererButton(attrs.get('string', _('Unknown'))) self.view = view self.renderer.connect('clicked', self.button_clicked) self.renderer.set_property('yalign', 0) @realized @CellCache.cache def setter(self, column, cell, store, iter): record = store.get_value(iter, 0) states = record.expr_eval(self.attrs.get('states', {})) if record.group.readonly or record.readonly: states['readonly'] = True invisible = states.get('invisible', False) cell.set_property('visible', not invisible) readonly = states.get('readonly', False) cell.set_property('sensitive', not readonly) parent = record.parent if record else None while parent: if parent.modified: cell.set_property('sensitive', False) break parent = parent.parent # TODO icon def button_clicked(self, widget, path): if not path: return True store = self.view.treeview.get_model() record = store.get_value(store.get_iter(path), 0) state_changes = record.expr_eval( self.attrs.get('states', {})) if state_changes.get('invisible') \ or state_changes.get('readonly'): return True widget.handler_block_by_func(self.button_clicked) try: self.view.screen.button(self.attrs) finally: widget.handler_unblock_by_func(self.button_clicked)
class Button(object): def __init__(self, treeview, screen, attrs=None): super(Button, self).__init__() self.attrs = attrs or {} self.renderer = CellRendererButton(attrs.get('string', _('Unknown'))) self.treeview = treeview self.screen = screen self.renderer.connect('clicked', self.button_clicked) @realized def setter(self, column, cell, store, iter): record = store.get_value(iter, 0) states = record.expr_eval(self.attrs.get('states', {})) invisible = states.get('invisible', False) cell.set_property('visible', not invisible) readonly = states.get('readonly', False) cell.set_property('sensitive', not readonly) parent = record.parent if record else None while parent: if parent.modified: cell.set_property('sensitive', False) break parent = parent.parent # TODO icon def button_clicked(self, widget, path): if not path: return True store = self.treeview.get_model() record = store.get_value(store.get_iter(path), 0) state_changes = record.expr_eval( self.attrs.get('states', {})) if state_changes.get('invisible') \ or state_changes.get('readonly'): return True self.screen.button(self.attrs)
class Button(object): def __init__(self, treeview, screen, attrs=None): super(Button, self).__init__() self.attrs = attrs or {} self.renderer = CellRendererButton(attrs.get('string', _('Unknown'))) self.treeview = treeview self.screen = screen self.renderer.connect('clicked', self.button_clicked) @realized def setter(self, column, cell, store, iter): record = store.get_value(iter, 0) states = record.expr_eval(self.attrs.get('states', {}), check_load=False) invisible = states.get('invisible', False) cell.set_property('visible', not invisible) readonly = states.get('readonly', False) cell.set_property('sensitive', not readonly) parent = record.parent if record else None while parent: if parent.modified: cell.set_property('sensitive', False) break parent = parent.parent # TODO icon def button_clicked(self, widget, path): if not path: return True store = self.treeview.get_model() record = store.get_value(store.get_iter(path), 0) state_changes = record.expr_eval( self.attrs.get('states', {}), check_load=False) if state_changes.get('invisible') \ or state_changes.get('readonly'): return True self.screen.current_record = record obj_id = self.screen.save_current() if obj_id: if not self.attrs.get('confirm', False) or \ common.sur(self.attrs['confirm']): button_type = self.attrs.get('type', 'object') ctx = record.context_get() if button_type == 'object': try: RPCExecute('model', self.screen.model_name, self.attrs['name'], [obj_id], context=ctx) except RPCException: pass elif button_type == 'action': try: action_id = RPCExecute('model', 'ir.action', 'get_action_id', int(self.attrs['name']), context=ctx) except RPCException: action_id = None if action_id: Action.execute(action_id, { 'model': self.screen.model_name, 'id': obj_id, 'ids': [obj_id], }, context=ctx) else: raise Exception('Unallowed button type') self.screen.reload(written=True) else: self.screen.display()