Exemple #1
0
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
class win_preference(object):
    def __init__(self, parent=None):
        self.glade = glade.XML(common.terp_path("openerp.glade"),
                               'win_preference', gettext.textdomain())
        self.win = self.glade.get_widget('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.glade.get_widget('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
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
Exemple #4
0
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