Ejemplo n.º 1
0
    def testAttachmentsSizeWiki1 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]

        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertEqual (pageStat.attachmentsSize, 0)
Ejemplo n.º 2
0
    def testParseWithoutAttaches (self):
        pagetitle = u"Страница 666"
        
        WikiPageFactory.create (self.rootwiki, pagetitle, [])
        parser = Parser(self.rootwiki[pagetitle], Application.config)

        parser.toHtml (u"Attach:bla-bla-bla")
Ejemplo n.º 3
0
    def testPageCount2 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]

        treeStat = self.loader[self.__pluginname].getTreeStat (testPage)

        self.assertEqual (treeStat.pageCount, 1)
Ejemplo n.º 4
0
    def __createWiki (self):
        # Здесь будет создаваться вики
        self.path = u"../test/testwiki"
        removeWiki (self.path)

        self.rootwiki = WikiDocument.create (self.path)
        WikiPageFactory.create (self.rootwiki, u"Страница 2", [])
Ejemplo n.º 5
0
def registerActions (application):
    """
    Зарегистрировать действия
    """
    # Действия, связанные с разными типами страниц
    from outwiker.pages.html.htmlpage import HtmlPageFactory
    HtmlPageFactory.registerActions (application)

    from outwiker.pages.wiki.wikipage import WikiPageFactory
    WikiPageFactory.registerActions (application)

    actionController = application.actionController
    from outwiker.gui.actionslist import actionsList, polyactionsList

    # Register the normal actions
    map(lambda item: actionController.register(item[0](application),
                                               item[1]),
        actionsList)

    # Register the polyactions
    map(lambda item: actionController.register(PolyAction(application,
                                                          item[0],
                                                          item[1],
                                                          item[2]),
                                               item[3]),
        polyactionsList)
Ejemplo n.º 6
0
def createNewWiki (parentwnd):
    """
    Создать новую вики
    parentwnd - окно-владелец диалога выбора файла
    """
    dlg = wx.FileDialog (parentwnd, style = wx.FD_SAVE)

    newPageTitle = _(u"First Wiki Page")
    newPageContent = _(u"""!! First Wiki Page

This is the first page. You can use a text formating: '''bold''', ''italic'', {+underlined text+}, [[http://jenyay.net | link]] and others.
""")

    if dlg.ShowModal() == wx.ID_OK:
        try:
            from outwiker.pages.wiki.wikipage import WikiPageFactory

            newwiki = WikiDocument.create (dlg.GetPath ())
            WikiPageFactory.create (newwiki, newPageTitle, [_(u"test")])
            firstPage = newwiki[newPageTitle]
            firstPage.content = newPageContent

            Application.wikiroot = newwiki
            Application.wikiroot.selectedPage = firstPage
        except (IOError, OSError) as e:
            # TODO: проверить под Windows
            MessageBox (_(u"Can't create wiki\n") + unicode (str (e), "utf8"),
                    _(u"Error"), wx.OK | wx.ICON_ERROR)

    dlg.Destroy()
Ejemplo n.º 7
0
    def setUp (self):
        super (WikiTableDialogTest, self).setUp()
        self._application = Application

        config = GeneralGuiConfig (self._application.config)
        config.tableColsCount.remove_option()
        factory = WikiPageFactory()
        self._testpage = factory.create (self.wikiroot, u"Страница 1", [])
Ejemplo n.º 8
0
    def testMaxDepth3 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        WikiPageFactory.create (self.rootwiki, u"Страница 2", [])

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        self.assertEqual (len (treeStat.maxDepth), 2)
        self.assertEqual (treeStat.maxDepth[0][0], 1)
Ejemplo n.º 9
0
    def testFrequentTags2 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [u"тег 1"])

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        self.assertEqual (len (treeStat.frequentTags), 1)
        self.assertEqual (treeStat.frequentTags[0][0], u"тег 1")
        self.assertEqual (treeStat.frequentTags[0][1], 1)
Ejemplo n.º 10
0
    def testSymbolsNotWhiteSpacesWiki (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]

        testPage.content = u"Бла бла бла\r\n\t\t\tАбырвалг  "
        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertEqual (pageStat.symbolsNotWhiteSpaces, 17)
Ejemplo n.º 11
0
    def testSymbolsCountWiki (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]

        testPage.content = u"Бла бла бла"
        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertEqual (pageStat.symbols, 11)
Ejemplo n.º 12
0
    def testAttachmentsSizeWiki4 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]
        Attachment (testPage).attach (self.fullFilesPath)

        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertAlmostEqual (pageStat.attachmentsSize, 11771, delta=300)
Ejemplo n.º 13
0
    def testAttachmentsSizeWiki3 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]
        Attachment (testPage).attach (self.fullFilesPath[0:3])

        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertEqual (pageStat.attachmentsSize, 2037)
Ejemplo n.º 14
0
    def setUp(self):
        self.initApplication()
        self.wikiroot = self.createWiki()

        config = GeneralGuiConfig(self.application.config)
        config.tableColsCount.remove_option()
        factory = WikiPageFactory()
        self._testpage = factory.create(self.wikiroot, "Страница 1", [])
Ejemplo n.º 15
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = WikiPageFactory()
        factory.create(self.wikiroot, "Страница 1", [])
Ejemplo n.º 16
0
    def testAttachmentSize2 (self):
        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])

        pagesList = treeStat.pageAttachmentsSize

        self.assertEqual (len (pagesList), 1)
        self.assertEqual (pagesList[0][0], self.rootwiki[u"Страница 1"])
        self.assertEqual (pagesList[0][1], 0)
Ejemplo n.º 17
0
    def testPageCount5 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 2", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1/Страница 2"], u"Страница 3", [])
        WikiPageFactory.create (self.rootwiki, u"Страница 4", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 5", [])

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        self.assertEqual (treeStat.pageCount, 5)
Ejemplo n.º 18
0
    def setUp (self):
        BaseMainWndTest.setUp (self)

        self.path = u"../test/testwiki"
        removeWiki (self.path)

        self.wikiroot = WikiDocument.create (self.path)

        WikiPageFactory.create (self.wikiroot, u"Викистраница", [])
        WikiPageFactory.create (self.wikiroot, u"Викистраница 2", [])
Ejemplo n.º 19
0
    def testTagsCount4 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [u"Тег 1", u"Тег 2", u"Тег 3"])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 2", [u"Тег 4"])
        WikiPageFactory.create (self.rootwiki[u"Страница 1/Страница 2"], u"Страница 3", [u"Тег 1", u"Тег 2"])
        WikiPageFactory.create (self.rootwiki, u"Страница 4", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 5", [])

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        self.assertEqual (treeStat.tagsCount, 4)
Ejemplo n.º 20
0
    def testPageContentLength2 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        self.rootwiki[u"Страница 1"].content = u"Бла"

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        pagesList = treeStat.pageContentLength

        self.assertEqual (len (pagesList), 1)
        self.assertEqual (pagesList[0][0], self.rootwiki[u"Страница 1"])
        self.assertEqual (pagesList[0][1], 3)
Ejemplo n.º 21
0
    def testMaxDepth4 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 2", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1/Страница 2"], u"Страница 3", [])
        WikiPageFactory.create (self.rootwiki, u"Страница 4", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 5", [])

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        self.assertEqual (len (treeStat.maxDepth), 1)
        self.assertEqual (treeStat.maxDepth[0][0], 3)
        self.assertEqual (treeStat.maxDepth[0][1], self.rootwiki[u"Страница 1/Страница 2/Страница 3"])
Ejemplo n.º 22
0
    def testLinesWiki1 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]

        testPage.content = u"""Бла бла бла
Еще одна строка
И еще строка
Последняя строка"""

        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertEqual (pageStat.lines, 4)
Ejemplo n.º 23
0
def _create_tree(level, maxlevel, nsiblings, parent):
    from outwiker.pages.wiki.wikipage import WikiPageFactory

    if level <= maxlevel:
        for n in range(nsiblings):
            pagename = u'page_{:03g}_{:03g}'.format(level, n)
            print(u'Create page {}'.format(pagename))

            newpage = WikiPageFactory().create(parent, pagename, [])
            newpage.content = u'Абырвалг'
            newpage.icon = u'images/outwiker_16.png'
            _create_tree(level + 1, maxlevel, nsiblings, newpage)
Ejemplo n.º 24
0
    def setUp (self):
        self.path = u"../test/testwiki"
        removeWiki (self.path)

        self.wikiroot = WikiDocument.create (self.path)

        WikiPageFactory.create (self.wikiroot, u"Страница 1", [])
        self.testPage = self.wikiroot[u"Страница 1"]

        filesPath = u"../test/samplefiles/"
        self.files = [u"accept.png", u"add.png", u"first.jpg", u"image.jpeg", u"файл с пробелами.tmp"]
        self.fullFilesPath = [os.path.join (filesPath, fname) for fname in self.files]
Ejemplo n.º 25
0
    def setUp(self):
        super(LinkDialogControllerTest, self).setUp()
        copyTextToClipboard(u'')
        self._config = WikiConfig(Application.config)
        self._config.linkStyleOptions.value = 0

        self.files = [u'../test/samplefiles/accept.png',
                      u'../test/samplefiles/add.png',
                      u'../test/samplefiles/html.txt',
                      ]

        factory = WikiPageFactory()
        self._testpage = factory.create(self.wikiroot, u"Страница 1", [])
Ejemplo n.º 26
0
    def testPageContentLength3 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 2", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1/Страница 2"], u"Страница 3", [])
        WikiPageFactory.create (self.rootwiki, u"Страница 4", [])

        self.rootwiki[u"Страница 1"].content = u"Бла"
        self.rootwiki[u"Страница 1/Страница 2"].content = u"   Бла-бла-бла   "
        self.rootwiki[u"Страница 1/Страница 2/Страница 3"].content = u"Бла-"
        self.rootwiki[u"Страница 4"].content = u" Бла-бла                                  "

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        pagesList = treeStat.pageContentLength

        self.assertEqual (len (pagesList), 4)
        
        self.assertEqual (pagesList[0][0], self.rootwiki[u"Страница 1/Страница 2"])
        self.assertEqual (pagesList[0][1], 11)

        self.assertEqual (pagesList[1][0], self.rootwiki[u"Страница 4"])
        self.assertEqual (pagesList[1][1], 7)

        self.assertEqual (pagesList[2][0], self.rootwiki[u"Страница 1/Страница 2/Страница 3"])
        self.assertEqual (pagesList[2][1], 4)

        self.assertEqual (pagesList[3][0], self.rootwiki[u"Страница 1"])
        self.assertEqual (pagesList[3][1], 3)
Ejemplo n.º 27
0
    def testAttachmentSize4 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 2", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1/Страница 2"], u"Страница 3", [])
        WikiPageFactory.create (self.rootwiki, u"Страница 4", [])
        SearchPageFactory.create (self.rootwiki, u"Страница 5", [])

        Attachment (self.rootwiki[u"Страница 1"]).attach ([])
        Attachment (self.rootwiki[u"Страница 1/Страница 2"]).attach (self.fullFilesPath[0:1])
        Attachment (self.rootwiki[u"Страница 1/Страница 2/Страница 3"]).attach (self.fullFilesPath[0:2])
        Attachment (self.rootwiki[u"Страница 4"]).attach (self.fullFilesPath[0:3])
        Attachment (self.rootwiki[u"Страница 5"]).attach (self.fullFilesPath)

        treeStat = self.loader[self.__pluginname].getTreeStat (self.rootwiki)

        pagesList = treeStat.pageAttachmentsSize

        self.assertEqual (len (pagesList), 5)

        self.assertEqual (pagesList[4][0], self.rootwiki[u"Страница 1"])
        self.assertEqual (pagesList[4][1], 0)

        self.assertEqual (pagesList[0][0], self.rootwiki[u"Страница 5"])
        self.assertAlmostEqual (pagesList[0][1], 11771, delta=300)

        self.assertEqual (pagesList[1][0], self.rootwiki[u"Страница 4"])
        self.assertEqual (pagesList[1][1], 2037)
Ejemplo n.º 28
0
    def testWordsWiki2 (self):
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        testPage = self.rootwiki[u"Страница 1"]

        testPage.content = u"""Бла бла бла.
Еще одна строка111 222 333

И еще строка ... ... ;;; @#$%#$

Последняя строка

"""

        pageStat = self.loader[self.__pluginname].getPageStat (testPage)

        self.assertEqual (pageStat.words, 13)
Ejemplo n.º 29
0
    def setUp (self):
        BaseMainWndTest.setUp (self)

        self._turnSyntax = [
                (BOLD_STR_ID, "'''", "'''"),
                (ITALIC_STR_ID, "''", "''"),
                (BOLD_ITALIC_STR_ID, "''''", "''''"),
                (UNDERLINE_STR_ID, "{+", "+}"),
                (STRIKE_STR_ID, "{-", "-}"),
                (SUBSCRIPT_STR_ID, "'_", "_'"),
                (SUPERSCRIPT_STR_ID, "'^", "^'"),
                (ALIGN_LEFT_STR_ID, "%left%", ""),
                (ALIGN_CENTER_STR_ID, "%center%", ""),
                (ALIGN_RIGHT_STR_ID, "%right%", ""),
                (ALIGN_JUSTIFY_STR_ID, "%justify%", ""),
                (HEADING_1_STR_ID, "!! ", ""),
                (HEADING_2_STR_ID, "!!! ", ""),
                (HEADING_3_STR_ID, "!!!! ", ""),
                (HEADING_4_STR_ID, "!!!!! ", ""),
                (HEADING_5_STR_ID, "!!!!!! ", ""),
                (HEADING_6_STR_ID, "!!!!!!! ", ""),
                (PREFORMAT_STR_ID, "[@", "@]"),
                (CODE_STR_ID, "@@", "@@"),
                (ANCHOR_STR_ID, "[[#", "]]"),
                (QUOTE_STR_ID, "[>", "<]"),
                ]

        self._replaceSyntax = [
                (HORLINE_STR_ID, u"----"),
                ]


        self.path = u"../test/testwiki"
        removeWiki (self.path)

        self.wikiroot = WikiDocument.create (self.path)
        WikiPageFactory.create (self.wikiroot, u"Викистраница", [])
        WikiPageFactory.create (self.wikiroot, u"temp", [])

        # Страница, куда будем переключаться перед изменением содержимого основной страницы
        # Можно было бы вместо temppage использовать None, но тогда программе 
        # пришлось бы каждый раз удалять и создавать панели инструментов, что медленно
        self.temppage = self.wikiroot[u"temp"]
        self.testpage = self.wikiroot[u"Викистраница"]

        Application.wikiroot = self.wikiroot
        Application.selectedPage = self.testpage
Ejemplo n.º 30
0
    def testCacheSubpages (self):
        """
        Проверка кэширования при добавлении новых подстраниц
        """
        # Только создали страницу, кешировать нельзя
        generator = HtmlGenerator (self.testPage)
        self.assertFalse (generator.canReadFromCache())

        generator.makeHtml (Style().getPageStyle (self.testPage))
        self.assertTrue (generator.canReadFromCache())

        # Добавляем новую подстраницу
        WikiPageFactory.create (self.testPage, u"Подстраница 1", [])
        self.assertFalse (generator.canReadFromCache())

        generator.makeHtml (Style().getPageStyle (self.testPage))
        self.assertTrue (generator.canReadFromCache())
Ejemplo n.º 31
0
    def testMultitype_01(self):
        WikiPageFactory().create(self.wikiroot, "Викистраница", [])
        page = self.wikiroot["Викистраница"]
        path = os.path.join(page.path, self.styleFile)

        TextPageFactory().create(page, "Текстовая страница", [])
        SearchPageFactory().create(page, "Страница поиска", [])
        HtmlPageFactory().create(page, "HTML-страница", [])

        self.application.wikiroot = self.wikiroot
        self.application.selectedPage = None

        Tester.dialogTester.append(self.__selectSecond)

        self.application.actionController.getAction(
            SetStyleToBranchAction.stringId).run(None)

        self.assertEqual(Tester.dialogTester.count, 0)
        self.assertTrue(os.path.exists(path))
        self.assertTrue(os.path.exists(page.getHtmlPath()))
Ejemplo n.º 32
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        WikiPageFactory().create(self.wikiroot, "Страница 2", [])
        self.testPage = self.wikiroot["Страница 2"]

        files = [
            "text_utf8.txt", "text_utf8.txt2", "image.gif", "текст_utf8.txt",
            "text_1251.txt", "html.txt", "html_1251.txt", "wiki.txt"
        ]

        fullFilesPath = [
            os.path.join(self.filesPath, fname) for fname in files
        ]

        # Прикрепим к двум страницам файлы
        Attachment(self.testPage).attach(fullFilesPath)
Ejemplo n.º 33
0
    def testSingle_04 (self):
        WikiPageFactory().create (self.wikiroot, u"Викистраница", [])
        page = self.wikiroot[u"Викистраница"]
        path = os.path.join (page.path, self.styleFile)

        Application.wikiroot = self.wikiroot
        Application.selectedPage = page

        Tester.dialogTester.append (self.__selectSecond)
        Application.actionController.getAction (SetStyleToBranchAction.stringId).run(None)

        self.assertEqual (Tester.dialogTester.count, 0)
        self.assertTrue (os.path.exists (path))
        self.assertTrue (os.path.exists (page.getHtmlPath()))

        Tester.dialogTester.append (self.__selectDefault)
        Application.actionController.getAction (SetStyleToBranchAction.stringId).run(None)

        self.assertEqual (Tester.dialogTester.count, 0)
        self.assertFalse (os.path.exists (path))
Ejemplo n.º 34
0
    def setUp(self):
        self.initApplication()
        self.wikiroot = self.createWiki()

        self._dialog = IncludeDialog(self.application.mainWindow)

        WikiPageFactory().create(self.wikiroot, "Викистраница", [])
        self.testedPage = self.wikiroot["Викистраница"]

        filesPath = "testdata/samplefiles/"
        self.files = [
            "accept.png", "add.png", "anchor.png", "файл с пробелами.tmp",
            "dir"
        ]
        self.fullFilesPath = [
            os.path.join(filesPath, fname) for fname in self.files
        ]

        Attachment(self.testedPage).attach(self.fullFilesPath)
        Tester.dialogTester.clear()
Ejemplo n.º 35
0
    def setUp(self):
        self.__pluginname = "Source"
        self.initApplication()
        self.wikiroot = self.createWiki()
        self.testPage = WikiPageFactory().create(self.wikiroot, "Страница 1", [])

        dirlist = ["plugins/source"]

        self.loader = PluginsLoader(self.application)
        self.loader.load(dirlist)

        self.config = self.loader[self.__pluginname].config
        self.config.tabWidth.value = 4
        self.config.defaultLanguage.remove_option()
        self.application.config.remove_section(self.config.section)

        from source.insertdialogcontroller import InsertDialogController
        self.dialog = FakeInsertDialog()
        self.controller = InsertDialogController(
            self.testPage, self.dialog, self.config)
Ejemplo n.º 36
0
    def testTypeCreation(self):
        textPage = TextPageFactory().create(self.wikiroot,
                                            u"Текстовая страница", [])

        self.assertEqual(TextWikiPage, type(textPage))

        wikiPage = WikiPageFactory().create(self.wikiroot, u"Вики-страница",
                                            [])

        self.assertEqual(WikiWikiPage, type(wikiPage))

        htmlPage = HtmlPageFactory().create(self.wikiroot, u"HTML-страница",
                                            [])

        self.assertEqual(HtmlWikiPage, type(htmlPage))

        searchPage = SearchPageFactory().create(self.wikiroot,
                                                u"Поисковая страница", [])

        self.assertEqual(SearchWikiPage, type(searchPage))
Ejemplo n.º 37
0
    def setUp(self):
        self.__pluginname = "Source"
        self.initApplication()
        self.wikiroot = self.createWiki()
        self.testPage = WikiPageFactory().create(self.wikiroot,
                                                 "Страница 1",
                                                 [])

        dirlist = ["plugins/source"]
        self._stylesCount = 44

        self.loader = PluginsLoader(self.application)
        self.loader.load(dirlist)

        self.config = self.loader[self.__pluginname].config
        self._clearConfig(self.config)

        from source.insertdialogcontroller import InsertDialogController
        self.dialog = FakeInsertDialog()
        self.controller = InsertDialogController(
            self.testPage, self.dialog, self.config)
Ejemplo n.º 38
0
    def setUp(self):
        self.__pluginname = "Source"
        self.initApplication()
        self.wikiroot = self.createWiki()
        self.testPage = WikiPageFactory().create(self.wikiroot, "Страница 1",
                                                 [])

        dirlist = ["plugins/source"]

        # Путь, где лежат примеры исходников в разных кодировках
        self.samplefilesPath = "testdata/samplefiles/sources"

        self.loader = PluginsLoader(self.application)
        self.loader.load(dirlist)

        self.config = self.loader[self.__pluginname].config
        self.config.tabWidth.value = 4
        self.config.defaultLanguage.remove_option()

        self.factory = ParserFactory()
        self.parser = self.factory.make(self.testPage, self.application.config)
Ejemplo n.º 39
0
    def setUp(self):
        self.initApplication()
        self.wikiroot = self.createWiki()
        self.testPage = WikiPageFactory().create(self.wikiroot,
                                                 "Страница 1",
                                                 [])
        plugins_dir = ["plugins/snippets"]

        self.loader = PluginsLoader(self.application)
        self.loader.load(plugins_dir)

        factory = ParserFactory()
        self.parser = factory.make(self.testPage, self.application.config)

        from snippets.utils import getSnippetsDir
        root_snippets_dir = getSnippetsDir()

        # snippets dir for tests
        self._snippets_dir = os.path.join(
            root_snippets_dir, '__test_snippets')
        os.mkdir(self._snippets_dir)
Ejemplo n.º 40
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)
        WikiPageFactory().create(self.wikiroot, "Страница 2", [])
        self.testPage = self.wikiroot["Страница 2"]

        files = ["accept.png", "add.png", "anchor.png", "filename.tmp",
                 "файл с пробелами.tmp", "картинка с пробелами.png",
                 "image.jpg", "image.jpeg", "image.png", "image.tif", "image.tiff", "image.gif",
                 "image_01.JPG", "dir", "dir.xxx", "dir.png"]

        fullFilesPath = [
            os.path.join(
                self.filesPath,
                fname) for fname in files]

        self.attach_page2 = Attachment(self.wikiroot["Страница 2"])

        # Прикрепим к двум страницам файлы
        Attachment(self.testPage).attach(fullFilesPath)
Ejemplo n.º 41
0
    def setUp(self):
        # Количество срабатываний особытий при обновлении страницы
        self._pageUpdateCount = 0
        self._pageUpdateSender = None

        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')
        self.eventcount = 0

        self.wikiroot = WikiDocument.create(self.path)
        WikiPageFactory().create(self.wikiroot, "Викистраница 1", [])
        HtmlPageFactory().create(self.wikiroot, "Html-страница 2", [])

        self._styleFname = "__style.html"
        self._styleDir = "__style"
        self._exampleStyleDir = "../test/styles/example_jblog/example_jblog"
        self._exampleStyleDir2 = "../test/styles/example_jnet/example_jnet"
        self._invalidStyleDir = "../styles/invalid"
        self._testStylePath = os.path.join(self._exampleStyleDir,
                                           self._styleFname)

        Application.wikiroot = self.wikiroot
        Application.onPageUpdate += self.onPageUpdate
Ejemplo n.º 42
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.filesPath = u"../test/samplefiles/"

        self.wikiroot = WikiDocument.create(self.path)
        WikiPageFactory().create(self.wikiroot, u"Страница 2", [])
        self.testPage = self.wikiroot[u"Страница 2"]

        files = [
            u"accept.png", u"add.png", u"anchor.png", u"filename.tmp",
            u"файл с пробелами.tmp", u"картинка с пробелами.png", u"image.jpg",
            u"image.jpeg", u"image.png", u"image.tif", u"image.tiff",
            u"image.gif", u"image_01.JPG", u"dir", u"dir.xxx", u"dir.png"
        ]

        fullFilesPath = [
            os.path.join(self.filesPath, fname) for fname in files
        ]

        # Прикрепим к двум страницам файлы
        Attachment(self.testPage).attach(fullFilesPath)

        factory = ParserFactory()
        self.parser = factory.make(self.testPage, Application.config)
Ejemplo n.º 43
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = WikiPageFactory()
        self.page_1 = factory.create(self.wikiroot, "Страница 1", [])
        time.sleep(0.1)

        self.page_2 = factory.create(self.wikiroot["Страница 1"], "Страница 2",
                                     [])
        time.sleep(0.1)

        self.page_4 = factory.create(self.wikiroot["Страница 1"], "Страница 4",
                                     [])
        time.sleep(0.1)

        self.page_3 = factory.create(self.wikiroot["Страница 1"], "СТРАНИЦА 3",
                                     [])

        self.testPage = self.wikiroot["Страница 1"]
Ejemplo n.º 44
0
 def __createWiki(self):
     # Здесь будет создаваться вики
     WikiPageFactory().create(self.wikiroot, u"Викистраница", [])
     TextPageFactory().create(self.wikiroot, u"Текст", [])
     HtmlPageFactory().create(self.wikiroot, u"HTML", [])
     SearchPageFactory().create(self.wikiroot, u"Search", [])
Ejemplo n.º 45
0
class FactorySelector(object):
    """
    Класс, который выбирает нужную фабрику для каждой страницы
    """
    _defaultFactory = TextPageFactory()

    _factories = {
        factory.getTypeString(): factory
        for factory in [
            WikiPageFactory(),
            HtmlPageFactory(),
            TextPageFactory(),
            SearchPageFactory()
        ]
    }

    @staticmethod
    def getFactories():
        return sorted(FactorySelector._factories.values(),
                      cmp=lambda x, y: cmp(x.title, y.title))

    @staticmethod
    def getFactory(pageType):
        """
        Найти фабрику, которая работает с переданным типом страницы
        (со страницей данного типа). Или вернуть фабрику по умолчанию
        """
        return FactorySelector._factories.get(pageType,
                                              FactorySelector._defaultFactory)

    @staticmethod
    def reset():
        """
        Установить словарь фабрик в первоначальное состояние.
        Используется для тестирования.
        Это не конструктор. В случае изменения списка фабрик,
        установленных по умолчанию, нужно изменять этот метод.
        """
        FactorySelector._factories = {
            factory.getTypeString(): factory
            for factory in [
                WikiPageFactory(),
                HtmlPageFactory(),
                TextPageFactory(),
                SearchPageFactory()
            ]
        }

    @staticmethod
    def addFactory(newFactory):
        """
        Добавить новую фабрику. При этом у фабрики может быть новый
        создаваемый тип страниц, в то же время фабрика может заменить
        существующую фабрику.
        """
        FactorySelector._factories[newFactory.getTypeString()] = newFactory

    @staticmethod
    def removeFactory(typeString):
        """
        Удаляет фабрику из словаря
        """
        FactorySelector._factories.pop(typeString, None)
Ejemplo n.º 46
0
 def __createWiki(self):
     self.wikiroot = WikiDocument.create(self.path)
     WikiPageFactory().create(self.wikiroot, "Страница 2", [])
     self.testPage = self.wikiroot["Страница 2"]
Ejemplo n.º 47
0
def registerActions(application):
    """
    Зарегистрировать действия
    """
    # Действия, связанные с разными типами страниц
    from outwiker.pages.html.htmlpage import HtmlPageFactory
    HtmlPageFactory.registerActions(application)

    from outwiker.pages.wiki.wikipage import WikiPageFactory
    WikiPageFactory.registerActions(application)

    # Открыть...
    from outwiker.actions.open import OpenAction
    application.actionController.register(OpenAction(application),
                                          HotKey("O", ctrl=True))

    # Создать...
    from outwiker.actions.new import NewAction
    application.actionController.register(NewAction(application),
                                          HotKey("N", ctrl=True))

    # Открыть только для чтения
    from outwiker.actions.openreadonly import OpenReadOnlyAction
    application.actionController.register(OpenReadOnlyAction(application),
                                          HotKey("O", ctrl=True, shift=True))

    # Закрыть
    from outwiker.actions.close import CloseAction
    application.actionController.register(CloseAction(application),
                                          HotKey("W", ctrl=True, shift=True))

    # Сохранить
    from outwiker.actions.save import SaveAction
    application.actionController.register(SaveAction(application),
                                          HotKey("S", ctrl=True))

    # Печать
    from outwiker.actions.printaction import PrintAction
    application.actionController.register(PrintAction(application),
                                          HotKey("P", ctrl=True))

    # Выход
    from outwiker.actions.exit import ExitAction
    application.actionController.register(ExitAction(application),
                                          HotKey("F4", alt=True))

    # Показать / скрыть панель с прикрепленными файлами
    from outwiker.actions.showhideattaches import ShowHideAttachesAction
    application.actionController.register(ShowHideAttachesAction(application))

    # Показать / скрыть панель с деревом заметок
    from outwiker.actions.showhidetree import ShowHideTreeAction
    application.actionController.register(ShowHideTreeAction(application))

    # Показать / скрыть панель с тегами
    from outwiker.actions.showhidetags import ShowHideTagsAction
    application.actionController.register(ShowHideTagsAction(application))

    # Полноэкранный режим
    from outwiker.actions.fullscreen import FullScreenAction
    application.actionController.register(FullScreenAction(application),
                                          HotKey("F11"))

    # Поиск
    from outwiker.actions.search import SearchAction, SearchNextAction, SearchPrevAction, SearchAndReplaceAction
    application.actionController.register(SearchAction(application),
                                          HotKey("F", ctrl=True))

    application.actionController.register(SearchNextAction(application),
                                          HotKey("F3"))

    application.actionController.register(SearchPrevAction(application),
                                          HotKey("F3", shift=True))

    application.actionController.register(SearchAndReplaceAction(application),
                                          HotKey("H", ctrl=True))

    # Вызов настроек
    from outwiker.actions.preferences import PreferencesAction
    application.actionController.register(PreferencesAction(application),
                                          HotKey("F8", ctrl=True))

    # Добавить страницу того же уровня
    from outwiker.actions.addsiblingpage import AddSiblingPageAction
    application.actionController.register(AddSiblingPageAction(application),
                                          HotKey("T", ctrl=True, alt=True))

    # Добавить дочернюю страницу
    from outwiker.actions.addchildpage import AddChildPageAction
    application.actionController.register(AddChildPageAction(application),
                                          HotKey("T", ctrl=True, shift=True))

    # Переместить страницу на одну позицию вверх
    from outwiker.actions.movepageup import MovePageUpAction
    application.actionController.register(MovePageUpAction(application),
                                          HotKey("Up", ctrl=True, shift=True))

    # Переместить страницу на одну позицию вниз
    from outwiker.actions.movepagedown import MovePageDownAction
    application.actionController.register(
        MovePageDownAction(application), HotKey("Down", ctrl=True, shift=True))

    # Сортировка дочерних страниц по алфавиту
    from outwiker.actions.sortchildalpha import SortChildAlphabeticalAction
    application.actionController.register(
        SortChildAlphabeticalAction(application), None)

    # Сортировка страниц того же уровня, что и выбранная, по алфавиту
    from outwiker.actions.sortsiblingsalpha import SortSiblingsAlphabeticalAction
    application.actionController.register(
        SortSiblingsAlphabeticalAction(application), None)

    # Переименование текущей страницы
    from outwiker.actions.renamepage import RenamePageAction
    application.actionController.register(RenamePageAction(application),
                                          HotKey("F2"))

    # Удаление текущей страницы
    from outwiker.actions.removepage import RemovePageAction
    application.actionController.register(
        RemovePageAction(application), HotKey("Delete", ctrl=True, shift=True))

    # Редактирование свойств страницы
    from outwiker.actions.editpageprop import EditPagePropertiesAction
    application.actionController.register(
        EditPagePropertiesAction(application), HotKey("E", ctrl=True))

    # Добавление закладки
    from outwiker.actions.addbookmark import AddBookmarkAction
    application.actionController.register(AddBookmarkAction(application),
                                          HotKey("D", ctrl=True))

    # Добавление вкладки
    from outwiker.actions.tabs import AddTabAction
    application.actionController.register(AddTabAction(application),
                                          HotKey("T", ctrl=True))

    # Закрытие вкладки
    from outwiker.actions.tabs import CloseTabAction
    application.actionController.register(CloseTabAction(application),
                                          HotKey("W", ctrl=True))

    # Перейти на предыдущую вкладку
    from outwiker.actions.tabs import PreviousTabAction
    application.actionController.register(
        PreviousTabAction(application), HotKey("PageUp", ctrl=True,
                                               shift=True))

    # Перейти на следующую вкладку
    from outwiker.actions.tabs import NextTabAction
    application.actionController.register(
        NextTabAction(application), HotKey("PageDown", ctrl=True, shift=True))

    # Открыть или создать страницу глобального поиска
    from outwiker.actions.globalsearch import GlobalSearchAction
    application.actionController.register(GlobalSearchAction(application),
                                          HotKey("F", ctrl=True, shift=True))

    # Прикрепить файлы к странице
    from outwiker.actions.attachfiles import AttachFilesAction
    application.actionController.register(AttachFilesAction(application),
                                          HotKey("A", ctrl=True, alt=True))

    # Открыть папку с прикрепленными файлами
    from outwiker.actions.openattachfolder import OpenAttachFolderAction
    application.actionController.register(
        OpenAttachFolderAction(application),
        HotKey("A", ctrl=True, shift=True, alt=True))

    import outwiker.actions.clipboard as clipboard

    # Копировать заголовок текущей страницы
    application.actionController.register(
        clipboard.CopyPageTitleAction(application),
        HotKey("D", ctrl=True, shift=True))

    # Копировать путь до текущей страницы
    application.actionController.register(
        clipboard.CopyPagePathAction(application),
        HotKey("P", ctrl=True, shift=True))

    # Копировать путь до прикрепленных файлов
    application.actionController.register(
        clipboard.CopyAttachPathAction(application),
        HotKey("A", ctrl=True, shift=True))

    # Копировать ссылку на текущую страницу
    application.actionController.register(
        clipboard.CopyPageLinkAction(application),
        HotKey("L", ctrl=True, shift=True))

    import outwiker.actions.tags as tags

    # Добавить метки к ветке
    application.actionController.register(
        tags.AddTagsToBranchAction(application), None)

    # Удалить метки из ветки
    application.actionController.register(
        tags.RemoveTagsFromBranchAction(application), None)

    # Переименовать метку
    application.actionController.register(tags.RenameTagAction(application),
                                          None)

    # Перезагрузить вики
    from outwiker.actions.reloadwiki import ReloadWikiAction
    application.actionController.register(ReloadWikiAction(application),
                                          HotKey("R", ctrl=True))

    # Вызов справки
    from outwiker.actions.openhelp import OpenHelpAction
    application.actionController.register(OpenHelpAction(application),
                                          HotKey("F1"))

    # "О программе"
    from outwiker.actions.about import AboutAction
    application.actionController.register(AboutAction(application),
                                          HotKey("F1", ctrl=True))

    # Назад
    from outwiker.actions.history import HistoryBackAction, HistoryForwardAction
    application.actionController.register(HistoryBackAction(application),
                                          HotKey("Left", ctrl=True, alt=True))

    application.actionController.register(HistoryForwardAction(application),
                                          HotKey("Right", ctrl=True, alt=True))

    # Применить стиль страницы ко всей ветке
    from outwiker.actions.applystyle import SetStyleToBranchAction
    application.actionController.register(SetStyleToBranchAction(application),
                                          None)

    from outwiker.actions.openpluginsfolder import OpenPluginsFolderAction
    application.actionController.register(OpenPluginsFolderAction(application),
                                          None)

    # Moving on pages
    from outwiker.actions.moving import (GoToParentAction,
                                         GoToFirstChildAction,
                                         GoToNextSiblingAction,
                                         GoToPrevSiblingAction)
    application.actionController.register(GoToParentAction(application),
                                          HotKey("Left", ctrl=True))

    application.actionController.register(GoToFirstChildAction(application),
                                          HotKey("Right", ctrl=True))

    application.actionController.register(GoToNextSiblingAction(application),
                                          HotKey("Down", ctrl=True))

    application.actionController.register(GoToPrevSiblingAction(application),
                                          HotKey("Up", ctrl=True))

    _registerPolyActions(application)
Ejemplo n.º 48
0
    def setUp(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        # - Страница 1
        #   - # Страница 5
        #   - Страница 6
        # - Страница 2
        #   - Страница 3
        #     - # Страница 4
        factory = WikiPageFactory()
        factory.create(self.wikiroot, u"Страница 1", [])
        factory.create(self.wikiroot, u"Страница 2", [])
        factory.create(self.wikiroot[u"Страница 2"], u"Страница 3", [])
        factory.create(self.wikiroot[u"Страница 2/Страница 3"],
                       u"# Страница 4", [])
        factory.create(self.wikiroot[u"Страница 1"], u"# Страница 5", [])
        factory.create(self.wikiroot[u"Страница 1"], u"Страница 6", [])
        factory.create(self.wikiroot[u"Страница 1/# Страница 5"],
                       u"Страница 7", [])

        filesPath = u"../test/samplefiles/"
        self.files = [
            u"accept.png", u"add.png", u"anchor.png", u"файл с пробелами.tmp",
            u"dir"
        ]
        self.fullFilesPath = [
            os.path.join(filesPath, fname) for fname in self.files
        ]

        Attachment(self.wikiroot[u"Страница 1"]).attach(self.fullFilesPath)
        Attachment(self.wikiroot[u"Страница 1/# Страница 5"]).attach(
            self.fullFilesPath)

        Application.wikiroot = None
Ejemplo n.º 49
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)
        WikiPageFactory().create(self.wikiroot, u'Страница 1', [])
Ejemplo n.º 50
0
    def setUp(self):
        self._tmp_dirs = []

        self.path = mkdtemp(prefix='WikiStyleUtilsTest_')
        self.wikiroot = WikiDocument.create(self.path)
        self.testPage = WikiPageFactory().create(self.wikiroot, "Страница", [])
Ejemplo n.º 51
0
 def __createWiki(self):
     WikiPageFactory().create(self.wikiroot, "Страница 1", [])
Ejemplo n.º 52
0
 def _createPage(self):
     return WikiPageFactory().create(self.wikiroot, u"Викистраница", [])