Changeset 252

Show
Ignore:
Timestamp:
03/15/11 13:26:45 (3 years ago)
Author:
APA
Message:

Support for "heading5"
Beautified Sources in Wikidata/ in order to make them easier comparable

Location:
branches/mbutscher/work
Files:
8 modified

Legend:

Unmodified
Added
Removed
  • branches/mbutscher/work/Consts.py

    r251 r252  
    55# where branch is normally string "wikidPad", but should be changed if somebody 
    66# develops a derived version of WikidPad. 
    7 #  
     7# 
    88# major and minor are the main versions, 
    99# stateAndMicro is: 
    10 #     between 0 and 99 for "alpha"  
     10#     between 0 and 99 for "alpha" 
    1111#     between 100 and 199 for "beta" 
    1212#     between 200 and 299 for "rc" (release candidate) 
    1313#     300 for "final" 
    14 #      
     14# 
    1515#     the unit and tenth place form the micro version. 
    16 #  
     16# 
    1717# patch is a sub-micro version, if needed, normally 0. 
    18 #  
     18# 
    1919# Examples: 
    2020# (1, 8, 207, 0) is 1.8rc07 
     
    4040FormatTypes = Enumeration("FormatTypes", ["Default", "WikiWord", 
    4141        "AvailWikiWord", "Bold", "Italic", "Heading1", "Heading2", "Heading3", 
    42         "Heading4", "Url", "Script", "Attribute", "ToDo" 
     42        "Heading4", "Heading5", "Url", "Script", "Attribute", "ToDo" 
    4343        ], 0) 
    44          
     44 
    4545 
    4646# Store hints for WikiData.storeDataBlock() 
  • branches/mbutscher/work/extensions/Presentation.py

    r213 r252  
    1212              'other': 'Comic Sans MS', 
    1313              'size' : 10, 
     14              'heading5': 9, 
    1415              'heading4': 10, 
    1516              'heading3': 11, 
     
    2324              'other': 'new century schoolbook', 
    2425              'size' : 10, 
     26              'heading5': 9, 
    2527              'heading4': 10, 
    2628              'heading3': 11, 
     
    6365                    "fore:%(colPlaintext)s,face:%(mono)s,size:%(size)d" % styleFaces), 
    6466            (FormatTypes.WikiWord, 
    65                     "fore:%(colPlaintext)s,underline,face:%(mono)s,size:%(size)d" % styleFaces),       
     67                    "fore:%(colPlaintext)s,underline,face:%(mono)s,size:%(size)d" % styleFaces), 
    6668            (FormatTypes.AvailWikiWord, 
    67                     "fore:%(colLink)s,underline,face:%(mono)s,size:%(size)d" % styleFaces),       
    68             (FormatTypes.Bold, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(size)d" % styleFaces),    
    69             (FormatTypes.Italic, "fore:%(colPlaintext)s,italic,face:%(mono)s,size:%(size)d" % styleFaces),  
    70             (FormatTypes.Heading4, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading4)d" % styleFaces),        
    71             (FormatTypes.Heading3, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading3)d" % styleFaces),        
    72             (FormatTypes.Heading2, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading2)d" % styleFaces),        
    73             (FormatTypes.Heading1, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading1)d" % styleFaces),  
     69                    "fore:%(colLink)s,underline,face:%(mono)s,size:%(size)d" % styleFaces), 
     70            (FormatTypes.Bold, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(size)d" % styleFaces), 
     71            (FormatTypes.Italic, "fore:%(colPlaintext)s,italic,face:%(mono)s,size:%(size)d" % styleFaces), 
     72            (FormatTypes.Heading5, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading5)d" % styleFaces), 
     73            (FormatTypes.Heading4, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading4)d" % styleFaces), 
     74            (FormatTypes.Heading3, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading3)d" % styleFaces), 
     75            (FormatTypes.Heading2, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading2)d" % styleFaces), 
     76            (FormatTypes.Heading1, "fore:%(colPlaintext)s,bold,face:%(mono)s,size:%(heading1)d" % styleFaces), 
    7477            (FormatTypes.Url, 
    75                     "fore:%(colLink)s,underline,face:%(mono)s,size:%(size)d" % styleFaces),  
     78                    "fore:%(colLink)s,underline,face:%(mono)s,size:%(size)d" % styleFaces), 
    7679            (FormatTypes.Script, 
    7780                    "fore:%(colAttribute)s,face:%(mono)s,size:%(size)d" % styleFaces), 
  • branches/mbutscher/work/lib/pwiki/WikiTxtCtrl.py

    r249 r252  
    8989# etEVT_STYLE_DONE_COMMAND = wx.NewEventType() 
    9090# EVT_STYLE_DONE_COMMAND = wx.PyEventBinder(etEVT_STYLE_DONE_COMMAND, 0) 
    91 #  
     91# 
    9292# class StyleDoneEvent(wx.PyCommandEvent): 
    9393#     """ 
     
    175175        self.SetMarginWidth(self.SELECT_MARGIN, 16) 
    176176        self.SetMarginWidth(self.NUMBER_MARGIN, 0) 
    177          
     177 
    178178        self.SetMarginType(self.FOLD_MARGIN, wx.stc.STC_MARGIN_SYMBOL) 
    179179        self.SetMarginType(self.SELECT_MARGIN, wx.stc.STC_MARGIN_SYMBOL) 
     
    201201        # i plan on lexing myself 
    202202        self.SetLexer(wx.stc.STC_LEX_CONTAINER) 
    203          
     203 
    204204        # make the text control a drop target for files and text 
    205205        self.SetDropTarget(WikiTxtCtrlDropTarget(self)) 
    206          
     206 
    207207#         self.CmdKeyClearAll() 
    208 #          
     208# 
    209209#         # register some keyboard commands 
    210210#         self.CmdKeyAssign(ord('+'), wx.stc.STC_SCMOD_CTRL, wx.stc.STC_CMD_ZOOMIN) 
     
    216216#         self.CmdKeyAssign(wx.stc.STC_KEY_END, wx.stc.STC_SCMOD_SHIFT, 
    217217#                 wx.stc.STC_CMD_LINEENDWRAPEXTEND) 
    218 #  
    219 #  
     218# 
     219# 
    220220#         # Clear all key mappings for clipboard operations 
    221221#         # PersonalWikiFrame handles them and calls the special clipboard functions 
     
    224224#         self.CmdKeyClear(wx.stc.STC_KEY_INSERT, wx.stc.STC_SCMOD_SHIFT) 
    225225#         self.CmdKeyClear(wx.stc.STC_KEY_DELETE, wx.stc.STC_SCMOD_SHIFT) 
    226 #  
     226# 
    227227#         self.CmdKeyClear(ord('X'), wx.stc.STC_SCMOD_CTRL) 
    228228#         self.CmdKeyClear(ord('C'), wx.stc.STC_SCMOD_CTRL) 
     
    246246                ("options changed", self.onOptionsChanged), 
    247247        ), wx.GetApp().getMiscEvent(), self) 
    248          
     248 
    249249        self.__sinkGlobalConfig = wxKeyFunctionSink(( 
    250250                ("changed configuration", self.onChangedConfiguration), 
     
    280280        wx.stc.EVT_STC_DWELLSTART(self, ID, self.OnDwellStart) 
    281281        wx.stc.EVT_STC_DWELLEND(self, ID, self.OnDwellEnd) 
    282          
     282 
    283283        wx.EVT_LEFT_DOWN(self, self.OnClick) 
    284284        wx.EVT_MIDDLE_DOWN(self, self.OnMiddleDown) 
     
    292292 
    293293        wx.EVT_CONTEXT_MENU(self, self.OnContextMenu) 
    294          
     294 
    295295#         self.incSearchCharStartPos = 0 
    296296        self.incSearchPreviousHiddenLines = None 
     
    309309        self.contextMenuTokens = None 
    310310        self.contextMenuSpellCheckSuggestions = None 
    311          
     311 
    312312        # Connect context menu events to functions 
    313313        wx.EVT_MENU(self, GUI_ID.CMD_UNDO, lambda evt: self.Undo()) 
     
    330330 
    331331        wx.EVT_MENU(self, GUI_ID.CMD_ADD_THIS_SPELLING_SESSION, 
    332                 self.OnAddThisSpellingToIgnoreSession)         
     332                self.OnAddThisSpellingToIgnoreSession) 
    333333        wx.EVT_MENU(self, GUI_ID.CMD_ADD_THIS_SPELLING_GLOBAL, 
    334                 self.OnAddThisSpellingToIgnoreGlobal)         
     334                self.OnAddThisSpellingToIgnoreGlobal) 
    335335        wx.EVT_MENU(self, GUI_ID.CMD_ADD_THIS_SPELLING_LOCAL, 
    336                 self.OnAddThisSpellingToIgnoreLocal)         
    337  
    338         wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_THIS, self.OnActivateThis)         
     336                self.OnAddThisSpellingToIgnoreLocal) 
     337 
     338        wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_THIS, self.OnActivateThis) 
    339339        wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_NEW_TAB_THIS, 
    340                 self.OnActivateNewTabThis)         
     340                self.OnActivateNewTabThis) 
    341341        wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_NEW_TAB_BACKGROUND_THIS, 
    342342                self.OnActivateNewTabBackgroundThis) 
     
    385385            return 
    386386 
    387         cbIcept = self.presenter.getMainControl().getClipboardInterceptor()   
     387        cbIcept = self.presenter.getMainControl().getClipboardInterceptor() 
    388388        if cbIcept is not None: 
    389389            cbIcept.informCopyInWikidPadStart(text=text) 
     
    406406        if filenames is not None: 
    407407            mc = self.presenter.getMainControl() 
    408      
     408 
    409409            paramDict = {"editor": self, "filenames": filenames, 
    410410                    "x": -1, "y": -1, "main control": mc, 
     
    425425            img = bmp.ConvertToImage() 
    426426            del bmp 
    427              
     427 
    428428            if self.presenter.getConfig().getboolean("main", 
    429429                    "editor_imagePaste_askOnEachPaste", True): 
     
    441441                # Couldn't find unused filename or saving denied 
    442442                return True 
    443                  
     443 
    444444#                 destPath = fs.findDestPathNoSource(u".png", u"") 
    445 #                  
     445# 
    446446#                 print "Paste6", repr(destPath) 
    447447#                 if destPath is None: 
    448448#                     # Couldn't find unused filename 
    449449#                     return 
    450 #  
     450# 
    451451#                 img.SaveFile(destPath, wx.BITMAP_TYPE_PNG) 
    452452 
    453453            url = self.presenter.getMainControl().makeAbsPathRelUrl(destPath) 
    454              
     454 
    455455            if url is None: 
    456456                url = u"file:" + StringOps.urlFromPathname(destPath) 
    457              
     457 
    458458            self.ReplaceSelection(url) 
    459459 
    460460#             locPath = self.presenter.getMainControl().getWikiConfigPath() 
    461 #  
     461# 
    462462#             if locPath is not None: 
    463463#                 locPath = dirname(locPath) 
     
    469469#                 else: 
    470470#                     url = "rel://%s" % urlFromPathname(relPath) 
    471 #  
     471# 
    472472#             if url: 
    473473#                 self.ReplaceSelection(url) 
    474474 
    475475            return True 
    476          
     476 
    477477        if not WindowsHacks: 
    478478            return False 
     
    482482        if destPath is not None: 
    483483            url = self.presenter.getMainControl().makeAbsPathRelUrl(destPath) 
    484              
     484 
    485485            if url is None: 
    486486                url = u"file:" + StringOps.urlFromPathname(destPath) 
    487              
     487 
    488488            self.ReplaceSelection(url) 
    489489            return True 
     
    492492#         if destPath is not None: 
    493493#             locPath = self.presenter.getMainControl().getWikiConfigPath() 
    494 #  
     494# 
    495495#             if locPath is not None: 
    496496#                 locPath = dirname(locPath) 
     
    502502#                 else: 
    503503#                     url = "rel://%s>i" % urlFromPathname(relPath) 
    504 #  
     504# 
    505505#                 if url: 
    506506#                     self.ReplaceSelection(url) 
     
    514514        self.Copy() 
    515515 
    516          
    517          
     516 
     517 
    518518    def setLayerVisible(self, vis, scName=""): 
    519519        """ 
     
    535535    def setAutoIndent(self, onOff): 
    536536        self.autoIndent = onOff 
    537          
     537 
    538538    def getAutoIndent(self): 
    539539        return self.autoIndent 
     
    541541    def setAutoBullets(self, onOff): 
    542542        self.autoBullets = onOff 
    543          
     543 
    544544    def getAutoBullets(self): 
    545545        return self.autoBullets 
    546          
     546 
    547547    def setTabsToSpaces(self, onOff): 
    548548        self.tabsToSpaces = onOff 
    549549        self.SetUseTabs(not onOff) 
    550          
     550 
    551551    def getTabsToSpaces(self): 
    552552        return self.tabsToSpaces 
     
    569569        forceSync -- when setting folding on, the folding is completed 
    570570            before function returns iff forceSync is True 
    571         """  
     571        """ 
    572572        if onOrOff: 
    573573            self.SetMarginWidth(self.FOLD_MARGIN, 16) 
     
    648648        self.SetTargetStart(bs) 
    649649        self.SetTargetEnd(be) 
    650          
     650 
    651651        if isUnicode(): 
    652652            self.ReplaceTarget(newText) 
     
    656656#         text = self.GetText() 
    657657#         text = text[:pos] + newText + text[(pos + len):] 
    658 #          
     658# 
    659659#         self.replaceText(text) 
    660660 
     
    662662    def showSelectionByCharPos(self, start, end): 
    663663        """ 
    664         Same as SetSelectionByCharPos(), but scrolls to position correctly  
     664        Same as SetSelectionByCharPos(), but scrolls to position correctly 
    665665        """ 
    666666        text = self.GetText() 
     
    691691 
    692692        self.AutoCompSetFillUps(u":=")  # TODO Add '.'? 
    693 #         self.SetYCaretPolicy(wxSTC_CARET_SLOP, 2)   
    694 #         self.SetYCaretPolicy(wxSTC_CARET_JUMPS | wxSTC_CARET_EVEN, 4)   
    695         self.SetYCaretPolicy(wx.stc.STC_CARET_SLOP | wx.stc.STC_CARET_EVEN, 4)  
     693#         self.SetYCaretPolicy(wxSTC_CARET_SLOP, 2) 
     694#         self.SetYCaretPolicy(wxSTC_CARET_JUMPS | wxSTC_CARET_EVEN, 4) 
     695        self.SetYCaretPolicy(wx.stc.STC_CARET_SLOP | wx.stc.STC_CARET_EVEN, 4) 
    696696 
    697697 
     
    739739 
    740740            self.wikiPageSink.disconnect() 
    741              
     741 
    742742            self.presenter.setDocPage(None) 
    743743 
     
    747747#             self.pageAst = None 
    748748            self.pageType = "normal" 
    749          
     749 
    750750        ## _prof.stop() 
    751751 
     
    756756        content = None 
    757757        wikiDataManager = self.presenter.getWikiDocument() 
    758          
     758 
    759759        self.presenter.setDocPage(funcPage) 
    760          
     760 
    761761        if self.getLoadedDocPage() is None: 
    762762            return  # TODO How to handle? 
     
    898898                    self.setFoldInfo(foldInfo) 
    899899                    self.GotoPos(lastPos) 
    900                      
     900 
    901901                    self.scrollXY(scrollPosX, scrollPosY) 
    902                  
     902 
    903903#                     # Bad hack: First scroll to position to avoid a visible jump 
    904904#                     #   if scrolling works, then update display, 
    905905#                     #   then scroll again because it may have failed the first time 
    906 #                      
     906# 
    907907#                     self.SetScrollPos(wx.HORIZONTAL, scrollPosX, False) 
    908908#                     screvt = wx.ScrollWinEvent(wx.wxEVT_SCROLLWIN_THUMBTRACK, 
     
    912912#                             scrollPosX, wx.HORIZONTAL) 
    913913#                     self.ProcessEvent(screvt) 
    914 #                      
     914# 
    915915#                     self.SetScrollPos(wx.VERTICAL, scrollPosY, True) 
    916916#                     screvt = wx.ScrollWinEvent(wx.wxEVT_SCROLLWIN_THUMBTRACK, 
     
    920920#                             scrollPosY, wx.VERTICAL) 
    921921#                     self.ProcessEvent(screvt) 
    922 #  
     922# 
    923923#                     self.Update() 
    924 #  
     924# 
    925925#                     self.SetScrollPos(wx.HORIZONTAL, scrollPosX, False) 
    926926#                     screvt = wx.ScrollWinEvent(wx.wxEVT_SCROLLWIN_THUMBTRACK, 
     
    930930#                             scrollPosX, wx.HORIZONTAL) 
    931931#                     self.ProcessEvent(screvt) 
    932 #                      
     932# 
    933933#                     self.SetScrollPos(wx.VERTICAL, scrollPosY, True) 
    934934#                     screvt = wx.ScrollWinEvent(wx.wxEVT_SCROLLWIN_THUMBTRACK, 
     
    955955            self._goToNextFormField() 
    956956            return True 
    957          
     957 
    958958        return False 
    959959 
     
    994994            wx.GetApp().freeWikiLanguageHelper(self.wikiLanguageHelper) 
    995995            self.wikiLanguageHelper = docPage.createWikiLanguageHelper() 
    996          
     996 
    997997        if self.pageType == u"normal": 
    998998            # Scroll page according to the anchor 
     
    10391039        faces = self.presenter.getDefaultFontFaces().copy() 
    10401040 
    1041         if isinstance(self.getLoadedDocPage(),  
     1041        if isinstance(self.getLoadedDocPage(), 
    10421042                (DocPages.WikiPage, DocPages.AliasWikiPage)): 
    10431043 
     
    11241124        Called directly from a doc page to repair the editor state if an 
    11251125        invalid file signature was detected. 
    1126          
     1126 
    11271127        docPage -- calling docpage 
    11281128        """ 
     
    11311131                        (DocPages.DataCarryingPage, DocPages.AliasWikiPage)): 
    11321132            return 
    1133          
     1133 
    11341134        sd, ud = docPage.getDirty() 
    11351135        if sd: 
     
    11601160        if self.getLoadedDocPage() is not None: 
    11611161            self.wikiPageSink.disconnect() 
    1162              
     1162 
    11631163            self.SetDocPointer(None) 
    11641164            self.applyBasicSciSettings() 
     
    11821182        text = docPage.getLiveText()  # self.GetText() 
    11831183        textlen = len(text) 
    1184          
     1184 
    11851185        t = self.stylingThreadHolder.getThread() 
    11861186        if t is not None: 
     
    12091209 
    12101210            sth = self.stylingThreadHolder 
    1211              
     1211 
    12121212            delay = self.presenter.getConfig().getfloat( 
    12131213                    "main", "async_highlight_delay") 
     
    12341234        templateNames = [n for n in wikiDocument.getAllDefinedWikiPageNames() 
    12351235                if templateRe.search(n)] 
    1236          
     1236 
    12371237        wikiDocument.getCollator().sort(templateNames) 
    12381238 
     
    12781278        if not isinstance(docPage, DocPages.WikiPage): 
    12791279            return 
    1280              
     1280 
    12811281        if not docPage.isDefined() and not docPage.getDirty()[0]: 
    12821282            title = _(u"Select Template") 
     
    13001300        self.pageType = docPage.getAttributes().get(u"pagetype", 
    13011301                [u"normal"])[-1] 
    1302         self.handleSpecialPageType()         
     1302        self.handleSpecialPageType() 
    13031303        self.presenter.informEditorTextChanged(self) 
    13041304 
     
    13071307    def OnContextMenu(self, evt): 
    13081308        mousePos = self.ScreenToClient(wx.GetMousePosition()) 
    1309          
     1309 
    13101310        leftFold = 0 
    13111311        for i in range(self.FOLD_MARGIN): 
     
    13861386                    appendToMenuByMenuDesc(templateSubmenu, 
    13871387                            _CONTEXT_MENU_SELECT_TEMPLATE_IN_TEMPLATE_MENU) 
    1388      
     1388 
    13891389                    menu.AppendSeparator() 
    13901390                    menu.AppendMenu(wx.NewId(), _(u'Use Template'), 
     
    14451445 
    14461446            charStartPos = end 
    1447              
     1447 
    14481448 
    14491449    def handleDropText(self, x, y, text): 
     
    14771477#         self.pageAst = pageAst 
    14781478        self.foldingseq = foldingseq 
    1479          
     1479 
    14801480        def putStyle(): 
    14811481            if stylebytes: 
     
    14961496                sleep(delay) 
    14971497                threadstop.testRunning() 
    1498              
     1498 
    14991499            docPage = self.getLoadedDocPage() 
    15001500            if docPage is None: 
    15011501                return 
    1502              
     1502 
    15031503            for i in range(20):   # "while True" is too dangerous 
    15041504                formatDetails = docPage.getFormatDetails() 
     
    15111511 
    15121512            stylebytes = self.processTokens(text, pageAst, threadstop) 
    1513              
     1513 
    15141514            threadstop.testRunning() 
    1515      
     1515 
    15161516            if self.getFoldingActive(): 
    15171517                foldingseq = self.processFolding(pageAst, threadstop) 
     
    15761576            for node in pageAst.iterFlatNamed(): 
    15771577                threadstop.testRunning() 
    1578                  
     1578 
    15791579                styleNo = WikiTxtCtrl._TOKEN_TO_STYLENO.get(node.name) 
    1580                  
     1580 
    15811581                if styleNo is not None: 
    15821582                    stylebytes.bindStyle(node.pos, node.strLength, styleNo) 
     
    15961596                elif node.name == "value" and "todoEntry" in stack: 
    15971597                    process(node, stack[:]) 
    1598                             
     1598 
    15991599                elif node.name == "heading": 
    1600                     if node.level < 4: 
     1600                    if node.level < 5: 
    16011601                        styleNo = FormatTypes.Heading1 + \ 
    16021602                                (node.level - 1) 
    16031603                    else: 
    1604                         styleNo = FormatTypes.Heading4 
     1604                        styleNo = FormatTypes.Heading5 
    16051605 
    16061606                    stylebytes.bindStyle(node.pos, node.strLength, styleNo) 
    1607                  
     1607 
    16081608                elif node.name in ("table", "tableRow", "tableCell", 
    16091609                        "orderedList", "unorderedList", "indentedText", 
     
    16311631        levelStack = [] 
    16321632        foldHeader = False 
    1633          
     1633 
    16341634        for node in pageAst: 
    16351635            threadstop.testRunning() 
    1636              
     1636 
    16371637            if node.name == "heading": 
    16381638                while levelStack and (levelStack[-1][0] != "heading" or 
     
    16541654            if lfc > 0: 
    16551655                foldingseq += [len(levelStack) + 1] * lfc 
    1656                  
     1656 
    16571657            prevLevel = len(levelStack) + 1 
    1658                  
     1658 
    16591659        # final line 
    16601660        foldingseq.append(len(levelStack) + 1) 
    1661          
     1661 
    16621662        return foldingseq 
    16631663 
     
    16821682        for i in xrange(self.GetLineCount()): 
    16831683            self.SetFoldExpanded(i, True) 
    1684          
     1684 
    16851685        self.ShowLines(0, self.GetLineCount()-1) 
    16861686 
     
    17241724                levOut |= 8192 
    17251725            if self.GetLineVisible(ln): 
    1726                 levOut |= 16384             
     1726                levOut |= 16384 
    17271727            result[ln] = levOut 
    1728              
     1728 
    17291729        return result 
    17301730 
     
    17401740            if levIn & 4096: 
    17411741                levComb |= wx.stc.STC_FOLDLEVELHEADERFLAG 
    1742                  
     1742 
    17431743            self.SetFoldLevel(ln, levComb) 
    17441744            self.SetFoldExpanded(ln, bool(levIn & 8192)) 
     
    17471747            else: 
    17481748                self.HideLines(ln, ln) 
    1749          
     1749 
    17501750        self.repairFoldingVisibility() 
    17511751 
     
    17551755        if not self.getFoldingActive(): 
    17561756            return 
    1757              
     1757 
    17581758        lc = self.GetLineCount() 
    1759          
     1759 
    17601760        if lc == 0: 
    17611761            return 
     
    17641764        if lc == 1: 
    17651765            return 
    1766              
     1766 
    17671767        combLevel = self.GetFoldLevel(0) 
    17681768        prevLevel = combLevel & 4095 
     
    17711771        prevVisible = True  # First line must always be visible 
    17721772        prevLn = 0 
    1773          
     1773 
    17741774#         print "0", prevLevel, bool(prevIsHeader), bool(prevIsExpanded), bool(prevVisible) 
    17751775 
     
    17881788                        (prevIsHeader and prevIsExpanded): 
    17891789                    # if current level is not larger than previous this indicates 
    1790                     # an error except that the previous line is a header line and  
     1790                    # an error except that the previous line is a header line and 
    17911791                    # folded (not expanded). 
    17921792                    # Other possibility of an error is if previous line is a 
    17931793                    # header and IS expanded. 
    1794                      
     1794 
    17951795                    # Show line in these cases 
    17961796                    self.SetFoldExpanded(prevLn, True) # Needed? 
     
    18151815 
    18161816        wikiPage = self.presenter.getWikiDocument().getWikiPageNoError("ScratchPad") 
    1817          
     1817 
    18181818#         wikiPage.appendLiveText("\n%s\n---------------------------\n\n%s\n" % 
    18191819#                 (mbcsDec(strftime("%x %I:%M %p"), "replace")[0], text)) 
     
    18391839        try: 
    18401840            endCharPos += len(startChars) 
    1841              
     1841 
    18421842            if emptySelection: 
    18431843                # If selection is empty, cursor will in the end 
     
    18501850            self.gotoCharPos(startCharPos, scroll=False) 
    18511851            self.AddText(startChars) 
    1852      
     1852 
    18531853            self.gotoCharPos(endCharPos, scroll=False) 
    18541854            self.AddText(endChars) 
     
    18571857        finally: 
    18581858            self.EndUndoAction() 
    1859              
     1859 
    18601860 
    18611861    def getPageAst(self): 
     
    18871887                    # Same tab 
    18881888                    presenter = self.presenter 
    1889                      
     1889 
    18901890                titleFromLink = self.presenter.getConfig().getboolean("main", 
    18911891                        "wikiPageTitle_fromLinkTitle", False) 
    1892                  
     1892 
    18931893                if not titleFromLink or node.titleNode is None: 
    18941894                    suggNewPageTitle = None 
    18951895                else: 
    18961896                    suggNewPageTitle = node.titleNode.getString() 
    1897                      
     1897 
    18981898                unaliasedTarget = self.presenter.getWikiDocument()\ 
    18991899                        .getUnAliasedWikiWordOrAsIs(node.wikiWord) 
    19001900 
    19011901                docPage = self.getLoadedDocPage() 
    1902                  
     1902 
    19031903                # Contains start and end character position where a search fragment 
    19041904                # search should never match 
     
    19221922                    searchOp.wildCard = "no"   # TODO Why not regex? 
    19231923                    searchOp.searchStr = searchfrag 
    1924      
     1924 
    19251925                    found = presenter.getSubControl("textedit").executeSearch( 
    19261926                            searchOp, 0) 
    1927                      
     1927 
    19281928                    if found[0] >= forbiddenSearchfragHit[0] and \ 
    19291929                            found[0] < forbiddenSearchfragHit[1]: 
     
    19451945            elif node.name == "insertion": 
    19461946                if node.key == u"page": 
    1947                          
     1947 
    19481948                    # open the wiki page 
    19491949                    if tabMode & 2: 
     
    19541954                        # Same tab 
    19551955                        presenter = self.presenter 
    1956      
     1956 
    19571957                    presenter.openWikiPage(node.value, 
    19581958                            motionType="child")  # , anchor=node.value) 
     
    19621962                        presenter.getMainControl().getMainAreaPanel().\ 
    19631963                                showPresenter(presenter) 
    1964      
     1964 
    19651965                    return True 
    19661966 
     
    19751975                    pageAst = self.getPageAst() 
    19761976                    footnoteId = node.footnoteId 
    1977      
     1977 
    19781978                    anchorNode = getFootnoteAnchorDict(pageAst).get(footnoteId) 
    19791979                    if anchorNode is not None: 
     
    19871987                                    self.gotoCharPos(fnNode.pos) 
    19881988                                    break 
    1989      
     1989 
    19901990                    return True 
    19911991                except NoPageAstException: 
     
    20252025                wantedUnknownWords = allUnknownWords.findNodesForCharPos( 
    20262026                        linkCharPos) 
    2027                  
     2027 
    20282028                if linkCharPos > 0 and len(wantedUnknownWords) == 0: 
    20292029                    # No unknown word found -> try left to cursor 
     
    21392139                    link = self.presenter.getMainControl()\ 
    21402140                            .makeRelUrlAbsolute(link) 
    2141                  
     2141 
    21422142                elif link.startswith(u"file:"): 
    21432143                    link = self.presenter.getMainControl()\ 
     
    22072207            # Execute all or selected script blocks on the page (or other 
    22082208            #   related pages) 
    2209             try:             
     2209            try: 
    22102210                pageAst = self.getPageAst() 
    22112211            except NoPageAstException: 
     
    22132213 
    22142214            scriptNodeGroups = [list(pageAst.iterDeepByName(SCRIPTFORMAT))] 
    2215              
     2215 
    22162216            # process script imports 
    22172217            if securityLevel > 1: # Local import_scripts attributes allowed 
     
    22432243                    except: 
    22442244                        pass 
    2245               
     2245 
    22462246            if self.presenter.getConfig().getboolean("main", 
    22472247                    "script_search_reverse", False): 
     
    22972297#                 "process_autogenerated_areas"): 
    22982298#             return text 
    2299 #  
     2299# 
    23002300#         return WikiFormatting.AutoGenAreaRE.sub(ur"\1\2\4", text) 
    23012301 
     
    23282328#                 "process_autogenerated_areas"): 
    23292329#             return text 
    2330 #  
     2330# 
    23312331#         # So the text can be referenced from an AGA function 
    23322332#         self.agatext = text 
    2333 #  
     2333# 
    23342334#         return WikiFormatting.AutoGenAreaRE.sub(self._agaReplace, text) 
    23352335 
     
    23942394        startLine = self.LineFromPosition(byteStart) 
    23952395        endLine = self.LineFromPosition(byteEnd) 
    2396          
     2396 
    23972397        # Just to be sure, shouldn't happen normally 
    23982398        if endLine < startLine: 
    23992399            startLine, endLine = endLine, startLine 
    2400          
     2400 
    24012401        for checkLine in xrange(endLine, startLine - 1, -1): 
    24022402            if not self.GetLineVisible(checkLine): 
     
    24402440                else: 
    24412441                    self.HideLines(line, line) 
    2442                  
     2442 
    24432443                line += 1 
    2444              
     2444 
    24452445        self.incSearchPreviousHiddenLines = None 
    24462446        self.incSearchPreviousHiddenStartLine = -1 
    2447          
     2447 
    24482448        if start == -1: 
    24492449#             self.SetSelection(-1, -1) 
     
    24562456        startLine = self.LineFromPosition(byteStart) 
    24572457        endLine = self.LineFromPosition(byteEnd) 
    2458          
     2458 
    24592459        # Store current show/hide state of lines to show 
    24602460        shownList = [] 
    24612461        for i in xrange(startLine, endLine + 1): 
    24622462            shownList.append(self.GetLineVisible(i)) 
    2463              
     2463 
    24642464        self.incSearchPreviousHiddenLines = shownList 
    24652465        self.incSearchPreviousHiddenStartLine = startLine 
     
    24892489#     def startIncrementalSearch(self, initSearch=None): 
    24902490#         sb = self.presenter.getStatusBar() 
    2491 #  
     2491# 
    24922492#         self.incSearchCharStartPos = self.GetSelectionCharPos()[1] 
    24932493#         self.incSearchPreviousHiddenLines = None 
    24942494#         self.incSearchPreviousHiddenStartLine = -1 
    2495 #  
     2495# 
    24962496#         rect = sb.GetFieldRect(0) 
    24972497#         if isOSX(): 
    24982498#             # needed on Mac OSX to avoid cropped text 
    24992499#             rect = wx._core.Rect(rect.x, rect.y - 2, rect.width, rect.height + 4) 
    2500 #  
     2500# 
    25012501#         rect.SetPosition(sb.ClientToScreen(rect.GetPosition())) 
    2502 #  
     2502# 
    25032503#         dlg = WikiTxtDialogs.IncrementalSearchDialog(self, -1, self, rect, 
    25042504#                 sb.GetFont(), self.presenter, initSearch) 
    25052505#         dlg.Show() 
    2506 #  
    2507 #      
     2506# 
     2507# 
    25082508#     def executeIncrementalSearch(self, next=False): 
    25092509#         """ 
     
    25162516#             else: 
    25172517#                 charStartPos = self.incSearchCharStartPos 
    2518 #  
     2518# 
    25192519#             regex = None 
    25202520#             try: 
     
    25242524#                 # Regex error 
    25252525#                 return charStartPos   # ? 
    2526 #  
     2526# 
    25272527#             match = regex.search(text, charStartPos, len(text)) 
    25282528#             if not match and charStartPos > 0: 
    25292529#                 match = regex.search(text, 0, charStartPos) 
    2530 #  
     2530# 
    25312531#             if match: 
    25322532# #                 matchbytestart = self.bytelenSct(text[:match.start()]) 
    25332533# #                 matchbyteend = matchbytestart + \ 
    25342534# #                         self.bytelenSct(text[match.start():match.end()]) 
    2535 #  
     2535# 
    25362536#                 self.setSelectionForIncSearchByCharPos( 
    25372537#                         match.start(), match.end()) 
    2538 #  
     2538# 
    25392539#                 return match.end() 
    2540 #  
     2540# 
    25412541#         self.setSelectionForIncSearchByCharPos(-1, -1) 
    25422542#         self.GotoPos(self.bytelenSct(text[:self.incSearchCharStartPos])) 
    2543 #  
     2543# 
    25442544#         return -1 
    2545 #  
    2546 #  
     2545# 
     2546# 
    25472547#     def executeIncrementalSearchBackward(self): 
    25482548#         """ 
     
    25522552#         if len(self.searchStr) > 0: 
    25532553#             charStartPos = self.GetSelectionCharPos()[0] 
    2554 #  
     2554# 
    25552555#             regex = None 
    25562556#             try: 
     
    25602560#                 # Regex error 
    25612561#                 return charStartPos   # ? 
    2562 #  
     2562# 
    25632563#             match = regex.search(text, 0, len(text)) 
    25642564#             if match: 
     
    25702570#                             break 
    25712571#                         match = matchNext 
    2572 #                          
     2572# 
    25732573#                 else: 
    25742574#                     while True: 
     
    25772577#                             break 
    25782578#                         match = matchNext 
    2579 #  
     2579# 
    25802580#                 self.setSelectionForIncSearchByCharPos(match.start(), match.end()) 
    2581 #  
     2581# 
    25822582#                 return match.start() 
    2583 #  
     2583# 
    25842584#         self.setSelectionForIncSearchByCharPos(-1, -1) 
    25852585#         self.GotoPos(self.bytelenSct(text[:self.incSearchCharStartPos])) 
    2586 #  
     2586# 
    25872587#         return -1 
    2588 #  
    2589 #  
     2588# 
     2589# 
    25902590#     def forgetIncrementalSearch(self): 
    25912591#         """ 
     
    25942594#         """ 
    25952595#         pass 
    2596 #  
     2596# 
    25972597#     def resetIncrementalSearch(self): 
    25982598#         """ 
     
    26022602#         self.setSelectionForIncSearchByCharPos(-1, -1) 
    26032603#         self.GotoPos(self.bytelenSct(self.GetText()[:self.incSearchCharStartPos])) 
    2604 #  
    2605 #  
     2604# 
     2605# 
    26062606#     def endIncrementalSearch(self): 
    26072607#         """ 
     
    26102610#         byteStart = self.GetSelectionStart() 
    26112611#         byteEnd = self.GetSelectionEnd() 
    2612 #  
     2612# 
    26132613#         self.setSelectionForIncSearchByCharPos(-1, -1) 
    2614 #          
     2614# 
    26152615#         self.SetSelection(byteStart, byteEnd) 
    26162616#         self.ensureSelectionExpanded() 
    2617 #  
    2618 #  
     2617# 
     2618# 
    26192619#     def getContinuePosForSearch(self, sarOp): 
    26202620#         """ 
     
    26222622#         search operation sarOp. It always continues at beginning 
    26232623#         or end of current selection. 
    2624 #          
     2624# 
    26252625#         If sarOp uses a regular expression, this function may throw 
    26262626#         a re.error exception. 
    26272627#         """ 
    26282628#         range = self.GetSelectionCharPos() 
    2629 #          
     2629# 
    26302630# #         if sarOp.matchesPart(self.GetSelectedText()) is not None: 
    26312631#         if sarOp.matchesPart(self.GetText(), range) is not None: 
     
    26372637#             # -> continue searching at the beginning of selection 
    26382638#             return range[0] 
    2639 #  
    2640 #  
     2639# 
     2640# 
    26412641#     def executeSearch(self, sarOp, searchCharStartPos=-1, next=False): 
    26422642#         """ 
     
    26472647#         if sarOp.booleanOp: 
    26482648#             return (-1, -1)  # Not possible 
    2649 #  
     2649# 
    26502650#         if searchCharStartPos == -2: 
    26512651#             searchCharStartPos = self.getContinuePosForSearch(sarOp) 
    2652 #  
     2652# 
    26532653#         text = self.GetText() 
    26542654#         if len(sarOp.searchStr) > 0: 
     
    26622662#                 # Regex error 
    26632663#                 return (-1, -1)  # (self.anchorCharPosition, self.anchorCharPosition) 
    2664 #                  
     2664# 
    26652665#             if start is not None: 
    26662666#                 self.showSelectionByCharPos(start, end) 
    2667 #  
     2667# 
    26682668#                 return found    # self.anchorCharPosition 
    2669 #  
     2669# 
    26702670#         self.SetSelection(-1, -1) 
    26712671#         self.GotoPos(self.bytelenSct(text[:searchCharStartPos])) 
    2672 #  
     2672# 
    26732673#         return (-1, -1) 
    2674 #          
    2675 #          
     2674# 
     2675# 
    26762676#     def executeReplace(self, sarOp): 
    26772677#         """ 
     
    26832683# #         found = sarOp.matchesPart(seltext) 
    26842684#         range = self.GetSelectionCharPos() 
    2685 #          
     2685# 
    26862686# #         if sarOp.matchesPart(self.GetSelectedText()) is not None: 
    26872687#         found = sarOp.matchesPart(text, range) 
    2688 #  
     2688# 
    26892689#         if found is None: 
    26902690#             return -1 
    2691 #  
    2692 #         replacement = sarOp.replace(text, found)                     
     2691# 
     2692#         replacement = sarOp.replace(text, found) 
    26932693#         bytestart = self.GetSelectionStart() 
    26942694#         self.ReplaceSelection(replacement) 
    26952695#         selByteEnd = bytestart + self.bytelenSct(replacement) 
    26962696#         selCharEnd = len(self.GetTextRange(0, selByteEnd)) 
    2697 #  
     2697# 
    26982698#         return selCharEnd 
    26992699 
     
    27212721        bytePos = self.GetCurrentPos() 
    27222722        lineStartBytePos = self.PositionFromLine(self.LineFromPosition(bytePos)) 
    2723          
     2723 
    27242724        lineStartCharPos = len(self.GetTextRange(0, lineStartBytePos)) 
    27252725        charPos = lineStartCharPos + len(self.GetTextRange(lineStartBytePos, 
     
    27332733            self.presenter.getWikiDocument().getCollator().sortByFirst( 
    27342734                    acResultTuples) 
    2735              
     2735 
    27362736            self.autoCompBackBytesMap = dict( ( 
    27372737                    (art[1], self.bytelenSct(text[charPos - art[2]:charPos])) 
     
    27972797        selByteStart = self.PositionFromLine(self.LineFromPosition(selByteStart)) 
    27982798        selByteEnd = self.PositionFromLine(lastLine + 1) 
    2799          
     2799 
    28002800        if extendOverChildren: 
    28012801            # Extend over all lines which are more indented than the last line 
    2802              
     2802 
    28032803            lastLineDeep = StringOps.splitIndentDeepness(self.GetLine(lastLine))[0] 
    2804              
     2804 
    28052805            testLine = lastLine + 1 
    2806             while True:             
     2806            while True: 
    28072807                testLineContent = self.GetLine(testLine) 
    28082808                if len(testLineContent) == 0: 
     
    28122812                if StringOps.splitIndentDeepness(testLineContent)[0] <= lastLineDeep: 
    28132813                    break 
    2814                  
     2814 
    28152815                testLine += 1 
    28162816 
     
    28272827    def OnKeyDown(self, evt): 
    28282828        key = evt.GetKeyCode() 
    2829          
     2829 
    28302830        self.lastKeyPressed = time() 
    28312831        accP = getAccelPairFromKeyDown(evt) 
     
    28422842                    selByteStart, selByteEnd = self._getExpandedByteSelectionToLine( 
    28432843                            bool(accP[0] & wx.ACCEL_SHIFT)) 
    2844      
     2844 
    28452845                    firstLine = self.LineFromPosition(selByteStart) 
    28462846                    if firstLine > 0: 
     
    28712871                    selByteStart, selByteEnd = self._getExpandedByteSelectionToLine( 
    28722872                            bool(accP[0] & wx.ACCEL_SHIFT)) 
    2873      
     2873 
    28742874                    lastLine = self.LineFromPosition(selByteEnd) 
    28752875                    lineCount = self.GetLineCount() - 1 
     
    29012901                    self.EndUndoAction() 
    29022902                return 
    2903              
     2903 
    29042904            evt.Skip() 
    29052905 
     
    29092909#             self.startIncrementalSearch(self.searchStr) 
    29102910#             evt.Skip() 
    2911 #  
     2911# 
    29122912#         elif matchesAccelPair("StartIncrementalSearch", accP): 
    29132913#             # Start incremental search 
     
    29582958                bytePos = self.GetCurrentPos() 
    29592959                lineStartBytePos = self.PositionFromLine(self.LineFromPosition(bytePos)) 
    2960                  
     2960 
    29612961                lineStartCharPos = len(self.GetTextRange(0, lineStartBytePos)) 
    29622962                charPos = lineStartCharPos + len(self.GetTextRange(lineStartBytePos, 
     
    29652965                autoUnbullet = self.presenter.getConfig().getboolean("main", 
    29662966                        "editor_autoUnbullets", False) 
    2967                  
     2967 
    29682968                settings = { 
    29692969                        "autoUnbullet": autoUnbullet, 
     
    29712971                        "autoIndent": self.autoIndent 
    29722972                        } 
    2973                  
     2973 
    29742974                if self.wikiLanguageHelper.handleNewLineBeforeEditor(self, text, 
    29752975                        charPos, lineStartCharPos, wikiDocument, settings): 
     
    29792979            else: 
    29802980                evt.Skip() 
    2981              
     2981 
    29822982        else: 
    29832983            super(WikiTxtCtrl, self).OnKeyDown(evt) 
     
    29952995            evt.Skip() 
    29962996            return 
    2997              
     2997 
    29982998        if key >= wx.WXK_START and (not isUnicode() or evt.GetUnicodeKey() != key): 
    29992999            evt.Skip() 
     
    30633063 
    30643064        tabMode = Configuration.MIDDLE_MOUSE_CONFIG_TO_TABMODE[middleConfig] 
    3065          
     3065 
    30663066        if not self.activateLink(evt.GetPosition(), tabMode=tabMode): 
    30673067            evt.Skip() 
     
    30813081#         else: 
    30823082#             textPos = self.PositionFromPoint(evt.GetPosition()) 
    3083 #  
     3083# 
    30843084#             if (self.isPositionInWikiWord(textPos) or 
    30853085#                         self.isPositionInLink(textPos)): 
     
    30963096#         if evt.stylebytes: 
    30973097#             self.applyStyling(evt.stylebytes) 
    3098 #          
     3098# 
    30993099#         if evt.foldingseq: 
    31003100#             self.applyFolding(evt.foldingseq) 
    3101 #  
     3101# 
    31023102 
    31033103 
     
    31283128            self.ToggleFold(line) 
    31293129            self.repairFoldingVisibility() 
    3130          
     3130 
    31313131        evt.Skip() 
    3132          
    3133          
     3132 
     3133 
    31343134 
    31353135    def _threadShowCalltip(self, wikiDocument, charPos, bytePos, 
     
    31793179                args=(wikiDocument, charPos, bytePos), 
    31803180                kwargs={"threadstop": self.calltipThreadHolder}) 
    3181                  
     3181 
    31823182        self.calltipThreadHolder.setThread(thread) 
    31833183        thread.start() 
     
    32013201        x = paramDict.get("x") 
    32023202        y = paramDict.get("y") 
    3203          
     3203 
    32043204        dlgParams = WikiTxtDialogs.FilePasteParams() 
    32053205#             config = editor.presenter.getMainControl().getConfig() 
     
    32243224                # User abort 
    32253225                return 
    3226              
     3226 
    32273227            unifActionName = dlgParams.unifActionName 
    32283228 
     
    32753275        for fn in filenames: 
    32763276            url = StringOps.urlFromPathname(fn) 
    3277      
     3277 
    32783278            if fn.endswith(u".wiki"): 
    32793279                urls.append(u"wiki:%s" % url) 
     
    32953295                    # Relative rel: URL 
    32963296                    url = editor.presenter.getMainControl().makeAbsPathRelUrl(fn) 
    3297                      
     3297 
    32983298                    if url is None: 
    32993299                        url = u"file:" + StringOps.urlFromPathname(fn) 
     
    33313331#                 wxGetKeyState(WXK_MBUTTON) or \ 
    33323332#                 wxGetKeyState(WXK_RBUTTON) 
    3333 #  
     3333# 
    33343334#         ctrlPressed = wxGetKeyState(WXK_CONTROL) 
    3335 #  
     3335# 
    33363336#         if (not ctrlPressed) or mouseBtnPressed: 
    33373337#             self.SetCursor(WikiTxtCtrl.CURSOR_IBEAM) 
     
    33393339#         else: 
    33403340#             linkPos = self.PositionFromPoint(wxPoint(*self.ScreenToClientXY(*mousePos))) 
    3341 #  
     3341# 
    33423342#             if (self.isPositionInWikiWord(linkPos) or 
    33433343#                         self.isPositionInLink(linkPos)): 
     
    33683368        self.fobj = wx.FileDataObject() 
    33693369        dataob.Add(self.fobj) 
    3370          
     3370 
    33713371        self.dataob = dataob 
    33723372        self.SetDataObject(dataob) 
     
    34033403        urls = [] 
    34043404 
    3405         # Necessary because key state may change during the loop                                 
     3405        # Necessary because key state may change during the loop 
    34063406        controlPressed = wx.GetKeyState(wx.WXK_CONTROL) 
    34073407        shiftPressed = wx.GetKeyState(wx.WXK_SHIFT) 
    3408          
     3408 
    34093409        if isLinux(): 
    34103410            # On Linux, at least Ubuntu, fn may be a UTF-8 encoded unicode(!?) 
     
    34393439#         u"action/editor/this/paste/files/insert/url/absolute", 
    34403440#         WikiTxtCtrl.userActionPasteFiles) 
    3441 #  
     3441# 
    34423442# _ACTION_EDITOR_PASTE_FILES_RELATIVE = UserActionCoord.SimpleAction("", 
    34433443#         u"action/editor/this/paste/files/insert/url/relative", 
    34443444#         WikiTxtCtrl.userActionPasteFiles) 
    3445 #  
     3445# 
    34463446# _ACTION_EDITOR_PASTE_FILES_TOSTORAGE = UserActionCoord.SimpleAction("", 
    34473447#         u"action/editor/this/paste/files/insert/url/tostorage", 
    34483448#         WikiTxtCtrl.userActionPasteFiles) 
    3449 #  
     3449# 
    34503450# _ACTION_EDITOR_PASTE_FILES_ASK = UserActionCoord.SimpleAction("", 
    34513451#         u"action/editor/this/paste/files/insert/url/ask", 
    34523452#         WikiTxtCtrl.userActionPasteFiles) 
    3453 #  
    3454 #  
     3453# 
     3454# 
    34553455# _ACTIONS = ( 
    34563456#         _ACTION_EDITOR_PASTE_FILES_ABSOLUTE, _ACTION_EDITOR_PASTE_FILES_RELATIVE, 
  • branches/mbutscher/work/lib/pwiki/wikidata/compact_sqlite/DbStructure.py

    r234 r252  
    897897    return int(connwrap.execSqlQuerySingleItem("select value from settings where key=?", 
    898898            (key,), default)) 
     899 
     900 
    899901 
    900902 
  • branches/mbutscher/work/lib/pwiki/wikidata/compact_sqlite/WikiData.py

    r250 r252  
    3636#     pass 
    3737 
    38  
    3938from pwiki.StringOps import getBinCompactForDiff, applyBinCompact, longPathEnc, \ 
    4039        longPathDec, binCompactToCompact, fileContentToUnicode, utf8Enc, utf8Dec, \ 
     
    6160 
    6261        dbfile = longPathDec(dbfile) 
     62 
    6363        try: 
    6464            self.connWrap = DbStructure.ConnectWrapSyncCommit( 
     
    6767            traceback.print_exc() 
    6868            raise DbReadAccessError(e) 
    69          
     69 
    7070        # Set temporary directory if this is first sqlite use after prog. start 
    7171        if not GetApp().sqliteInitFlag: 
     
    105105            GetApp().sqliteInitFlag = True 
    106106 
    107  
    108107        DbStructure.registerSqliteFunctions(self.connWrap) 
    109108 
     
    147146        # return value, used by getContent() 
    148147        self.contentDbToOutput = lambda c: utf8Dec(c, "replace")[0] 
    149          
     148 
    150149        try: 
    151150            # Set marker for database type 
     
    167166            self._createTempTables() 
    168167 
    169             # reset cache 
     168            # create word caches 
    170169            self.cachedContentNames = None 
    171      
    172170            self.cachedGlobalAttrs = None 
    173171            self.getGlobalAttributes() 
     
    180178                raise DbReadAccessError(e2) 
    181179            raise DbReadAccessError(e) 
    182              
     180 
    183181        if lastException: 
    184182            raise lastException 
     
    198196        # These schema changes are only on a temporary table so they are not 
    199197        # in DbStructure.py 
    200         self.connWrap.execSql("create temp table temppathfindparents " 
     198        self.connWrap.execSql("create temp table temppathfindparents "+ 
    201199                "(word text primary key, child text, steps integer)") 
    202200 
    203         self.connWrap.execSql("create index temppathfindparents_steps " 
     201        self.connWrap.execSql("create index temppathfindparents_steps "+ 
    204202                "on temppathfindparents(steps)") 
    205203 
    206204 
    207205    # ---------- Direct handling of page data ---------- 
    208      
     206 
    209207    def getContent(self, word): 
     208        """ 
     209        Function must work for read-only wiki. 
     210        """ 
    210211        try: 
    211212            result = self.connWrap.execSqlQuerySingleItem("select content from "+\ 
     
    365366                        "created = ?, visited = ? where word = ?", 
    366367                        (moddate, creadate, visitdate, word)) 
     368                self.commitNeeded = True 
    367369        except (IOError, OSError, sqlite.Error), e: 
    368370            traceback.print_exc() 
     
    426428 
    427429 
     430 
     431 
    428432    # ---------- Renaming/deleting pages with cache update or invalidation ---------- 
    429433 
     
    439443                self.connWrap.execSql("update wikiwordmatchterms set word = ? where word = ?", (toWord, word)) 
    440444                self._renameContent(word, toWord) 
    441      
    442445                self.connWrap.commit() 
    443446            except: 
     
    449452 
    450453 
    451     def deleteWord(self, word): 
     454    def deleteWord(self, word, delContent=True): 
    452455        """ 
    453456        delete everything about the wikiword passed in. an exception is raised 
    454457        if you try and delete the wiki root node. 
     458         
     459        delContent -- Should actual content be deleted as well? (Parameter is 
     460                not part of official API) 
    455461        """ 
    456462        if word != self.wikiDocument.getWikiName(): 
     
    465471                    self.deleteAttributes(word) 
    466472                    self.deleteTodos(word) 
    467                     # self.connWrap.execSql("delete from wikiwordcontent where word = ?", (word,)) 
    468                     self._deleteContent(word) 
     473                    if delContent: 
     474                        self._deleteContent(word) 
    469475                    self.deleteWikiWordMatchTerms(word, syncUpdate=False) 
    470476                    self.deleteWikiWordMatchTerms(word, syncUpdate=True) 
     
    488494            self.connWrap.execSql("update wikiwordcontent set metadataprocessed = ? " 
    489495                    "where word = ?", (state, word)) 
     496            self.commitNeeded = True 
    490497        except (IOError, OSError, sqlite.Error), e: 
    491498            traceback.print_exc() 
     
    511518        self.connWrap.execSql("update wikiwordcontent set metadataprocessed = ?", 
    512519                (state,)) 
     520        self.commitNeeded = True 
    513521 
    514522 
  • branches/mbutscher/work/lib/pwiki/wikidata/original_gadfly/WikiData.py

    r250 r252  
    141141 
    142142    def getContent(self, word): 
     143        """ 
     144        Function must work for read-only wiki. 
     145        """ 
    143146        try: 
    144147            try: 
     
    294297        """ 
    295298        Returns a tuple with modification, creation and visit date of 
    296         a word or (None, None, None) if word is not in the database 
     299        a word or (None, None, None) if word is not in the database. 
     300        Aliases must be resolved beforehand. 
     301        Function must work for read-only wiki. 
    297302        """ 
    298303        try: 
     
    313318        """ 
    314319        Set timestamps for an existing wiki page. 
     320        Aliases must be resolved beforehand. 
    315321        """ 
    316322        moddate, creadate, visitdate = timestamps[:3] 
     
    427433        if word != self.wikiDocument.getWikiName(): 
    428434            try: 
     435                self.connWrap.syncCommit() 
    429436                try: 
    430                     self.commit() 
    431437                    # don't delete the relations to the word since other 
    432438                    # pages still have valid outward links to this page. 
     
    460466 
    461467 
    462  
    463468    def setMetaDataState(self, word, state): 
    464469        """ 
     
    601606        """ 
    602607        get the child relations of this word 
     608        Function must work for read-only wiki. 
    603609        existingonly -- List only existing wiki words 
    604610        selfreference -- List also wikiWord if it references itself 
  • branches/mbutscher/work/lib/pwiki/wikidata/original_sqlite/DbStructure.py

    r234 r252  
    350350        finally: 
    351351            self.accessLock.release() 
    352  
    353352 
    354353 
     
    551550 
    552551    rebuildIndices(connwrap) 
     552 
    553553#     connwrap.execSql("create unique index wikirelations_pkey on wikirelations(word, relation)") 
    554554#     connwrap.execSql("create index wikirelations_word on wikirelations(word)") 
  • branches/mbutscher/work/lib/pwiki/wikidata/original_sqlite/WikiData.py

    r250 r252  
    165165            # Remember but continue 
    166166            lastException = DbWriteAccessError(e) 
    167      
     167 
    168168        # Function to convert unicode strings from input to content in database 
    169169        # used by setContent 
     170 
    170171        def contentUniInputToDb(unidata): 
    171172            return utf8Enc(unidata, "replace")[0] 
     
    403404                        "created = ?, visited = ? where word = ?", 
    404405                        (moddate, creadate, visitdate, word)) 
     406                self.commitNeeded = True 
    405407        except (IOError, OSError, sqlite.Error), e: 
    406408            traceback.print_exc() 
     
    423425                "visited": Last visit date of page 
    424426                "firstcharpos": Dummy returning very high value 
    425                  
    426427        """ 
    427428        if withFields is None: 
     
    530531            self.connWrap.execSql("update wikiwords set metadataprocessed = ? " 
    531532                    "where word = ?", (state, word)) 
     533            self.commitNeeded = True 
    532534        except (IOError, OSError, sqlite.Error), e: 
    533535            traceback.print_exc() 
     
    553555        self.connWrap.execSql("update wikiwords set metadataprocessed = ?", 
    554556                (state,)) 
     557        self.commitNeeded = True 
    555558 
    556559