예제 #1
0
 def __init__(self, application):
     self._application = application
     self._appearancePanel = None
     self._appearanceController = None
     self._spellController = SimpleSpellController(
         self._application,
         HtmlWikiPage.getTypeString())
예제 #2
0
class TextPageController(object):
    """GUI controller for text page"""
    def __init__(self, application):
        self._application = application
        self._spellController = SimpleSpellController(
            self._application, TextWikiPage.getTypeString())

    def initialize(self):
        self._application.onPageViewCreate += self.__onPageViewCreate
        self._application.onPageViewDestroy += self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded += self.__onPageDialogPageFactoriesNeeded

    def clear(self):
        self._application.onPageViewCreate -= self.__onPageViewCreate
        self._application.onPageViewDestroy -= self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded -= self.__onPageDialogPageFactoriesNeeded

        self._spellController.clear()

    @pagetype(TextWikiPage)
    def __onPageViewCreate(self, page):
        assert page is not None
        self._spellController.initialize(page)

    @pagetype(TextWikiPage)
    def __onPageViewDestroy(self, page):
        assert page is not None
        self._spellController.clear()

    def __onPageDialogPageFactoriesNeeded(self, page, params):
        params.addPageFactory(TextPageFactory())
예제 #3
0
class TextPageController (object):
    """GUI controller for text page"""
    def __init__(self, application):
        self._application = application
        self._spellController = SimpleSpellController(
            self._application,
            TextWikiPage.getTypeString())

    def initialize(self):
        self._application.onPageViewCreate += self.__onPageViewCreate
        self._application.onPageViewDestroy += self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded += self.__onPageDialogPageFactoriesNeeded

    def clear(self):
        self._application.onPageViewCreate -= self.__onPageViewCreate
        self._application.onPageViewDestroy -= self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded -= self.__onPageDialogPageFactoriesNeeded

        self._spellController.clear()

    @pagetype(TextWikiPage)
    def __onPageViewCreate(self, page):
        assert page is not None
        self._spellController.initialize(page)

    @pagetype(TextWikiPage)
    def __onPageViewDestroy(self, page):
        assert page is not None
        self._spellController.clear()

    def __onPageDialogPageFactoriesNeeded(self, page, params):
        params.addPageFactory (TextPageFactory())
예제 #4
0
 def __init__(self, application):
     self._application = application
     self._spellController = SimpleSpellController(
         self._application, TextWikiPage.getTypeString())
예제 #5
0
 def __init__(self, application):
     self._application = application
     self._spellController = SimpleSpellController(
         self._application,
         TextWikiPage.getTypeString())
예제 #6
0
 def __init__(self, application):
     self._application = application
     self._appearancePanel = None
     self._appearanceController = None
     self._spellController = SimpleSpellController(
         self._application, HtmlWikiPage.getTypeString())
예제 #7
0
class HtmlPageController(object):
    """GUI controller for HTML page"""
    def __init__(self, application):
        self._application = application
        self._appearancePanel = None
        self._appearanceController = None
        self._spellController = SimpleSpellController(
            self._application, HtmlWikiPage.getTypeString())

    def initialize(self):
        self._application.onPageDialogPageTypeChanged += self.__onPageDialogPageTypeChanged
        self._application.onPageDialogDestroy += self.__onPageDialogDestroy
        self._application.onPageViewCreate += self.__onPageViewCreate
        self._application.onPageViewDestroy += self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded += self.__onPageDialogPageFactoriesNeeded
        self._application.onPageUpdateNeeded += self.__onPageUpdateNeeded

    def clear(self):
        self._application.onPageDialogPageTypeChanged -= self.__onPageDialogPageTypeChanged
        self._application.onPageDialogDestroy -= self.__onPageDialogDestroy
        self._application.onPageViewCreate -= self.__onPageViewCreate
        self._application.onPageViewDestroy -= self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded -= self.__onPageDialogPageFactoriesNeeded
        self._application.onPageUpdateNeeded -= self.__onPageUpdateNeeded

        self._spellController.clear()

    def _addTab(self, dialog):
        if self._appearancePanel is None:
            self._appearancePanel = AppearancePanel(dialog.getPanelsParent())
            dialog.addPanel(self._appearancePanel, _(u'Appearance'))

            self._appearanceController = AppearanceController(
                self._appearancePanel, self._application, dialog)

            dialog.addController(self._appearanceController)

    def __onPageDialogPageTypeChanged(self, page, params):
        if params.pageType == HtmlWikiPage.getTypeString():
            self._addTab(params.dialog)
        elif self._appearancePanel is not None:
            params.dialog.removeController(self._appearanceController)
            params.dialog.removePanel(self._appearancePanel)
            self._appearancePanel = None
            self._appearanceController = None

    def __onPageDialogDestroy(self, page, params):
        self._appearancePanel = None
        self._appearanceController = None

    @pagetype(HtmlWikiPage)
    def __onPageViewCreate(self, page):
        assert page is not None
        self._spellController.initialize(page)

    @pagetype(HtmlWikiPage)
    def __onPageViewDestroy(self, page):
        assert page is not None
        self._spellController.clear()

    def __onPageDialogPageFactoriesNeeded(self, page, params):
        params.addPageFactory(HtmlPageFactory())

    @pagetype(HtmlWikiPage)
    def __onPageUpdateNeeded(self, page, params):
        if page.readonly:
            return
        self._updatePage(page)

    def _updatePage(self, page):
        path = page.getHtmlPath()
        html = self._makeHtml(page)
        writeTextFile(path, html)

    def _makeHtml(self, page):
        style = Style()
        stylepath = style.getPageStyle(page)

        try:
            tpl = HtmlTemplate(readTextFile(stylepath))
        except EnvironmentError:
            tpl = HtmlTemplate(readTextFile(style.getDefaultStyle()))

        content = self._changeContentByEvent(page,
                                             PreprocessingParams(page.content),
                                             self._application.onPreprocessing)

        if page.autoLineWrap:
            content = self._changeContentByEvent(
                page, PreHtmlImprovingParams(content),
                self._application.onPreHtmlImproving)

            config = HtmlRenderConfig(self._application.config)
            improverFactory = HtmlImproverFactory(self._application)
            text = improverFactory[config.HTMLImprover.value].run(content)
        else:
            text = content

        userhead = u"<title>{}</title>".format(page.title)
        result = tpl.substitute(content=text, userhead=userhead)

        result = self._changeContentByEvent(page, PostprocessingParams(result),
                                            self._application.onPostprocessing)
        return result

    def _changeContentByEvent(self, page, params, event):
        event(page, params)
        return params.result
예제 #8
0
class HtmlPageController(object):
    """GUI controller for HTML page"""

    def __init__(self, application):
        self._application = application
        self._appearancePanel = None
        self._appearanceController = None
        self._spellController = SimpleSpellController(
            self._application,
            HtmlWikiPage.getTypeString())

    def initialize(self):
        self._application.onPageDialogPageTypeChanged += self.__onPageDialogPageTypeChanged
        self._application.onPageDialogDestroy += self.__onPageDialogDestroy
        self._application.onPageViewCreate += self.__onPageViewCreate
        self._application.onPageViewDestroy += self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded += self.__onPageDialogPageFactoriesNeeded
        self._application.onPageUpdateNeeded += self.__onPageUpdateNeeded

    def clear(self):
        self._application.onPageDialogPageTypeChanged -= self.__onPageDialogPageTypeChanged
        self._application.onPageDialogDestroy -= self.__onPageDialogDestroy
        self._application.onPageViewCreate -= self.__onPageViewCreate
        self._application.onPageViewDestroy -= self.__onPageViewDestroy
        self._application.onPageDialogPageFactoriesNeeded -= self.__onPageDialogPageFactoriesNeeded
        self._application.onPageUpdateNeeded -= self.__onPageUpdateNeeded

        self._spellController.clear()

    def _addTab(self, dialog):
        if self._appearancePanel is None:
            self._appearancePanel = AppearancePanel(dialog.getPanelsParent())
            dialog.addPanel(self._appearancePanel, _(u'Appearance'))

            self._appearanceController = AppearanceController(
                self._appearancePanel,
                self._application,
                dialog)

            dialog.addController(self._appearanceController)

    def __onPageDialogPageTypeChanged(self, page, params):
        if params.pageType == HtmlWikiPage.getTypeString():
            self._addTab(params.dialog)
        elif self._appearancePanel is not None:
            params.dialog.removeController(self._appearanceController)
            params.dialog.removePanel(self._appearancePanel)
            self._appearancePanel = None
            self._appearanceController = None

    def __onPageDialogDestroy(self, page, params):
        self._appearancePanel = None
        self._appearanceController = None

    @pagetype(HtmlWikiPage)
    def __onPageViewCreate(self, page):
        assert page is not None
        self._spellController.initialize(page)

    @pagetype(HtmlWikiPage)
    def __onPageViewDestroy(self, page):
        assert page is not None
        self._spellController.clear()

    def __onPageDialogPageFactoriesNeeded(self, page, params):
        params.addPageFactory(HtmlPageFactory())

    @pagetype(HtmlWikiPage)
    def __onPageUpdateNeeded(self, page, params):
        if page.readonly:
            return
        self._updatePage(page)

    def _updatePage(self, page):
        path = page.getHtmlPath()
        html = self._makeHtml(page)
        writeTextFile(path, html)

    def _makeHtml(self, page):
        style = Style()
        stylepath = style.getPageStyle(page)

        try:
            tpl = HtmlTemplate(readTextFile(stylepath))
        except EnvironmentError:
            tpl = HtmlTemplate(readTextFile(style.getDefaultStyle()))

        content = self._changeContentByEvent(
            page,
            PreprocessingParams(page.content),
            self._application.onPreprocessing)

        if page.autoLineWrap:
            content = self._changeContentByEvent(
                page,
                PreHtmlImprovingParams(content),
                self._application.onPreHtmlImproving)

            config = HtmlRenderConfig(self._application.config)
            improverFactory = HtmlImproverFactory(self._application)
            text = improverFactory[config.HTMLImprover.value].run(content)
        else:
            text = content

        result = tpl.substitute(content=text,
                                title=page.display_title)

        result = self._changeContentByEvent(page,
                                            PostprocessingParams(result),
                                            self._application.onPostprocessing)
        return result

    def _changeContentByEvent(self, page, params, event):
        event(page, params)
        return params.result