Example #1
0
    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('*')
Example #2
0
 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
Example #3
0
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
Example #4
0
	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('*')
Example #5
0
    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
Example #6
0
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)
Example #7
0
    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)
Example #8
0
File: Menu.py Project: boube/minino
    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)