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
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