def ensure_uptodate(self): from xml.dom import minidom # This is a bit inefficient... (could cache things) self.keys = {} trust = basedir.load_first_config(config_site, config_prog, 'trustdb.xml') if trust: keys = minidom.parse(trust).documentElement for key in keys.getElementsByTagNameNS(XMLNS_TRUST, 'key'): domains = sets.Set() self.keys[key.getAttribute('fingerprint')] = domains for domain in key.getElementsByTagNameNS( XMLNS_TRUST, 'domain'): domains.add(domain.getAttribute('value')) else: # Convert old database to XML format trust = basedir.load_first_config(config_site, config_prog, 'trust') if trust: #print "Loading trust from", trust_db for key in file(trust).read().split('\n'): if key: self.keys[key] = sets.Set('*')
def ensure_uptodate(self): trust = basedir.load_first_config(config_site, config_prog, 'trust') # This is a bit inefficient... self.keys = {} if trust: #print "Loading trust from", trust_db for key in file(trust).read().split('\n'): self.keys[key] = True
def update_from_cache(interface): """True if cached version and user overrides loaded OK. False if not cached.""" cached = basedir.load_first_config(config_site, config_prog, 'interfaces', escape(interface.uri)) if not cached: return False interface.reset() update(interface, cached) update_user_overrides(interface) return True
def ensure_uptodate(self): from xml.dom import minidom # This is a bit inefficient... (could cache things) self.keys = {} trust = basedir.load_first_config(config_site, config_prog, 'trustdb.xml') if trust: keys = minidom.parse(trust).documentElement for key in keys.getElementsByTagNameNS(XMLNS_TRUST, 'key'): domains = sets.Set() self.keys[key.getAttribute('fingerprint')] = domains for domain in key.getElementsByTagNameNS(XMLNS_TRUST, 'domain'): domains.add(domain.getAttribute('value')) else: # Convert old database to XML format trust = basedir.load_first_config(config_site, config_prog, 'trust') if trust: #print "Loading trust from", trust_db for key in file(trust).read().split('\n'): if key: self.keys[key] = sets.Set('*')
def __init__(self, root): assert isinstance(root, (str, unicode)) self.root = root user_store = os.path.expanduser( '~/.cache/0install.net/implementations') if not os.path.isdir(user_store): os.makedirs(user_store) self.store = zerostore.Store(user_store) self.implementation = {} # Interface -> Implementation self.watchers = [] self.help_with_testing = False self.network_use = network_full self.freshness = 60 * 60 * 24 * 7 # Seconds since last update self.updates = [] path = basedir.load_first_config(config_site, config_prog, 'global') if path: config = ConfigParser.ConfigParser() config.read(path) self.help_with_testing = config.getboolean('global', 'help_with_testing') self.network_use = config.get('global', 'network_use') self.freshness = int(config.get('global', 'freshness')) assert self.network_use in network_levels
def update_user_overrides(interface): user = basedir.load_first_config(config_site, config_prog, 'user_overrides', escape(interface.uri)) if user: update(interface, user, user_overrides=True)
def __init__(self, name, items): """names should be unique (eg, 'popup', 'main', etc). items is a list of menu items: [(name, callback_name, type, key), ...]. 'name' is the item's path. 'callback_name' is the NAME of a method to call. 'type' is as for g.ItemFactory. 'key' is only used if no bindings are in Choices.""" if not _save_name: raise Exception('Call rox.Menu.set_save_name() first!') ag = g.AccelGroup() self.accel_group = ag factory = g.ItemFactory(g.Menu, '<%s>' % name, ag) site, program, save_leaf = _save_name if site: accel_path = basedir.load_first_config(site, program, save_leaf) else: accel_path = choices.load(program, save_leaf) out = [] self.fns = [] # Convert old-style list of tuples to new classes if items and not isinstance(items[0], MenuItem): items = [MenuItem(*t) for t in items] items_with_update = [] for path, item in _walk(items): if item.fn: self.fns.append(item) cb = self._activate else: cb = None if item.stock: out.append((path, item.key, cb, len(self.fns) - 1, item.type, item.stock)) else: out.append((path, item.key, cb, len(self.fns) - 1, item.type)) if hasattr(item, 'update'): items_with_update.append((path, item)) factory.create_items(out) self.factory = factory self.update_callbacks = [] for path, item in items_with_update: widget = factory.get_widget(path) fn = item.update self.update_callbacks.append(lambda f=fn, w=widget: f(self, w)) if accel_path: g.accel_map_load(accel_path) self.caller = None # Caller of currently open menu self.menu = factory.get_widget('<%s>' % name) def keys_changed(*unused): site, program, name = _save_name if site: d = basedir.save_config_path(site, program) path = os.path.join(d, name) else: path = choices.save(program, name) if path: try: g.accel_map_save(path) except AttributeError: print "Error saving keybindings to", path # GtkAccelGroup has its own (unrelated) connect method, # so the obvious approach doesn't work. #ag.connect('accel_changed', keys_changed) import gobject gobject.GObject.connect(ag, 'accel_changed', keys_changed)
def __init__(self, name, items): """names should be unique (eg, 'popup', 'main', etc). items is a list of menu items: [(name, callback_name, type, key), ...]. 'name' is the item's path. 'callback_name' is the NAME of a method to call. 'type' is as for g.ItemFactory. 'key' is only used if no bindings are in Choices.""" if not _save_name: raise Exception("Call rox.Menu.set_save_name() first!") ag = g.AccelGroup() self.accel_group = ag factory = g.ItemFactory(g.Menu, "<%s>" % name, ag) site, program, save_leaf = _save_name if site: accel_path = basedir.load_first_config(site, program, save_leaf) else: accel_path = choices.load(program, save_leaf) out = [] self.fns = [] # Convert old-style list of tuples to new classes if items and not isinstance(items[0], MenuItem): items = [MenuItem(*t) for t in items] items_with_update = [] for path, item in _walk(items): if item.fn: self.fns.append(item) cb = self._activate else: cb = None if item.stock: out.append((path, item.key, cb, len(self.fns) - 1, item.type, item.stock)) else: out.append((path, item.key, cb, len(self.fns) - 1, item.type)) if hasattr(item, "update"): items_with_update.append((path, item)) factory.create_items(out) self.factory = factory self.update_callbacks = [] for path, item in items_with_update: widget = factory.get_widget(path) fn = item.update self.update_callbacks.append(lambda f=fn, w=widget: f(self, w)) if accel_path: g.accel_map_load(accel_path) self.caller = None # Caller of currently open menu self.menu = factory.get_widget("<%s>" % name) def keys_changed(*unused): site, program, name = _save_name if site: d = basedir.save_config_path(site, program) path = os.path.join(d, name) else: path = choices.save(program, name) if path: try: g.accel_map_save(path) except AttributeError: print "Error saving keybindings to", path # GtkAccelGroup has its own (unrelated) connect method, # so the obvious approach doesn't work. # ag.connect('accel_changed', keys_changed) import gobject gobject.GObject.connect(ag, "accel_changed", keys_changed)