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, 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 if res == gtk.RESPONSE_APPLY: return (False, model, res) return (True, model, res) return (False, False, False) def destroy(self): self.screen.signal_unconnect(self) self.window.present() self.dia.destroy()