Esempio n. 1
0
 def reloadBundles(self, namespace):
     if 'Bundles' in self.namespaces[namespace]:
         installedBundles = filter(lambda theme: theme.hasNamespace(namespace), self.getAllBundles())
         bundlePaths = glob(os.path.join(self.namespaces[namespace]['Bundles'], '*.tmbundle'))
         for bundle in installedBundles:
             bundlePath = bundle.path(namespace)
             if bundlePath in bundlePaths:
                 if namespace == bundle.currentNamespace and bundle.sourceChanged(namespace):
                     self.logger.debug("Bundle %s changed, reload from %s." % (bundle.name, bundlePath))
                     bundle.reloadBundle(bundle, bundlePath, namespace, self)
                     bundle.updateMtime(namespace)
                     self.modifyBundle(bundle)
                 bundlePaths.remove(bundlePath)
             else:
                 bundleItems = self.findBundleItems(bundle = bundle)
                 map(lambda item: item.removeSource(namespace), bundleItems)
                 bundle.removeSource(namespace)
                 if not bundle.hasSources():
                     self.logger.debug("Bundle %s removed." % bundle.name)
                     map(lambda item: self.removeManagedObject(item), bundleItems)
                     map(lambda item: self.removeBundleItem(item), bundleItems)
                     self.removeManagedObject(bundle)
                     self.removeBundle(bundle)
                 else:
                     map(lambda item: item.setDirty(), bundleItems)
                     bundle.support = None
                     bundle.setDirty()
         for path in bundlePaths:
             self.logger.debug("New bundle %s." % path)
             PMXBundle.loadBundle(path, namespace, self)
Esempio n. 2
0
 def createBundle(self, name, namespace = None):
     """
     Crea un bundle nuevo lo agrega en los bundles y lo retorna,
     Precondiciones:
         Tenes por lo menos dos espacios de nombre el base o proteguido y uno donde generar los nuevos bundles
         El nombre tipo Title.
         El nombre no este entre los nombres ya cargados.
     Toma el ultimo espacio de nombres creado como espacio de nombre por defecto para el bundle nuevo.
     """
     namespace = namespace or self.defaultNamespace
     basePath = self.basePath("Bundles", namespace)
     path = ensurePath(os.path.join(basePath, "%s.tmbundle"), self.convertToValidPath(name))
     bundle = PMXBundle(self.uuidgen(), { 'name': name })
     bundle.setManager(self)
     bundle.addSource(namespace, path)
     bundle = self.addBundle(bundle)
     self.addManagedObject(bundle)
     return bundle
Esempio n. 3
0
 def loadBundles(self, namespace):
     loadedBundles = set()
     if 'Bundles' in self.namespaces[namespace]:
         paths = glob(os.path.join(self.namespaces[namespace]['Bundles'], '*.tmbundle'))
         for path in paths:
             bundle = PMXBundle.loadBundle(path, namespace, self)
             if bundle is not None:
                 loadedBundles.add(bundle)
     return loadedBundles