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


Python Screen.switch_view方法代码示例

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


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

示例1: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import switch_view [as 别名]
class one2many_list(interface.widget_interface):
    def __init__(self, window, parent, model, attrs={}):
        interface.widget_interface.__init__(self, window, parent, model, attrs)
        self.context = {}
        #TODO:
            # group by context are evaled here as we need the context in screen
            # while displaying.
            # We need a better way to eval context that has group_by'
            # We needed to do this as normal context also get evaled here
            # and results in a traceback which should not be evaled here.
        if str(attrs.get('context',"{}")).find('group_by') != -1:
            self.context = tools.expr_eval(attrs.get('context',"{}"))
        self._readonly = self.default_readonly
        self.widget = gtk.VBox(homogeneous=False, spacing=5)
        hb = gtk.HBox(homogeneous=False, spacing=5)
        menubar = gtk.MenuBar()
        if hasattr(menubar, 'set_pack_direction') and \
                hasattr(menubar, 'set_child_pack_direction'):
            menubar.set_pack_direction(gtk.PACK_DIRECTION_LTR)
            menubar.set_child_pack_direction(gtk.PACK_DIRECTION_LTR)

        menuitem_title = gtk.ImageMenuItem(stock_id='gtk-preferences')

        menu_title = gtk.Menu()
        menuitem_set_to_default = gtk.MenuItem(_('Set to default value'), True)
        menuitem_set_to_default.connect('activate', lambda *x:self._menu_sig_default_get())
        menu_title.add(menuitem_set_to_default)
        menuitem_set_default = gtk.MenuItem(_('Set Default'), True)
        menuitem_set_default.connect('activate', lambda *x: self._menu_sig_default_set())
        menu_title.add(menuitem_set_default)
        menuitem_title.set_submenu(menu_title)

        menubar.add(menuitem_title)
        hb.pack_start(menubar, expand=True, fill=True)

        if self.context.get('group_by'):
            self.context['group_by'] = [self.context['group_by']]

        # the context to pass to default_get can be optionally specified in
        # the context of the one2many field. We also support a legacy
        # 'default_get' attribute for the same effect (pending removal)
        default_get_ctx = (attrs.get('default_get') or attrs.get('context'))

        self.screen = Screen(attrs['relation'],
                            view_type=attrs.get('mode','tree,form').split(','),
                            parent=self.parent, views_preload=attrs.get('views', {}),
                            tree_saves=attrs.get('saves', False),
                            create_new=True,
                            context=self.context,
                            row_activate=self._on_activate,
                            default_get=default_get_ctx,
                            window=self._window, readonly=self._readonly, limit=pager.DEFAULT_LIMIT)

        self.screen.type = 'one2many'

        self.pager = pager(object=self, relation=attrs['relation'], screen=self.screen)

        # Button New
        self.eb_new = self.pager.create_event_box(_('Create a new entry'), self._sig_new, 'gtk-new')
        hb.pack_start(self.eb_new, expand=False, fill=False)

        # Button Edit
        self.eb_open = self.pager.create_event_box(_('Edit this entry'), self._sig_edit, 'gtk-open')
        hb.pack_start(self.eb_open, expand=False, fill=False)

        # Button Delete
        self.eb_del = self.pager.create_event_box(_('Remove this entry'), self._sig_remove, 'gtk-delete')
        hb.pack_start(self.eb_del, expand=False, fill=False)

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

      # Button Previous Page
        self.eb_prev_page = self.pager.create_event_box(_('Previous Page'), self._sig_prev_page, 'gtk-goto-first')
        hb.pack_start(self.eb_prev_page, expand=False, fill=False)

        # Button Previous Record
        self.eb_pre = self.pager.create_event_box(_('Previous Record'), self._sig_previous, 'gtk-go-back')
        hb.pack_start(self.eb_pre, expand=False, fill=False)

        # Record display
        self.label = gtk.Label('(0,0)')
        hb.pack_start(self.label, expand=False, fill=False)

        # Button Next
        self.eb_next = self.pager.create_event_box(_('Next Record'), self._sig_next, 'gtk-go-forward')
        hb.pack_start(self.eb_next, expand=False, fill=False)

        # Button Next Page
        self.eb_next_page = self.pager.create_event_box(_('Next Page'), self._sig_next_page, 'gtk-goto-last')
        hb.pack_start(self.eb_next_page, expand=False, fill=False)

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

        # Button Switch
        self.eb_switch = self.pager.create_event_box(_('Switch'), self.switch_view, 'gtk-justify-left')
        hb.pack_start(self.eb_switch, expand=False, fill=False)

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

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

示例2: form

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

#.........这里部分代码省略.........
        self.screen.destroy()
        del self.screen
        del self.glade
        del self.widget
        self.sw.destroy()
        del self.sw
        gc.collect()

    def ids_get(self):
        return self.screen.ids_get()

    def id_get(self):
        return self.screen.id_get()

    def sig_attach(self, widget=None):
        id = self.id_get()
        if id:
            ctx = self.context.copy()
            ctx.update(rpc.session.context)
            action = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.attachment', 'action_get', ctx)
            action['domain'] = [('res_model', '=', self.model), ('res_id', '=', id)]
            ctx['default_res_model'] = self.model
            ctx['default_res_id'] = id
            obj = service.LocalService('action.main')
            obj._exec_action(action, {}, ctx)
        else:
            self.message_state(_('No record selected ! You can only attach to existing record.'), color='red')
        return True

    def sig_switch(self, widget=None, mode=None):
        if not self.modified_save():
            return
        if mode<>self.screen.current_view.view_type:
            self.screen.switch_view(mode=mode)
            self.sig_reload()
            self.screen.current_view.set_cursor()

    def sig_logs(self, widget=None):
        id = self.id_get()
        if not id:
            self.message_state(_('You have to select a record !'), color='red')
            return False
        res = rpc.session.rpc_exec_auth('/object', 'execute', self.model, 'perm_read', [id])
        message = ''
        for line in res:
            todo = [
                ('id', _('ID')),
                ('create_uid', _('Creation User')),
                ('create_date', _('Creation Date')),
                ('write_uid', _('Latest Modification by')),
                ('write_date', _('Latest Modification Date'))
            ]
            for (key,val) in todo:
                if line[key] and key in ('create_uid','write_uid','uid'):
                    line[key] = line[key][1]
                message+=val+': '+str(line[key] or '/')+'\n'
        common.message(message)
        return True

    def sig_remove(self, widget=None):
        if not self.id_get():
            msg = _('Record is not saved ! \n Do You want to Clear Current Record ?')
        else:
            if self.screen.current_view.view_type == 'form':
                msg = _('Are you sure to remove this record ?')
            else:
开发者ID:gisce,项目名称:erpclient,代码行数:70,代码来源:form.py

示例3: form

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

#.........这里部分代码省略.........
        self.screen.destroy()
        self.widget.destroy()
        self.sw.destroy()
        del self.screen
        del self.handlers

    def ids_get(self):
        return self.screen.ids_get()

    def id_get(self):
        return self.screen.id_get()
    
    def sig_attach(self, widget=None):
        id = self.id_get()
        if id:
            ctx = self.context.copy()
            ctx.update(rpc.session.context)
            action = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.attachment', 'action_get', ctx)
            action['domain'] = [('res_model', '=', self.model), ('res_id', '=', id)]
            ctx['default_res_model'] = self.model
            ctx['default_res_id'] = id
            obj = service.LocalService('action.main')
            obj._exec_action(action, {}, ctx)
        else:
            self.message_state(_('No record selected ! You can only attach to existing record.'), color='red')
        return True
    
    @set_tooltips
    def sig_switch(self, widget=None, mode=None):
        if not self.modified_save():
            return
        id = self.screen.id_get()
        if mode<>self.screen.current_view.view_type:
            self.screen.switch_view(mode=mode)
            if id:
                self.sig_reload()
                self.get_resource(get_id=id)

    def sig_logs(self, widget=None):
        id = self.id_get()
        if not id:
            self.message_state(_('You have to select a record !'), color='red')
            return False
        res = rpc.session.rpc_exec_auth('/object', 'execute', self.model, 'perm_read', [id])
        message = ''
        for line in res:
            todo = [
                ('id', _('ID')),
                ('create_uid', _('Creation User')),
                ('create_date', _('Creation Date')),
                ('write_uid', _('Latest Modification by')),
                ('write_date', _('Latest Modification Date')),
                ('xmlid', _('Internal Module Data ID'))
            ]
            for (key,val) in todo:
                if line[key] and key in ('create_uid','write_uid','uid'):
                    line[key] = line[key][1]
                message+=val+': '+str(line[key] or '/')+'\n'
        common.message(message)
        return True
    
    @set_tooltips
    def sig_remove(self, widget=None):
        if not self.id_get():
            msg = _('Record is not saved ! \n Do you want to clear current record ?')
        else:
开发者ID:Ichag,项目名称:openerp-client,代码行数:70,代码来源:form.py

示例4: action

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

        self.act_id=attrs['name']
        res = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.actions.actions', 'read', [self.act_id], ['type'], rpc.session.context)
        if not res:
            raise Exception, 'ActionNotFound'
        type=res[0]['type']
        self.action = rpc.session.rpc_exec_auth('/object', 'execute', type, 'read', [self.act_id], False, rpc.session.context)[0]
        if 'view_mode' in attrs:
            self.action['view_mode'] = attrs['view_mode']

        if self.action['type']=='ir.actions.act_window':
            if not self.action.get('domain', False):
                self.action['domain']='[]'
            self.context = {'active_id': False, 'active_ids': []}
            self.context.update(eval(self.action.get('context', '{}'), self.context.copy()))
            a = self.context.copy()
            a['time'] = time
            a['datetime'] = datetime
            self.domain = tools.expr_eval(self.action['domain'], a)

            view_id = []
            if self.action['view_id']:
                view_id = [self.action['view_id'][0]]
            if self.action['view_type']=='form':
                mode = (self.action['view_mode'] or 'form,tree').split(',')
                self.screen = Screen(self.action['res_model'], view_type=mode, context=self.context, view_ids = view_id, domain=self.domain)
                self.win_gl = glade.XML(common.terp_path("openerp.glade"), 'widget_paned', gettext.textdomain())

                self.win_gl.signal_connect('on_switch_button_press_event', self._sig_switch)
                self.win_gl.signal_connect('on_search_button_press_event', self._sig_search)
                self.win_gl.signal_connect('on_open_button_press_event', self._sig_open)
                label=self.win_gl.get_widget('widget_paned_lab')
                label.set_text(attrs.get('string', self.screen.current_view.title))
                vbox=self.win_gl.get_widget('widget_paned_vbox')
                vbox.add(self.screen.widget)
                self.widget=self.win_gl.get_widget('widget_paned')
                self.widget.set_size_request(int(attrs.get('width', -1)), int(attrs.get('height', -1)))
            elif self.action['view_type']=='tree':
                pass #TODO

    def _sig_switch(self, *args):
        self.screen.switch_view()

    def _sig_search(self, *args):
        win = win_search(self.action['res_model'], domain=self.domain, context=self.context)
        res = win.go()
        if res:
            self.screen.clear()
            self.screen.load(res)

    def _sig_open(self, *args):
        obj = service.LocalService('action.main')
        obj.execute(self.act_id, {})

    def set_value(self, mode, model_field):
        self.screen.current_view.set_value()
        return True

    def display(self, model, model_field):
        res_id = rpc.session.rpc_exec_auth('/object', 'execute',
                self.action['res_model'], 'search', self.domain, 0,
                self.action.get('limit', 80),False,self.context)
        self.screen.clear()
        self.screen.load(res_id)
        return True
开发者ID:gisce,项目名称:erpclient,代码行数:70,代码来源:action.py

示例5: action

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

        self.act_id = int(attrs['name'])
        res = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.actions.actions', 'read', [self.act_id], ['type'], rpc.session.context)
        if not res:
            raise Exception, 'ActionNotFound'
        type = res[0]['type']
        self.action = rpc.session.rpc_exec_auth('/object', 'execute', type, 'read', [self.act_id], False, rpc.session.context)[0]
        if 'view_mode' in attrs:
            self.action['view_mode'] = attrs['view_mode']
        self.action_view_ids = False
        if self.action['type'] == 'ir.actions.act_window':
            if not self.action.get('domain', False):
                self.action['domain'] = '[]'
            if attrs.get('domain',False):
                self.action['domain'] = attrs.get('domain')
            self.context = {'active_id': False, 'active_ids': []}
            self.context.update(tools.expr_eval(self.action.get('context', '{}'), self.context.copy()))
            self.domain = tools.expr_eval(self.action['domain'], self.context.copy())
            view_id = []
            if self.action['view_id']:
                view_id = [self.action['view_id'][0]]
            if self.action.get('views'):
                self.action_view_ids = map(lambda y:y[0], filter(lambda x:x[1] == 'tree',self.action['views']))
            if self.action['view_type']=='form':
                mode = (self.action['view_mode'] or 'form,tree').split(',')
                self.screen = Screen(self.action['res_model'], view_type=mode, context=self.context, view_ids = view_id, domain=self.domain)
                self.ui = openerp_gtk_builder('openerp.ui', ['widget_paned'])
                self.ui.connect_signals({
                    'on_switch_button_press_event': self._sig_switch,
                    'on_search_button_press_event': self._sig_search,
                    'on_open_button_press_event': self._sig_open,
                })
                label = self.ui.get_object('widget_paned_lab')
                label.set_text(attrs.get('string', self.screen.current_view.title))
                vbox = self.ui.get_object('widget_paned_vbox')
                vbox.add(self.screen.widget)
                self.widget = self.ui.get_object('widget_paned')
                self.widget.set_size_request(int(attrs.get('width', -1)), int(attrs.get('height', -1)))
            elif self.action['view_type']=='tree':
                pass #TODO

    def _sig_switch(self, *args):
        self.screen.switch_view()

    def _sig_search(self, *args):
        win = win_search(self.action['res_model'], view_ids = self.action_view_ids, domain=self.domain, context=self.context)
        res = win.go()
        if res:
            self.screen.clear()
            self.screen.load(res)

    def _sig_open(self, *args):
        obj = service.LocalService('action.main')
        obj.execute(self.act_id, datas={}, type=None, context={})

    def set_value(self, mode, model_field):
        self.screen.current_view.set_value()
        return True

    def display(self, model, model_field):
        limit = self.screen.current_view.view_type != 'graph' and self.action.get('limit', 100)  or False
        res_id = rpc.session.rpc_exec_auth('/object', 'execute',
                self.action['res_model'], 'search', self.domain, 0,
                limit, False, self.context)
        self.screen.clear()
        self.screen.load(res_id)
        return True
开发者ID:Ichag,项目名称:openerp-client,代码行数:72,代码来源:action.py

示例6: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import switch_view [as 别名]
class one2many_list(interface.widget_interface):
    def __init__(self, window, parent, model, attrs={}):
        interface.widget_interface.__init__(self, window, parent, model, attrs)
        self.context = {}
        self._readonly = self.default_readonly
        self.widget = gtk.VBox(homogeneous=False, spacing=5)
        hb = gtk.HBox(homogeneous=False, spacing=5)

        event_box = gtk.EventBox()
        event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        hb.pack_start(event_box, expand=True, fill=True)

        # the context to pass to default_get can be optionally specified in
        # the context of the one2many field. We also support a legacy
        # 'default_get' attribute for the same effect (pending removal)
        default_get_ctx = (attrs.get('default_get') or attrs.get('context'))

        self.context = tools.expr_eval(attrs.get('context',"{}"), {"__builtins__":None, "parent": parent})
        self.screen = Screen(attrs['relation'],
                            view_type=attrs.get('mode','tree,form').split(','),
                            parent=self.parent, views_preload=attrs.get('views', {}),
                            tree_saves=attrs.get('saves', False),
                            create_new=True,
                            context=self.context,
                            row_activate=self._on_activate,
                            default_get=default_get_ctx,
                            window=self._window, readonly=self._readonly, limit=pager.DEFAULT_LIMIT)

        self.screen.type = 'one2many'

        self.pager = pager(object=self, relation=attrs['relation'], screen=self.screen)

        # Button New
        self.eb_new = self.pager.create_event_box(_('Create a new entry'), self._sig_new, 'gtk-new')
        hb.pack_start(self.eb_new, expand=False, fill=False)

        # Button Edit
        self.eb_open = self.pager.create_event_box(_('Edit this entry'), self._sig_edit, 'gtk-open')
        hb.pack_start(self.eb_open, expand=False, fill=False)

        # Button Delete
        self.eb_del = self.pager.create_event_box(_('Remove this entry'), self._sig_remove, 'gtk-delete')
        hb.pack_start(self.eb_del, expand=False, fill=False)

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

      # Button Previous Page
        self.eb_prev_page = self.pager.create_event_box(_('Previous Page'), self._sig_prev_page, 'gtk-goto-first')
        hb.pack_start(self.eb_prev_page, expand=False, fill=False)

        # Button Previous Record
        self.eb_pre = self.pager.create_event_box(_('Previous Record'), self._sig_previous, 'gtk-go-back')
        hb.pack_start(self.eb_pre, expand=False, fill=False)

        # Record display
        self.label = gtk.Label('(0,0)')
        hb.pack_start(self.label, expand=False, fill=False)

        # Button Next
        self.eb_next = self.pager.create_event_box(_('Next Record'), self._sig_next, 'gtk-go-forward')
        hb.pack_start(self.eb_next, expand=False, fill=False)

        # Button Next Page
        self.eb_next_page = self.pager.create_event_box(_('Next Page'), self._sig_next_page, 'gtk-goto-last')
        hb.pack_start(self.eb_next_page, expand=False, fill=False)

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

        # Button Switch
        self.eb_switch = self.pager.create_event_box(_('Switch'), self.switch_view, 'gtk-justify-left')
        hb.pack_start(self.eb_switch, expand=False, fill=False)

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

          # Limit Combo
        self.cb = self.pager.create_combo_box(_('Choose Limit'), self.limit_changed)
        hb.pack_start(self.cb, expand=False, fill=False)

        self.widget.pack_start(hb, expand=False, fill=True)
        self.screen.signal_connect(self, 'record-message', self._sig_label)
        menu_title = gtk.Label('<b>'+self.screen.current_view.title.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')+'</b>')
        menu_title.set_use_markup(True)
        menu_title.set_alignment(0, 0)
        event_box.add(menu_title)
        event_box.connect('button_press_event',self.load_menu)
        self.screen.widget.set_property('height-request', 100)


        self.widget.pack_start(self.screen.widget, expand=True, fill=True)
        self.screen.widget.connect('key_press_event', self.on_keypress)
        self.model = None
        self.model_field = None
        self.name = attrs['name']

    def load_menu(self, widget, event):
        if event.button != 3:
            return
        menu = gtk.Menu()
        menuitem_set_to_default = gtk.MenuItem(_('Set to default value'), True)
        menuitem_set_to_default.connect('activate', lambda *x:self._menu_sig_default_get())
#.........这里部分代码省略.........
开发者ID:kevin-garnett,项目名称:openerp-from-oneyoung,代码行数:103,代码来源:one2many_list.py

示例7: one2many_list

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

        self._readonly = self.default_readonly
        self.widget = gtk.VBox(homogeneous=False, spacing=5)

        hb = gtk.HBox(homogeneous=False, spacing=5)
        menubar = gtk.MenuBar()
        if hasattr(menubar, 'set_pack_direction') and \
                hasattr(menubar, 'set_child_pack_direction'):
            menubar.set_pack_direction(gtk.PACK_DIRECTION_LTR)
            menubar.set_child_pack_direction(gtk.PACK_DIRECTION_LTR)

        menuitem_title = gtk.ImageMenuItem(stock_id='gtk-preferences')

        menu_title = gtk.Menu()
        menuitem_set_to_default = gtk.MenuItem(_('Set to default value'), True)
        menuitem_set_to_default.connect('activate', lambda *x:self._menu_sig_default_get())
        menu_title.add(menuitem_set_to_default)
        menuitem_set_default = gtk.MenuItem(_('Set Default'), True)
        menuitem_set_default.connect('activate', lambda *x: self._menu_sig_default_set())
        menu_title.add(menuitem_set_default)
        menuitem_title.set_submenu(menu_title)

        menubar.add(menuitem_title)
        hb.pack_start(menubar, expand=True, fill=True)

        self.eb_new = gtk.EventBox()
        self.eb_new.set_tooltip_text(_('Create a new entry'))
        self.eb_new.set_events(gtk.gdk.BUTTON_PRESS)
        self.eb_new.connect('button_press_event', self._sig_new)
        img_new = gtk.Image()
        img_new.set_from_stock('gtk-new', gtk.ICON_SIZE_MENU)
        img_new.set_alignment(0.5, 0.5)
        self.eb_new.add(img_new)
        hb.pack_start(self.eb_new, expand=False, fill=False)

        self.eb_open = gtk.EventBox()
        self.eb_open.set_tooltip_text(_('Edit this entry'))
        self.eb_open.set_events(gtk.gdk.BUTTON_PRESS)
        self.eb_open.connect('button_press_event', self._sig_edit)
        img_open = gtk.Image()
        img_open.set_from_stock('gtk-open', gtk.ICON_SIZE_MENU)
        img_open.set_alignment(0.5, 0.5)
        self.eb_open.add(img_open)
        hb.pack_start(self.eb_open, expand=False, fill=False)

        self.eb_del = gtk.EventBox()
        self.eb_del.set_tooltip_text(_('Remove this entry'))
        self.eb_del.set_events(gtk.gdk.BUTTON_PRESS)
        self.eb_del.connect('button_press_event', self._sig_remove)
        img_del = gtk.Image()
        img_del.set_from_stock('gtk-delete', gtk.ICON_SIZE_MENU)
        img_del.set_alignment(0.5, 0.5)
        self.eb_del.add(img_del)
        hb.pack_start(self.eb_del, expand=False, fill=False)

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

        eb_pre = gtk.EventBox()
        eb_pre.set_tooltip_text(_('Previous'))
        eb_pre.set_events(gtk.gdk.BUTTON_PRESS)
        eb_pre.connect('button_press_event', self._sig_previous)
        img_pre = gtk.Image()
        img_pre.set_from_stock('gtk-go-back', gtk.ICON_SIZE_MENU)
        img_pre.set_alignment(0.5, 0.5)
        eb_pre.add(img_pre)
        hb.pack_start(eb_pre, expand=False, fill=False)

        self.label = gtk.Label('(0,0)')
        hb.pack_start(self.label, expand=False, fill=False)

        eb_next = gtk.EventBox()
        eb_next.set_tooltip_text(_('Next'))
        eb_next.set_events(gtk.gdk.BUTTON_PRESS)
        eb_next.connect('button_press_event', self._sig_next)
        img_next = gtk.Image()
        img_next.set_from_stock('gtk-go-forward', gtk.ICON_SIZE_MENU)
        img_next.set_alignment(0.5, 0.5)
        eb_next.add(img_next)
        hb.pack_start(eb_next, expand=False, fill=False)

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

        eb_switch = gtk.EventBox()
        eb_switch.set_tooltip_text(_('Switch'))
        eb_switch.set_events(gtk.gdk.BUTTON_PRESS)
        eb_switch.connect('button_press_event', self.switch_view)
        img_switch = gtk.Image()
        img_switch.set_from_stock('gtk-justify-left', gtk.ICON_SIZE_MENU)
        img_switch.set_alignment(0.5, 0.5)
        eb_switch.add(img_switch)
        hb.pack_start(eb_switch, expand=False, fill=False)

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

        self.screen = Screen(attrs['relation'], view_type=attrs.get('mode','tree,form').split(','), parent=self.parent, views_preload=attrs.get('views', {}), tree_saves=attrs.get('saves', False), create_new=True, row_activate=self._on_activate, default_get=attrs.get('default_get', {}), window=self._window, readonly=self._readonly)
        self.screen.signal_connect(self, 'record-message', self._sig_label)

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

示例8: one2many_list

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import switch_view [as 别名]
class one2many_list(interface.widget_interface):
    def __init__(self, window, parent, model, attrs={}, label=None):
        interface.widget_interface.__init__(self, window, parent, model, attrs, label_ebox=label)
        self.context = {}
        self._readonly = self.default_readonly
        self.widget = gtk.VBox(homogeneous=False, spacing=5)
        hb = gtk.HBox(homogeneous=False, spacing=5)
        menubar = gtk.MenuBar()
        if hasattr(menubar, "set_pack_direction") and hasattr(menubar, "set_child_pack_direction"):
            menubar.set_pack_direction(gtk.PACK_DIRECTION_LTR)
            menubar.set_child_pack_direction(gtk.PACK_DIRECTION_LTR)

        menuitem_title = gtk.ImageMenuItem(stock_id="gtk-preferences")

        menu_title = gtk.Menu()
        menuitem_set_to_default = gtk.MenuItem(_("Set to default value"), True)
        menuitem_set_to_default.connect("activate", lambda *x: self._menu_sig_default_get())
        menu_title.add(menuitem_set_to_default)
        menuitem_set_default = gtk.MenuItem(_("Set Default"), True)
        menuitem_set_default.connect("activate", lambda *x: self._menu_sig_default_set())
        menu_title.add(menuitem_set_default)
        menuitem_title.set_submenu(menu_title)

        menubar.add(menuitem_title)
        hb.pack_start(menubar, expand=True, fill=True)

        # the context to pass to default_get can be optionally specified in
        # the context of the one2many field. We also support a legacy
        # 'default_get' attribute for the same effect (pending removal)
        default_get_ctx = attrs.get("default_get") or attrs.get("context")

        self.context = tools.expr_eval(attrs.get("context", "{}"), {"__builtins__": None})
        self.screen = Screen(
            attrs["relation"],
            view_type=attrs.get("mode", "tree,form").split(","),
            parent=self.parent,
            views_preload=attrs.get("views", {}),
            tree_saves=attrs.get("saves", False),
            create_new=True,
            row_activate=self._on_activate,
            default_get=default_get_ctx,
            context=self.context,
            window=self._window,
            readonly=self._readonly,
            limit=pager.DEFAULT_LIMIT,
        )

        self.screen.type = "one2many"

        self.pager = pager(object=self, relation=attrs["relation"], screen=self.screen)

        # Button New
        self.eb_new = self.pager.create_event_box(_("Create a new entry"), self._sig_new, "gtk-new")
        hb.pack_start(self.eb_new, expand=False, fill=False)

        # Button Edit
        self.eb_open = self.pager.create_event_box(_("Edit this entry"), self._sig_edit, "gtk-open")
        hb.pack_start(self.eb_open, expand=False, fill=False)

        # Button Delete
        self.eb_del = self.pager.create_event_box(_("Remove this entry"), self._sig_remove, "gtk-delete")
        hb.pack_start(self.eb_del, expand=False, fill=False)

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

        # Button Previous Page
        self.eb_prev_page = self.pager.create_event_box(_("Previous Page"), self._sig_prev_page, "gtk-goto-first")
        hb.pack_start(self.eb_prev_page, expand=False, fill=False)

        # Button Previous Record
        self.eb_pre = self.pager.create_event_box(_("Previous Record"), self._sig_previous, "gtk-go-back")
        hb.pack_start(self.eb_pre, expand=False, fill=False)

        # Record display
        self.label = gtk.Label("(0,0)")
        hb.pack_start(self.label, expand=False, fill=False)

        # Button Next
        self.eb_next = self.pager.create_event_box(_("Next Record"), self._sig_next, "gtk-go-forward")
        hb.pack_start(self.eb_next, expand=False, fill=False)

        # Button Next Page
        self.eb_next_page = self.pager.create_event_box(_("Next Page"), self._sig_next_page, "gtk-goto-last")
        hb.pack_start(self.eb_next_page, expand=False, fill=False)

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

        # Button Switch
        self.eb_switch = self.pager.create_event_box(_("Switch"), self.switch_view, "gtk-justify-left")
        hb.pack_start(self.eb_switch, expand=False, fill=False)

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

        # Limit Combo
        self.cb = self.pager.create_combo_box(_("Choose Limit"), self.limit_changed)
        hb.pack_start(self.cb, expand=False, fill=False)

        self.widget.pack_start(hb, expand=False, fill=True)
        self.screen.signal_connect(self, "record-message", self._sig_label)
        menuitem_title.get_child().set_markup(
#.........这里部分代码省略.........
开发者ID:goldenboy,项目名称:razvoj,代码行数:103,代码来源:one2many_list.py


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