Exemplo n.º 1
0
	def export_index(self, index_page, pages):
		# TODO remove hack here, and get rid of IndexPage in current shape from Notebook

		if pages.prefix:
			indexpage = Page(pages.prefix + index_page)
		else:
			indexpage = Page(Path(index_page))

		# Bit of a HACK here - need better support for these index pages
		_page = IndexPage(pages.notebook, pages.prefix) # TODO make more flexible - use pages iter itself
		indexpage.readonly = False
		indexpage.set_parsetree(_page.get_parsetree())
		indexpage.readonly = True

		self.export_page(pages.notebook, indexpage, pages)
Exemplo n.º 2
0
    def render_index(self, namespace=None):
        '''Render an index page
		@param namespace: the namespace L{Path}
		@returns: html as a list of lines
		'''
        page = IndexPage(self.notebook, namespace)
        return self.render_page(page)
Exemplo n.º 3
0
	def export_all(self, dir, callback=None):
		'''Export all pages in the notebook to 'dir'. Attachments are copied
		along. The function 'callback' will be called after each page with the
		page object as single argument. If the callback returns False the
		export will be cancelled.
		'''
		logger.info('Exporting notebook to %s', dir)

		for page in self.notebook.walk():
			if page.hascontent:
				self.export_page(dir, page)
				if callback and not callback(page):
					logger.warn('Export cancelled')
					return False

		if self.index_page:
			page = IndexPage(self.notebook)
			page.name = self.index_page # HACK
			self.export_page(dir, page)

		logger.info('Export done')
		return True
Exemplo n.º 4
0
    def export_all(self, dir, callback=None):
        '''Export all pages in the notebook

        Will also copy all attachments and created a folder with icons
        for checkboxes etc. So the resulting folder should contain all
        the notebook information.

        @param dir: a L{Dir} object for the target folder
        @param callback: a callback function that will be called after
        each page being exported with the page object as single argument.
        If the function returns C{False} the export is canceled.

        @returns: C{False} if the action was cancelled, C{True} otherwise
        '''
        logger.info('Exporting notebook to %s', dir)
        self.linker.target_dir = dir # Needed to resolve icons

        # Copy icons
        for name in ('checked-box', 'unchecked-box', 'xchecked-box'):
            icon = data_file('pixmaps/%s.png' % name)
            file = dir.file('_resources/' + name + '.png')
            icon.copyto(file)

        # Copy template resources (can overwrite icons)
        if self.template and self.template.resources_dir \
        and self.template.resources_dir.exists():
            resources = dir.subdir('_resources')
            self.template.resources_dir.copyto(resources)

        # Set special pages
        if self.index_page:
            indexpage = Page(Path(self.index_page))
        else:
            indexpage = None

        pages = {
            'index': indexpage,
            'home': self.notebook.get_home_page(),
        }

        # Export the pages
        prev, current, next = None, None, None
        for page in self.notebook.walk():
            if page.hascontent:
                prev, current, next = current, next, page # shift
                if current:
                    pages['previous'] = prev
                    pages['next'] = next
                    self.export_page(dir, current, pages, use_namespace=True)
                    if callback and not callback(current):
                        logger.warn('Export canceled')
                        return False

        prev, current, next = current, next, None # shift once more
        if current:
            pages['previous'] = prev
            pages['next'] = next
            self.export_page(dir, current, pages, use_namespace=True)
            if callback and not callback(current):
                logger.warn('Export canceled')
                return False

        # Generate index page
        if indexpage:
            _page = IndexPage(self.notebook, Path(':'))
            # Bit of a HACK here - need better support for these index pages
            indexpage.readonly = False
            indexpage.set_parsetree(_page.get_parsetree())
            indexpage.readonly = True
            self.export_page(dir, indexpage, use_namespace=True)

        self.linker.target_dir = None # reset
        logger.info('Export done')
        return True
Exemplo n.º 5
0
    def export_all(self, dir, callback=None):
        '''Export all pages in the notebook

		Will also copy all attachments and created a folder with icons
		for checkboxes etc. So the resulting folder should contain all
		the notebook information.

		@param dir: a L{Dir} object for the target folder
		@param callback: a callback function that will be called after
		each page being exported with the page object as single argument.
		If the function returns C{False} the export is canceled.

		@returns: C{False} if the action was cancelled, C{True} otherwise
		'''
        logger.info('Exporting notebook to %s', dir)
        self.linker.target_dir = dir  # Needed to resolve icons

        # Copy icons
        for name in ('checked-box', 'unchecked-box', 'xchecked-box'):
            icon = data_file('pixmaps/%s.png' % name)
            file = dir.file('_resources/' + name + '.png')
            icon.copyto(file)

        # Copy template resources (can overwrite icons)
        if self.template and self.template.resources_dir \
        and self.template.resources_dir.exists():
            resources = dir.subdir('_resources')
            self.template.resources_dir.copyto(resources)

        # Set special pages
        if self.index_page:
            indexpage = Page(Path(self.index_page))
        else:
            indexpage = None

        pages = {
            'index': indexpage,
            'home': self.notebook.get_home_page(),
        }

        # Export the pages
        prev, current, next = None, None, None
        for page in self.notebook.walk():
            if page.hascontent:
                prev, current, next = current, next, page  # shift
                if current:
                    pages['previous'] = prev
                    pages['next'] = next
                    self.export_page(dir, current, pages, use_namespace=True)
                    if callback and not callback(current):
                        logger.warn('Export canceled')
                        return False

        prev, current, next = current, next, None  # shift once more
        if current:
            pages['previous'] = prev
            pages['next'] = next
            self.export_page(dir, current, pages, use_namespace=True)
            if callback and not callback(current):
                logger.warn('Export canceled')
                return False

        # Generate index page
        if indexpage:
            _page = IndexPage(self.notebook, Path(':'))
            # Bit of a HACK here - need better support for these index pages
            indexpage.readonly = False
            indexpage.set_parsetree(_page.get_parsetree())
            indexpage.readonly = True
            self.export_page(dir, indexpage, use_namespace=True)

        self.linker.target_dir = None  # reset
        logger.info('Export done')
        return True