当前位置: 首页>>代码示例>>Python>>正文


Python Screen.display方法代码示例

本文整理汇总了Python中widget.screen.Screen.display方法的典型用法代码示例。如果您正苦于以下问题:Python Screen.display方法的具体用法?Python Screen.display怎么用?Python Screen.display使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在widget.screen.Screen的用法示例。


在下文中一共展示了Screen.display方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: dialog

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]
class dialog(object):
    def __init__(self, arch, fields, state, name, parent=None):
        buttons = []
        self.states=[]
        default=-1
        if not parent:
            parent = service.LocalService('gui.main').window
        self.dia = gtk.Dialog('OpenERP', parent,
            gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
        for x in state:
            but = gtk.Button(x[1])
            but.show()
            if len(x) >= 3:
                icon = gtk.Image()
                icon.set_from_stock(x[2], gtk.ICON_SIZE_BUTTON)
                but.set_image(icon)
            self.dia.add_action_widget(but, len(self.states))
            if len(x) >= 4 and x[3]:
                but.set_flags(gtk.CAN_DEFAULT)
                default = len(self.states)
            self.states.append(x[0])
        if default >= 0:
            self.dia.set_default_response(default)

        val = {}
        for f in fields:
            if 'value' in fields[f]:
                val[f] = fields[f]['value']

        self.screen = Screen('wizard.'+name, view_type=[], window=self.dia, is_wizard=True)
        self.screen.new(default=False)
        self.screen.add_view_custom(arch, fields, display=True)
        self.screen.current_model.set(val)

        x,y = self.screen.screen_container.size_get()
        width, height = parent.get_size()
        self.screen.widget.set_size_request(min(width - 20, x + 20),
                min(height - 60, y + 25))
        self.screen.widget.show()

        self.dia.vbox.pack_start(self.screen.widget)
        self.dia.set_title(self.screen.current_view.title)
        self.dia.show()

    def run(self, datas={}):
        while True:
            res = self.dia.run()
            self.screen.current_view.set_value()
            if self.screen.current_model.validate() or (res<0) or (self.states[res]=='end'):
                break
            self.screen.display()
        if res<len(self.states) and res>=0:
            datas.update(self.screen.get())
            self.dia.destroy()
            return (self.states[res], datas)
        else:
            self.dia.destroy()
            self.screen.destroy()
            return False
开发者ID:Ichag,项目名称:openerp-client,代码行数:61,代码来源:wizard.py

示例2: win_preference

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]
class win_preference(object):
    def __init__(self, parent=None):
        self.ui = openerp_gtk_builder('openerp.ui', ['win_preference'])
        self.win = self.ui.get_object('win_preference')
        self.win.set_icon(common.OPENERP_ICON)
        if not parent:
            parent = service.LocalService('gui.main').window
        self.win.set_transient_for(parent)
        self.parent = parent

        action_id = rpc.session.rpc_exec_auth('/object', 'execute', 'res.users', 'action_get', {})
        action = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.actions.act_window', 'read', [action_id], False, rpc.session.context)[0]

        view_ids = []
        if action.get('views', []):
            view_ids = [x[0] for x in action['views']]
        elif action.get('view_id', False):
            view_ids = [action['view_id'][0]]

        self.screen = Screen('res.users', view_type=[], window=parent)
        self.screen.add_view_id(view_ids[0], 'form', display=True)
        self.screen.load([rpc.session.uid])
        self.screen.display(rpc.session.uid)

        vbox = self.ui.get_object('preference_vbox')
        vbox.pack_start(self.screen.widget)

        self.win.set_title(_('Preferences'))
        self.win.show_all()

    def run(self, datas={}):
        lang = rpc.session.context.get('lang', 'en_US')
        end = False
        while not end:
            res = self.win.run()
            end = (res != gtk.RESPONSE_OK) or self.screen.current_model.validate()
            if not end:
                self.screen.display()
                self.screen.current_view.set_cursor()
        if res == gtk.RESPONSE_OK:
            values = self.screen.get()
            rpc.session.rpc_exec_auth('/object', 'execute', 'res.users', 'write', [rpc.session.uid], values)
            rpc.session.context_reload()
            new_lang = rpc.session.context.get('lang', 'en_US')
            if lang != new_lang:
                common.message(_("The default language of the interface has been modified, do not forget to restart " \
                                 "the client to have the interface in your language"),
                               _("Default language modified !"), parent=self.win)
        self.parent.present()
        self.win.destroy()
        return True
开发者ID:Ichag,项目名称:openerp-client,代码行数:53,代码来源:win_preference.py

示例3: many2many

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
        res = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['model'], 'default_get', [self.name])
        self.value = res.get(self.name, False)

    def _sig_add(self, *args):
        domain = self._view.modelfield.domain_get(self._view.model)
        context = self._view.modelfield.context_get(self._view.model)
        records = rpc.session.rpc_exec_auth('/object', 'execute',
                                        self.attrs['relation'], 'name_search',
                                        self.wid_text.get_text(), domain, 'ilike', context)
        ids = [oid for oid, _ in records]
        #Updating the context in order to avoid domain of name_search and custom domain of search_context
        context.update({'name_search':self.wid_text.get_text()})
        self.wid_text.set_text('')
        win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window)
        ids = win.go()

        if ids == None:
            ids = []
        if self.name in self.model.pager_cache:
            self.model.pager_cache[self.name] = list(set(self.model.pager_cache[self.name] + ids))
        else:
            self.model.pager_cache[self.name] = ids
        self.model.is_m2m_modified = True
        self._focus_out()
        self.pager.reset_pager()
        self.pager.search_count()

    def _sig_remove(self, *args):
        remove_ids = self.screen.current_view.sel_ids_get()
        if not remove_ids:
           return
        for oid in remove_ids:
            if oid in self.model.pager_cache[self.name]:
                self.model.pager_cache[self.name].remove(oid)
        self.model.is_m2m_modified = True
        self.screen.remove()
        self.screen.display()
        self._focus_out()
        self.pager.reset_pager()
        self.pager.search_count()

    def _sig_activate(self, *args):
        self._sig_add()

    def _readonly_set(self, ro):
        self.wid_text.set_editable(not ro)
        self.wid_text.set_sensitive(not ro)
        self.wid_but_remove.set_sensitive(not ro)
        self.wid_but_add.set_sensitive(not ro)

    def limit_changed(self,*args):
        self.pager.limit_changed()


    def _sig_prev_page(self, *args):
        self.pager.prev_page()

    def _sig_next_page(self, *args):
        self.pager.next_page()

    def _sig_next(self, *args):
        _, event = args
        if event.type == gtk.gdk.BUTTON_PRESS:
            self.pager.next_record()


    def _sig_previous(self, *args):
        _, event = args
        if event.type == gtk.gdk.BUTTON_PRESS:
            self.pager.prev_record()

    def _sig_label(self, screen, signal_data):
        name = '_'
        if signal_data[0] >= 0:
            name = str(signal_data[0] + 1)
        line = '(%s/%s of %s)' % (name, signal_data[1], signal_data[2])
        self.label.set_text(line)

    def display(self, model, model_field):
        self.model = model
        self.model_field = model_field
        super(many2many, self).display(model, model_field)
        ids = []
        if model_field:
            ids = model_field.get_client(model)
            self.model.pager_cache.setdefault(model_field.name, model.value[model_field.name] or [])
            self.pager.search_count()
        self.screen.clear()
        self.screen.load(ids)
        self.screen.display()
        self.pager.set_sensitivity()
        return True

    def set_value(self, model, model_field):
        self.model.pager_cache.setdefault(model_field.name, model.value[model_field.name] or [])
        if self.name in model.pager_cache:
            model_field.set_client(model, model.pager_cache[self.name])

    def grab_focus(self):
        return self.wid_text.grab_focus()
开发者ID:kevin-garnett,项目名称:openerp-from-oneyoung,代码行数:104,代码来源:many2many.py

示例4: dialog

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]
class dialog(object):
    def __init__(self, model_name, parent, model=None, attrs=None, model_ctx=None,
            window=None, context=None, readonly=False):

        if attrs is None:
            attrs = {}
        if model_ctx is None:
            model_ctx = {}
        if context is None:
            context = {}

        if not window:
            window = service.LocalService('gui.main').window

        self.dia = gtk.Dialog(_('OpenERP'), window,
                gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT)
        self.window = window
        if ('string' in attrs) and attrs['string']:
            self.dia.set_title(self.dia.get_title() + ' - ' + attrs['string'])
        self.dia.set_property('default-width', 760)
        self.dia.set_property('default-height', 500)
        self.dia.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
        self.dia.set_icon(common.OPENERP_ICON)

        self.accel_group = gtk.AccelGroup()
        self.dia.add_accel_group(self.accel_group)
        self.but_cancel = self.dia.add_button(_('Cancel'), gtk.RESPONSE_CANCEL)
        icon = gtk.Image()
        icon.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_BUTTON)
        self.but_cancel.set_image(icon)
        self.but_cancel.add_accelerator('clicked', self.accel_group, gtk.keysyms.Escape, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

        self.but_save_close = self.dia.add_button(_('Save & Close'), gtk.RESPONSE_APPLY)
        icon = gtk.Image()
        icon.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)
        self.but_save_close.set_image(icon)

        self.but_save_new = self.dia.add_button(_('Save & New'), gtk.RESPONSE_OK)
        icon = gtk.Image()
        icon.set_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_BUTTON)
        self.but_save_new.set_image(icon)
        self.but_save_new.add_accelerator('clicked', self.accel_group, gtk.keysyms.Return, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

        self.context = context

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scroll.set_placement(gtk.CORNER_TOP_LEFT)
        scroll.set_shadow_type(gtk.SHADOW_NONE)
        self.dia.vbox.pack_start(scroll, expand=True, fill=True)

        vp = gtk.Viewport()
        vp.set_shadow_type(gtk.SHADOW_NONE)
        scroll.add(vp)
        self.screen = Screen(model_name, view_type=[], parent=parent,
                             window=self.dia, readonly=readonly,
                             context=context)
        self.screen.models._context.update(model_ctx)
        if not model:
            model = self.screen.new(context=context)
        else:
            self.screen.models.model_add(model)
        self.screen.current_model = model
        if ('views' in attrs) and ('form' in attrs['views']):
            arch = attrs['views']['form']['arch']
            fields = attrs['views']['form']['fields']
            self.screen.add_view(arch, fields, display=True, context=context)
        else:
            self.screen.add_view_id(False, 'form', display=True,
                                    context=context)
        if not model or model.id is None:
            self.screen.make_buttons_readonly()
        vp.add(self.screen.widget)
        x,y = self.screen.screen_container.size_get()
        vp.set_size_request(x,y+30)
        self.dia.show_all()
        self.screen.readonly = readonly
        self.screen.display()

    def new(self):
        model = self.screen.new(context=self.context)
        self.screen.models.model_add(model)
        self.screen.current_model = model
        self.screen.make_buttons_readonly()
        return True

    def run(self, datas={}):
        end = False
        while not end:
            res = self.dia.run()
            if res in(gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT):
                self.screen.current_model.cancel()
            end = (res not in (gtk.RESPONSE_OK, gtk.RESPONSE_APPLY)) or self.screen.current_model.validate()
            if not end:
                self.screen.display()
                self.screen.current_view.set_cursor()

        if res in (gtk.RESPONSE_OK, gtk.RESPONSE_APPLY) :
            self.screen.current_view.set_value()
            model = self.screen.current_model
#.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:103,代码来源:

示例5: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
            return False
        if event.keyval in (gtk.keysyms.L, gtk.keysyms.l) and event.state & gtk.gdk.CONTROL_MASK\
            and event.state & gtk.gdk.SHIFT_MASK:
            self.switch_view(widget, event)
            return False

    def destroy(self):
        self.screen.destroy()

    def _on_activate(self, screen, *args):
        self._sig_edit()

    def click_and_action(self, type):
        pos = self.tree_view.pos_get()
        if pos!=None:
            val = self._value[pos]
            id = val.get('id', False)
            obj = service.LocalService('action.main')
            res = obj.exec_keyword(type, {'model':self.model, 'id': id or False, 'ids':[id], 'report_type': 'pdf'})
            return True
        else:
            common.message(_('You have to select a resource !'))
            return False

    def switch_view(self, btn, arg):
        self.screen.make_buttons_readonly(True)
        self.screen.switch_view()

    def _readonly_set(self, value):
        self._readonly = value
        self.eb_new.set_sensitive(not value)
        self.eb_del.set_sensitive(not value)
        self.screen.readonly = value
        self.screen.display()

    def set_disable(self, value):
        self.eb_open.set_sensitive(value)
        self.eb_switch.set_sensitive(value)
        if self._readonly:
            value = not self._readonly
        self.eb_del.set_sensitive(value)

    def _sig_new(self, *args):
        _, event = args
        ctx = dict(self._view.model.expr_eval(self.screen.default_get), **self.context)
        ctx.update(self._view.model.expr_eval('dict(%s)' % self.attrs.get('context', '{}')))
        if event.type in (gtk.gdk.BUTTON_PRESS, gtk.gdk.KEY_PRESS):
            if (self.screen.current_view.view_type=='form') or self.screen.editable_get():
                self.screen.new(context=ctx)
                self.screen.make_buttons_readonly()
                self._readonly = False
                self.screen.current_view.widget.set_sensitive(True)
                self.set_disable(True)
            else:
                ok = True
                dia = dialog(self.attrs['relation'], parent=self._view.model, attrs=self.attrs, model_ctx=self.screen.models._context, window=self._window, readonly=self._readonly, context=ctx)
                while ok:
                    ok, value, res = dia.run()
                    if ok or res == gtk.RESPONSE_APPLY:
                        self.screen.models.model_add(value)
                        value.signal('record-changed', value.parent)
                        self.screen.display()
                        dia.new()
                        self.set_disable(True)
                self.pager.reset_pager()
                dia.destroy()
开发者ID:,项目名称:,代码行数:70,代码来源:

示例6: dialog

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]
class dialog(object):
    def __init__(self, model, domain=None, context=None, window=None, target=False):
        if domain is None:
            domain = []
        if context is None:
            context = {}

        if not window:
            window = service.LocalService('gui.main').window

        self.dia = gtk.Dialog(_('OpenERP - Link'), window,
                gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT)
        self.window = window
        if not target:
            self.dia.set_property('default-width', 760)
            self.dia.set_property('default-height', 500)
            self.dia.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
            self.dia.set_icon(common.OPENERP_ICON)

            self.accel_group = gtk.AccelGroup()
            self.dia.add_accel_group(self.accel_group)

            self.but_cancel = self.dia.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
            self.but_cancel.add_accelerator('clicked', self.accel_group, gtk.keysyms.Escape, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

            self.but_ok = self.dia.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
            self.but_ok.add_accelerator('clicked', self.accel_group, gtk.keysyms.Return, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scroll.set_placement(gtk.CORNER_TOP_LEFT)
        scroll.set_shadow_type(gtk.SHADOW_NONE)
        self.dia.vbox.pack_start(scroll, expand=True, fill=True)

        vp = gtk.Viewport()
        vp.set_shadow_type(gtk.SHADOW_NONE)
        scroll.add(vp)
        self.screen = Screen(model, view_ids=None, domain=domain, context=context, window=self.dia, view_type=['form'])
        self.screen.new()
        vp.add(self.screen.widget)

        x,y = self.screen.screen_container.size_get()
        width, height = window.get_size()
        vp.set_size_request(min(width - 20, x + 20),min(height - 60, y + 25))
        self.dia.show_all()
        self.screen.display()

    def run(self, datas={}):
        while True:
            try:
                res = self.dia.run()
                if res == gtk.RESPONSE_OK:
                    if self.screen.current_model.validate() and self.screen.save_current():
                        return self.screen.current_model.id
                    else:
                        self.screen.display()
                        self.screen.current_view.set_cursor()
                else:
                    break
            except Exception:
                # Passing all exceptions, most preferably the one of sql_constraint
                pass
        return False

    def destroy(self):
        self.window.present()
        self.dia.destroy()
        self.screen.destroy()
开发者ID:Ichag,项目名称:openerp-client,代码行数:70,代码来源:win_search.py

示例7: form

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
            else:
                self.page_label.set_text(self.name)
                self.page_label.set_tooltip_text(self.name)
            return result
        return _decorate
    
    def sig_switch_diagram(self, widget=None):
        return self.sig_switch(widget, 'diagram')

    def sig_switch_form(self, widget=None):
        return self.sig_switch(widget, 'form')

    def sig_switch_tree(self, widget=None):
        return self.sig_switch(widget, 'tree')

    def sig_switch_calendar(self, widget=None):
        return self.sig_switch(widget, 'calendar')

    def sig_switch_graph(self, widget=None):
        return self.sig_switch(widget, 'graph')

    def get_resource(self, widget=None, get_id=None):
        ## This has been done due to virtual ids coming from
        ## crm meeting. like '3-20101012155505' which are not in existence
        ## and needed to be converted to real ids
        if isinstance(get_id, str):
            get_id = int(get_id.split('-')[0])
        all_ids = rpc.session.rpc_exec_auth('/object', 'execute', self.model, 'search', [])
        if widget:
            get_id = int(widget.get_value())
        if get_id in all_ids:
            current_ids = self.screen.ids_get()
            if get_id in current_ids:
                self.screen.display(get_id)
            else:
                self.screen.load([get_id])
            self.screen.current_view.set_cursor()
        else:
            if widget:
                common.message(_('Resource ID does not exist for this object!'))

    def get_event(self, widget, event, win):
        if event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
            win.destroy()
            self.get_resource(widget)
            
    @set_tooltips
    def sig_goto(self, *args):
        if not self.modified_save():
            return

        goto_ui = openerp_gtk_builder('openerp.ui', ['dia_goto_id', 'adjustment2'])
        widget = goto_ui.get_object('goto_spinbutton')
        win = goto_ui.get_object('dia_goto_id')
        widget.connect('key_press_event',self.get_event,win)

        win.set_transient_for(self.window)
        win.show_all()

        response = win.run()
        win.destroy()

        if response == gtk.RESPONSE_OK:
            self.get_resource(widget)

    def destroy(self):
开发者ID:Ichag,项目名称:openerp-client,代码行数:70,代码来源:form.py

示例8: dialog

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]
class dialog(object):
    def __init__(self, model, id=None, attrs=None ,domain=None, context=None, window=None, view_ids=None, target=False,view_type=['form'], help={}):
        if attrs is None:
            attrs = {}
        if domain is None:
            domain = []
        if context is None:
            context = {}
        if not window:
            window = service.LocalService('gui.main').window

        self.dia = gtk.Dialog('OpenERP', window,
                gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT)
        self.window = window
        if not target:
            self.dia.set_property('default-width', 760)
            self.dia.set_property('default-height', 500)
            self.dia.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
            self.dia.set_icon(common.OPENERP_ICON)

            self.accel_group = gtk.AccelGroup()
            self.dia.add_accel_group(self.accel_group)

            self.but_cancel = self.dia.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
            self.but_cancel.add_accelerator('clicked', self.accel_group, gtk.keysyms.Escape, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

            self.but_ok = self.dia.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
            self.but_ok.add_accelerator('clicked', self.accel_group, gtk.keysyms.Return, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scroll.set_placement(gtk.CORNER_TOP_LEFT)
        scroll.set_shadow_type(gtk.SHADOW_NONE)
        self.dia.vbox.pack_start(scroll, expand=True, fill=True)

        vp = gtk.Viewport()
        vp.set_shadow_type(gtk.SHADOW_NONE)
        scroll.add(vp)
        self.screen = Screen(model, view_ids=view_ids, domain=domain, context=context, window=self.dia, view_type=view_type, help=help)
        if id:
            self.screen.load([id])
        else:
            self.screen.new()

        if ('string' in attrs) and attrs['string']:
            self.dia.set_title(self.dia.get_title() + ' - ' + attrs['string'])
        elif self.screen.current_view:
            self.dia.set_title(self.dia.get_title() + ' - ' + self.screen.current_view.title)
        vp.add(self.screen.widget)

        width, height = self.screen.screen_container.size_get()
        window_width, window_height = window.get_size()
        dia_width, dia_height = self.dia.get_size()

        widget_width = min(window_width - 20, max(dia_width, width + 30))
        if target:
            widget_height = min(window_height - 60, height + 10)
        else:
            widget_height = min(window_height - 60, height + 20)
        vp.set_size_request(widget_width, widget_height)
        self.dia.show_all()
        self.screen.display()

    def run(self, datas={}):
        while True:
            try:
                res = self.dia.run()
                if res == gtk.RESPONSE_OK:
                    if self.screen.current_model.validate() and self.screen.save_current():
                        return (True, self.screen.current_model.name_get())
                    else:
                        self.screen.display()
                        self.screen.current_view.set_cursor()
                else:
                    break
            except Exception,e:
                # Passing all exceptions, most preferably the one of sql_constraint
                pass
        return (False, False)
开发者ID:kevin-garnett,项目名称:openerp-from-oneyoung,代码行数:81,代码来源:many2one.py

示例9: form

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
        if 'calendar' in view_type:
            self.handlers['radio_calendar'] =  self.sig_switch_calendar
        if res_id:
            if isinstance(res_id, (int, long,)):
                res_id = [res_id]
            self.screen.load(res_id)
        else:
            if self.screen.current_view.view_type == 'form':
                self.sig_new(autosave=False)
            if self.screen.current_view.view_type in ('tree', 'graph', 'calendar'):
                self.screen.search_filter()

        if auto_refresh and int(auto_refresh):
            gobject.timeout_add(int(auto_refresh) * 1000, self.sig_reload)

    def sig_switch_form(self, widget=None):
        return self.sig_switch(widget, 'form')

    def sig_switch_tree(self, widget=None):
        return self.sig_switch(widget, 'tree')

    def sig_switch_calendar(self, widget=None):
        return self.sig_switch(widget, 'calendar')

    def sig_switch_graph(self, widget=None):
        return self.sig_switch(widget, 'graph')
    
    def get_resource(self,widget):
        all_ids = rpc.session.rpc_exec_auth('/object', 'execute', self.model, 'search', [])
        get_id = int(widget.get_value())
        if get_id in all_ids:
            current_ids = self.screen.ids_get()
            if get_id in current_ids:
                self.screen.display(get_id)
            else:
                self.screen.load([get_id])    
            self.screen.current_view.set_cursor()
        else:
            common.message(_('Resource ID does not exist for this object!'))    
    
    def get_event(self, widget, event, win):
        if event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
            win.destroy()
            self.get_resource(widget)
        
        
    def sig_goto(self, *args):
        if not self.modified_save():
            return
        
        glade2 = glade.XML(common.terp_path("openerp.glade"),'dia_goto_id',gettext.textdomain())
        widget = glade2.get_widget('goto_spinbutton')
        win = glade2.get_widget('dia_goto_id')
        widget.connect('key_press_event',self.get_event,win)
        
        win.set_transient_for(self.window)
        win.show_all()

        response = win.run()
        win.destroy()
        
        if response == gtk.RESPONSE_OK:
            self.get_resource(widget)
            

    def destroy(self):
开发者ID:gisce,项目名称:erpclient,代码行数:70,代码来源:form.py

示例10: many2many

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]
class many2many(interface.widget_interface):
    def __init__(self, window, parent, model, attrs={}):
        interface.widget_interface.__init__(self, window, parent, model, attrs)

        self.widget = gtk.VBox(homogeneous=False, spacing=1)

        hb = gtk.HBox(homogeneous=False, spacing=3)
        self.wid_text = gtk.Entry()
        self.wid_text.set_property('width_chars', 13)
        self.wid_text.connect('activate', self._sig_activate)
        self.wid_text.connect('button_press_event', self._menu_open)
        hb.pack_start(self.wid_text, expand=True, fill=True)

        hb.pack_start(gtk.VSeparator(), padding=2, expand=False, fill=False)

        self.wid_but_add = gtk.Button(stock='gtk-add')
        self.wid_but_add.set_relief(gtk.RELIEF_HALF)
        self.wid_but_add.set_focus_on_click(True)
        self.wid_but_add.connect('clicked', self._sig_add)
        hb.pack_start(self.wid_but_add, padding=3, expand=False, fill=False)

        self.wid_but_remove = gtk.Button(stock='gtk-remove')
        self.wid_but_remove.set_relief(gtk.RELIEF_HALF)
        self.wid_but_remove.set_focus_on_click(True)
        self.wid_but_remove.connect('clicked', self._sig_remove)
        hb.pack_start(self.wid_but_remove, expand=False, fill=False)

        self.widget.pack_start(hb, expand=False, fill=False)
        self.widget.pack_start(gtk.HSeparator(), expand=False, fill=True)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scroll.set_placement(gtk.CORNER_TOP_LEFT)
        scroll.set_shadow_type(gtk.SHADOW_NONE)

        self.screen = Screen(attrs['relation'], view_type=['tree'],
                views_preload=attrs.get('views', {}))
        scroll.add_with_viewport(self.screen.widget)
        self.widget.pack_start(scroll, expand=True, fill=True)

#        self.old = None
        self.avail_ids = set()

    def check_exist(self):
        if not len(self.screen.models.models):
            self.avail_ids.clear()
        else:
            for i in self.screen.models.models:
                self.avail_ids.add(i.id)

    def destroy(self):
        self.screen.destroy()
        self.widget.destroy()
        del self.widget

    def _menu_sig_default(self, obj):
        res = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['model'], 'default_get', [self.attrs['name']])
        self.value = res.get(self.attrs['name'], False)

    def _sig_add(self, *args):
        flag=False
        newids=[]
        domain = self._view.modelfield.domain_get(self._view.model)
        context = self._view.modelfield.context_get(self._view.model)

        ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', self.wid_text.get_text(), domain, 'ilike', context)
        ids = map(lambda x: x[0], ids)
        self.check_exist()
#        if len(ids)<>1:
        win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window)
        ids = win.go()
            
        if ids == None:
            ids=[]
        if len(self.avail_ids) and len(ids):
            for i in ids:
                if i not in self.avail_ids:
                    newids.append(i)
                    flag=True
            if flag==True:
                ids=newids
            else:
                ids=[]
        self.screen.load(ids)
        for i in ids:
            self.avail_ids.add(i)
        self.screen.display()
        self.wid_text.set_text('')
        self._focus_out()

    def _sig_remove(self, *args):
        rem_id=[]
        self.check_exist()
        rem_id=self.screen.current_view.sel_ids_get()
        for i in rem_id:
            self.avail_ids.remove(i)
        self.screen.remove()
        self.screen.display()
        self._focus_out()

#.........这里部分代码省略.........
开发者ID:gisce,项目名称:erpclient,代码行数:103,代码来源:many2many.py

示例11: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
            return False
        if event.keyval in (gtk.keysyms.L, gtk.keysyms.l) and event.state & gtk.gdk.CONTROL_MASK\
            and event.state & gtk.gdk.SHIFT_MASK:
            self.switch_view(widget, event)
            return False

    def destroy(self):
        self.screen.destroy()

    def _on_activate(self, screen, *args):
        self._sig_edit()

    def click_and_action(self, type):
        pos = self.tree_view.pos_get()
        if pos!=None:
            val = self._value[pos]
            id = val.get('id', False)
            obj = service.LocalService('action.main')
            res = obj.exec_keyword(type, {'model':self.model, 'id': id or False, 'ids':[id], 'report_type': 'pdf'})
            return True
        else:
            common.message(_('You have to select a resource !'))
            return False

    def switch_view(self, btn, arg):
        self.screen.make_buttons_readonly(True)
        self.screen.switch_view()

    def _readonly_set(self, value):
        self._readonly = value
        self.eb_new.set_sensitive(not value)
        self.eb_del.set_sensitive(not value)
        self.screen.readonly = value
        self.screen.display()

    def set_disable(self, value):
        self.eb_open.set_sensitive(value)
        self.eb_switch.set_sensitive(value)
        if self._readonly:
            value = not self._readonly
        self.eb_del.set_sensitive(value)
        
    ## This method is specially developed to store old values of 
    ## the modified records.
    def _get_old_values(self, models=None):

        group_model = {}
        model_value = {}
        if models is None:
            models = []
        for o2m_model in models:
            values = o2m_model.value.copy()
            model_value.setdefault(o2m_model, values)
            group_model.setdefault(o2m_model, {})
            for key, val in values.iteritems():
                if isinstance(val, ModelRecordGroup):
                    group_model[o2m_model][key] = val.models[:]
                    del model_value[o2m_model][key]
        return model_value,group_model
    
    ## This method is specially developed to restore old values 
    def _restore_values(self, modified_model_values, group_model):
        for model, value in modified_model_values.iteritems():
            model.set(value, modified=True)
            for f_name, models in group_model.get(model, {}):
                model.value[f_name].clear()
开发者ID:kevin-garnett,项目名称:openerp-from-oneyoung,代码行数:70,代码来源:one2many_list.py

示例12: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
            self._sig_edit(widget, event)
            return False
        if event.keyval in (gtk.keysyms.L, gtk.keysyms.l) and event.state & gtk.gdk.CONTROL_MASK\
            and event.state & gtk.gdk.SHIFT_MASK:
            self.switch_view(widget, event)
            return False

    def destroy(self):
        self.screen.destroy()

    def _on_activate(self, screen, *args):
        self._sig_edit()

    def click_and_action(self, type):
        pos = self.tree_view.pos_get()
        if pos!=None:
            val = self._value[pos]
            id = val.get('id', False)
            obj = service.LocalService('action.main')
            res = obj.exec_keyword(type, {'model':self.model, 'id': id or False, 'ids':[id], 'report_type': 'pdf'})
            return True
        else:
            common.message(_('You have to select a resource !'))
            return False

    def switch_view(self, btn, arg):
        self.screen.switch_view()

    def _readonly_set(self, value):
        self._readonly = value
        self.eb_new.set_sensitive(not value)
        self.eb_del.set_sensitive(not value)
        self.screen.readonly = value
        self.screen.display()

    def _sig_new(self, *args):
        _, event = args
        ctx = self._view.model.expr_eval(self.screen.default_get)
        ctx.update(self._view.model.expr_eval('dict(%s)' % self.attrs.get('context', '')))
        if event.type in (gtk.gdk.BUTTON_PRESS, gtk.gdk.KEY_PRESS):
            if (self.screen.current_view.view_type=='form') or self.screen.editable_get():
                self.screen.new(context=ctx)
                self._readonly = False
                self.screen.current_view.widget.set_sensitive(True)
            else:
                ok = 1
                dia = dialog(self.attrs['relation'], parent=self._view.model, attrs=self.attrs, model_ctx=self.screen.models._context, default_get_ctx=ctx, window=self._window, readonly=self._readonly)
                while ok:
                    ok, value = dia.run()
                    if ok:
                        self.screen.models.model_add(value)
                        value.signal('record-changed', value.parent)
                        self.screen.display()
                        dia.new()
                dia.destroy()

    def _sig_edit(self, *args):
        if self.screen.current_model:
            dia = dialog(self.attrs['relation'], parent=self._view.model,  model=self.screen.current_model, attrs=self.attrs, window=self._window, readonly=self._readonly)
            ok, value = dia.run()
            dia.destroy()

    def _sig_next(self, *args):
        _, event = args
        if event.type == gtk.gdk.BUTTON_PRESS:
            self.screen.display_next()
开发者ID:gisce,项目名称:erpclient,代码行数:70,代码来源:one2many_list.py

示例13: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import display [as 别名]

#.........这里部分代码省略.........
            and event.state & gtk.gdk.CONTROL_MASK
            and event.state & gtk.gdk.SHIFT_MASK
        ):
            self.switch_view(widget, event)
            return False

    def destroy(self):
        self.screen.destroy()

    def _on_activate(self, screen, *args):
        self._sig_edit()

    def click_and_action(self, type):
        pos = self.tree_view.pos_get()
        if pos != None:
            val = self._value[pos]
            id = val.get("id", False)
            obj = service.LocalService("action.main")
            res = obj.exec_keyword(type, {"model": self.model, "id": id or False, "ids": [id], "report_type": "pdf"})
            return True
        else:
            common.message(_("You have to select a resource !"))
            return False

    def switch_view(self, btn, arg):
        self.screen.make_buttons_readonly(True)
        self.screen.switch_view()

    def _readonly_set(self, value):
        self._readonly = value
        self.eb_new.set_sensitive(not value)
        self.eb_del.set_sensitive(not value)
        self.screen.readonly = value
        self.screen.display()

    def set_disable(self, value):
        self.eb_open.set_sensitive(value)
        self.eb_switch.set_sensitive(value)
        if self._readonly:
            value = not self._readonly
        self.eb_del.set_sensitive(value)

    def _sig_new(self, *args):
        _, event = args
        ctx = dict(self._view.model.expr_eval(self.screen.default_get), **self.context)
        ctx.update(self._view.model.expr_eval("dict(%s)" % self.attrs.get("context", "{}")))
        if event.type in (gtk.gdk.BUTTON_PRESS, gtk.gdk.KEY_PRESS):
            if (self.screen.current_view.view_type == "form") or self.screen.editable_get():
                self.screen.new(context=ctx)
                self.screen.make_buttons_readonly()
                self._readonly = False
                self.screen.current_view.widget.set_sensitive(True)
                self.set_disable(True)
            else:
                ok = True
                dia = dialog(
                    self.attrs["relation"],
                    parent=self._view.model,
                    attrs=self.attrs,
                    model_ctx=self.screen.models._context,
                    window=self._window,
                    readonly=self._readonly,
                    context=ctx,
                )
                while ok:
                    ok, value, res = dia.run()
开发者ID:goldenboy,项目名称:razvoj,代码行数:70,代码来源:one2many_list.py


注:本文中的widget.screen.Screen.display方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。