Changeset 128

Show
Ignore:
Timestamp:
Wed Sep 26 05:55:36 2007
Author:
mbutscher
Message:

branches/stable-1.8:

* Bug fixed: Updating wikis from WikidPad 1.1 failed
* Bug fixed: Source code did not work correctly with

wxPython 2.8
* Larger default delays for autosave
* Bug fixed (completely?): Starting URLs with characters
not in system codepage failed.

Files:

Legend:

Unmodified
Added
Removed
Modified
  • branches/mbutscher/TodoList.txt

    r127 r128  
    11 11  
    12 12 +++ Bug: Crash when using IE or Mozilla as preview  
    13   Make reduced program  
      13  
      14  
      15  
      16  
      17  
      18 > could the popup list only be activated by clicking on the dates? Popup on hover is very annoying if you have a lot of pages on a date.  
      19  
      20  
      21  
      22  
      23 >> For example, the user could select some text in the editor and press a  
      24 >> kexy. The text would then be executed as if it was enter in a  
      25 >> console(=DOS box) window and the output would then added after the  
      26 >> selection in the editor (similar to the way as eval behaves).  
      27 *Details*:  
      28 Expand plugin handling to allow customizable shortcuts taken from KeyBindings.py  
    14 29  
    15 30  
     
    75 94  
    76 95  
      96 > - A real search pane so you can review all the matches you find,  
      97 > without having to re-search again. I don't understand why Michael  
      98 > doesn't use the LOG window for that functionality, it would make this  
      99 > easier. Save all the messing about with the drop down blue highlight  
      100 > stuff.  
      101  
      102 > Fair enough.. since writing my comment I discovered your powerful  
      103 > saved searches. Its quite difficult to understand, and I was just  
      104 > looking for a way to persist the last ordinary search - and go back to  
      105 > look at things in more detail. Perhaps a "system page" (like  
      106 > Scratchpad) could be written to? (a LastSearchResults page for  
      107 > example) - this would certainly meet my need  
      108  
      109  
    77 110 +++ Reload menu plugins during session (partly working)  
    78 111 For debugging purposes it would be great if I could force WikidPad to  
     
    81 115  
    82 116  
      117 > Are there keyboard shortcuts for folding and unfolding, as well as to  
      118 > skip to the next/previous header? (I guess skipping to the structure  
      119 > window and using arroes would be a workaround... if we could skip  
      120 > there ;) anyway it wouldn'i be very efficient)  
      121  
      122  
    83 123 +++ Wikize word enhancements  
    84 124 the first letter of words will be upper case (e.g. 'case' becomes [Case]) when wikized. Also I suggest wikizing should behave like bold and italics. (i.e. if the cursor is inside a wo|rd, it should wikize the whole [word], not like 'wo[]rd'.)  
    85 125  
    86 126  
    87   +++ Favorite wikis toolbar  
      127  
    87 127 Another small feature request. How about a "button bar" for favorite  
    88 128 wiki files? Yes I know you have the recent file list, but it keeps  
     
    105 148  
    106 149 On the command line i use 'open <filename>' to start the apropriate application for the file. the 'open' comand is provided by Gnome, which I use on my desktop. However, I think it is the same command for KDE, so you might try to launch 'open' for the file in question.  
      150 *Details*:  
      151 "open" is not always supported, e.g. Ubuntu and derivates do not have it.  
      152  
      153  
      154 > Just a cosmetic thing, but I find black (shades of) very siniter to mark the busiest days. Like somebody died then. Maybe this could be set by the user?  
      155  
      156  
      157 > It is also cosmetic, but could the + signs be omitted from the lists? Just a little indent would be enough to show it is a lower level heading. Like:  
      158 >  
      159 > Heading 1  
      160 >   Heading 2  
      161 >    etc.  
      162 >  
      163 > Of course even better would be if it worked like Word's foldable Document Map headings...  
    107 164  
    108 165  
     
    114 173  
    115 174  
      175 by the way, this FTP syncing capability would be a very nice addition  
      176 to wikipad. I could imagine just pressing a button to backup by ftp,  
      177 or to restore by ftp a whole wiki... wow...  
      178  
      179  
    116 180 +++ History of searches, opened wiki words, autocompleted terms and opened wikis  
    117 181 > * drop-down history of typed-in searches in Search Wiki? Same for Open  
     
    165 230  
    166 231  
      232 > i think i have an additional idea for timeline functionality. I have  
      233 > read many times that alot of people were asking date based topic  
      234 > creation for journaling and blogging. Would not it be great if we had  
      235 > a right click function on timeline that lets you create a new topic  
      236 > named with date ?  
      237  
      238  
      239  
    167 240 +++ Option for placement of "modified-within" (and other views in general).  
    168 241 Could move it (modified within) left a level to the same level as Views.  
    169 242  
    170 243  
      244 Or if there'd be an option to maximize it [already open instance] when I launch it 2nd time (I could create a hot-key to launch it).  
      245  
      246 > (1) if the wiki is already open - then a change of focus to the new page  
      247 > (2) if not already open then a new window - with its focus set.  
      248  
      249  
      250  
    171 251 +++ Insert spaces to wiki links on HTML export  
    172 252 Example:  
     
    188 270  
    189 271  
      272 >> I wonder if there's any way (hack or not) to set a link to  
      273 >> >> "views"/property lists?  
      274 >> >>  
      275 >> >> I.e. if I have a property [keyword: London] in some of my pages. I  
      276 >> >> would like to make some link to the "views"/keyword/London section  
      277 >> >> with a list of all entries with this keyword so that I don't have to  
      278 >> >> click all the way through the "views" tree.  
      279 >> >> (...)  
      280 > >  
      281 > > It could be programmed as insertion (similar to e.g. [:rel:children]),  
      282 > > but this would only show the relevant pages in the preview, not the editor.  
      283 > >  
      284  
      285 I would like that: this way information from 'views' could  
      286 be included in html-export (by a page with e.g.  
      287 [:rel:attribute:keyword.london] or something similar...)  
      288 *Details*:  
      289 Syntax suggested [:attributed:"keyword: london"]  
      290  
      291  
      292 Example: [alias:stupid;cats;stupid cats]  
      293  
      294 Should mean the same as  
      295  
      296 [alias:stupid]  
      297 [alias:cats]  
      298 [alias:stupid cats]  
      299  
      300  
    190 301 +++ Ensure visibility of autocomplete popup  
    191 302 Speaking of the autocomplete suggestions window: don't know if you've noticed, but if you switch to another window while on (without choosing a suggestion), it will stay on top. it is quite funny, actually, and maybe shouldn't be fixed, though.  
     
    274 387  
    275 388  
      389  
    276 390 +++ Allow to store selections in Export or Print dialog as presets  
    277 391  
     
    412 527  
    413 528  
      529 My wiki.sli file is 4,795,392 bytes in size, and I run it off a  
      530 TrueCrypt partition on a USB stick.  The USB stick doesn't have the  
      531 fastest write time, so I find that whenever the database is saved  
      532 (i.e., when I switch from one page to another) WikidPad hangs for a few  
      533 seconds while it takes care of saving the data.  I'm using the Compact  
      534 Sqlite database version, but I've also tried Original Sqlite.  
      535  
      536 Is there any way WikidPad could be enhanced with a background save  
      537 option, so I could continue work while it's saving my database?  Or is  
      538 that option already present and I just haven't looked hard enough?  ;-)  
      539 *Details*:  
      540 May be better to hold database in memory?  
      541  
      542  
      543  
      544  
    414 545 +++ Option when to jump to stored cursor pos.  
    415 546 > - Editor/Preview should only jump to saved cursor position when going  
     
    532 664  
    533 665  
      666 > Any chance there could be a right click option on the preview page  
      667 > which says "copy selection to clipboard as HTML", then once I have the  
      668 > preview correct, I can just copy the info I want into an email message.  
      669 > Exporting a page and attaching it is a pain, especially if I only want  
      670 > a section of the page.  
      671 *Details*:  
      672 wx.HTMLWindow must support that first or maybe the new wx.RichTextCtrl may help when switching to wxPython 2.8.  
      673  
      674  
      675  
    534 676 +++ Timer hook  
    535 677 > 4.It'll be very useful to have one more hook function, which is called  
     
    549 692  
    550 693  
    551   +++ About Inter-process comm.  
    552   Or if there'd be an option to maximize it \[already open instance] when I launch it 2nd time (I could create a hot-key to launch it). \[low prio.]  
    553    
    554    
    555 694 +++ Toggle view tree on/off like main tree  
    556 695  
     
    630 769  
    631 770  
      771 So you could add a "save search" button on the bottom of the blue roll  
      772 and save it for slow browsing in case you have too much results.  
      773  
      774  
    632 775 +++ Wikiwords in todo items  
    633 776 I often tie WikiWords to todo items: \todo.personal: CallBank? Where CallBank? is a page with a bunch of information. The problem is that the CallBank? page does not appear as a subitem in the tree, and shows up as parentless in the views. It seems like that should get picked up by the system and handled like any other wiki page.  
  • branches/stable-1.8/WikidPadStarter.py

    r125 r128  
    4 4 os.stat_float_times(True)  
    5 5  
    6   VERSION_STRING = "wikidPad 1.8rc8"  
      6 VERSION_STRING = "wikidPad 1.8rc9"  
    6 6  
    7 7 if not hasattr(sys, 'frozen'):  
  • branches/stable-1.8/wikidpad_unicode.iss

    r125 r128  
    39 39 SolidCompression=true  
    40 40 AppName=WikidPad  
    41   AppVerName=WikidPad 1.8rc8  
      41 AppVerName=WikidPad 1.8rc9  
    41 41 DefaultDirName={pf}\WikidPad  
    42 42 DefaultGroupName=WikidPad  
    43 43 AppID={{22A83C29-58A8-4CAB-8EDC-918D74F8429E}  
    44 44 VersionInfoVersion=1.8  
    45   VersionInfoTextVersion=WikidPad 1.8rc8  
      45 VersionInfoTextVersion=WikidPad 1.8rc9  
    45 45 LicenseFile=C:\DATEN\Projekte\Wikidpad\Current\license.txt  
    46 46 AllowNoIcons=true  
    47 47 ShowLanguageDialog=yes  
    48 48 Compression=lzma/ultra  
    49   OutputBaseFilename=WikidPad-1.8rc8  
      49 OutputBaseFilename=WikidPad-1.8rc9  
    49 49 InternalCompressLevel=ultra  
    50 50 AppCopyright=© 2005-2007 Jason Horman, Michael Butscher, Gerhard Reitmayr  
  • branches/stable-1.8/WikidPadHelp/WikidPadHelp.wiki

    r125 r128  
    4 4 [main]  
    5 5 footnotes_as_wikiwords = False  
    6   last_wiki_word = WikidPadHelp  
      6 last_wiki_word = ChangeLog  
    6 6 filestorage_identity_moddatemustmatch = False  
    7 7 wiki_name = WikidPadHelp  
  • branches/stable-1.8/WikidPadHelp/data/ChangeLog.wiki

    r125 r128  
    2 2  
    3 3  
    4   Aug. 25, 2007 (1.8rc8)  
      4 Sep. 26, 2007 (1.8rc9)  
      5  
      6     * Bug fixed: Updating wikis from WikidPad 1.1 failed  
      7     * Bug fixed: Source code did not work correctly with  
      8       wxPython 2.8  
      9     * Larger default delays for autosave  
      10     * Bug fixed (completely?): Starting URLs with characters not in  
      11       system codepage failed.  
      12  
      13  
      14  
      15 Aug. 25, 2007 (1.8rc8, repository revision in "stable-1.8" branch: 125)  
    5 16  
    6 17     * Internal: wxPython naming scheme changed to solve problems  
     
    12 23  
    13 24  
    14   Jul. 26, 2007 (1.8rc7)  
      25 Jul. 26, 2007 (1.8rc7, repository revision in "stable-1.8" branch: 122)  
    14 25  
    15 26     * Bug fixed: Font face choice dialog from options dialog did  
  • branches/stable-1.8/lib/pwiki/Exporters.py

    r125 r128  
    25 25 import Configuration  
    26 26  
      27 import OsAbstract  
      28  
    27 29 import WikiFormatting  
    28 30 import PageAst  
     
    75 77  
    76 78         relUnAlias = self.wikiData.getAliasesWikiWord(word)  
    77           return self.htmlXmlExporter.convertFilename(u"%s.html" % relUnAlias)  
      79         return urlFromPathname(self.htmlXmlExporter.convertFilename(  
      80                 u"%s.html" % relUnAlias))  
    78 81  
    79 82  
     
    260 263         if self.mainControl.getConfig().getboolean(  
    261 264                 "main", "start_browser_after_export") and startfile:  
    262               if Configuration.isWindows():  
    263                    os.startfile(startfile)  
    264                   # os.startfile(mbcsEnc(link2, "replace")[0])  
    265               else:  
    266                   # Better solution?  
    267                   wx.LaunchDefaultBrowser(startfile)    # TODO  
      265             OsAbstract.startFile(startfile)  
      266 #             if Configuration.isWindows():  
      267 #                  os.startfile(startfile)  
      268 #                 # os.startfile(mbcsEnc(link2, "replace")[0])  
      269 #             else:  
      270 #                 # Better solution?  
      271 #                 wx.LaunchDefaultBrowser(startfile)    # TODO  
    268 272  
    269 273         self.tempFileSet.reset()  
     
    316 320                      
    317 321         links = {}  
    318   #         notExport = sets.Set() # Cache to store all rejected words  
    319   #         wordSet = sets.Set(self.wordList)  
    320   #  
    321   #         def addWord(word):  
    322   #             if word in links:  
    323   #                 return  
    324   #             if word in notExport:  
    325   #                 return  
    326   #                   
    327   #             unAlias = self.wikiData.getAliasesWikiWord(word)  
    328   #             if unAlias not in wordSet:  
    329   #                 notExport.add(word)  
    330   #                 return  
    331   #  
    332   #             wikiPage = self.wikiDataManager.getWikiPage(word)  
    333   #             if not self.shouldExport(word, wikiPage):  
    334   #                 notExport.add(word)  
    335   #                 return  
    336   #               
    337   #             links[word] = u"#%s" % _escapeAnchor(unAlias)  
    338 322  
    339 323         # First build links dictionary for all included words and their aliases  
     
    357 341                 content = wikiPage.getLiveText()  
    358 342                 formatDetails = wikiPage.getFormatDetails()  
    359   #                 links = {}  # TODO Why links to all (even not exported) children?  
    360   #                 for relation in wikiPage.getChildRelationships(  
    361   #                         existingonly=True, selfreference=False):  
    362   #                     if not self.shouldExport(relation):  
    363   #                         continue  
    364   #                     # get aliases too  
    365   #                     relUnAlias = self.wikiData.getAliasesWikiWord(relation)  
    366   #                     # TODO Use self.convertFilename here?  
    367   #                     links[relation] = u"#%s" % _escapeAnchor(relUnAlias)  
    368 343                      
    369 344                 self.wordAnchor = _escapeAnchor(word)  
     
    1551 1526                             p = urllib.url2pathname(link)  # TODO Relative URLs  
    1552 1527                             link = wx.FileSystem.FileNameToURL(p)  
    1553                           self.outAppend(u'<img src="%s" border="0"%s%s />' %  
    1554                                   (escapeHtml(link), sizeInTag, alignInTag))  
      1528                         self.outAppend(u'<img src="%s" alt="" border="0"%s%s />' %  
      1529                                 (link, sizeInTag, alignInTag))  
    1555 1530                     else:  
    1556 1531 #                         self.outAppend(u'<a href="%s">%s</a>' %  
     
    1593 1568                     else:  
    1594 1569                         self.outAppend(u'<span class="wiki-link"><a href="%s">' %  
    1595                                   escapeHtml(link))  
      1570                                 link)  
    1595 1570                         if tok.node.titleTokens is not None:  
    1596 1571                             self.processTokens(content, tok.node.titleTokens)  
  • branches/stable-1.8/lib/pwiki/wikidata/original_gadfly/DbStructure.py

    r99 r128  
    151 151             pass  
    152 152  
      153     def execSqlInsert(self, table, fields, values):  
      154         """  
      155         Gadfly-specific function. In 2.0 it will be able to create default  
      156         values for non-existant fields.  
      157         """  
      158         fieldStr = ", ".join(fields)  
      159         qmStr = ", ".join(["?"] * len(fields))  
      160         self.execSql("insert into %s(%s) values (%s)" % (table, fieldStr, qmStr),  
      161                 values)  
      162  
    153 163  
    154 164     def getLastRowid(self):  
     
    209 219  
    210 220 TABLE_DEFINITIONS = {  
    211   #     "changelog": (     # Essential if versioning used  
    212   #         ("id", t.pi),  
    213   #         ("word", t.t),  
    214   #         ("op", t.i),  
    215   #         ("content", t.b),  
    216   #         ("compression", t.i),  
    217   #         ("encryption", t.i),  
    218   #         ("moddate", t.r)  
    219   #         ),  
    220   #  
    221    
    222   #     "headversion": (     # Essential if versioning used  
    223   #         ("word", t.t),  
    224   #         ("content", t.b),  
    225   #         ("compression", t.i),  
    226   #         ("encryption", t.i),  
    227   #         ("modified", t.r),  
    228   #         ("created", t.r)  
    229   #         ),  
    230   #       
    231   #       
    232   #     "versions": (     # Essential if versioning used  
    233   #         ("id", t.pi),  
    234   #         ("description", t.t),  
    235   #         ("firstchangeid", t.i),  
    236   #         ("created", t.r)  
    237   #         ),  
    238   #                       
    239   #                       
    240   #     "wikiwordcontent": (     # Essential for Compact  
    241   #         ("word", t.t),  
    242   #         ("content", t.b),  
    243   #         ("compression", t.i),  
    244   #         ("encryption", t.i),  
    245   #         ("modified", t.r),  
    246   #         ("created", t.r)  
    247   #         ),  
    248        
    249        
    250 221     "wikiwords": (     # Essential  
    251 222         ("word", t.t),  
     
    716 687             w = wikiWordToLabel(w)  
    717 688             if not uniqueCtl.has_key(w):  
    718                   connwrap.execSql("insert into wikiwords(word, created, modified) "  
    719                           "values (?, ?, ?)", (w, c, m))  
      689                 connwrap.execSqlInsert("wikiwords", ("word", "created",  
      690                         "modified", "presentationdatablock", "wordnormcase"),  
      691                         (w, c, m, "", ""))  
      692 #                 connwrap.execSql("insert into wikiwords(word, created, modified) "  
      693 #                         "values (?, ?, ?)", (w, c, m))  
    720 694                 uniqueCtl[w] = None  
    721 695  
     
    733 707             w, r = wikiWordToLabel(w), wikiWordToLabel(r)  
    734 708             if not uniqueCtl.has_key((w, r)):  
    735                   connwrap.execSql("insert into wikirelations(word, relation, created) "  
    736                           "values (?, ?, ?)", (w, r, c))  
      709                 connwrap.execSqlInsert("wikirelations", ("word", "relation",  
      710                         "created"), (w, r, c))  
      711 #                 connwrap.execSql("insert into wikirelations(word, relation, created) "  
      712 #                         "values (?, ?, ?)", (w, r, c))  
    737 713                 uniqueCtl[(w, r)] = None  
    738 714  
     
    747 723  
    748 724         for w, k, v in dataIn:  
    749               connwrap.execSql("insert into wikiwordprops(word, key, value) "  
    750                       "values (?, ?, ?)", (wikiWordToLabel(w), k, v))  
      725             connwrap.execSqlInsert("wikiwordprops", ("word", "key",  
      726                     "value"), (wikiWordToLabel(w), k, v))  
      727 #             connwrap.execSql("insert into wikiwordprops(word, key, value) "  
      728 #                     "values (?, ?, ?)", (wikiWordToLabel(w), k, v))  
    751 729  
    752 730         # table todos  
     
    760 738  
    761 739         for w, t in dataIn:  
    762               connwrap.execSql("insert into todos(word, todo) "  
    763                       "values (?, ?)", (wikiWordToLabel(w), t))  
      740             connwrap.execSqlInsert("todos", ("word", "todo"),  
      741                     (wikiWordToLabel(w), t))  
      742 #             connwrap.execSql("insert into todos(word, todo) "  
      743 #                     "values (?, ?)", (wikiWordToLabel(w), t))  
    764 744  
    765 745         formatver = 2  
     
    809 789     Performs further updates  
    810 790     """  
    811       setSettingsValue(connwrap, "lastwritever", str(VERSION_DB))  
      791     try:  
      792         setSettingsValue(connwrap, "lastwritever", str(VERSION_DB))  
      793     except IOError:  
      794         pass  
    812 795  
    813 796          
  • branches/stable-1.8/lib/pwiki/Configuration.py

    r125 r128  
    4 4  
    5 5 import codecs  
    6    
    7 6 import wx  
      7  
    8 8 # from wxPython.wx import wxPlatformInfo, wxGetOsVersion, wxGetApp  
    9 9  
    10   wxWINDOWS_NT = 18   # For wx.GetOsVersion()  
    11   wxWIN95 = 20   # For wx.GetOsVersion(), this includes also Win 98 and ME  
      10 # Bug workaround: In wxPython 2.6 these constants weren't defined  
      11 #    in 2.8 they are defined under a different name and with different values  
      12  
      13 try:  
      14     wxWINDOWS_NT = wx.OS_WINDOWS_NT  
      15 except AttributeError:  
      16     wxWINDOWS_NT = 18   # For wx.GetOsVersion()  
      17      
      18 try:  
      19     wxWIN95 = wx.OS_WINDOWS_9X  
      20 except AttributeError:  
      21     wxWIN95 = 20   # For wx.GetOsVersion(), this includes also Win 98 and ME  
    12 22  
    13 23  
     
    39 49  
    40 50 _ISWIN9x = wx.GetOsVersion()[0] == wxWIN95  
      51 _ISWINNT = wx.GetOsVersion()[0] == wxWINDOWS_NT  
    41 52  
    42 53 def isWin9x():  
    43 54     """  
    44       Returns True if OS is WIndows 95/98/ME  
      55     Returns True if OS is Windows 95/98/ME  
    44 55     """  
    45 56     return _ISWIN9x  
    46 57  
      58 def isWinNT():  
      59     return _ISWINNT  
    47 60  
    48 61 def isWindows():  
    49       return _ISWIN9x or wx.GetOsVersion()[0] == wxWINDOWS_NT  
      62     return _ISWIN9x or _ISWINNT  
    49 62  
    50 63  
     
    490 503  
    491 504     ("main", "auto_save"): "True",  # Boolean field, if auto save should be active  
    492       ("main", "auto_save_delay_key_pressed"): "3",  # Seconds to wait after last key pressed and ...  
    493       ("main", "auto_save_delay_dirty"): "15",  # secs. to wait after page became dirty before auto save  
      505     ("main", "auto_save_delay_key_pressed"): "5",  # Seconds to wait after last key pressed and ...  
      506     ("main", "auto_save_delay_dirty"): "60",  # secs. to wait after page became dirty before auto save  
    494 507        
    495 508     ("main", "hideundefined"): "False", # hide undefined wikiwords in tree  
  • branches/stable-1.8/lib/pwiki/PersonalWikiFrame.py

    r126 r128  
    4 4 import os, sys, gc, traceback, sets, string, re  
    5 5 from os.path import *  
    6   from time import localtime, time, strftime  
      6 from time import localtime, time, strftime, sleep  
    6 6  
    7 7 import cPickle  
     
    24 24 import Configuration  
    25 25 from WindowLayout import WindowLayouter, setWindowPos, setWindowSize  
    26   # from WikiData import *  
    27 26 from wikidata import DbBackendUtils, WikiDataManager  
    28   # from wikidata.WikiDataManager import WikiDataManager  
      27  
      28 import OsAbstract  
      29  
    29 30 import DocPages, WikiFormatting  
    30 31  
     
    350 351  
    351 352         if cmdLineAction.exitFinally:  
    352               self.Close()  
    353               self.Destroy()  
      353             self.exitWiki()  
      354 #             self.Close()  
      355 #             self.Destroy()  
    354 356             return  
    355 357  
     
    1326 1328         menuID=wx.NewId()  
    1327 1329         helpMenu.Append(menuID, '&Visit wikidPad Homepage', 'Visit Homepage')  
    1328           wx.EVT_MENU(self, menuID, lambda evt: os.startfile('http://www.jhorman.org/wikidPad/'))  
      1330         wx.EVT_MENU(self, menuID, lambda evt: OsAbstract.startFile(  
      1331                 u'http://www.jhorman.org/wikidPad/'))  
    1329 1332  
    1330 1333         helpMenu.AppendSeparator()  
     
    1332 1335         menuID=wx.NewId()  
    1333 1336         helpMenu.Append(menuID, 'View &License', 'View License')  
    1334           wx.EVT_MENU(self, menuID, lambda evt: os.startfile(join(self.wikiAppDir, 'license.txt')))  
      1337         wx.EVT_MENU(self, menuID, lambda evt: OsAbstract.startFile(  
      1338                 join(self.wikiAppDir, u'license.txt')))  
    1335 1339  
    1336 1340         helpMenu.AppendSeparator()  
     
    1400 1404         icon = self.lookupIcon("tb_back")  
    1401 1405         tbID = wx.NewId()  
    1402           tb.AddSimpleTool(tbID, icon, "Back (Ctrl-Alt-Back)", "Back")  
      1406         tb.AddSimpleTool(tbID, icon, "Back", "Back")  
    1402 1406         wx.EVT_TOOL(self, tbID, lambda evt: self.pageHistory.goInHistory(-1))  
    1403 1407  
    1404 1408         icon = self.lookupIcon("tb_forward")  
    1405 1409         tbID = wx.NewId()  
    1406           tb.AddSimpleTool(tbID, icon, "Forward (Ctrl-Alt-Forward)", "Forward")  
      1410         tb.AddSimpleTool(tbID, icon, "Forward", "Forward")  
    1406 1410         wx.EVT_TOOL(self, tbID, lambda evt: self.pageHistory.goInHistory(1))  
    1407 1411  
     
    1417 1421         icon = self.lookupIcon("tb_doc")  
    1418 1422         tbID = wx.NewId()  
    1419           tb.AddSimpleTool(tbID, icon, "Open Wiki Word  (Ctrl-O)", "Open Wiki Word")  
      1423         tb.AddSimpleTool(tbID, icon, "Open Wiki Word", "Open Wiki Word")  
    1419 1423         wx.EVT_TOOL(self, tbID, lambda evt: self.showWikiWordOpenDialog())  
    1420 1424  
    1421 1425         icon = self.lookupIcon("tb_lens")  
    1422 1426         tbID = wx.NewId()  
    1423           tb.AddSimpleTool(tbID, icon, "Search  (Ctrl-Alt-F)", "Search")  
      1427         tb.AddSimpleTool(tbID, icon, "Search", "Search")  
    1423 1427         wx.EVT_TOOL(self, tbID, lambda evt: self.showSearchDialog())  
    1424 1428  
     
    1433 1437  
    1434 1438         icon = self.lookupIcon("tb_save")  
    1435           tb.AddSimpleTool(GUI_ID.CMD_SAVE_WIKI, icon, "Save Wiki Word (Ctrl-S)",  
      1439         tb.AddSimpleTool(GUI_ID.CMD_SAVE_WIKI, icon, "Save Wiki Word",  
    1435 1439                 "Save Wiki Word")  
    1436 1440         wx.EVT_TOOL(self, GUI_ID.CMD_SAVE_WIKI,  
     
    1441 1445         icon = self.lookupIcon("tb_rename")  
    1442 1446         tbID = wx.NewId()  
    1443           tb.AddSimpleTool(tbID, icon, "Rename Wiki Word (Ctrl-Alt-R)", "Rename Wiki Word")  
      1447         tb.AddSimpleTool(tbID, icon, "Rename Wiki Word", "Rename Wiki Word")  
    1443 1447         wx.EVT_TOOL(self, tbID, lambda evt: self.showWikiWordRenameDialog())  
    1444 1448  
    1445 1449         icon = self.lookupIcon("tb_delete")  
    1446 1450         tbID = wx.NewId()  
    1447           tb.AddSimpleTool(tbID, icon, "Delete (Ctrl-D)", "Delete Wiki Word")  
      1451   &nb