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


Python Screen.sel_ids_get方法代码示例

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


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

示例1: win_search

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import sel_ids_get [as 别名]
class win_search(object):
    def __init__(self, model, sel_multi=True, ids=[], view_ids=False, context={}, domain = [], parent=None):
        self.model = model
        self.sel_multi = sel_multi
        self.ids = ids
        self.ui = openerp_gtk_builder('openerp.ui', ['win_search'])
        self.win = self.ui.get_object('win_search')
        self.win.set_icon(common.OPENERP_ICON)
        if not parent:
            parent = service.LocalService('gui.main').window
        self.parent = parent
        self.win.set_transient_for(parent)
        self.screen = Screen(model, view_type=['tree'], view_ids=view_ids, show_search=True, domain=domain,
                             context=context, parent=self.win, win_search=True)
        self.view = self.screen.current_view
        if self.screen.filter_widget.focusable:
            self.screen.filter_widget.focusable.grab_focus()
        self.title = _('OpenERP Search: %s') % self.screen.name
        self.title_results = _('OpenERP Search: %s (%%d result(s))') % (self.screen.name,)
        self.win.set_title(self.title)
        self.view.unset_editable()
        sel = self.view.widget_tree.get_selection()
        if not sel_multi:
            sel.set_mode('single')
        else:
            sel.set_mode(gtk.SELECTION_MULTIPLE)
        self.view.widget_tree.connect('row_activated', self.sig_activate)
        self.view.widget_tree.connect('button_press_event', self.sig_button)
        self.screen.win_search_callback = self.update_title
        vp = gtk.Viewport()
        vp.set_shadow_type(gtk.SHADOW_NONE)
        vp.add(self.screen.widget)
        vp.show()
        self.sw = gtk.ScrolledWindow()
        self.sw.set_shadow_type(gtk.SHADOW_NONE)
        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.sw.add(vp)
        self.sw.show()
        self.wid = self.ui.get_object('win_search_vbox')
        self.wid.pack_start(self.sw)
        self.wid.show_all()

    def sig_activate(self, treeview, path, column, *args):
        self.view.widget_tree.emit_stop_by_name('row_activated')
        if not self.sel_multi:
            self.win.response(gtk.RESPONSE_OK)
        return False

    def sig_button(self, view, event):
        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
            self.win.response(gtk.RESPONSE_OK)
        return False

    def find(self, widget=None, *args):
        self.screen.search_filter()
        self.update_title()

    def update_title(self):
        self.ids = self.screen.win_search_ids
        self.reload()
        self.win.set_title(self.title_results % len(self.ids))

    def reload(self):
        sel = self.view.widget_tree.get_selection()
        if sel.get_mode() == gtk.SELECTION_MULTIPLE:
            sel.select_all()


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

    def destroy(self):
        self.parent.present()
        self.win.destroy()

    def go(self):
        ## This is if the user has set some filters by default with search_default_XXX
        if self.ids:
            self.screen.win_search_domain += [('id','in', self.ids)]
            self.find()
        else:
            self.screen.update_scroll()
        end = False
        while not end:
            sel = self.view.widget_tree.get_selection()
            if sel.get_mode() == gtk.SELECTION_MULTIPLE:
                sel.unselect_all()
            button = self.win.run()
            if button == gtk.RESPONSE_OK:
                res = self.sel_ids_get() or self.ids
                end = True
            elif button== gtk.RESPONSE_APPLY:
                self.find()
            else:
                res = None
                end = True
        self.destroy()
        if button == gtk.RESPONSE_ACCEPT:
            dia = dialog(self.model, window=self.parent, domain=self.screen.domain_init ,context=self.screen.context)
            id = dia.run()
#.........这里部分代码省略.........
开发者ID:Ichag,项目名称:openerp-client,代码行数:103,代码来源:win_search.py

示例2: win_search

# 需要导入模块: from widget.screen import Screen [as 别名]
# 或者: from widget.screen.Screen import sel_ids_get [as 别名]
class win_search(object):
    def __init__(self, model, sel_multi=True, ids=[], context={}, domain=[], parent=None):
        self.model = model
        self.sel_multi = sel_multi
        self.ids = ids
        self.ctx = context
        self.glade = glade.XML(common.terp_path("openerp.glade"), "win_search", gettext.textdomain())
        self.win = self.glade.get_widget("win_search")
        self.win.set_icon(common.OPENERP_ICON)
        if not parent:
            parent = service.LocalService("gui.main").window
        self.parent = parent
        self.win.set_transient_for(parent)
        self.screen = Screen(
            model,
            view_type=["tree"],
            show_search=True,
            domain=domain,
            context=context,
            parent=self.win,
            win_search=True,
        )
        self.view = self.screen.current_view
        if self.screen.filter_widget.focusable:
            self.screen.filter_widget.focusable.grab_focus()
        self.title = _("OpenERP Search: %s") % self.screen.name
        self.title_results = _("OpenERP Search: %s (%%d result(s))") % (self.screen.name,)
        self.win.set_title(self.title)
        self.view.unset_editable()
        sel = self.view.widget_tree.get_selection()
        if not sel_multi:
            sel.set_mode("single")
        else:
            sel.set_mode(gtk.SELECTION_MULTIPLE)
        self.view.widget_tree.connect("row_activated", self.sig_activate)
        self.view.widget_tree.connect("button_press_event", self.sig_button)
        self.screen.win_search_callback = self.update_title
        vp = gtk.Viewport()
        vp.set_shadow_type(gtk.SHADOW_NONE)
        vp.add(self.screen.widget)
        vp.show()
        self.sw = gtk.ScrolledWindow()
        self.sw.set_shadow_type(gtk.SHADOW_NONE)
        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.sw.add(vp)
        self.sw.show()
        self.wid = self.glade.get_widget("win_search_vbox")
        self.wid.pack_start(self.sw)
        self.wid.show_all()

    def sig_activate(self, treeview, path, column, *args):
        self.view.widget_tree.emit_stop_by_name("row_activated")
        if not self.sel_multi:
            self.win.response(gtk.RESPONSE_OK)
        return False

    def sig_button(self, view, event):
        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
            self.win.response(gtk.RESPONSE_OK)
        return False

    def find(self, widget=None, *args):
        self.screen.search_filter()
        self.update_title()

    def update_title(self):
        self.ids = self.screen.win_search_ids
        self.reload()
        self.win.set_title(self.title_results % len(self.ids))

    def reload(self):
        sel = self.view.widget_tree.get_selection()
        if sel.get_mode() == gtk.SELECTION_MULTIPLE:
            sel.select_all()

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

    def destroy(self):
        self.parent.present()
        self.win.destroy()

    def go(self):
        ## This is if the user has set some filters by default with search_default_XXX
        if self.ids:
            # Add the domain only if there was no name_search performed with name
            name_search = self.ctx.get("name_search", False)
            self.screen.win_search_domain += [("id", "in", self.ids)] if name_search else []
            self.find()
        else:
            self.screen.update_scroll()
        end = False
        while not end:
            button = self.win.run()
            if button == gtk.RESPONSE_OK:
                res = self.sel_ids_get() or self.ids
                end = True
            elif button == gtk.RESPONSE_APPLY:
                self.find()
            else:
#.........这里部分代码省略.........
开发者ID:kevin-garnett,项目名称:openerp-from-oneyoung,代码行数:103,代码来源:win_search.py

示例3: form

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

#.........这里部分代码省略.........
                self.sig_save()
            elif res == 'ko':
                pass
            else:
                return False
        if self.screen.current_view.view_type == 'form':
            self.screen.cancel_current()
            self.screen.display()
        else:
            id = self.screen.id_get()
            self.screen.search_filter()
            for model in self.screen.models:
                if model.id == id:
                    self.screen.current_model = model
                    self.screen.display()
                    break
        self.message_state('')
        return True

    def sig_action(self, keyword='client_action_multi', previous=False, report_type='pdf', adds={}):
        ids = self.screen.ids_get()
        group_by = self.screen.context.get('group_by')
        if self.screen.current_model:
            id = self.screen.current_model.id
        else:
            id = False
        if self.screen.current_view.view_type == 'form':
            id = self.screen.save_current()
            if not id:
                return False
            ids = [id]
        if self.screen.current_view.view_type == 'tree':
            self.modified_save()
            sel_ids = self.screen.sel_ids_get()
            if sel_ids:
                ids = sel_ids
        if len(ids) or group_by:
            obj = service.LocalService('action.main')
            data = {'model':self.screen.resource,
                    'id': id or False,
                    'ids':ids,
                    'report_type': report_type,
                    '_domain':self.screen.domain
                   }
            # When group by header is selected add it's children as a active_ids
            if group_by:
                self.screen.context.update({'active_id':id, 'active_ids':ids})
            if previous and self.previous_action:
                obj._exec_action(self.previous_action[1], data, self.screen.context)
            else:
                res = obj.exec_keyword(keyword, data, adds, self.screen.context)
                if res:
                    self.previous_action = res
            self.sig_reload(test_modified=False)
        else:
            self.message_state(_('You must select one or several records !'),color='red')

    def sig_print_repeat(self):
        self.sig_action('client_print_multi', True)

    def sig_print_html(self):
        self.sig_action('client_print_multi', report_type='html')

    def sig_print(self):
        self.sig_action('client_print_multi', adds={_('Print Screen').encode('utf8'): {'report_name':'printscreen.list', 'name':_('Print Screen'), 'type':'ir.actions.report.xml'}})
开发者ID:Ichag,项目名称:openerp-client,代码行数:69,代码来源:form.py

示例4: win_search

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

#.........这里部分代码省略.........
        sw.add(vp)
        sw.show_all()
        self.view.widget_tree.connect('row_activated', self.sig_activate)
        self.view.widget_tree.connect('button_press_event', self.sig_button)

        self.model_name = model

        view_form = rpc.session.rpc_exec_auth('/object', 'execute', self.model_name, 'fields_view_get', False, 'form', self.context)
        self.form = widget_search.form(view_form['arch'], view_form['fields'], model, parent=self.win)

        self.title = _('OpenERP Search: %s') % self.form.name
        self.title_results = _('OpenERP Search: %s (%%d result(s))') % self.form.name
        self.win.set_title(self.title)
        x, y = self.form.widget.size_request()

        hbox = self.glade.get_widget('search_hbox')
        hbox.pack_start(self.form.widget)
        self.ids = ids
        if self.ids:
            self.reload()
        self.old_search = None
        self.old_offset = self.old_limit = None
        if self.ids:
            self.old_search = []
            self.old_limit = self.form.get_limit()
            self.old_offset = self.form.get_offset()

        self.view.widget.show_all()
        if self.form.focusable:
            self.form.focusable.grab_focus()

    def sig_activate(self, treeview, path, column, *args):
        self.view.widget_tree.emit_stop_by_name('row_activated')
        if not self.sel_multi:
            self.win.response(gtk.RESPONSE_OK)
        return False

    def sig_button(self, view, event):
        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
            self.win.response(gtk.RESPONSE_OK)
        return False

    def find(self, widget=None, *args):
        limit = self.form.get_limit()
        offset = self.form.get_offset()
        if (self.old_search == self.form.value) and (self.old_limit==limit) and (self.old_offset==offset) and not self.first:
            self.win.response(gtk.RESPONSE_OK)
            return False
        self.first = False
        self.old_offset = offset
        self.old_limit = limit
        v = self.form.value
        v_keys = map(lambda x: x[0], v)
        v += self.domain
        try:
            self.ids = rpc.session.rpc_exec_auth_try('/object', 'execute', self.model_name, 'search', v, offset, limit, 0, self.context)
        except:
            # Try if it is not an old server
            self.ids = rpc.session.rpc_exec_auth('/object', 'execute', self.model_name, 'search', v, offset, limit)
        self.reload()
        self.old_search = self.form.value
        self.win.set_title(self.title_results % len(self.ids))
        return True

    def reload(self):
        self.screen.clear()
        self.screen.load(self.ids)
        sel = self.view.widget_tree.get_selection()
        if sel.get_mode() == gtk.SELECTION_MULTIPLE:
            sel.select_all()

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

    def destroy(self):
        self.parent.present()
        self.win.destroy()

    def go(self):
        end = False
        while not end:
            button = self.win.run()
            if button == gtk.RESPONSE_OK:
                res = self.sel_ids_get() or self.ids
                end = True
            elif button== gtk.RESPONSE_APPLY:
                end = not self.find()
                if end:
                    res = self.sel_ids_get() or self.ids
            else:
                res = None
                end = True
        self.destroy()

        if button== gtk.RESPONSE_ACCEPT:
            dia = dialog(self.model, window=self.parent, domain=self.domain ,context=self.context)
            id = dia.run()
            res = id and [id] or None
            dia.destroy()
        return res
开发者ID:gisce,项目名称:erpclient,代码行数:104,代码来源:win_search.py


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