Changeset 178
- Timestamp:
- 01/25/09 10:13:14 (4 years ago)
- Location:
- branches/mbutscher/next
- Files:
-
- 347 added
- 1 removed
- 36 modified
-
Consts.py (modified) (2 diffs)
-
ExceptionLogger.py (modified) (4 diffs)
-
WikidPad.xrc (modified) (14 diffs)
-
WikidPadHelp (added)
-
WikidPadHelp/WikidPadHelp.wiki (added)
-
WikidPadHelp/data (added)
-
WikidPadHelp/data/ACLs.wiki (added)
-
WikidPadHelp/data/ADSs.wiki (added)
-
WikidPadHelp/data/Anchors.wiki (added)
-
WikidPadHelp/data/ApiDocs.wiki (added)
-
WikidPadHelp/data/ApplicationConfigurationFiles.wiki (added)
-
WikidPadHelp/data/ArticleFoobaromatic.wiki (added)
-
WikidPadHelp/data/AutoCompletion.wiki (added)
-
WikidPadHelp/data/AutoSave.wiki (added)
-
WikidPadHelp/data/BoughtTemplate.wiki (added)
-
WikidPadHelp/data/BulletedLists.wiki (added)
-
WikidPadHelp/data/CamelCase.wiki (added)
-
WikidPadHelp/data/Cascading style sheets.wiki (added)
-
WikidPadHelp/data/ChangeFileSuffix.wiki (added)
-
WikidPadHelp/data/ChangeLog.wiki (added)
-
WikidPadHelp/data/ChangeLog2003.wiki (added)
-
WikidPadHelp/data/ChangeLog2004.wiki (added)
-
WikidPadHelp/data/ChangeLog2005.wiki (added)
-
WikidPadHelp/data/ChangeLog2006.wiki (added)
-
WikidPadHelp/data/ChangingKeyBindings.wiki (added)
-
WikidPadHelp/data/ClipboardCatcher.wiki (added)
-
WikidPadHelp/data/Color AQUAMARINE.wiki (added)
-
WikidPadHelp/data/Color BLACK.wiki (added)
-
WikidPadHelp/data/Color BLUE VIOLET.wiki (added)
-
WikidPadHelp/data/Color BLUE.wiki (added)
-
WikidPadHelp/data/Color BROWN.wiki (added)
-
WikidPadHelp/data/Color CADET BLUE.wiki (added)
-
WikidPadHelp/data/Color CORAL.wiki (added)
-
WikidPadHelp/data/Color CORNFLOWER BLUE.wiki (added)
-
WikidPadHelp/data/Color CYAN.wiki (added)
-
WikidPadHelp/data/Color DARK GREEN.wiki (added)
-
WikidPadHelp/data/Color DARK GREY.wiki (added)
-
WikidPadHelp/data/Color DARK OLIVE GREEN.wiki (added)
-
WikidPadHelp/data/Color DARK ORCHID.wiki (added)
-
WikidPadHelp/data/Color DARK SLATE BLUE.wiki (added)
-
WikidPadHelp/data/Color DARK SLATE GREY.wiki (added)
-
WikidPadHelp/data/Color DARK TURQUOISE.wiki (added)
-
WikidPadHelp/data/Color DIM GREY.wiki (added)
-
WikidPadHelp/data/Color FIREBRICK.wiki (added)
-
WikidPadHelp/data/Color FOREST GREEN.wiki (added)
-
WikidPadHelp/data/Color GOLD.wiki (added)
-
WikidPadHelp/data/Color GOLDENROD.wiki (added)
-
WikidPadHelp/data/Color GREEN YELLOW.wiki (added)
-
WikidPadHelp/data/Color GREEN.wiki (added)
-
WikidPadHelp/data/Color GREY.wiki (added)
-
WikidPadHelp/data/Color INDIAN RED.wiki (added)
-
WikidPadHelp/data/Color KHAKI.wiki (added)
-
WikidPadHelp/data/Color LIGHT BLUE.wiki (added)
-
WikidPadHelp/data/Color LIGHT GREY.wiki (added)
-
WikidPadHelp/data/Color LIGHT STEEL BLUE.wiki (added)
-
WikidPadHelp/data/Color LIME GREEN.wiki (added)
-
WikidPadHelp/data/Color MAGENTA.wiki (added)
-
WikidPadHelp/data/Color MAROON.wiki (added)
-
WikidPadHelp/data/Color MEDIUM AQUAMARINE.wiki (added)
-
WikidPadHelp/data/Color MEDIUM BLUE.wiki (added)
-
WikidPadHelp/data/Color MEDIUM FOREST GREEN.wiki (added)
-
WikidPadHelp/data/Color MEDIUM GOLDENROD.wiki (added)
-
WikidPadHelp/data/Color MEDIUM ORCHID.wiki (added)
-
WikidPadHelp/data/Color MEDIUM SEA GREEN.wiki (added)
-
WikidPadHelp/data/Color MEDIUM SLATE BLUE.wiki (added)
-
WikidPadHelp/data/Color MEDIUM SPRING GREEN.wiki (added)
-
WikidPadHelp/data/Color MEDIUM TURQUOISE.wiki (added)
-
WikidPadHelp/data/Color MEDIUM VIOLET RED.wiki (added)
-
WikidPadHelp/data/Color MIDNIGHT BLUE.wiki (added)
-
WikidPadHelp/data/Color NAVY.wiki (added)
-
WikidPadHelp/data/Color ORANGE RED.wiki (added)
-
WikidPadHelp/data/Color ORANGE.wiki (added)
-
WikidPadHelp/data/Color ORCHID.wiki (added)
-
WikidPadHelp/data/Color PALE GREEN.wiki (added)
-
WikidPadHelp/data/Color PINK.wiki (added)
-
WikidPadHelp/data/Color PLUM.wiki (added)
-
WikidPadHelp/data/Color PURPLE.wiki (added)
-
WikidPadHelp/data/Color RED.wiki (added)
-
WikidPadHelp/data/Color SALMON.wiki (added)
-
WikidPadHelp/data/Color SEA GREEN.wiki (added)
-
WikidPadHelp/data/Color SIENNA.wiki (added)
-
WikidPadHelp/data/Color SKY BLUE.wiki (added)
-
WikidPadHelp/data/Color SLATE BLUE.wiki (added)
-
WikidPadHelp/data/Color SPRING GREEN.wiki (added)
-
WikidPadHelp/data/Color STEEL BLUE.wiki (added)
-
WikidPadHelp/data/Color TAN.wiki (added)
-
WikidPadHelp/data/Color THISTLE.wiki (added)
-
WikidPadHelp/data/Color TURQUOISE.wiki (added)
-
WikidPadHelp/data/Color VIOLET RED.wiki (added)
-
WikidPadHelp/data/Color VIOLET.wiki (added)
-
WikidPadHelp/data/Color WHEAT.wiki (added)
-
WikidPadHelp/data/Color WHITE.wiki (added)
-
WikidPadHelp/data/Color YELLOW GREEN.wiki (added)
-
WikidPadHelp/data/Color YELLOW.wiki (added)
-
WikidPadHelp/data/ColorTestPage.wiki (added)
-
WikidPadHelp/data/CommandLineSupport.wiki (added)
-
WikidPadHelp/data/DATABLOCKS.grl (added)
-
WikidPadHelp/data/DATABLOCKSEXTERNAL.grl (added)
-
WikidPadHelp/data/DEFAULTVALUES.grl (added)
-
WikidPadHelp/data/DatabaseTypes.wiki (added)
-
WikidPadHelp/data/DisableCamelCaseWords.wiki (added)
-
WikidPadHelp/data/DynamicViews.wiki (added)
-
WikidPadHelp/data/ExternalGraphicalApplications.wiki (added)
-
WikidPadHelp/data/FavoriteWikis.wiki (added)
-
WikidPadHelp/data/FileStorage.wiki (added)
-
WikidPadHelp/data/Folding.wiki (added)
-
WikidPadHelp/data/Footnotes.wiki (added)
-
WikidPadHelp/data/FormPages.wiki (added)
-
WikidPadHelp/data/GlobalScriptLibrary.wiki (added)
-
WikidPadHelp/data/Icon airbrush.wiki (added)
-
WikidPadHelp/data/Icon align.wiki (added)
-
WikidPadHelp/data/Icon area selection.wiki (added)
-
WikidPadHelp/data/Icon barcode.wiki (added)
-
WikidPadHelp/data/Icon beer.wiki (added)
-
WikidPadHelp/data/Icon bottom-top.wiki (added)
-
WikidPadHelp/data/Icon boy.wiki (added)
-
WikidPadHelp/data/Icon brush.wiki (added)
-
WikidPadHelp/data/Icon cancel.wiki (added)
-
WikidPadHelp/data/Icon card.wiki (added)
-
WikidPadHelp/data/Icon carrot.wiki (added)
-
WikidPadHelp/data/Icon cd.wiki (added)
-
WikidPadHelp/data/Icon cd_audio.wiki (added)
-
WikidPadHelp/data/Icon cd_drive.wiki (added)
-
WikidPadHelp/data/Icon chart.wiki (added)
-
WikidPadHelp/data/Icon cherries.wiki (added)
-
WikidPadHelp/data/Icon clip.wiki (added)
-
WikidPadHelp/data/Icon cobra.wiki (added)
-
WikidPadHelp/data/Icon cocktail.wiki (added)
-
WikidPadHelp/data/Icon cog.wiki (added)
-
WikidPadHelp/data/Icon colour selection.wiki (added)
-
WikidPadHelp/data/Icon colour selector.wiki (added)
-
WikidPadHelp/data/Icon component.wiki (added)
-
WikidPadHelp/data/Icon console.wiki (added)
-
WikidPadHelp/data/Icon contact.wiki (added)
-
WikidPadHelp/data/Icon controller.wiki (added)
-
WikidPadHelp/data/Icon controls.wiki (added)
-
WikidPadHelp/data/Icon copy.wiki (added)
-
WikidPadHelp/data/Icon crab.wiki (added)
-
WikidPadHelp/data/Icon crazy hair.wiki (added)
-
WikidPadHelp/data/Icon cross.wiki (added)
-
WikidPadHelp/data/Icon cursor move.wiki (added)
-
WikidPadHelp/data/Icon cursor.wiki (added)
-
WikidPadHelp/data/Icon cut.wiki (added)
-
WikidPadHelp/data/Icon cycle.wiki (added)
-
WikidPadHelp/data/Icon data file.wiki (added)
-
WikidPadHelp/data/Icon date.wiki (added)
-
WikidPadHelp/data/Icon delete.wiki (added)
-
WikidPadHelp/data/Icon desert.wiki (added)
-
WikidPadHelp/data/Icon dice.wiki (added)
-
WikidPadHelp/data/Icon dino.wiki (added)
-
WikidPadHelp/data/Icon disk.wiki (added)
-
WikidPadHelp/data/Icon dna.wiki (added)
-
WikidPadHelp/data/Icon doc.wiki (added)
-
WikidPadHelp/data/Icon download.wiki (added)
-
WikidPadHelp/data/Icon drive c.wiki (added)
-
WikidPadHelp/data/Icon drive d.wiki (added)
-
WikidPadHelp/data/Icon drive e.wiki (added)
-
WikidPadHelp/data/Icon drive f.wiki (added)
-
WikidPadHelp/data/Icon drive g.wiki (added)
-
WikidPadHelp/data/Icon drive h.wiki (added)
-
WikidPadHelp/data/Icon drive networked.wiki (added)
-
WikidPadHelp/data/Icon drive.wiki (added)
-
WikidPadHelp/data/Icon earthworm.wiki (added)
-
WikidPadHelp/data/Icon eraser.wiki (added)
-
WikidPadHelp/data/Icon explorer.wiki (added)
-
WikidPadHelp/data/Icon eye.wiki (added)
-
WikidPadHelp/data/Icon fan.wiki (added)
-
WikidPadHelp/data/Icon file folder.wiki (added)
-
WikidPadHelp/data/Icon find file.wiki (added)
-
WikidPadHelp/data/Icon find picture.wiki (added)
-
WikidPadHelp/data/Icon find.wiki (added)
-
WikidPadHelp/data/Icon fish.wiki (added)
-
WikidPadHelp/data/Icon flag.wiki (added)
-
WikidPadHelp/data/Icon flash.wiki (added)
-
WikidPadHelp/data/Icon flood fill.wiki (added)
-
WikidPadHelp/data/Icon folder open.wiki (added)
-
WikidPadHelp/data/Icon folder.wiki (added)
-
WikidPadHelp/data/Icon folder2.wiki (added)
-
WikidPadHelp/data/Icon folderwiki.wiki (added)
-
WikidPadHelp/data/Icon gameboy.wiki (added)
-
WikidPadHelp/data/Icon gb advance.wiki (added)
-
WikidPadHelp/data/Icon glasses.wiki (added)
-
WikidPadHelp/data/Icon gopher.wiki (added)
-
WikidPadHelp/data/Icon graduate.wiki (added)
-
WikidPadHelp/data/Icon graph.wiki (added)
-
WikidPadHelp/data/Icon graph2.wiki (added)
-
WikidPadHelp/data/Icon grid.wiki (added)
-
WikidPadHelp/data/Icon grim.wiki (added)
-
WikidPadHelp/data/Icon hammer.wiki (added)
-
WikidPadHelp/data/Icon heli.wiki (added)
-
WikidPadHelp/data/Icon helmet.wiki (added)
-
WikidPadHelp/data/Icon home.wiki (added)
-
WikidPadHelp/data/Icon horizontal flip.wiki (added)
-
WikidPadHelp/data/Icon hub stack.wiki (added)
-
WikidPadHelp/data/Icon icon.wiki (added)
-
WikidPadHelp/data/Icon joypad.wiki (added)
-
WikidPadHelp/data/Icon joystick.wiki (added)
-
WikidPadHelp/data/Icon left arrow.wiki (added)
-
WikidPadHelp/data/Icon left-right.wiki (added)
-
WikidPadHelp/data/Icon lens.wiki (added)
-
WikidPadHelp/data/Icon lifesaver.wiki (added)
-
WikidPadHelp/data/Icon link.wiki (added)
-
WikidPadHelp/data/Icon list.wiki (added)
-
WikidPadHelp/data/Icon listen.wiki (added)
-
WikidPadHelp/data/Icon lizard.wiki (added)
-
WikidPadHelp/data/Icon mail.wiki (added)
-
WikidPadHelp/data/Icon mobile.wiki (added)
-
WikidPadHelp/data/Icon modem.wiki (added)
-
WikidPadHelp/data/Icon monitor.wiki (added)
-
WikidPadHelp/data/Icon monster.wiki (added)
-
WikidPadHelp/data/Icon mountains.wiki (added)
-
WikidPadHelp/data/Icon mouse click.wiki (added)
-
WikidPadHelp/data/Icon mouse move.wiki (added)
-
WikidPadHelp/data/Icon mouse.wiki (added)
-
WikidPadHelp/data/Icon movie.wiki (added)
-
WikidPadHelp/data/Icon music.wiki (added)
-
WikidPadHelp/data/Icon mydoc.wiki (added)
-
WikidPadHelp/data/Icon note.wiki (added)
-
WikidPadHelp/data/Icon note2.wiki (added)
-
WikidPadHelp/data/Icon notepad.wiki (added)
-
WikidPadHelp/data/Icon ok.wiki (added)
-
WikidPadHelp/data/Icon open.wiki (added)
-
WikidPadHelp/data/Icon orgchart.wiki (added)
-
WikidPadHelp/data/Icon page.wiki (added)
-
WikidPadHelp/data/Icon paint.wiki (added)
-
WikidPadHelp/data/Icon paintbrush.wiki (added)
-
WikidPadHelp/data/Icon paste.wiki (added)
-
WikidPadHelp/data/Icon pc.wiki (added)
-
WikidPadHelp/data/Icon pencil.wiki (added)
-
WikidPadHelp/data/Icon person.wiki (added)
-
WikidPadHelp/data/Icon pin.wiki (added)
-
WikidPadHelp/data/Icon plug.wiki (added)
-
WikidPadHelp/data/Icon push.wiki (added)
-
WikidPadHelp/data/Icon radio.wiki (added)
-
WikidPadHelp/data/Icon rename.wiki (added)
-
WikidPadHelp/data/Icon right arrow.wiki (added)
-
WikidPadHelp/data/Icon right-left.wiki (added)
-
WikidPadHelp/data/Icon salt.wiki (added)
-
WikidPadHelp/data/Icon scales.wiki (added)
-
WikidPadHelp/data/Icon scanner.wiki (added)
-
WikidPadHelp/data/Icon scroll.wiki (added)
-
WikidPadHelp/data/Icon select.wiki (added)
-
WikidPadHelp/data/Icon server.wiki (added)
-
WikidPadHelp/data/Icon skull.wiki (added)
-
WikidPadHelp/data/Icon skull_crossbones.wiki (added)
-
WikidPadHelp/data/Icon smudge.wiki (added)
-
WikidPadHelp/data/Icon sound file.wiki (added)
-
WikidPadHelp/data/Icon spanner.wiki (added)
-
WikidPadHelp/data/Icon speaker.wiki (added)
-
WikidPadHelp/data/Icon spiky hair.wiki (added)
-
WikidPadHelp/data/Icon sub.wiki (added)
-
WikidPadHelp/data/Icon system.wiki (added)
-
WikidPadHelp/data/Icon tank.wiki (added)
-
WikidPadHelp/data/Icon text.wiki (added)
-
WikidPadHelp/data/Icon thingy.wiki (added)
-
WikidPadHelp/data/Icon top-bottom.wiki (added)
-
WikidPadHelp/data/Icon tracker ball.wiki (added)
-
WikidPadHelp/data/Icon tux.wiki (added)
-
WikidPadHelp/data/Icon tv.wiki (added)
-
WikidPadHelp/data/Icon twirl.wiki (added)
-
WikidPadHelp/data/Icon undo.wiki (added)
-
WikidPadHelp/data/Icon user.wiki (added)
-
WikidPadHelp/data/Icon userlist.wiki (added)
-
WikidPadHelp/data/Icon users.wiki (added)
-
WikidPadHelp/data/Icon vertical flip.wiki (added)
-
WikidPadHelp/data/Icon vodka.wiki (added)
-
WikidPadHelp/data/Icon water drop.wiki (added)
-
WikidPadHelp/data/Icon web server.wiki (added)
-
WikidPadHelp/data/Icon winamp.wiki (added)
-
WikidPadHelp/data/Icon zip disk.wiki (added)
-
WikidPadHelp/data/Icon zoomin.wiki (added)
-
WikidPadHelp/data/Icon zoomout.wiki (added)
-
WikidPadHelp/data/IconTestPage.wiki (added)
-
WikidPadHelp/data/IncrementalSearch.wiki (added)
-
WikidPadHelp/data/InlinePythonEval.wiki (added)
-
WikidPadHelp/data/Insertions.wiki (added)
-
WikidPadHelp/data/InternatiönalChàracters.wiki (added)
-
WikidPadHelp/data/KeyBindings.wiki (added)
-
WikidPadHelp/data/Menu Edit.wiki (added)
-
WikidPadHelp/data/Menu Extra.wiki (added)
-
WikidPadHelp/data/Menu Format.wiki (added)
-
WikidPadHelp/data/Menu Help.wiki (added)
-
WikidPadHelp/data/Menu Navigate.wiki (added)
-
WikidPadHelp/data/Menu Tabs.wiki (added)
-
WikidPadHelp/data/Menu View.wiki (added)
-
WikidPadHelp/data/Menu Wiki Page.wiki (added)
-
WikidPadHelp/data/Menu Wiki.wiki (added)
-
WikidPadHelp/data/MigrationBetweenDbTypes.wiki (added)
-
WikidPadHelp/data/Multipage text format.wiki (added)
-
WikidPadHelp/data/Not Camel Case.wiki (added)
-
WikidPadHelp/data/Options HTML preview_export.wiki (added)
-
WikidPadHelp/data/OptionsDialog.wiki (added)
-
WikidPadHelp/data/PageListDialog.wiki (added)
-
WikidPadHelp/data/PageStructureWindow.wiki (added)
-
WikidPadHelp/data/Printing.wiki (added)
-
WikidPadHelp/data/REGISTRATION.grl (added)
-
WikidPadHelp/data/RenamingWikiWords.wiki (added)
-
WikidPadHelp/data/RestartWikidPad.wiki (added)
-
WikidPadHelp/data/SEARCH_VIEWS.grl (added)
-
WikidPadHelp/data/SETTINGS.grl (added)
-
WikidPadHelp/data/ScratchPad.wiki (added)
-
WikidPadHelp/data/SearchingTheWiki.wiki (added)
-
WikidPadHelp/data/ShortHintAttribute.wiki (added)
-
WikidPadHelp/data/SpellChecking.wiki (added)
-
WikidPadHelp/data/SystemInfoTemplate.wiki (added)
-
WikidPadHelp/data/TMPTABLE.grl (added)
-
WikidPadHelp/data/TODOS.grl (added)
-
WikidPadHelp/data/Templates.wiki (added)
-
WikidPadHelp/data/TextBlocks.wiki (added)
-
WikidPadHelp/data/TextFormatting.wiki (added)
-
WikidPadHelp/data/That Arent Wiki Words.wiki (added)
-
WikidPadHelp/data/ThirdPartyLibraries.wiki (added)
-
WikidPadHelp/data/TimeViewWindow.wiki (added)
-
WikidPadHelp/data/TodoItems.wiki (added)
-
WikidPadHelp/data/TreeIcons.wiki (added)
-
WikidPadHelp/data/TreeNodeColors.wiki (added)
-
WikidPadHelp/data/UrlLinking.wiki (added)
-
WikidPadHelp/data/WIKIRELATIONS.grl (added)
-
WikidPadHelp/data/WIKIWORDMATCHTERMS.grl (added)
-
WikidPadHelp/data/WIKIWORDPROPS.grl (added)
-
WikidPadHelp/data/WIKIWORDS.grl (added)
-
WikidPadHelp/data/WhereIsTheDataStored.wiki (added)
-
WikidPadHelp/data/WikiBookmarks.wiki (added)
-
WikidPadHelp/data/WikiDocumentAttributes.wiki (added)
-
WikidPadHelp/data/WikiExport.wiki (added)
-
WikidPadHelp/data/WikiFonts.wiki (added)
-
WikidPadHelp/data/WikiImport.wiki (added)
-
WikidPadHelp/data/WikiLockFile.wiki (added)
-
WikidPadHelp/data/WikiMaintenance.wiki (added)
-
WikidPadHelp/data/WikiStructureGraphs.wiki (added)
-
WikidPadHelp/data/WikiSyntax.wiki (added)
-
WikidPadHelp/data/WikiWordHistory.wiki (added)
-
WikidPadHelp/data/WikiWordNavigation.wiki (added)
-
WikidPadHelp/data/WikidPadHelp.wiki (added)
-
WikidPadHelp/data/WikidPadOnUSB.wiki (added)
-
WikidPadHelp/data/WikidPadSupport.wiki (added)
-
WikidPadHelp/data/WordLinking.wiki (added)
-
WikidPadHelp/data/index (added)
-
WikidPadHelp/data/index/DOCUMENTS.grl (added)
-
WikidPadHelp/data/index/TEXT_INDEX.grl (added)
-
WikidPadHelp/data/index/WORDS.grl (added)
-
WikidPadHelp/data/index/wiki_idx.gfd (added)
-
WikidPadHelp/data/wiki%2FCCBlacklist.data (added)
-
WikidPadHelp/data/wikidb.gfd (added)
-
WikidPadHelp/files (added)
-
WikidPadHelp/files/testimg.gif (added)
-
WikidPadStarter.py (modified) (4 diffs)
-
extensions/WikidPadParser.py (deleted)
-
extensions/WikidPadParserStub.py (added)
-
extensions/autoNew.py (modified) (1 diff)
-
extensions/wikidPadParser (added)
-
extensions/wikidPadParser/WikidPadParser.py (added)
-
extensions/wikidPadParser/__init__.py (added)
-
lib/pwiki/AdditionalDialogs.py (modified) (4 diffs)
-
lib/pwiki/Configuration.py (modified) (4 diffs)
-
lib/pwiki/DocPagePresenter.py (modified) (1 diff)
-
lib/pwiki/DocPages.py (modified) (14 diffs)
-
lib/pwiki/DocStructureCtrl.py (modified) (1 diff)
-
lib/pwiki/Exporters.py (modified) (1 diff)
-
lib/pwiki/Localization.py (modified) (1 diff)
-
lib/pwiki/MainApp.py (modified) (8 diffs)
-
lib/pwiki/OptionsDialog.py (modified) (9 diffs)
-
lib/pwiki/PersonalWikiFrame.py (modified) (22 diffs)
-
lib/pwiki/PluginManager.py (modified) (7 diffs)
-
lib/pwiki/SpellChecker.py (modified) (1 diff)
-
lib/pwiki/StringOps.py (modified) (6 diffs)
-
lib/pwiki/WikiExceptions.py (modified) (1 diff)
-
lib/pwiki/WikiHtmlView.py (modified) (3 diffs)
-
lib/pwiki/WikiHtmlViewIE.py (modified) (3 diffs)
-
lib/pwiki/WikiTreeCtrl.py (modified) (1 diff)
-
lib/pwiki/WikiTxtCtrl.py (modified) (9 diffs)
-
lib/pwiki/WindowsHacks.py (modified) (1 diff)
-
lib/pwiki/timeView/TimePresentationBase.py (modified) (1 diff)
-
lib/pwiki/timeView/TimelinePanel.py (modified) (3 diffs)
-
lib/pwiki/wikidata/DbBackendUtils.py (modified) (2 diffs)
-
lib/pwiki/wikidata/WikiDataManager.py (modified) (9 diffs)
-
lib/pwiki/wikidata/compact_sqlite/WikiData.py (modified) (6 diffs)
-
lib/pwiki/wikidata/original_gadfly/DbStructure.py (modified) (1 diff)
-
lib/pwiki/wikidata/original_gadfly/WikiData.py (modified) (12 diffs)
-
lib/pwiki/wikidata/original_sqlite/WikiData.py (modified) (14 diffs)
-
lib/pwiki/wxHelper.py (modified) (3 diffs)
-
setup.py (modified) (3 diffs)
-
wikidpad_spelladdon.iss (modified) (2 diffs)
-
wikidpad_unicode.iss (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/mbutscher/next/Consts.py
r175 r178 28 28 29 29 30 DEADBLOCKTIMEOUT = 3030 DEADBLOCKTIMEOUT = 40 31 31 32 32 … … 67 67 WIKIWORDMATCHTERMS_TYPE_FROM_CONTENT = 8 68 68 69 69 70 # Matchterm will be created and deleted synchronously (normally in main thread) 70 71 # to ensure it is always up-to-date -
branches/mbutscher/next/ExceptionLogger.py
r166 r178 1 1 import sys, traceback, time, os.path 2 3 EL = None 4 2 5 3 6 # global exception control 4 7 class StdErrReplacement: 5 8 def write(self, data): 6 try: 7 import ExceptionLogger as EL 8 except ImportError: 9 # This should only happen while interpreter shuts down 10 return 11 # global _exceptionDestDir, _exceptionSessionTimeStamp, _exceptionOccurred 12 # global _previousExcepthook 9 global EL 10 # try: 11 # import ExceptionLogger as EL 12 # except ImportError: 13 # # This should only happen while interpreter shuts down 14 # return 13 15 14 16 try: … … 16 18 try: 17 19 if not EL._timestampPrinted: 18 # (Only write for first exception in session) This isn't an exception20 # Only write for first occurrence in session 19 21 f.write(EL._exceptionSessionTimeStamp) 20 22 EL._timestampPrinted = True … … 30 32 self.write(l) 31 33 32 # def __getattr__(self, attr):33 # print "__getattr__", repr(attr)34 # return None35 36 37 # class ExceptionHandler:38 # def __init__(self):39 # global _exceptionDestDir, _exceptionSessionTimeStamp, _exceptionOccurred40 # global _previousExcepthook41 # self._exceptionDestDir = _exceptionDestDir42 # self._exceptionSessionTimeStamp = _exceptionSessionTimeStamp43 # self._exceptionOccurred = _exceptionOccurred44 # self._previousExcepthook = _previousExcepthook45 # self.traceback = traceback46 34 # 47 35 48 36 def onException(typ, value, trace): 49 # global _exceptionDestDir, _exceptionSessionTimeStamp, _exceptionOccurred 50 # global _previousExcepthook 51 # global _traceback2 52 import ExceptionLogger as EL 53 37 global EL 38 print "--onException1" 54 39 try: 40 # import ExceptionLogger as EL 41 print "--onException4" 55 42 ## traceback.print_exception(typ, value, trace, file=sys.stdout) 56 43 f = open(os.path.join(EL._exceptionDestDir, "WikidPad_Error.log"), "a") … … 75 62 76 63 def startLogger(versionstring): 77 import ExceptionLogger as EL 64 global EL 65 import ExceptionLogger as EL2 66 67 EL = EL2 78 68 79 69 EL._exceptionDestDir = os.path.dirname(os.path.abspath(sys.argv[0])) -
branches/mbutscher/next/WikidPad.xrc
r177 r178 126 126 </object> 127 127 <object class="sizeritem"> 128 <object class="wxCheckBox" name="cbLowResources">129 <label>Low resource usage</label>130 </object>131 <option>0</option>132 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>133 <border>5</border>134 </object>135 <object class="sizeritem">136 <object class="wxCheckBox" name="cbSingleProcess">137 <label>Single process per user</label>138 </object>139 <option>0</option>140 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>141 <border>5</border>142 </object>143 <object class="sizeritem">144 128 <object class="wxCheckBox" name="cbWikiPathesRelative"> 145 129 <label>Store relative pathes to wikis</label> … … 379 363 </object> 380 364 <object class="sizeritem"> 365 <object class="wxStaticLine"/> 366 <option>0</option> 367 <flag>wxTOP|wxLEFT|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 368 <border>5</border> 369 </object> 370 <object class="sizeritem"> 381 371 <object class="wxFlexGridSizer"> 382 372 <object class="sizeritem"> 383 373 <object class="wxStaticText"> 384 <label>Structure window pos .:</label>374 <label>Structure window position:</label> 385 375 </object> 386 376 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> … … 403 393 <object class="sizeritem"> 404 394 <object class="wxStaticText"> 405 <label>Structure window depth:</label>395 <label>Structure window heading depth:</label> 406 396 </object> 407 397 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> … … 436 426 <object class="wxBoxSizer"> 437 427 <orient>wxVERTICAL</orient> 438 <object class="sizeritem">439 <object class="wxCheckBox" name="cbProcessAutoGenerated">440 <label>Process auto-generated areas</label>441 </object>442 <option>0</option>443 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>444 <border>5</border>445 </object>446 428 <object class="sizeritem"> 447 429 <object class="wxCheckBox" name="cbInsertionsAllowEval"> … … 501 483 <object class="sizeritem"> 502 484 <object class="wxCheckBox" name="cbHideUndefinedWords"> 503 <label>Hide Undefined WikiWords in Tree</label> 504 </object> 505 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 506 <border>5</border> 507 </object> 508 <object class="sizeritem"> 509 <object class="wxCheckBox" name="cbTreeNoCycles"> 510 <label>No cycles in tree</label> 485 <label>Hide undefined wiki words in Tree</label> 511 486 </object> 512 487 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> … … 967 942 </object> 968 943 </object> 969 <object class="wxPanel" name="OptionsPageAutosave">970 <object class="wxBoxSizer">971 <orient>wxVERTICAL</orient>972 <object class="sizeritem">973 <object class="wxCheckBox" name="cbAutoSave">974 <label>Autosave active</label>975 </object>976 <option>0</option>977 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>978 <border>5</border>979 </object>980 <object class="sizeritem">981 <object class="wxFlexGridSizer">982 <object class="sizeritem">983 <object class="wxStaticText">984 <label>Delay after key pressed:</label>985 </object>986 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>987 <border>5</border>988 </object>989 <object class="sizeritem">990 <object class="wxTextCtrl" name="tfAutoSaveDelayKeyPressed"/>991 <flag>wxALL|wxEXPAND</flag>992 <border>5</border>993 </object>994 <object class="sizeritem">995 <object class="wxStaticText">996 <label>second(s)</label>997 </object>998 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>999 <border>5</border>1000 </object>1001 <cols>3</cols>1002 <object class="sizeritem">1003 <object class="wxStaticText">1004 <label>Delay after page dirty:</label>1005 </object>1006 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1007 <border>5</border>1008 </object>1009 <object class="sizeritem">1010 <object class="wxTextCtrl" name="tfAutoSaveDelayDirty"/>1011 <flag>wxALL|wxEXPAND</flag>1012 <border>5</border>1013 </object>1014 <object class="sizeritem">1015 <object class="wxStaticText">1016 <label>second(s)</label>1017 </object>1018 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1019 <border>5</border>1020 </object>1021 </object>1022 <option>0</option>1023 <flag>wxTOP|wxLEFT|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1024 </object>1025 </object>1026 </object>1027 944 <object class="wxPanel" name="OptionsPageEditor"> 1028 945 <object class="wxBoxSizer"> 1029 946 <orient>wxVERTICAL</orient> 1030 <object class="sizeritem">1031 <object class="wxFlexGridSizer">1032 <cols>3</cols>1033 <object class="sizeritem">1034 <object class="wxStaticText">1035 <label>Sync. highlighting limit:</label>1036 </object>1037 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1038 <border>5</border>1039 </object>1040 <object class="sizeritem">1041 <object class="wxTextCtrl" name="tfSyncHighlightingByteLimit"/>1042 <flag>wxALL|wxEXPAND</flag>1043 <border>5</border>1044 </object>1045 <object class="sizeritem">1046 <object class="wxStaticText">1047 <label>bytes</label>1048 </object>1049 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1050 <border>5</border>1051 </object>1052 <object class="sizeritem">1053 <object class="wxStaticText">1054 <label>Highlight start delay:</label>1055 </object>1056 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1057 <border>5</border>1058 </object>1059 <object class="sizeritem">1060 <object class="wxTextCtrl" name="tfAsyncHighlightingDelay"/>1061 <flag>wxALL|wxEXPAND</flag>1062 <border>5</border>1063 </object>1064 <object class="sizeritem">1065 <object class="wxStaticText">1066 <label>second(s)</label>1067 </object>1068 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1069 <border>5</border>1070 </object>1071 <object class="sizeritem">1072 <object class="wxStaticText">1073 <label>Short hint delay:</label>1074 </object>1075 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1076 <border>5</border>1077 </object>1078 <object class="sizeritem">1079 <object class="wxTextCtrl" name="tfEditorShortHintDelay"/>1080 <flag>wxALL|wxEXPAND</flag>1081 <border>5</border>1082 </object>1083 <object class="sizeritem">1084 <object class="wxStaticText">1085 <label>milliseconds</label>1086 </object>1087 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1088 <border>5</border>1089 </object>1090 <growablecols>1</growablecols>1091 </object>1092 <option>0</option>1093 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>1094 </object>1095 947 <object class="sizeritem"> 1096 948 <object class="wxCheckBox" name="cbAutoUnbullets"> … … 1993 1845 <label>Change these only if you know what you are doing!</label> 1994 1846 <fg>#A80000</fg> 1995 </object> 1847 <font> 1848 <family>normal</family> 1849 <style>default</style> 1850 <weight>bold</weight> 1851 <underlined>0</underlined> 1852 </font> 1853 </object> 1996 1854 <option>0</option> 1997 1855 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> … … 2020 1878 <border>0</border> 2021 1879 </object> 1880 <object class="sizeritem"> 1881 <object class="wxStaticBoxSizer"> 1882 <orient>wxVERTICAL</orient> 1883 <label></label> 1884 <object class="sizeritem"> 1885 <object class="wxStaticText"> 1886 <label>Editor timing</label> 1887 <font> 1888 <family>normal</family> 1889 <style>default</style> 1890 <weight>bold</weight> 1891 <underlined>0</underlined> 1892 </font> 1893 </object> 1894 <option>0</option> 1895 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1896 <border>5</border> 1897 </object> 1898 <object class="sizeritem"> 1899 <object class="wxFlexGridSizer"> 1900 <cols>3</cols> 1901 <object class="sizeritem"> 1902 <object class="wxStaticText"> 1903 <label>Sync. highlighting limit:</label> 1904 </object> 1905 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1906 <border>5</border> 1907 </object> 1908 <object class="sizeritem"> 1909 <object class="wxTextCtrl" name="tfSyncHighlightingByteLimit"/> 1910 <flag>wxALL|wxEXPAND</flag> 1911 <border>5</border> 1912 </object> 1913 <object class="sizeritem"> 1914 <object class="wxStaticText"> 1915 <label>bytes</label> 1916 </object> 1917 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1918 <border>5</border> 1919 </object> 1920 <object class="sizeritem"> 1921 <object class="wxStaticText"> 1922 <label>Highlight start delay:</label> 1923 </object> 1924 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1925 <border>5</border> 1926 </object> 1927 <object class="sizeritem"> 1928 <object class="wxTextCtrl" name="tfAsyncHighlightingDelay"/> 1929 <flag>wxALL|wxEXPAND</flag> 1930 <border>5</border> 1931 </object> 1932 <object class="sizeritem"> 1933 <object class="wxStaticText"> 1934 <label>second(s)</label> 1935 </object> 1936 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1937 <border>5</border> 1938 </object> 1939 <object class="sizeritem"> 1940 <object class="wxStaticText"> 1941 <label>Short hint delay:</label> 1942 </object> 1943 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1944 <border>5</border> 1945 </object> 1946 <object class="sizeritem"> 1947 <object class="wxTextCtrl" name="tfEditorShortHintDelay"/> 1948 <flag>wxALL|wxEXPAND</flag> 1949 <border>5</border> 1950 </object> 1951 <object class="sizeritem"> 1952 <object class="wxStaticText"> 1953 <label>milliseconds</label> 1954 </object> 1955 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1956 <border>5</border> 1957 </object> 1958 <growablecols>1</growablecols> 1959 </object> 1960 <option>0</option> 1961 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1962 </object> 1963 </object> 1964 <option>0</option> 1965 <flag>wxALL|wxEXPAND</flag> 1966 <border>0</border> 1967 </object> 2022 1968 <object class="spacer"> 2023 1969 <size>5,5</size> 2024 1970 </object> 2025 1971 <object class="sizeritem"> 1972 <object class="wxCheckBox" name="cbSingleProcess"> 1973 <label>Single process per user*</label> 1974 </object> 1975 <option>0</option> 1976 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1977 <border>5</border> 1978 </object> 1979 <object class="sizeritem"> 1980 <object class="wxCheckBox" name="cbTreeNoCycles"> 1981 <label>No cycles in tree</label> 1982 </object> 1983 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1984 <border>5</border> 1985 </object> 1986 <object class="sizeritem"> 1987 <object class="wxCheckBox" name="cbProcessAutoGenerated"> 1988 <label>Process auto-generated areas</label> 1989 <hidden>1</hidden> 1990 </object> 1991 <option>0</option> 1992 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 1993 <border>5</border> 1994 </object> 1995 <object class="sizeritem"> 2026 1996 <object class="wxCheckBox" name="cbEditorUseImeWorkaround"> 2027 1997 <label>Use IME workaround for editor input*</label> … … 2041 2011 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2042 2012 <border>5</border> 2013 </object> 2014 </object> 2015 </object> 2016 <object class="wxPanel" name="OptionsPageAutosave"> 2017 <object class="wxBoxSizer"> 2018 <orient>wxVERTICAL</orient> 2019 <object class="sizeritem"> 2020 <object class="wxCheckBox" name="cbAutoSave"> 2021 <label>Autosave active</label> 2022 </object> 2023 <option>0</option> 2024 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2025 <border>5</border> 2026 </object> 2027 <object class="sizeritem"> 2028 <object class="wxFlexGridSizer"> 2029 <object class="sizeritem"> 2030 <object class="wxStaticText"> 2031 <label>Delay after key pressed:</label> 2032 </object> 2033 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2034 <border>5</border> 2035 </object> 2036 <object class="sizeritem"> 2037 <object class="wxTextCtrl" name="tfAutoSaveDelayKeyPressed"/> 2038 <flag>wxALL|wxEXPAND</flag> 2039 <border>5</border> 2040 </object> 2041 <object class="sizeritem"> 2042 <object class="wxStaticText"> 2043 <label>second(s)</label> 2044 </object> 2045 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2046 <border>5</border> 2047 </object> 2048 <cols>3</cols> 2049 <object class="sizeritem"> 2050 <object class="wxStaticText"> 2051 <label>Delay after page dirty:</label> 2052 </object> 2053 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2054 <border>5</border> 2055 </object> 2056 <object class="sizeritem"> 2057 <object class="wxTextCtrl" name="tfAutoSaveDelayDirty"/> 2058 <flag>wxALL|wxEXPAND</flag> 2059 <border>5</border> 2060 </object> 2061 <object class="sizeritem"> 2062 <object class="wxStaticText"> 2063 <label>second(s)</label> 2064 </object> 2065 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2066 <border>5</border> 2067 </object> 2068 </object> 2069 <option>0</option> 2070 <flag>wxTOP|wxLEFT|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2043 2071 </object> 2044 2072 </object> … … 2152 2180 </object> 2153 2181 <object class="sizeritem"> 2182 <object class="wxStaticLine"/> 2183 <option>0</option> 2184 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2185 </object> 2186 <object class="sizeritem"> 2187 <object class="wxFlexGridSizer"> 2188 <cols>2</cols> 2189 <growablecols>1</growablecols> 2190 <object class="sizeritem"> 2191 <object class="wxStaticText"> 2192 <label>Wiki icon:</label> 2193 </object> 2194 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2195 <border>5</border> 2196 </object> 2197 <object class="sizeritem"> 2198 <object class="wxTextCtrl" name="tfWikiIcon"/> 2199 <flag>wxALL|wxEXPAND</flag> 2200 <border>5</border> 2201 </object> 2202 <object class="sizeritem"> 2203 <object class="wxStaticText"> 2204 <label>Wiki-bound hotkey:</label> 2205 </object> 2206 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2207 <border>5</border> 2208 </object> 2209 <object class="sizeritem"> 2210 <object class="wxTextCtrl" name="tfHotKeyShowHideByWiki"/> 2211 <flag>wxALL|wxEXPAND</flag> 2212 <border>5</border> 2213 </object> 2214 <object class="sizeritem"> 2215 <object class="wxStaticText"> 2216 <label>Wiki language:</label> 2217 </object> 2218 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2219 <border>5</border> 2220 </object> 2221 <object class="sizeritem"> 2222 <object class="wxChoice" name="chWikiWikiLanguage"> 2223 <content/> 2224 </object> 2225 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2226 <border>5</border> 2227 </object> 2228 </object> 2229 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2230 </object> 2231 </object> 2232 </object> 2233 <object class="wxPanel" name="OptionsPageCwHeadings"> 2234 <object class="wxBoxSizer"> 2235 <orient>wxVERTICAL</orient> 2236 <object class="sizeritem"> 2154 2237 <object class="wxStaticText" name=""> 2155 <label> Titleof new pages</label>2238 <label>Heading of new pages</label> 2156 2239 <font> 2157 2240 <size>8</size> … … 2172 2255 <object class="sizeritem"> 2173 2256 <object class="wxStaticText"> 2174 <label> Titleprefix:</label>2257 <label>Heading prefix:</label> 2175 2258 </object> 2176 2259 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> … … 2184 2267 <object class="sizeritem"> 2185 2268 <object class="wxStaticText"> 2186 <label>Wiki word to title:</label>2269 <label>Wiki word to heading:</label> 2187 2270 </object> 2188 2271 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> … … 2217 2300 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2218 2301 </object> 2302 <object class="spacer"> 2303 <size>0,5</size> 2304 </object> 2305 <object class="sizeritem"> 2306 <object class="wxStaticText" name=""> 2307 <label>Headings as aliases</label> 2308 <font> 2309 <size>8</size> 2310 <style>default</style> 2311 <weight>bold</weight> 2312 <family>normal</family> 2313 <underlined>0</underlined> 2314 </font> 2315 </object> 2316 <option>0</option> 2317 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2318 <border>5</border> 2319 </object> 2219 2320 <object class="sizeritem"> 2220 2321 <object class="wxBoxSizer"> 2221 2322 <orient>wxHORIZONTAL</orient> 2323 <object class="sizeritem"> 2324 <object class="wxStaticText"> 2325 <label>Up to heading depth:</label> 2326 </object> 2327 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2328 <border>5</border> 2329 </object> 2330 <object class="sizeritem"> 2331 <object class="wxSpinCtrl" name="scHeadingsAsAliasesDepth"> 2332 <value>0</value> 2333 <min>0</min> 2334 <max>15</max> 2335 </object> 2336 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2337 <border>5</border> 2338 </object> 2222 2339 </object> 2223 2340 <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 2224 2341 </object> 2225 <object class="sizeritem">2226 <object class="wxFlexGridSizer">2227 <cols>2</cols>2228 <growablecols>1</growablecols>2229 <object class="sizeritem">2230 <object class="wxStaticText">2231 <label>Wiki icon:</label>2232 </object>2233 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>2234 <border>5</border>2235 </object>2236 <object class="sizeritem">2237 <object class="wxTextCtrl" name="tfWikiIcon"/>2238 <flag>wxALL|wxEXPAND</flag>2239 <border>5</border>2240 </object>2241 <object class="sizeritem">2242 <object class="wxStaticText">2243 <label>Wiki-bound hotkey:</label>2244 </object>2245 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>2246 <border>5</border>2247 </object>2248 <object class="sizeritem">2249 <object class="wxTextCtrl" name="tfHotKeyShowHideByWiki"/>2250 <flag>wxALL|wxEXPAND</flag>2251 <border>5</border>2252 </object>2253 </object>2254 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>2255 </object>2256 2342 </object> 2257 2343 </object> 2258 <object class="wxPanel" name="OptionsPageCw FileStorage">2344 <object class="wxPanel" name="OptionsPageCwAdvanced"> 2259 2345 <object class="wxBoxSizer"> 2260 2346 <orient>wxVERTICAL</orient> … … 5001 5087 </object> 5002 5088 </object> 5089 <object class="wxDialog" name="NewWikiSettingsDialog"> 5090 <title>Basic wiki settings</title> 5091 <centered>1</centered> 5092 <style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style> 5093 <object class="wxBoxSizer"> 5094 <orient>wxVERTICAL</orient> 5095 <object class="sizeritem"> 5096 <object class="wxStaticText"> 5097 <label>Database type:</label> 5098 </object> 5099 <flag>wxALL|wxEXPAND</flag> 5100 <border>5</border> 5101 </object> 5102 <object class="sizeritem"> 5103 <object class="wxListBox" name="lbDatabaseType"> 5104 <content/> 5105 </object> 5106 <option>1</option> 5107 <flag>wxALL|wxEXPAND</flag> 5108 <border>5</border> 5109 </object> 5110 <object class="sizeritem"> 5111 <object class="wxStaticLine"/> 5112 <option>0</option> 5113 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 5114 <border>5</border> 5115 </object> 5116 <object class="sizeritem"> 5117 <object class="wxStaticText"> 5118 <label>Wiki language:</label> 5119 </object> 5120 <flag>wxALL|wxEXPAND</flag> 5121 <border>5</border> 5122 </object> 5123 <object class="sizeritem"> 5124 <object class="wxListBox" name="lbWikiLanguage"> 5125 <content/> 5126 </object> 5127 <option>1</option> 5128 <flag>wxALL|wxEXPAND</flag> 5129 <border>5</border> 5130 </object> 5131 <object class="sizeritem"> 5132 <object class="wxStaticText"> 5133 <label>(Use selected defaults if you are unsure)</label> 5134 </object> 5135 <flag>wxALL|wxEXPAND</flag> 5136 <border>5</border> 5137 </object> 5138 <object class="sizeritem"> 5139 <object class="wxBoxSizer"> 5140 <orient>wxHORIZONTAL</orient> 5141 <object class="sizeritem"> 5142 <object class="wxButton" name="btnOk"> 5143 <label>OK</label> 5144 <default>1</default> 5145 <style></style> 5146 </object> 5147 <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> 5148 <border>5</border> 5149 </object> 5150 <object class="sizeritem"> 5151 <object class="wxButton" name="btnCancel"> 5152 <label>Cancel</label> 5153 </object> 5154 <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> 5155 <border>5</border> 5156 </object> 5157 </object> 5158 <option>0</option> 5159 <flag>wxALL|wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag> 5160 </object> 5161 </object> 5162 </object> 5003 5163 <object class="wxPanel" name="LogWindow"> 5004 5164 <object class="wxBoxSizer"> -
branches/mbutscher/next/WikidPadStarter.py
r174 r178 1 1 #!/bin/python 2 2 3 import sys, os, traceback, os.path, glob, shutil 3 import sys, os, traceback, os.path, glob, shutil, imp, warnings 4 4 os.stat_float_times(True) 5 5 … … 8 8 # sys.path.append(r"C:\Daten\Projekte\Wikidpad\Next20\lib") 9 9 10 11 # Switch off warnings about my special import management 12 warnings.simplefilter('ignore', RuntimeWarning) 13 14 15 _realImport = __builtins__["__import__"] 16 17 def _retrieveModule(nameComps, path): 18 """ 19 Returns <module>, <subPath (if package)> 20 """ 21 if sys.modules.has_key(".".join(nameComps)): 22 foundModule = sys.modules[".".join(nameComps)] # ??? 23 else: 24 foundModule = None 25 26 27 if len(nameComps) == 0: 28 f, impPath, desc = imp.find_module("__init__", [path]) 29 else: 30 # print "--_retrieveModule13", repr((nameComps, path)) 31 try: 32 f, impPath, desc = imp.find_module(nameComps[-1], [path]) 33 # print "--_retrieveModule15", repr((f, impPath, desc)) 34 finally: 35 pass 36 37 if desc[2] == imp.SEARCH_ERROR: 38 # print "--_retrieveModule27" 39 raise ImportError 40 41 if desc[2] != imp.PKG_DIRECTORY: 42 if foundModule is not None: 43 f.close() 44 return foundModule, None 45 46 try: 47 # print "--_retrieveModule32" 48 module = imp.load_module(".".join(nameComps), f, impPath, 49 desc) 50 # print "--_retrieveModule34" 51 sys.modules[".".join(nameComps)] = module 52 # print "--_retrieveModule36" 53 return module, None 54 finally: 55 if f is not None: 56 f.close() 57 else: 58 path = impPath 59 if foundModule is not None: 60 return foundModule, path 61 62 f, impPath, desc = imp.find_module("__init__", [path]) 63 try: 64 module = imp.load_module(".".join(nameComps), f, impPath, 65 desc) 66 sys.modules[".".join(nameComps)] = module 67 return module, path 68 finally: 69 if f is not None: 70 f.close() 71 72 73 74 def _retrieveFinalModule(modComps, path, importComps): 75 if importComps == [""]: 76 importComps = [] 77 78 # print "--_retrieveFinalModule2", repr((modComps, importComps)) 79 80 if sys.modules.has_key(".".join(modComps + importComps)): 81 # print "--_retrieveFinalModule5" 82 module = sys.modules[".".join(modComps + importComps)] 83 return module, os.path.dirname(module.__file__) # ??? 84 85 if sys.modules.has_key(".".join(modComps)): 86 module = sys.modules[".".join(modComps)] # ??? 87 else: 88 f, impPath, desc = imp.find_module("__init__", [path]) 89 try: 90 module = imp.load_module(".".join(modComps), f, impPath, 91 desc) 92 sys.modules[".".join(modComps)] = module 93 finally: 94 if f is not None: 95 f.close() 96 97 # print "--_retrieveFinalModule14", repr((modComps, importComps, path)) 98 99 if len(importComps) == 0: 100 return module, path 101 102 while len(importComps) > 0: 103 parentModule = module 104 105 # print "--_retrieveFinalModule33", repr((modComps + importComps[:1], path)) 106 module, nextPath = _retrieveModule(modComps + importComps[:1], path) 107 # print "--_retrieveFinalModule35", repr((module, nextPath)) 108 if module is None: 109 raise ImportError() # TODO Own error message 110 111 if not parentModule.__dict__.has_key(importComps[0]): 112 parentModule.__dict__[importComps[0]] = module 113 114 path = nextPath 115 modComps.append(importComps[0]) 116 del importComps[0] 117 118 if nextPath is None: 119 if len(importComps) != 0: 120 raise ImportError() # TODO Own error message 121 122 return module, path 123 124 125 return module, path 126 127 128 129 def _newImport(name, globals=None, locals=None, fromlist=None, level=-1): 130 """ 131 Replaces the internal __import__ function to allow relaxed checks for 132 relative imports in plugins. 133 """ 134 if level <= 0: 135 return _realImport(name, globals, locals, fromlist, level) 136 137 # print "--import", repr((name, globals.get("__name__") if globals is not None else None, 138 # globals.get("__file__") if globals is not None else None, fromlist, level)) 139 140 # except ImportError, ie: 141 142 modComps = globals["__name__"].split(".") 143 if not modComps[0].startswith("cruelimport"): # a tag to recognize 144 return _realImport(name, globals, locals, fromlist, level) 145 146 imp.acquire_lock() 147 try: 148 # print "--_newImport4", repr((name, globals.get("__name__") if globals is not None else None, 149 # globals.get("__file__") if globals is not None else None, fromlist, level)) 150 151 ilevel = level 152 path = globals["__file__"] 153 154 while ilevel > 0 and len(modComps) > 0: 155 path = os.path.dirname(path) 156 del modComps[-1] 157 ilevel -= 1 158 159 if ilevel > 0: 160 raise 161 162 if not fromlist: # is this possible? 163 raise ie 164 165 # if len(modComps) == 0: 166 # do ? 167 importComps = name.split(".") 168 if importComps == [""]: 169 importComps = [] 170 171 # print "--_newImport27", repr((modComps, path, importComps)) 172 173 module, path = _retrieveFinalModule(modComps, path, importComps) 174 175 # print "--_newImport29", repr((module, path)) 176 177 for frm in fromlist: 178 if frm == "*": 179 continue 180 if not module.__dict__.has_key(frm): 181 try: 182 # print "--_newImport34", repr((modComps, frm, path)) 183 submod = _retrieveModule(modComps + [frm], path) 184 # print "--_newImport37", repr(submod) 185 module.__dict__[frm] = submod 186 except ImportError: 187 # print "--_newImport42" 188 pass 189 190 # print "--_newImport49", repr((module, path)) 191 192 return module 193 except: 194 traceback.print_exc() 195 raise 196 finally: 197 imp.release_lock() 198 199 200 201 __builtins__["__import__"] = _newImport 10 202 11 203 from Consts import VERSION_STRING, VERSION_TUPLE … … 22 214 23 215 24 # create a Trace object, telling it what to ignore, and whether to 25 # do tracing or line-counting or both. 216 # create a Trace object 26 217 import trace 27 218 __builtins__["tracer"] = trace.Trace( … … 29 220 trace=1, 30 221 count=0) 31 32 33 222 34 223 -
branches/mbutscher/next/extensions/autoNew.py
r174 r178 56 56 kb = wiki.getKeyBindings() 57 57 58 return ((autoNewNumbered, _(u" Maintain|Create new page") + u"\t" +58 return ((autoNewNumbered, _(u"Create new page") + u"\t" + 59 59 kb.Plugin_AutoNew_Numbered, _(u"Create new page")),) 60 60 -
branches/mbutscher/next/lib/pwiki/AdditionalDialogs.py
r174 r178 18 18 from StringOps import uniToGui, guiToUni, mbcsEnc, mbcsDec, \ 19 19 escapeForIni, unescapeForIni, escapeHtml, strftimeUB, pathEnc 20 from wikidata import DbBackendUtils 21 20 22 from WikiExceptions import * 21 23 import Exporters, Importers … … 31 33 Called for "Append/Prepend wiki word" in tree node context menu 32 34 """ 33 34 35 def __init__(self, pWiki, parent, ID, title=u"Select Wiki Word", 35 36 pos=wx.DefaultPosition, size=wx.DefaultSize, … … 409 410 self.activateSelectedWikiWords(3) 410 411 411 412 412 OpenWikiWordDialog.runModal = staticmethod(runDialogModalFactory(OpenWikiWordDialog)) 413 413 414 415 416 class ChooseWikiWordDialog(wx.Dialog): 417 """ 418 Used to allow selection from list of parents, parentless words, children 419 or bookmarked words. 420 """ 421 def __init__(self, pWiki, ID, words, motionType, title="Choose Wiki Word", 422 pos=wx.DefaultPosition, size=wx.DefaultSize): 423 d = wx.PreDialog() 424 self.PostCreate(d) 425 426 self.pWiki = pWiki 427 res = wx.xrc.XmlResource.Get() 428 res.LoadOnDialog(self, self.pWiki, "ChooseWikiWordDialog") 429 430 self.ctrls = XrcControls(self) 431 432 self.SetTitle(title) 433 self.ctrls.staTitle.SetLabel(title) 434 435 self.motionType = motionType 436 self.words = words 437 wordsgui = map(uniToGui, words) 438 439 self.ctrls.lb.Set(wordsgui) 440 441 self.ctrls.btnOk.SetId(wx.ID_OK) 442 self.ctrls.btnCancel.SetId(wx.ID_CANCEL) 443 444 # Fixes focus bug under Linux 445 self.SetFocus() 446 447 wx.EVT_BUTTON(self, GUI_ID.btnDelete, self.OnDelete) 448 wx.EVT_BUTTON(self, GUI_ID.btnNewTab, self.OnNewTab) 449 wx.EVT_BUTTON(self, wx.ID_OK, self.OnOk) 450 wx.EVT_LISTBOX_DCLICK(self, GUI_ID.lb, self.OnOk) 451 452 453 def OnDelete(self, evt): 454 sellen = len(self.ctrls.lb.GetSelections()) 455 if sellen > 0: 456 answer = wx.MessageBox( 457 _(u"Do you want to delete %i wiki page(s)?") % sellen, 458 (u"Delete Wiki Page(s)"), 459 wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION, self) 460 461 if answer != wx.YES: 462 return 463 464 self.pWiki.saveAllDocPages() 465 for s in self.ctrls.lb.GetSelections(): 466 delword = self.words[s] 467 # Un-alias word 468 delword = self.pWiki.getWikiData().getUnAliasedWikiWord(delword) 469 470 if delword is not None: 471 page = self.pWiki.getWikiDocument().getWikiPage(delword) 472 page.deletePage() 473 474 # self.pWiki.getWikiData().deleteWord(delword) 475 476 # trigger hooks 477 self.pWiki.hooks.deletedWikiWord(self.pWiki, delword) 478 479 # self.pWiki.pageHistory.goAfterDeletion() 480 481 self.EndModal(wx.ID_OK) 482 483 484 def OnOk(self, evt): 485 self.activateSelected(False) 486 # sels = self.ctrls.lb.GetSelections() 487 # if len(sels) != 1: 488 # return # We can only go to exactly one wiki word 489 # 490 # wikiWord = self.words[sels[0]] 491 # try: 492 # self.pWiki.openWikiPage(wikiWord, forceTreeSyncFromRoot=True, 493 # motionType=self.motionType) 494 # finally: 495 # self.EndModal(GUI_ID.btnDelete) 496 497 498 def OnNewTab(self, evt): 499 self.activateSelected(True) 500 501 502 def activateSelected(self, allNewTabs): 503 """ 504 allNewTabs -- True: All selected words go to newly created tabs, 505 False: The first selected word changes current tab 506 """ 507 selIdxs = self.ctrls.lb.GetSelections() 508 if len(selIdxs) == 0: 509 return 510 511 try: 512 if not allNewTabs: 513 self.pWiki.openWikiPage(self.words[selIdxs[0]], 514 forceTreeSyncFromRoot=True, motionType=self.motionType) 515 516 selWords = [self.words[idx] for idx in selIdxs[1:]] 517 else: 518 selWords = [self.words[idx] for idx in selIdxs] 519 520 for word in selWords: 521 self.pWiki.activatePageByUnifiedName(u"wikipage/" + word, 2) 522 finally: 523 self.EndModal(wx.ID_OK) 524 525 414 526 415 527 … … 1236 1348 1237 1349 1238 class ChooseWikiWordDialog(wx.Dialog):1239 """1240 Used to allow selection from list of parents, parentless words, children1241 or bookmarked words.1242 """1243 def __init__(self, pWiki, ID, words, motionType, title="Choose Wiki Word",1244 pos=wx.DefaultPosition, size=wx.DefaultSize):1245 d = wx.PreDialog()1246 self.PostCreate(d)1247 1248 self.pWiki = pWiki1249 res = wx.xrc.XmlResource.Get()1250 res.LoadOnDialog(self, self.pWiki, "ChooseWikiWordDialog")1251 1252 self.ctrls = XrcControls(self)1253 1254 self.SetTitle(title)1255 self.ctrls.staTitle.SetLabel(title)1256 1257 self.motionType = motionType1258 self.words = words1259 wordsgui = map(uniToGui, words)1260 1261 self.ctrls.lb.Set(wordsgui)1262 1263 self.ctrls.btnOk.SetId(wx.ID_OK)1264 self.ctrls.btnCancel.SetId(wx.ID_CANCEL)1265 1266 # Fixes focus bug under Linux1267 self.SetFocus()1268 1269 wx.EVT_BUTTON(self, GUI_ID.btnDelete, self.OnDelete)1270 wx.EVT_BUTTON(self, GUI_ID.btnNewTab, self.OnNewTab)1271 wx.EVT_BUTTON(self, wx.ID_OK, self.OnOk)1272 wx.EVT_LISTBOX_DCLICK(self, GUI_ID.lb, self.OnOk)1273 1274 1275 def OnDelete(self, evt):1276 sellen = len(self.ctrls.lb.GetSelections())1277 if sellen > 0:1278 answer = wx.MessageBox(1279 _(u"Do you want to delete %i wiki page(s)?") % sellen,1280 (u"Delete Wiki Page(s)"),1281 wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION, self)1282 1283 if answer != wx.YES:1284 return1285 1286 self.pWiki.saveAllDocPages()1287 for s in self.ctrls.lb.GetSelections():1288 delword = self.words[s]1289 # Un-alias word1290 delword = self.pWiki.getWikiData().getUnAliasedWikiWord(delword)1291 1292 if delword is not None:1293 page = self.pWiki.getWikiDocument().getWikiPage(delword)1294 page.deletePage()1295 1296 # self.pWiki.getWikiData().deleteWord(delword)1297 1298 # trigger hooks1299 self.pWiki.hooks.deletedWikiWord(self.pWiki, delword)1300 1301 # self.pWiki.pageHistory.goAfterDeletion()1302 1303 self.EndModal(wx.ID_OK)1304 1305 1306 def OnOk(self, evt):1307 self.activateSelected(False)1308 # sels = self.ctrls.lb.GetSelections()1309 # if len(sels) != 1:1310 # return # We can only go to exactly one wiki word1311 #1312 # wikiWord = self.words[sels[0]]1313 # try:1314 # self.pWiki.openWikiPage(wikiWord, forceTreeSyncFromRoot=True,1315 # motionType=self.motionType)1316 # finally:1317 # self.EndModal(GUI_ID.btnDelete)1318 1319 1320 def OnNewTab(self, evt):1321 self.activateSelected(True)1322 1323 1324 def activateSelected(self, allNewTabs):1325 """1326 allNewTabs -- True: All selected words go to newly created tabs,1327 False: The first selected word changes current tab1328 """1329 selIdxs = self.ctrls.lb.GetSelections()1330 if len(selIdxs) == 0:1331 return1332 1333 try:1334 if not allNewTabs:1335 self.pWiki.openWikiPage(self.words[selIdxs[0]],1336 forceTreeSyncFromRoot=True, motionType=self.motionType)1337 1338 selWords = [self.words[idx] for idx in selIdxs[1:]]1339 else:1340 selWords = [self.words[idx] for idx in selIdxs]1341 1342 for word in selWords:1343 self.pWiki.activatePageByUnifiedName(u"wikipage/" + word, 2)1344 finally:1345 self.EndModal(wx.ID_OK)1346 1347 1348 1349 1350 def _children(win, indent=0): 1350 1351 print " " * indent + repr(win), win.GetId() 1351 1352 for c in win.GetChildren(): 1352 1353 _children(c, indent=indent+2) 1354 1355 1356 1357 class NewWikiSettings(wx.Dialog): 1358 """ 1359 Dialog to choose options when creating a new wiki or when a wiki with 1360 damaged configuration file is opened. 1361 """ 1362 DEFAULT_GREY = 1 1363 1364 def __init__(self, parent, ID, mainControl, defDbHandler=None, 1365 defWikiLang=None, title="", pos=wx.DefaultPosition, 1366 size=wx.DefaultSize): 1367 d = wx.PreDialog() 1368 self.PostCreate(d) 1369 1370 self.mainControl = mainControl 1371 self.value = None, None 1372 1373 # self.listPagesOperation = ListWikiPagesOperation() 1374 res = wx.xrc.XmlResource.Get() 1375 res.LoadOnDialog(self, parent, "NewWikiSettingsDialog") 1376 1377 self.ctrls = XrcControls(self) 1378 1379 # Retrieve lists of db backends and wiki languages 1380 self.dbHandlers = DbBackendUtils.listHandlers() 1381 self.wikiLanguages = wx.GetApp().listWikiLanguageDescriptions() 1382 1383 errMsg = "" 1384 1385 if len(self.dbHandlers) == 0: 1386 errMsg += 'No data handler available' 1387 if len(self.wikiLanguages) == 0: 1388 errMsg += 'No wiki language handler available' 1389 1390 if errMsg: 1391 self.mainControl.displayErrorMessage(errMsg) 1392 self.EndModal(wx.ID_CANCEL) 1393 return 1394 1395 if defDbHandler is not NewWikiSettings.DEFAULT_GREY: 1396 self.ctrls.lbDatabaseType.Set([h[1] for h in self.dbHandlers]) 1397 for i, h in enumerate(self.dbHandlers): 1398 if h[0] == defDbHandler: 1399 self.ctrls.lbDatabaseType.SetSelection(i) 1400 break 1401 else: 1402 self.ctrls.lbDatabaseType.SetSelection(0) 1403 else: 1404 self.ctrls.lbDatabaseType.Enable(False) 1405 self.ctrls.lbDatabaseType.SetBackgroundColour(wx.LIGHT_GREY) 1406 1407 if defWikiLang is not NewWikiSettings.DEFAULT_GREY: 1408 self.ctrls.lbWikiLanguage.Set([l[1] for l in self.wikiLanguages]) 1409 for i, l in enumerate(self.wikiLanguages): 1410 if l[0] == defWikiLang: 1411 self.ctrls.lbWikiLanguage.SetSelection(i) 1412 break 1413 else: 1414 self.ctrls.lbWikiLanguage.SetSelection(0) 1415 else: 1416 self.ctrls.lbWikiLanguage.Enable(False) 1417 self.ctrls.lbWikiLanguage.SetBackgroundColour(wx.LIGHT_GREY) 1418 1419 self.ctrls.btnOk.SetId(wx.ID_OK) 1420 self.ctrls.btnCancel.SetId(wx.ID_CANCEL) 1421 1422 wx.EVT_BUTTON(self, wx.ID_OK, self.OnOk) 1423 1424 1425 def GetValue(self): 1426 return self.value 1427 1428 def OnOk(self, evt): 1429 dbSel = self.ctrls.lbDatabaseType.GetSelection() 1430 langSel = self.ctrls.lbWikiLanguage.GetSelection() 1431 1432 dbH = None 1433 wlH = None 1434 1435 if dbSel != wx.NOT_FOUND: 1436 dbH = self.dbHandlers[dbSel][0] 1437 if langSel != wx.NOT_FOUND: 1438 wlH = self.wikiLanguages[langSel][0] 1439 1440 self.value = dbH, wlH 1441 1442 self.EndModal(wx.ID_OK) 1443 1444 NewWikiSettings.runModal = staticmethod(runDialogModalFactory(NewWikiSettings)) 1445 1353 1446 1354 1447 -
branches/mbutscher/next/lib/pwiki/Configuration.py
r175 r178 613 613 614 614 # Editor options 615 ("main", "sync_highlight_byte_limit"): " 5120", # Size limit when to start asyn. highlighting in editor615 ("main", "sync_highlight_byte_limit"): "400", # Size limit when to start asyn. highlighting in editor 616 616 ("main", "async_highlight_delay"): "0.2", # Delay after keypress before starting async. highlighting 617 617 ("main", "editor_shortHint_delay"): "500", # Delay in milliseconds until the short hint defined for a wikiword is displayed … … 714 714 ("main", "windowmode"): "0", 715 715 ("main", "frame_stayOnTop"): "False", # Should frame stay on top of all other windows? 716 ("main", "lowresources"): "0", # The value must be a number, not a truth value!717 716 ("main", "showontray"): "0", 718 717 ("main", "minimize_on_closeButton"): "False", # Minimize if the close button ("X") is pressed … … 735 734 ("wiki_db", "data_dir"): u"data", 736 735 ("main", "wiki_name"): None, 736 ("main", "wiki_wikiLanguage"): "wikidpad_default_2_0", # Internal name of wiki language of the wiki 737 737 ("main", "last_wiki_word"): None, # Show this wiki word as leftmost wiki word on startup if first_wiki_word is empty 738 738 ("main", "tree_last_root_wiki_word"): None, # Last root word of wiki tree … … 762 762 ("main", "log_window_autoshow"): "Gray", # Automatically show log window if messages added? 763 763 764 ("main", "headingsAsAliases_depth"): "0", # Maximum heading depth for which aliases should be generated for 765 # each heading up to and including this depth. 766 764 767 # For file storage (esp. identity check) 765 768 ("main", "fileStorage_identity_modDateMustMatch"): "False", # Modification date must match for file to be identical -
branches/mbutscher/next/lib/pwiki/DocPagePresenter.py
r177 r178 215 215 evtprops["addToHistory"] = addToHistory 216 216 evtprops["forceTreeSyncFromRoot"] = forceTreeSyncFromRoot 217 217 218 218 langHelper = wx.GetApp().createWikiLanguageHelper( 219 219 self.getWikiDocument().getWikiDefaultWikiLanguage()) 220 221 errMsg = langHelper.checkForInvalidWikiWord(wikiWord, 222 self.getWikiDocument()) 220 221 errMsg = None 222 223 # The "if" ensures that existing pages can be opened even 224 # if syntax is (or became) incompatible 225 if not self.getWikiDocument().isDefinedWikiPage(wikiWord): 226 errMsg = langHelper.checkForInvalidWikiWord(wikiWord, 227 self.getWikiDocument()) 223 228 224 229 if errMsg is not None: -
branches/mbutscher/next/lib/pwiki/DocPages.py
r177 r178 482 482 self.liveTextPlaceHold = object() 483 483 484 def checkFileSignatureAndMarkDirty(self, fireEvent=True): 485 return True 484 486 485 487 … … 555 557 if len(self.txtEditors) == 0: 556 558 with self.textOperationLock: 557 if self.isDefined() and not self.getWikiDocument()\ 558 .checkFileSignatureForWikiWordAndMarkDirty( 559 self.wikiWord): 559 if not self.checkFileSignatureAndMarkDirty(): 560 560 self.initiateUpdate() 561 561 … … 765 765 self.getWikiData().deleteWord(self.getWikiWord()) 766 766 767 callInMainThreadAsync(self.fireMiscEventKeys,767 wx.CallAfter(self.fireMiscEventKeys, 768 768 ("deleted page", "deleted wiki page")) 769 769 … … 787 787 788 788 789 def checkFileSignature(self): 790 """ 791 Check if file signature is valid and send an event if not 792 """ 793 with self.textOperationLock: 794 valid = self.getWikiData().validateFileSignatureForWord( 795 self.wikiWord, setMetaDataDirty=False) 796 797 if valid: 798 return True 799 800 self.markMetaDataDirty() 801 802 callInMainThreadAsync(self.fireMiscEventKeys, 803 ("checked file signature invalid",)) 804 805 return False 789 # def checkFileSignature(self): 790 # """ 791 # Check if file signature is valid and send an event if not 792 # """ 793 # with self.textOperationLock: 794 # if not self.isDefined(): 795 # return True # ? 796 # 797 # valid = self.getWikiData().validateFileSignatureForWord( 798 # self.wikiWord, setMetaDataDirty=False) 799 # 800 # if valid: 801 # return True 802 # 803 # self.markMetaDataDirty() 804 # 805 # callInMainThreadAsync(self.fireMiscEventKeys, 806 # ("checked file signature invalid",)) 807 # 808 # return False 806 809 807 810 … … 813 816 # return self.getWikiData().validateFileSignatureForWord( 814 817 # self.wikiWord, setMetaDataDirty=True) 818 819 820 def checkFileSignatureAndMarkDirty(self, fireEvent=True): 821 """ 822 First checks if file signature is valid, if not, the 823 "metadataprocessed" field of the word is set to 0 to mark 824 meta-data as not up-to-date. At last the signature is 825 refreshed. 826 827 This all is done inside the lock of the WikiData so it is 828 somewhat atomically. 829 """ 830 with self.textOperationLock: 831 if self.wikiDocument.isReadOnlyEffect(): 832 return True # TODO Error message? 833 834 if not self.isDefined(): 835 return True # TODO Error message? 836 837 wikiData = self.getWikiData() 838 word = self.wikiWord 839 840 proxyAccessLock = getattr(wikiData, "proxyAccessLock", None) 841 if proxyAccessLock is not None: 842 proxyAccessLock.acquire() 843 try: 844 valid = wikiData.validateFileSignatureForWord(word) 845 846 if valid: 847 return True 848 849 wikiData.setMetaDataState(word, 850 Consts.WIKIWORDMETADATA_STATE_DIRTY) 851 wikiData.refreshFileSignatureForWord(word) 852 finally: 853 if proxyAccessLock is not None: 854 proxyAccessLock.release() 855 856 editor = self.getTxtEditor() 857 858 if editor is not None: 859 # TODO Check for deadlocks 860 callInMainThread(editor.handleInvalidFileSignature, self) 861 862 if fireEvent: 863 wx.CallAfter(self.fireMiscEventKeys, 864 ("checked file signature invalid",)) 865 866 return False 867 815 868 816 869 … … 1026 1079 1027 1080 pageAst = self.getLivePageAstIfAvailable() 1028 # if pageAst is not None:1029 # return pageAst1030 1031 # # Current state1032 # text = self.getLiveText()1033 #1034 # # AST state1035 # pageAst = self.livePageAst1036 # baseText = self.livePageBaseText1037 # baseFormatDetails = self.livePageBaseFormatDetails1038 #1039 # if pageAst is not None and len(text) == len(baseText) and \1040 # formatDetails.isEquivTo(baseFormatDetails) and \1041 # text == baseText:1042 # return pageAst1043 1081 1044 1082 if pageAst is not None: … … 1062 1100 1063 1101 self.livePageAst = pageAst 1064 # self.livePageBaseText = text1065 1102 self.livePageBasePlaceHold = liveTextPlaceHold 1066 1103 self.livePageBaseFormatDetails = formatDetails 1067 1104 1068 1105 1069 # with self.textOperationLock:1070 # clt = time.clock()1071 1106 if self.isReadOnlyEffect(): 1072 1107 threadstop.testRunning() 1073 1108 return pageAst 1074 1109 1075 if False and allowMetaDataUpdate: # TODO: Option 1076 self._refreshMetaData(pageAst, formatDetails, fireEvent=fireEvent, 1077 threadstop=threadstop) 1078 1079 # self.refreshPropertiesFromPageAst(pageAst, threadstop=threadstop) 1080 # 1081 # formatDetails2 = self.getFormatDetails() 1082 # if not formatDetails.isEquivTo(formatDetails2): 1083 # # Formatting details have changed -> stop and wait for 1084 # # new round to update 1085 # threadstop.testRunning() 1086 # return pageAst 1087 # 1088 # self.refreshMainDbCacheFromPageAst(pageAst, fireEvent=fireEvent, 1089 # threadstop=threadstop) 1090 # 1091 # # print "--refreshTime14", repr(time.clock()-clt) 1092 # with self.textOperationLock: 1093 # threadstop.testRunning() 1094 # if self.saveDirtySince is None: 1095 # self.getWikiData().setMetaDataProcessed(1) 1096 # self.updateDirtySince = None 1097 # 1098 # return pageAst 1110 # if False and allowMetaDataUpdate: # TODO: Option 1111 # self._refreshMetaData(pageAst, formatDetails, fireEvent=fireEvent, 1112 # threadstop=threadstop) 1099 1113 1100 1114 with self.textOperationLock: … … 1142 1156 return self.refreshMainDbCacheFromPageAst(pageAst, fireEvent=fireEvent, 1143 1157 threadstop=threadstop) 1144 1145 # print "--refreshTime14", repr(time.clock()-clt)1146 1147 1148 # with self.textOperationLock:1149 # threadstop.testRunning()1150 # if self.saveDirtySince is None:1151 # self.getWikiData().setMetaDataProcessed(1)1152 # self.updateDirtySince = None1153 # return True1154 #1155 # return False1156 1158 1157 1159 … … 1199 1201 for node in propNodes: 1200 1202 for propKey, propValue in node.props: 1201 # if propKey == u"alias":1202 # if not langHelper.checkForInvalidWikiWord(propValue,1203 # self.getWikiDocument()):1204 #1205 # addProperty(u"alias", propValue)1206 # else:1207 1203 addProperty(propKey, propValue) 1208 1204 … … 1210 1206 threadstop.testRunning() 1211 1207 1212 # self.props = props1213 1208 self.props = None 1214 1215 # propAliases = self.props.get("alias")1216 # if propAliases is not None:1217 # for alias in propAliases:1218 # self.getWikiData().setAsAlias(alias)1219 1209 1220 1210 try: … … 1274 1264 childRelationSet.add(toWord) 1275 1265 1276 # for t in pageAst.iterDeep(): 1277 # if t.name == "todoEntry": 1278 # addTodo(t.key + t.delimiter + t.valueNode.getString()) 1279 # elif t.name == "wikiWord": 1280 # addChildRelationship(t.wikiWord, t.pos) 1281 1266 # Add todo entries 1282 1267 todoTokens = pageAst.iterDeepByName("todoEntry") 1283 1268 for t in todoTokens: … … 1286 1271 threadstop.testRunning() 1287 1272 1273 # Add child relations 1288 1274 wwTokens = pageAst.iterDeepByName("wikiWord") 1289 1275 for t in wwTokens: … … 1292 1278 threadstop.testRunning() 1293 1279 1294 # matchTerms = [(self.wikiWord, 0, self.wikiWord, -1)] 1280 # Add aliases to match terms 1295 1281 matchTerms = [] 1296 1282 … … 1309 1295 matchTerms.append((v, ALIAS_TYPE, self.wikiWord, -1)) 1310 1296 1311 with self.textOperationLock: 1312 clt = time.clock() 1297 # Add headings to match terms if wanted 1298 depth = self.wikiDocument.getWikiConfig().getint( 1299 "main", "headingsAsAliases_depth") 1300 1301 if depth > 0: 1302 HEADALIAS_TYPE = Consts.WIKIWORDMATCHTERMS_TYPE_FROM_CONTENT 1303 for node in pageAst.iterFlatByName("heading"): 1304 threadstop.testRunning() 1305 if node.level > depth: 1306 continue 1307 1308 title = node.getString() 1309 if title.endswith(u"\n"): 1310 title = title[:-1] 1311 1312 matchTerms.append((title, HEADALIAS_TYPE, self.wikiWord, 1313 node.pos)) 1314 1315 with self.textOperationLock: 1313 1316 threadstop.testRunning() 1314 1317 1315 # self.todos = todos1316 # self.childRelations = childRelations1317 # self.childRelationSet = childRelationSet1318 1318 self.todos = None 1319 1319 self.childRelations = None -
branches/mbutscher/next/lib/pwiki/DocStructureCtrl.py
r177 r178 106 106 107 107 108 # if oldSizeVisible:109 # self.docPagePresenterSink.disconnect()110 # else:111 # self.docPagePresenterSink.setEventSource(112 # self.mainControl.getCurrentDocPagePresenter().getMiscEvent())113 # self.updateList()114 115 116 108 def miscEventHappened(self, miscevt): 117 109 """ -
branches/mbutscher/next/lib/pwiki/Exporters.py
r174 r178 1592 1592 self.outAppend(u"<pre>%s</pre>\n" % 1593 1593 escapeHtmlNoBreaks( 1594 mode.findFlatByName("preText").getString()), True,1594 node.findFlatByName("preText").getString()), True, 1595 1595 not self.asIntHtmlPreview) 1596 1596 if self.asIntHtmlPreview: -
branches/mbutscher/next/lib/pwiki/Localization.py
r173 r178 504 504 return 505 505 506 if findLangListIndex(locEntry) == -1: 507 continue 508 506 509 path = os.path.join(appDir, "WikidPad_" + locEntry + ".po") 507 510 if not os.path.exists(pathEnc(path)): 508 511 continue 509 512 510 513 try: 511 514 md = buildMessageDict(path) -
branches/mbutscher/next/lib/pwiki/MainApp.py
r169 r178 213 213 Localization.loadI18nDict(self.wikiAppDir, self.globalConfig.get( 214 214 "main", "gui_language", u"")) 215 216 self.lowResources = self.globalConfig.getboolean("main", "lowresources")217 215 218 216 if self.globalConfig.getboolean("main", "single_process"): … … 309 307 # Build icon cache 310 308 iconDir = os.path.join(self.wikiAppDir, "icons") 311 self.iconCache = IconCache(iconDir , self.lowResources)312 309 self.iconCache = IconCache(iconDir) 310 313 311 # Create plugin manager for application-wide plugins 314 self.pluginManager = PluginManager() 312 dirs = ( os.path.join(self.globalConfigSubDir, u'user_extensions'), 313 os.path.join(self.wikiAppDir, u'user_extensions'), 314 os.path.join(self.wikiAppDir, u'extensions') ) 315 self.pluginManager = PluginManager(dirs) 315 316 316 317 # Register app-wide plugin APIs … … 321 322 ("Options", 1), ("registerOptions",)) 322 323 323 describeWiki ParserApi = self.pluginManager.registerPluginAPI(324 ("WikiParser", 1), ("describeWiki Parser",))324 describeWikiLanguageApi = self.pluginManager.registerPluginAPI( 325 ("WikiParser", 1), ("describeWikiLanguage",)) 325 326 326 327 # Load plugins 327 328 # dirs = ( os.path.join(self.wikiAppDir, u'user_extensions'), 328 329 # os.path.join(self.wikiAppDir, u'extensions') ) 329 dirs = ( os.path.join(self.globalConfigSubDir, u'user_extensions'), 330 os.path.join(self.wikiAppDir, u'user_extensions'), 331 os.path.join(self.wikiAppDir, u'extensions') ) 332 333 self.pluginManager.loadPlugins( dirs, [ u'KeyBindings.py', 330 331 self.pluginManager.loadPlugins([ u'KeyBindings.py', 334 332 u'EvalLibrary.py'] ) 335 333 … … 351 349 insertionDescriptions) 352 350 353 wiki ParserDescriptions = reduce(lambda a, b: a+list(b),354 describeWiki ParserApi.describeWikiParser(1, self), [])355 356 self.wiki ParserDescDict = dict(( (item[0], item)357 for item in wiki ParserDescriptions ))351 wikiLanguageDescriptions = reduce(lambda a, b: a+list(b), 352 describeWikiLanguageApi.describeWikiLanguage(1, self), []) 353 354 self.wikiLanguageDescDict = dict(( (item[0], item) 355 for item in wikiLanguageDescriptions )) 358 356 359 357 self.collator = None … … 401 399 402 400 403 def getWiki ParserDescription(self, intLanguageName):401 def getWikiLanguageDescription(self, intLanguageName): 404 402 """ 405 403 Returns the parser description tuple as provided by a WikiParser plugin 406 404 or None if intLanguageName not found. 407 405 """ 408 return self.wikiParserDescDict.get(intLanguageName) 406 return self.wikiLanguageDescDict.get(intLanguageName) 407 408 def listWikiLanguageDescriptions(self): 409 """ 410 Return list of internal names of all available wiki languages 411 """ 412 if self.wikiLanguageDescDict.has_key("wikidpad_default_2_0"): 413 return [self.getWikiLanguageDescription("wikidpad_default_2_0")] + \ 414 [l for l in self.wikiLanguageDescDict.values() 415 if l[0] != "wikidpad_default_2_0"] 416 else: 417 return self.wikiLanguageDescDict.values() 418 409 419 410 420 def createWikiParser(self, intLanguageName, debugMode=False): … … 412 422 Must be thread-safe! 413 423 """ 414 desc = self.getWiki ParserDescription(intLanguageName)424 desc = self.getWikiLanguageDescription(intLanguageName) 415 425 if desc is None: 416 426 return None … … 437 447 Must be thread-safe 438 448 """ 439 desc = self.getWiki ParserDescription(intLanguageName)449 desc = self.getWikiLanguageDescription(intLanguageName) 440 450 if desc is None: 441 451 return None … … 555 565 return self.wikiAppDir 556 566 557 def getLowResources(self):558 """559 Return state of the low resources global setting560 """561 return self.lowResources562 563 567 def getIconCache(self): 564 568 """ -
branches/mbutscher/next/lib/pwiki/OptionsDialog.py
r175 r178 345 345 # 346 346 # guilang: special choice for GUI language 347 # wikilang: special choice for wiki language 347 348 348 349 # ttdf and color0 entries have a 4th item with the name 349 # of the "..." button to call a dialog to set.350 # of the "..." button to call for a dialog to set. 350 351 # selt entries have a list with the internal config names (unicode) of the 351 352 # possible choices as 4th item. … … 427 428 ("html_body_background", "tfHtmlBgImage", "t"), 428 429 ("html_header_doctype", "tfHtmlDocType", "t"), 429 430 431 ("auto_save", "cbAutoSave", "b"),432 ("auto_save_delay_key_pressed", "tfAutoSaveDelayKeyPressed", "i0+"),433 ("auto_save_delay_dirty", "tfAutoSaveDelayDirty", "i0+"),434 430 435 431 … … 530 526 ("wikiLockFile_ignore", "cbWikiLockFileIgnore", "b"), 531 527 ("wikiLockFile_create", "cbWikiLockFileCreate", "b"), 528 529 532 530 ("editor_useImeWorkaround", "cbEditorUseImeWorkaround", "b"), 533 531 534 532 533 ("auto_save", "cbAutoSave", "b"), 534 ("auto_save_delay_key_pressed", "tfAutoSaveDelayKeyPressed", "i0+"), 535 ("auto_save_delay_dirty", "tfAutoSaveDelayDirty", "i0+"), 536 537 535 538 # wiki-specific options 539 540 # "wiki_wikiLanguage" 536 541 537 542 ("footnotes_as_wikiwords", "cbFootnotesAsWws", "b"), 538 543 ("first_wiki_word", "tfFirstWikiWord", "t"), 544 545 546 ("export_default_dir", "tfExportDefaultDir", "t"), 547 548 ("tree_expandedNodes_rememberDuration", 549 "chTreeExpandedNodesRememberDuration", "seli"), 550 551 ("tree_force_scratchpad_visibility", 552 "cbTreeForceScratchpadVisibility", "b"), 553 554 ("option/wiki/log_window_autoshow", "cbLogWindowAutoShowWiki", "b3"), 555 556 ("wiki_icon", "tfWikiIcon", "t"), 557 ("hotKey_showHide_byWiki", "tfHotKeyShowHideByWiki", "t"), 558 ("wiki_wikiLanguage", "chWikiWikiLanguage", "wikilang"), 539 559 540 560 ("wikiPageTitlePrefix", "tfWikiPageTitlePrefix", "t"), 541 561 ("wikiPageTitle_creationMode", "chWikiPageTitleCreationMode", "seli"), 542 562 ("wikiPageTitle_fromLinkTitle", "cbWikiPageTitleFromLinkTitle", "b"), 543 544 ("export_default_dir", "tfExportDefaultDir", "t"), 545 546 ("tree_expandedNodes_rememberDuration", 547 "chTreeExpandedNodesRememberDuration", "seli"), 548 549 ("tree_force_scratchpad_visibility", 550 "cbTreeForceScratchpadVisibility", "b"), 551 552 ("option/wiki/log_window_autoshow", "cbLogWindowAutoShowWiki", "b3"), 553 554 ("wiki_icon", "tfWikiIcon", "t"), 555 556 ("hotKey_showHide_byWiki", "tfHotKeyShowHideByWiki", "t"), 557 563 ("headingsAsAliases_depth", "scHeadingsAsAliasesDepth", "spin"), 558 564 559 565 ("fileStorage_identity_modDateMustMatch", "cbFsModDateMustMatch", "b"), … … 578 584 ("fileLauncher_path", "tfFileLauncherPath", "t"), 579 585 ) 580 581 586 582 587 … … 588 593 ("OptionsPageHtml", N_(u" HTML preview/export")), 589 594 ("OptionsPageHtmlHeader", N_(u" HTML header")), 590 ("OptionsPageAutosave", N_(u" Autosave")),591 595 ("OptionsPageEditor", N_(u" Editor")), 592 596 ("OptionsPageEditorColors", N_(u" Editor Colors")), … … 597 601 ("OptionsPageSearching", N_(u" Searching")), 598 602 ("OptionsPageAdvanced", N_(u" Advanced")), 603 ("OptionsPageAutosave", N_(u" Autosave")), 599 604 ("OptionsPageCurrentWiki", N_(u"Current Wiki")), 600 ("OptionsPageCwFileStorage", N_(u" File Storage")) 605 ("OptionsPageCwHeadings", N_(u" Headings")), 606 ("OptionsPageCwAdvanced", N_(u" Advanced")) 601 607 ) 602 608 … … 726 732 self.ctrls[c].SetSelection( 727 733 Localization.findLangListIndex(optValue) + 1) 728 734 elif t == "wikilang": # wiki language choice 735 # Fill choice with options and find previous selection 736 optValue = self.pWiki.getConfig().get("main", o) 737 sel = -1 738 for i, ld in enumerate( 739 wx.GetApp().listWikiLanguageDescriptions()): 740 self.ctrls[c].Append(ld[1]) 741 if ld[0] == optValue: 742 sel = i 743 744 if sel > -1: 745 # Then select previous setting 746 self.ctrls[c].SetSelection(sel) 729 747 730 748 # Register events for "..." buttons … … 740 758 741 759 # Options with special treatment 742 self.ctrls.cbLowResources.SetValue(743 self.pWiki.getConfig().getint("main", "lowresources") != 0)744 745 760 self.ctrls.cbNewWindowWikiUrl.SetValue( 746 761 self.pWiki.getConfig().getint("main", … … 941 956 Localization.getLangList()[idx - 1][0]) 942 957 958 elif t == "wikilang": # GUI language choice 959 idx = self.ctrls[c].GetSelection() 960 self.pWiki.getConfig().set("main", o, 961 wx.GetApp().listWikiLanguageDescriptions()[idx][0]) 962 943 963 # Options with special treatment (after standard handling) 944 if self.ctrls.cbLowResources.GetValue():945 self.pWiki.getConfig().set("main", "lowresources", "1")946 else:947 self.pWiki.getConfig().set("main", "lowresources", "0")948 949 964 if self.ctrls.cbNewWindowWikiUrl.GetValue(): 950 965 self.pWiki.getConfig().set("main", "new_window_on_follow_wiki_url", "1") -
branches/mbutscher/next/lib/pwiki/PersonalWikiFrame.py
r177 r178 29 29 30 30 from wikidata import DbBackendUtils, WikiDataManager 31 32 # To generate py2exe dependency 33 import WikiDocument 31 34 32 35 import OsAbstract … … 55 58 56 59 from AdditionalDialogs import * 60 import AdditionalDialogs 57 61 from OptionsDialog import OptionsDialog 58 62 from SearchAndReplaceDialogs import * … … 264 268 265 269 # setup plugin manager and hooks API 266 self.pluginManager = PluginManager() 270 dirs = ( join(self.globalConfigSubDir, u'user_extensions'), 271 join(self.wikiAppDir, u'user_extensions'), 272 join(self.wikiAppDir, u'extensions') ) 273 self.pluginManager = PluginManager(dirs) 274 267 275 self.hooks = self.pluginManager.registerPluginAPI(("hooks",1), 268 276 ["startup", "newWiki", "createdWiki", "openWiki", "openedWiki", … … 323 331 self.autoSaveDelayAfterDirty = self.configuration.getint( 324 332 "main", "auto_save_delay_dirty") 325 326 # Should reduce resources usage (less icons)327 # Do not set self.lowResources after initialization here!328 self.lowResources = wx.GetApp().getLowResources()329 333 330 334 # get the position of the splitter … … 396 400 self.Show(True) 397 401 398 if self.lowResources and self.IsIconized():399 self.resourceSleep()400 401 402 EVT_REMOTE_COMMAND(self, self.OnRemoteCommand) 402 403 … … 410 411 self.evalLib = self.getExtension('EvalLibrary', u'EvalLibrary.py') 411 412 self.presentationExt = self.getExtension('Presentation', u'Presentation.py') 412 dirs = ( join(self.globalConfigSubDir, u'user_extensions'), 413 join(self.wikiAppDir, u'user_extensions'), 414 join(self.wikiAppDir, u'extensions') ) 415 self.pluginManager.loadPlugins( dirs, [ u'KeyBindings.py', 413 self.pluginManager.loadPlugins([ u'KeyBindings.py', 416 414 u'EvalLibrary.py' ] ) 417 415 … … 644 642 645 643 menuitem = wx.MenuItem(menu, menuID, label, text, kind) 646 # if icondesc: # (not self.lowResources) and647 644 bitmap = self.resolveIconDescriptor(icondesc) 648 645 if bitmap: … … 763 760 if wikiData is not None: 764 761 if wikiData.checkCapability("rebuild") == 1: 765 self.addMenuItem(maintenanceMenu, _(u'&Update cache...'),766 _(u'Update cache were marked as not up to date'),767 lambda evt: self.rebuildWiki(onlyDirty=True),768 menuID=GUI_ID.MENU_UPDATE_WIKI_CACHE,769 updatefct=self.OnUpdateDisReadOnlyWiki)770 771 762 self.addMenuItem(maintenanceMenu, _(u'&Rebuild Wiki...'), 772 763 _(u'Rebuild this wiki and its cache completely'), … … 775 766 updatefct=self.OnUpdateDisReadOnlyWiki) 776 767 777 self.addMenuItem(maintenanceMenu, _(u'&Initiate update'), 768 self.addMenuItem(maintenanceMenu, _(u'&Update cache...'), 769 _(u'Update cache where marked as not up to date'), 770 lambda evt: self.rebuildWiki(onlyDirty=True), 771 menuID=GUI_ID.MENU_UPDATE_WIKI_CACHE, 772 updatefct=self.OnUpdateDisReadOnlyWiki) 773 774 self.addMenuItem(maintenanceMenu, _(u'&Initiate update...'), 778 775 _(u'Initiate full cache update which is done mainly ' 779 776 u'in background'), … … 1728 1725 lambda evt: self.viewParents(self.getCurrentWikiWord())) 1729 1726 1730 self.addMenuItem(navigateMenu, _(u'List &Child ...') + u'\t' +1727 self.addMenuItem(navigateMenu, _(u'List &Children...') + u'\t' + 1731 1728 self.keyBindings.ViewChildren, 1732 1729 _(u'List children of current wiki word'), … … 2029 2026 wx.EVT_KEY_DOWN(self.fastSearchField, self.OnFastSearchKeyDown) 2030 2027 2031 icon = self.lookupSystemIcon(" pin")2028 icon = self.lookupSystemIcon("tb_wikize") 2032 2029 tb.AddSimpleTool(GUI_ID.CMD_FORMAT_WIKIZE_SELECTED, icon, 2033 2030 _(u"Wikize Selected Word ") + self.keyBindings.MakeWikiWord, … … 2561 2558 2562 2559 def OnIconize(self, evt): 2563 if self.lowResources:2564 if self.IsIconized():2565 self.resourceSleep()2566 else:2567 self.resourceWakeup()2568 2569 2560 if self.configuration.getboolean("main", "showontray"): 2570 2561 self.Show(not self.IsIconized()) … … 2574 2565 2575 2566 def OnMaximize(self, evt): 2576 if self.lowResources:2577 self.resourceWakeup()2578 2579 2567 evt.Skip() 2580 2568 … … 2626 2614 def newWiki(self, wikiName, wikiDir): 2627 2615 "creates a new wiki" 2628 wdhandlers = DbBackendUtils.listHandlers() 2629 if len(wdhandlers) == 0: 2616 if len(DbBackendUtils.listHandlers()) == 0: 2630 2617 self.displayErrorMessage( 2631 2618 _(u'No data handler available to create database.')) … … 2653 2640 2654 2641 if createIt: 2655 # Ask for the data handler to use 2656 index = wx.GetSingleChoiceIndex(_(u"Choose database type"), 2657 _(u"Choose database type"), [wdh[1] for wdh in wdhandlers], 2658 self) 2659 if index == -1: 2642 # # Ask for the data handler to use 2643 # index = wx.GetSingleChoiceIndex(_(u"Choose database type"), 2644 # _(u"Choose database type"), [wdh[1] for wdh in wdhandlers], 2645 # self) 2646 # if index == -1: 2647 # return 2648 # 2649 # wdhName = wdhandlers[index][0] 2650 2651 wdhName, wlangName = AdditionalDialogs.NewWikiSettings.runModal( 2652 self, -1, self) 2653 2654 if wdhName is None: 2660 2655 return 2661 2656 2662 wdhName = wdhandlers[index][0]2663 2664 # wikiDataFactory, createWikiDbFunc = DbBackendUtils.getHandler(self,2665 # wdhName)2666 #2667 # if wikiDataFactory is None:2668 # self.displayErrorMessage(2669 # 'Data handler %s not available' % wdh[0])2670 # return2671 2672 2657 2673 2658 # create the new dir for the wiki … … 2718 2703 wikiConfig.set("main", "last_wiki_word", wikiName) 2719 2704 wikiConfig.set("main", "wiki_database_type", wdhName) 2705 wikiConfig.set("main", "wiki_wikiLanguage", wlangName) 2720 2706 wikiConfig.set("wiki_db", "data_dir", "data") 2721 2707 wikiConfig.save() … … 2726 2712 self.openWiki(configFileLoc) 2727 2713 p = self.wikiDataManager.createWikiPage(u"WikiSettings") 2728 text = _(u"""++ Wiki Settings 2729 2730 2731 These are your default global settings. 2732 2733 [global.importance.low.color: grey] 2734 [global.importance.high.bold: true] 2735 [global.contact.icon: contact] 2736 [global.wrap: 70] 2737 2738 [icon: cog] 2739 """) # TODO Localize differently? 2714 2715 langHelper = wx.GetApp().createWikiLanguageHelper( 2716 self.getWikiDefaultWikiLanguage()) 2717 2718 text = langHelper.getNewDefaultWikiSettingsPage(self) 2740 2719 # p.save(text, False) 2741 2720 # p.update(text, False) … … 2845 2824 dbtype = None 2846 2825 2826 wikiLang = None 2827 2847 2828 ignoreLock = self.getConfig().getboolean("main", "wikiLockFile_ignore", 2848 2829 False) … … 2853 2834 try: 2854 2835 wikiDataManager = WikiDataManager.openWikiDocument( 2855 cfgPath, dbtype, ignoreLock, createLock)2836 cfgPath, dbtype, wikiLang, ignoreLock, createLock) 2856 2837 frmcode, frmtext = wikiDataManager.checkDatabaseFormat() 2857 2838 if frmcode == 2: … … 2874 2855 break 2875 2856 except (UnknownDbHandlerException, DbHandlerNotAvailableException), e: 2876 # Could not get handler name from wiki config file2857 # Could not get a handler name from wiki config file 2877 2858 # (probably old database) or required handler not available, 2878 2859 # so ask user 2879 2860 self.displayErrorMessage(unicode(e)) 2880 dbtype = self._askForDbType() 2861 dbtype, dummy = AdditionalDialogs.NewWikiSettings.runModal( 2862 self, -1, self, dbtype, 2863 AdditionalDialogs.NewWikiSettings.DEFAULT_GREY) 2864 # dbtype = self._askForDbType() 2881 2865 if dbtype is None: 2882 2866 return False 2883 2867 2868 continue # Try again 2869 except UnknownWikiLanguageException, e: 2870 # Could not get a handler name from wiki config file 2871 # (probably old database) or required handler not available, 2872 # so ask user 2873 self.displayErrorMessage(unicode(e)) 2874 dummy, wikiLang = AdditionalDialogs.NewWikiSettings.runModal( 2875 self, -1, self, 2876 AdditionalDialogs.NewWikiSettings.DEFAULT_GREY, wikiLang) 2877 # dbtype = self._askForDbType() 2878 if wikiLang is None: 2879 return False 2880 2884 2881 continue # Try again 2885 2882 except LockedWikiException, e: … … 4595 4592 4596 4593 4597 def initiateFullUpdate(self ):4594 def initiateFullUpdate(self, skipConfirm=False): 4598 4595 if self.isReadOnlyWiki(): 4599 4596 return 4600 4597 4601 try: 4602 self.saveAllDocPages() 4603 progresshandler = wxGuiProgressHandler( 4604 _(u" Initiating update "), 4605 _(u" Initiating update "), 0, self) 4606 self.getWikiDataManager().initiateFullUpdate(progresshandler) 4607 4608 # self.tree.collapse() 4609 # 4610 # # TODO Adapt for functional pages 4611 # if self.getCurrentWikiWord() is not None: 4612 # self.openWikiPage(self.getCurrentWikiWord(), 4613 # forceTreeSyncFromRoot=True) 4614 # self.tree.expandRoot() 4615 except (IOError, OSError, DbAccessError), e: 4616 self.lostAccess(e) 4617 raise 4618 except Exception, e: 4619 self.displayErrorMessage(_(u"Error initiating update"), e) 4620 traceback.print_exc() 4598 if not skipConfirm: 4599 result = wx.MessageBox(_(u"Are you sure you want to start a full " 4600 u"rebuild of wiki in background?<d"), 4601 _(u'Initiate update'), 4602 wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION, self) 4603 4604 if skipConfirm or result == wx.YES : 4605 try: 4606 self.saveAllDocPages() 4607 progresshandler = wxGuiProgressHandler( 4608 _(u" Initiating update "), 4609 _(u" Initiating update "), 0, self) 4610 self.getWikiDataManager().initiateFullUpdate(progresshandler) 4611 4612 # self.tree.collapse() 4613 # 4614 # # TODO Adapt for functional pages 4615 # if self.getCurrentWikiWord() is not None: 4616 # self.openWikiPage(self.getCurrentWikiWord(), 4617 # forceTreeSyncFromRoot=True) 4618 # self.tree.expandRoot() 4619 except (IOError, OSError, DbAccessError), e: 4620 self.lostAccess(e) 4621 raise 4622 except Exception, e: 4623 self.displayErrorMessage(_(u"Error initiating update"), e) 4624 traceback.print_exc() 4621 4625 4622 4626 … … 5038 5042 if self.windowLayouter is not None: 5039 5043 self.windowLayouter.layout() 5040 if self.lowResources:5041 self.resourceWakeup()5042 5043 5044 5044 5045 -
branches/mbutscher/next/lib/pwiki/PluginManager.py
r166 r178 1 import os, sys, traceback 1 from __future__ import with_statement 2 3 import os, sys, traceback, os.path 4 5 # sys.path.append(ur"C:\Daten\Projekte\Wikidpad\Next20\extensions") 2 6 3 7 import wx 4 8 5 from StringOps import mbcsEnc, pathEnc9 from .StringOps import mbcsEnc, pathEnc 6 10 7 11 """The PluginManager and PluginAPI classes implement a generic plugin framework. … … 12 16 Example code: 13 17 14 pm = PluginManager( )18 pm = PluginManager(["dir1, "dir2"]) 15 19 api = pm.registerPluginAPI(("myAPI",1), ["init", "call1", "call2", "exit"]) 16 pm.loadPlugins([" dir1, "dir2"], ["notloadme", "andnotme"])20 pm.loadPlugins(["notloadme", "andnotme"]) 17 21 api.init("hello") 18 22 api.exit() … … 97 101 class PluginManager(object): 98 102 """manages all PluginAPIs and plugins.""" 99 def __init__(self ):103 def __init__(self, directories): 100 104 self.pluginAPIs = {} 101 self.plugins = {} 105 self.plugins = {} 106 self.directories = directories 102 107 103 108 def registerPluginAPI(self, name, functions): … … 127 132 del self.plugins[name] 128 133 129 def loadPlugins(self, directories,excludeFiles):134 def loadPlugins(self, excludeFiles): 130 135 """load and register plugins with apis. the directories in the list 131 136 directories are searched in order for all files ending with .py or … … 137 142 directories are searched in order for plugins. Therefore plugins 138 143 appearing in earlier directories are not loaded from later ones.""" 144 import imp 139 145 exclusions = excludeFiles[:] 140 for directory in directories: 146 for dirNum, directory in enumerate(self.directories): 147 sys.path.append(os.path.dirname(directory)) 141 148 if not os.access(mbcsEnc(directory, "replace")[0], os.F_OK): 142 149 continue … … 149 156 continue 150 157 if os.path.isfile(fullname) and ext == '.py': 151 module = self.importCode(open(pathEnc(fullname)), moduleName) 152 elif os.path.isdir(fullname): 153 module = self.importDirectory(fullname) 158 with open(fullname) as f: 159 packageName = "cruelimportExtensionsPackage%i" % dirNum 160 161 module = imp.load_module(packageName + "." + moduleName, f, 162 pathEnc(fullname), (".py", "r", imp.PY_SOURCE)) 154 163 if module and hasattr(module, "WIKIDPAD_PLUGIN"): 155 164 if self.registerPlugin(module): 156 165 exclusions.append(name) 166 del sys.path[-1] 157 167 158 168 def importDirectory(self, name, add_to_sys_modules = False): … … 165 175 del sys.modules[name] 166 176 return module 167 168 def importCode(self,code,name,add_to_sys_modules = False): 169 """ 170 Import dynamically generated code as a module. code is the 171 object containing the code (a string, a file handle or an 172 actual compiled code object, same types as accepted by an 173 exec statement). The name is the name to give to the module, 174 and the final argument says wheter to add it to sys.modules 175 or not. If it is added, a subsequent import statement using 176 name will return this module. If it is not added to sys.modules 177 import will try to load it in the normal fashion. 178 179 import foo 180 181 is equivalent to 182 183 foofile = open("/path/to/foo.py") 184 foo = importCode(foofile,"foo",1) 185 186 Returns a newly generated module. 187 """ 188 import imp 189 190 module = imp.new_module(name) 191 192 exec code in module.__dict__ 193 if add_to_sys_modules: 194 sys.modules[name] = module 195 196 return module 177 178 179 # def importCode(self,code,name,add_to_sys_modules = False): 180 # """ 181 # Import dynamically generated code as a module. code is the 182 # object containing the code (a string, a file handle or an 183 # actual compiled code object, same types as accepted by an 184 # exec statement). The name is the name to give to the module, 185 # and the final argument says wheter to add it to sys.modules 186 # or not. If it is added, a subsequent import statement using 187 # name will return this module. If it is not added to sys.modules 188 # import will try to load it in the normal fashion. 189 # 190 # import foo 191 # 192 # is equivalent to 193 # 194 # foofile = open("/path/to/foo.py") 195 # foo = importCode(foofile,"foo",1) 196 # 197 # Returns a newly generated module. 198 # """ 199 # import imp 200 # 201 # module = imp.new_module(name) 202 # 203 # exec code in module.__dict__ 204 # if add_to_sys_modules: 205 # sys.modules[name] = module 206 # 207 # return module 197 208 198 209 -
branches/mbutscher/next/lib/pwiki/SpellChecker.py
r174 r178 10 10 import EnchantDriver 11 11 except ImportError: 12 traceback.print_exc()12 # traceback.print_exc() 13 13 Dict = None 14 14 -
branches/mbutscher/next/lib/pwiki/StringOps.py
r173 r178 22 22 23 23 import re as _re # import pwiki.srePersistent as reimport pwiki.srePersistent as _re 24 from WikiExceptions import * 25 24 26 25 27 LINEEND_SPLIT_RE = _re.compile(r"\r\n?|\n", _re.UNICODE) … … 104 106 105 107 106 # if isWindows() and not isWin9x():107 108 if os.path.supports_unicode_filenames: 108 109 def dummy(s): … … 123 124 return None 124 125 return mbcsDec(s, "replace")[0] 126 127 if isWindows(): 128 if not os.path.supports_unicode_filenames: 129 raise InternalError("This Python version does not support unicode pathes") 130 131 # To process pathes longer than 255 characters, Windows (NT and following) 132 # expects an absolute path prefixed with \\?\ 133 134 def longPathEnc(s): 135 if s is None: 136 return None 137 if s.startswith("\\\\?\\"): 138 return s 139 140 return u"\\\\?\\" + os.path.abspath(s) 141 142 def longPathDec(s): 143 if s is None: 144 return None 145 if s.startswith("\\\\?\\"): 146 return s[4:] 147 148 return s 149 150 else: 151 longPathEnc = pathEnc 152 longPathDec = pathDec 125 153 126 154 … … 1119 1147 else: 1120 1148 baseQuoted = [] 1121 1149 1122 1150 overallLength = sum(len(bq) for bq in baseQuoted) + len(suffix) 1123 1151 1124 1152 # Shorten baseQuoted if needed. This method ensures that no half-quoted 1125 1153 # character (e.g. "@3") is remaining … … 1152 1180 yield beforeRandom + createRandomString(randomLength) + suffix 1153 1181 1154 1182 u'C:\\Daten\\Projekte\\Wikidpad\\Next20\\WikidPadHelpOS\\data\\Now a%21%22\xa7$%25&=%3F\xb4`\xb4%27 Wikiword can contain (nearly) every%21%21^\xb0character. And it can be longer and longer and longer. At the moment there may be problems with HTML export of very long wikiwords, but I hope to get this working in a future.wiki' 1155 1183 1156 1184 … … 1277 1305 br = b[4+l : ] 1278 1306 return (s, br) 1307 1308 1309 # def orderBySuggestion(strs, sugg): 1310 # """ 1311 # Order string iterable strs in a way that all strings also present in 1312 # sequence sugg come first in resulting list, then the strings from strs 1313 # which are not in sugg in arbitrary order. 1314 # """ 1315 # s = set(strs) 1316 # result = [] 1317 # for e in sugg: 1318 # if e in s: 1319 # result.append(e) 1320 # s.remove(e) 1321 # 1322 # for e in s: 1323 # result.append(e) 1324 # 1325 # return result 1326 1279 1327 1280 1328 -
branches/mbutscher/next/lib/pwiki/WikiExceptions.py
r169 r178 55 55 class UnknownDbHandlerException(Exception): pass 56 56 57 58 # See WikiDataManager.py. Thrown if requested handler for wiki language isn't 59 # available 60 class UnknownWikiLanguageException(Exception): pass 61 class WrongWikiLanguageException(Exception): pass 62 63 57 64 class MissingConfigurationFileException(Exception): pass 58 65 class BadConfigurationFileException(Exception): pass 59 66 class LockedWikiException(Exception): pass 67 60 68 61 69 class NotCurrentThreadException(Exception): pass -
branches/mbutscher/next/lib/pwiki/WikiHtmlView.py
r175 r178 15 15 from Configuration import isWindows, MIDDLE_MOUSE_CONFIG_TO_TABMODE, isOSX 16 16 17 import DocPages 17 18 from TempFileSet import TempFileSet 18 19 … … 261 262 pass 262 263 264 wikiPage = self.presenter.getDocPage() 265 if isinstance(wikiPage, 266 (DocPages.DataCarryingPage, DocPages.AliasWikiPage)) and \ 267 not wikiPage.checkFileSignatureAndMarkDirty(): 268 # Valid wiki page and invalid signature -> rebuild HTML page 269 self.outOfSync = True 270 263 271 if self.outOfSync: 264 272 self.currentLoadedWikiWord = None 265 273 266 wikiPage = self.presenter.getDocPage()267 274 if wikiPage is None: 268 275 return # TODO Do anything else here? … … 277 284 278 285 self.currentLoadedWikiWord = word 279 content = self.presenter.getLiveText()286 # content = self.presenter.getLiveText() 280 287 281 288 html = self.exporterInstance.exportWikiPageToHtmlString(wikiPage) -
branches/mbutscher/next/lib/pwiki/WikiHtmlViewIE.py
r174 r178 38 38 pathnameFromUrl 39 39 40 import DocPages 40 41 from TempFileSet import TempFileSet 41 42 … … 210 211 # pass 211 212 212 213 wikiPage = self.presenter.getDocPage() 214 if isinstance(wikiPage, 215 (DocPages.DataCarryingPage, DocPages.AliasWikiPage)) and \ 216 not wikiPage.checkFileSignatureAndMarkDirty(): 217 # Valid wiki page and invalid signature -> rebuild HTML page 218 self.outOfSync = True 219 213 220 if self.outOfSync: 214 221 # self.currentLoadedWikiWord = None … … 219 226 return 220 227 221 wikiPage = self.presenter.getDocPage()222 228 if wikiPage is None: 223 229 self.currentLoadedWikiWord = None -
branches/mbutscher/next/lib/pwiki/WikiTreeCtrl.py
r177 r178 1126 1126 self.contextMenuWikiWords.AppendSeparator() 1127 1127 1128 # # Build icon menu (low resource version) 1129 # # Add only menu item for icon select dialog 1130 # menuID = wx.NewId() 1131 # self.contextMenuWikiWords.Append(menuID, _(u'Add icon attribute'), 1132 # _(u'Open icon select dialog')) 1133 # wx.EVT_MENU(self, menuID, lambda evt: self.pWiki.showSelectIconDialog()) 1134 1128 1135 # Build icon menu 1129 if self.pWiki.lowResources: 1130 # Add only menu item for icon select dialog 1131 menuID = wx.NewId() 1132 self.contextMenuWikiWords.Append(menuID, _(u'Add icon attribute'), 1133 _(u'Open icon select dialog')) 1134 wx.EVT_MENU(self, menuID, lambda evt: self.pWiki.showSelectIconDialog()) 1135 else: 1136 # Build full submenu for icons 1137 iconsMenu, self.cmdIdToIconName = \ 1138 PropertyHandling.buildIconsSubmenu(wx.GetApp().getIconCache()) 1139 for cmi in self.cmdIdToIconName.keys(): 1140 wx.EVT_MENU(self, cmi, self.OnInsertIconAttribute) 1141 1142 self.contextMenuWikiWords.AppendMenu(wx.NewId(), 1143 _(u'Add icon attribute'), iconsMenu) 1136 # Build full submenu for icons 1137 iconsMenu, self.cmdIdToIconName = \ 1138 PropertyHandling.buildIconsSubmenu(wx.GetApp().getIconCache()) 1139 for cmi in self.cmdIdToIconName.keys(): 1140 wx.EVT_MENU(self, cmi, self.OnInsertIconAttribute) 1141 1142 self.contextMenuWikiWords.AppendMenu(wx.NewId(), 1143 _(u'Add icon attribute'), iconsMenu) 1144 1144 1145 1145 # Build submenu for colors -
branches/mbutscher/next/lib/pwiki/WikiTxtCtrl.py
r177 r178 361 361 self.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, "face:%(mono)s,size:%(size)d" % 362 362 self.presenter.getDefaultFontFaces()) 363 363 364 364 # self.setFoldingActive(self.foldingActive) 365 365 … … 418 418 self.wikiPageSink = wxKeyFunctionSink(( 419 419 ("updated wiki page", self.onWikiPageUpdated), # fired by a WikiPage 420 ("checked file signature invalid", self.onFileSignatureInvalid), # fired by a WikiPage421 420 )) 422 421 423 422 424 423 wx.stc.EVT_STC_STYLENEEDED(self, ID, self.OnStyleNeeded) 424 wx.stc.EVT_STC_CHARADDED(self, ID, self.OnCharAdded) 425 425 wx.stc.EVT_STC_MODIFIED(self, ID, self.OnModified) 426 426 wx.stc.EVT_STC_USERLISTSELECTION(self, ID, self.OnUserListSelection) … … 1152 1152 1153 1153 1154 def onFileSignatureInvalid(self, miscevt): 1155 docPage = self.getLoadedDocPage() 1156 if docPage is None or \ 1154 def handleInvalidFileSignature(self, docPage): 1155 """ 1156 Called directly from a doc page to repair the editor state if an 1157 invalid file signature was detected. 1158 1159 docPage -- calling docpage 1160 """ 1161 if docPage is not self.getLoadedDocPage() or \ 1157 1162 not isinstance(docPage, 1158 (DocPages. WikiPage, DocPages.AliasWikiPage)):1163 (DocPages.DataCarryingPage, DocPages.AliasWikiPage)): 1159 1164 return 1160 1165 … … 2399 2404 2400 2405 2406 def OnCharAdded(self, evt): 2407 "When the user presses enter reindent to the previous level" 2408 2409 # currPos = self.GetScrollPos(wxVERTICAL) 2410 2411 evt.Skip() 2412 key = evt.GetKey() 2413 2414 if key == 10: 2415 text = self.GetText() 2416 wikiDocument = self.presenter.getWikiDocument() 2417 bytePos = self.GetCurrentPos() 2418 lineStartBytePos = self.PositionFromLine(self.LineFromPosition(bytePos)) 2419 2420 lineStartCharPos = len(self.GetTextRange(0, lineStartBytePos)) 2421 charPos = lineStartCharPos + len(self.GetTextRange(lineStartBytePos, 2422 bytePos)) 2423 2424 autoUnbullet = self.presenter.getConfig().getboolean("main", 2425 "editor_autoUnbullets", False) 2426 2427 settings = { 2428 "autoUnbullet": autoUnbullet, 2429 "autoBullets": self.autoBullets, 2430 "autoIndent": self.autoIndent 2431 } 2432 2433 self.wikiLanguageHelper.handleNewLineAfterEditor(self, text, 2434 charPos, lineStartCharPos, wikiDocument, settings) 2435 2436 2437 2401 2438 def OnKeyDown(self, evt): 2402 2439 key = evt.GetKeyCode() … … 2435 2472 return 2436 2473 evt.Skip() 2437 elif key == wx.WXK_RETURN :2474 elif key == wx.WXK_RETURN and not self.AutoCompActive(): 2438 2475 text = self.GetText() 2439 2476 wikiDocument = self.presenter.getWikiDocument() … … 2454 2491 } 2455 2492 2456 if self.wikiLanguageHelper.handleNewLine (self, text,2493 if self.wikiLanguageHelper.handleNewLineBeforeEditor(self, text, 2457 2494 charPos, lineStartCharPos, wikiDocument, settings): 2458 2495 evt.Skip() … … 2528 2565 if wikiPage is None: 2529 2566 return 2530 if not isinstance(wikiPage, (DocPages.WikiPage, DocPages.AliasWikiPage)): 2567 if not isinstance(wikiPage, 2568 (DocPages.DataCarryingPage, DocPages.AliasWikiPage)): 2531 2569 return 2532 2570 2533 wikiPage.checkFileSignature() 2534 2535 2536 # def OnMouseWheel(self, evt): 2537 # evt.Skip() 2538 2571 wikiPage.checkFileSignatureAndMarkDirty() 2539 2572 2540 2573 … … 2542 2575 text = evt.GetText() 2543 2576 toerase = self.autoCompBackBytesMap[text] 2544 2577 2545 2578 self.SetSelection(self.GetCurrentPos() - toerase, self.GetCurrentPos()) 2546 2579 2547 2580 self.ReplaceSelection(text) 2548 2581 … … 2643 2676 threadstop=DUMBTHREADSTOP): 2644 2677 try: 2645 pageAst = self.getLoadedDocPage().getLivePageAst( 2646 threadstop=threadstop) 2678 docPage = self.getLoadedDocPage() 2679 if docPage is None: 2680 return 2681 2682 pageAst = docPage.getLivePageAst(threadstop=threadstop) 2647 2683 2648 2684 nodes = pageAst.findNodesForCharPos(charPos) -
branches/mbutscher/next/lib/pwiki/WindowsHacks.py
r166 r178 259 259 260 260 return result.value[4:] 261 262 263 261 264 262 -
branches/mbutscher/next/lib/pwiki/timeView/TimePresentationBase.py
r166 r178 16 16 17 17 class TimePresentationBase: 18 """ 19 Basic functionality for a timeline or calendar panel. 20 """ 18 21 def __init__(self, mainControl, wikiWordFilter): 19 22 -
branches/mbutscher/next/lib/pwiki/timeView/TimelinePanel.py
r173 r178 52 52 self.clientHeight = self.GetClientSizeTuple()[1] 53 53 54 self.visibleItemCount = (self.clientHeight - 4) // self.itemHeight54 self.visibleItemCount = (self.clientHeight - 6) // self.itemHeight 55 55 56 56 self.contextMenuWikiWords = IdRecycler() # {menuid: wiki word to go to} … … 107 107 108 108 self.clientHeight = size.GetHeight() 109 110 if self.clientHeight - 6 < self.itemHeight: 111 # Doesn't make sense to calculate further 112 # This may especially happen for the initial call on Linux 113 return 109 114 110 115 self.visibleItemCount = (self.clientHeight - 6) // self.itemHeight … … 375 380 self.listMaxWordCount = maxWordCount 376 381 self.listContent = content 377 378 379 380 # def OnEraseBg(self, evt):381 # dc = evt.GetDC()382 # return383 382 384 383 -
branches/mbutscher/next/lib/pwiki/wikidata/DbBackendUtils.py
r166 r178 10 10 _handlers = [] 11 11 12 hdls = WikiData_original_sqlite.listAvailableWikiDataHandlers() 13 for h in hdls: 14 _handlers.append((h[0], h[1], 15 WikiData_original_sqlite.getWikiDataHandler)) 16 12 17 hdls = WikiData_compact_sqlite.listAvailableWikiDataHandlers() 13 18 for h in hdls: … … 19 24 _handlers.append((h[0], h[1], 20 25 WikiData_original_gadfly.getWikiDataHandler)) 21 22 hdls = WikiData_original_sqlite.listAvailableWikiDataHandlers()23 for h in hdls:24 _handlers.append((h[0], h[1],25 WikiData_original_sqlite.getWikiDataHandler))26 27 26 28 27 def listHandlers(): -
branches/mbutscher/next/lib/pwiki/wikidata/WikiDataManager.py
r177 r178 65 65 66 66 67 def openWikiDocument(wikiConfigFilename, dbtype=None, 67 def openWikiDocument(wikiConfigFilename, dbtype=None, wikiLang=None, 68 68 ignoreLock=False, createLock=True): 69 69 """ … … 71 71 one 72 72 dbtype -- internal name of database type 73 wiki Name -- Name of the wiki to create73 wikiLang -- internal name of wiki language 74 74 dataDir -- directory for storing the data files 75 75 overwrite -- Should already existing data be overwritten … … 82 82 # Same database can't be opened twice with different db handlers 83 83 raise WrongDbHandlerException(_(u"Database is already in use " 84 u"with handler '%s'. Can't open with different handler.") % 84 u'with database handler "%s". ' 85 u"Can't open with different handler.") % 85 86 wdm.getDbtype()) 87 88 if wikiLang is not None and wikiLang != wdm.getWikiDefaultWikiLanguage(): 89 raise WrongWikiLanguageException(_(u"Database is already in use " 90 u'with wiki language handler "%s". ' 91 u"Can't open with different handler.") % 92 wdm.getWikiDefaultWikiLanguage()) 86 93 87 94 wdm.incRefCount() 88 95 return wdm 89 96 90 wdm = WikiDataManager(wikiConfigFilename, dbtype, ignoreLock,97 wdm = WikiDataManager(wikiConfigFilename, dbtype, wikiLang, ignoreLock, 91 98 createLock) 92 99 … … 302 309 """ 303 310 304 def __init__(self, wikiConfigFilename, dbtype, ignoreLock=False,311 def __init__(self, wikiConfigFilename, dbtype, wikiLangName, ignoreLock=False, 305 312 createLock=True): 306 313 MiscEventSourceMixin.__init__(self) … … 380 387 self._releaseLockFile() 381 388 raise DbHandlerNotAvailableException( 382 _(u'Required data handler %sunknown to WikidPad') % wikidhName)389 _(u'Required data handler "%s" unknown to WikidPad') % wikidhName) 383 390 384 391 wikiDataFactory, createWikiDbFunc = DbBackendUtils.getHandler(wikidhName) … … 386 393 self._releaseLockFile() 387 394 raise NoDbHandlerException( 388 _(u"Required data handler %s not available") % wikidhName) 389 395 _(u'Error on initializing data handler "%s"') % wikidhName) 396 397 if wikiLangName is None: 398 wikiLangName = wikiConfig.get("main", "wiki_wikiLanguage", 399 "wikidpad_default_2_0") 400 else: 401 wikiConfig.set("main", "wiki_wikiLanguage", wikiLangName) 402 403 if GetApp().getWikiLanguageDescription(wikiLangName) is None: 404 self._releaseLockFile() 405 raise UnknownWikiLanguageException( 406 _(u'Required wiki language handler "%s" not available') % 407 wikiLangName) 408 409 self.wikiLangName = wikiLangName 390 410 self.ensureWikiTempDir() 391 411 392 412 # dbExecutor = GetApp().getDbExecutor() 393 413 # wikiData = dbExecutor(wikiDataFactory, self, dataDir, self.getWikiTempDir()) … … 500 520 501 521 502 503 504 505 522 def incRefCount(self): 506 523 self.refCount += 1 … … 591 608 """ 592 609 Returns the internal name of the default wiki language of this wiki. 593 Single pages may have different languages (not implmented yet). 594 """ 595 # TODO! Configurable 596 return "wikidpad_default_2_0" 610 611 Single pages may have different languages (not implemented yet). 612 """ 613 return self.getWikiConfig().get("main", "wiki_wikiLanguage", 614 "wikidpad_default_2_0") 597 615 598 616 def getPageTitlePrefix(self): … … 956 974 957 975 976 # TODO Remove if not needed 958 977 def checkFileSignatureForWikiWordAndMarkDirty(self, word): 959 978 """ -
branches/mbutscher/next/lib/pwiki/wikidata/compact_sqlite/WikiData.py
r177 r178 37 37 38 38 39 from pwiki.StringOps import getBinCompactForDiff, applyBinCompact, pathEnc, pathDec,\40 binCompactToCompact, fileContentToUnicode, utf8Enc, utf8Dec, \39 from pwiki.StringOps import getBinCompactForDiff, applyBinCompact, longPathEnc, \ 40 longPathDec, binCompactToCompact, fileContentToUnicode, utf8Enc, utf8Dec, \ 41 41 uniWithNone, loadEntireTxtFile, Conjunction, lineendToInternal 42 42 … … 55 55 56 56 try: 57 if (not exists( pathEnc(dbfile))):57 if (not exists(longPathEnc(dbfile))): 58 58 DbStructure.createWikiDB(None, dataDir) # , True 59 59 except (IOError, OSError, sqlite.Error), e: … … 61 61 raise DbWriteAccessError(e) 62 62 63 dbfile = pathDec(dbfile)63 dbfile = longPathDec(dbfile) 64 64 try: 65 65 self.connWrap = DbStructure.ConnectWrapSyncCommit( … … 256 256 # Word does not exist -> record creation date 257 257 self.connWrap.execSql("insert or replace into wikiwordcontent" 258 "(word, content, modified, created , wordnormcase) "259 "values (?,?,?,? ,?)",260 (word, sqlite.Binary(content), moddate, creadate , word.lower()))258 "(word, content, modified, created) " 259 "values (?,?,?,?)", 260 (word, sqlite.Binary(content), moddate, creadate)) 261 261 except (IOError, OSError, sqlite.Error), e: 262 262 traceback.print_exc() … … 271 271 """ 272 272 try: 273 self.connWrap.execSql("update wikiwordcontent set word = ? , wordnormcase = ?"274 "where word = ?", (newWord, newWord.lower(),oldWord))273 self.connWrap.execSql("update wikiwordcontent set word = ? " 274 "where word = ?", (newWord, oldWord)) 275 275 276 276 self.cachedContentNames = None … … 1859 1859 self.connWrap.syncCommit() 1860 1860 1861 fnames = glob.glob( pathEnc(join(self.dataDir, '*.wiki')))1861 fnames = glob.glob(longPathEnc(join(self.dataDir, '*.wiki'))) 1862 1862 for fn in fnames: 1863 word = pathDec(basename(fn)).replace('.wiki', '')1863 word = longPathDec(basename(fn)).replace('.wiki', '') 1864 1864 1865 1865 content = fileContentToUnicode(loadEntireTxtFile(fn)) -
branches/mbutscher/next/lib/pwiki/wikidata/original_gadfly/DbStructure.py
r177 r178 879 879 if not uniqueCtl.has_key(w): 880 880 connwrap.execSqlInsert("wikiwords", ("word", "created", 881 "modified", "presentationdatablock" , "wordnormcase"),882 (w, c, m, "" , ""))881 "modified", "presentationdatablock"), 882 (w, c, m, "")) 883 883 # connwrap.execSql("insert into wikiwords(word, created, modified) " 884 884 # "values (?, ?, ?)", (w, c, m)) -
branches/mbutscher/next/lib/pwiki/wikidata/original_gadfly/WikiData.py
r177 r178 14 14 15 15 16 from os import mkdir, unlink, rename, stat # listdir17 16 from os.path import exists, join, basename 18 import os .path17 import os, os.path 19 18 20 19 from time import time, localtime … … 40 39 from pwiki import SearchAndReplace 41 40 42 from pwiki.StringOps import pathEnc, pathDec, utf8Enc, utf8Dec, BOM_UTF8, \41 from pwiki.StringOps import longPathEnc, longPathDec, utf8Enc, utf8Dec, BOM_UTF8, \ 43 42 fileContentToUnicode, loadEntireTxtFile, loadEntireFile, \ 44 43 writeEntireFile, Conjunction, iterCompatibleFilename, \ … … 231 230 # oldFileName = pathDec(oldFileName) 232 231 233 fileName = self.createWikiWordFileName( word)232 fileName = self.createWikiWordFileName(newWord) 234 233 newFilePath = os.path.join(head, fileName) 235 234 236 os.rename( pathEnc(os.path.join(self.dataDir, oldFilePath)),237 pathEnc(os.path.join(self.dataDir, newFilePath)))235 os.rename(longPathEnc(os.path.join(self.dataDir, oldFilePath)), 236 longPathEnc(os.path.join(self.dataDir, newFilePath))) 238 237 239 238 self.cachedContentNames = None … … 260 259 self.cachedContentNames = None 261 260 if exists(fileName): 262 unlink(fileName)261 os.unlink(fileName) 263 262 except (IOError, OSError, ValueError), e: 264 263 traceback.print_exc() … … 903 902 for path in self.connWrap.execSqlQuerySingleColumn( 904 903 "select filepath from wikiwords"): 905 if not os.path.exists( pathEnc(os.path.join(self.dataDir, path))):904 if not os.path.exists(longPathEnc(os.path.join(self.dataDir, path))): 906 905 self.connWrap.execSql("delete from wikiwords " 907 906 "where filepath = ?", (path,)) … … 912 911 for path in (diskFiles - dbFiles): 913 912 fullPath = os.path.join(self.dataDir, path) 914 st = stat(pathEnc(fullPath))913 st = os.stat(longPathEnc(fullPath)) 915 914 916 915 wikiWord = self._findNewWordForFile(path) … … 971 970 def _getAllWikiFileNamesFromDisk(self): # Used for rebuilding wiki 972 971 try: 973 files = glob.glob( pathEnc(join(self.dataDir,972 files = glob.glob(longPathEnc(join(self.dataDir, 974 973 u'*' + self.pagefileSuffix))) 975 974 976 return [ pathDec(basename(fn)) for fn in files]975 return [longPathDec(basename(fn)) for fn in files] 977 976 978 977 # result = [] … … 1025 1024 path = self.getWikiWordFileNameRaw(wikiWord) 1026 1025 1027 return pathEnc(join(self.dataDir, path))1026 return longPathEnc(join(self.dataDir, path)) 1028 1027 1029 1028 … … 1042 1041 if len(existing) > 0: 1043 1042 continue 1044 if exists( pathEnc(join(self.dataDir, fileName))):1043 if exists(longPathEnc(join(self.dataDir, fileName))): 1045 1044 continue 1046 1045 … … 1798 1797 if len(existing) > 0: 1799 1798 continue 1800 if exists( pathEnc(join(self.dataDir, fileName))):1799 if exists(longPathEnc(join(self.dataDir, fileName))): 1801 1800 continue 1802 1801 … … 1840 1839 if filePath is not None: 1841 1840 # The entry is in an external file, so delete it 1842 os.unlink( join(self.dataDir, filePath))1841 os.unlink(longPathEnc(join(self.dataDir, filePath))) 1843 1842 self.connWrap.execSql( 1844 1843 "delete from datablocksexternal " … … 2060 2059 protocol 2061 2060 """ 2062 DbStructure.rebuildIndices( ) # ?2061 DbStructure.rebuildIndices(self.connWrap) # ? 2063 2062 2064 2063 -
branches/mbutscher/next/lib/pwiki/wikidata/original_sqlite/WikiData.py
r177 r178 14 14 15 15 16 from os import mkdir, unlink, listdir, rename, stat, utime17 16 from os.path import exists, join, basename 18 import os .path17 import os, os.path 19 18 20 19 from time import time, localtime … … 35 34 # pass 36 35 37 from pwiki.StringOps import getBinCompactForDiff, applyBinCompact, pathEnc, \38 pathDec, binCompactToCompact, fileContentToUnicode, utf8Enc, utf8Dec, \36 from pwiki.StringOps import getBinCompactForDiff, applyBinCompact, longPathEnc, \ 37 longPathDec, binCompactToCompact, fileContentToUnicode, utf8Enc, utf8Dec, \ 39 38 BOM_UTF8, uniWithNone, loadEntireTxtFile, loadEntireFile, writeEntireFile, \ 40 39 Conjunction, iterCompatibleFilename, \ … … 54 53 55 54 try: 56 if (not exists( pathEnc(dbfile))):55 if (not exists(longPathEnc(dbfile))): 57 56 DbStructure.createWikiDB(None, dataDir) # , True 58 57 except (IOError, OSError, sqlite.Error), e: … … 60 59 raise DbWriteAccessError(e) 61 60 62 dbfile = pathDec(dbfile)61 dbfile = longPathDec(dbfile) 63 62 try: 64 63 self.connWrap = DbStructure.ConnectWrapSyncCommit( … … 209 208 traceback.print_exc() 210 209 raise DbReadAccessError(e) 211 210 212 211 try: 213 212 if len(data) < 1: … … 265 264 # oldFileName = pathDec(oldFileName) 266 265 267 fileName = self.createWikiWordFileName( word)266 fileName = self.createWikiWordFileName(newWord) 268 267 newFilePath = os.path.join(head, fileName) 269 268 270 os.rename( pathEnc(os.path.join(self.dataDir, oldFilePath)),271 pathEnc(os.path.join(self.dataDir, newFilePath)))269 os.rename(longPathEnc(os.path.join(self.dataDir, oldFilePath)), 270 longPathEnc(os.path.join(self.dataDir, newFilePath))) 272 271 273 272 self.cachedContentNames = None … … 289 288 self.cachedContentNames = None 290 289 if exists(fileName): 291 unlink(fileName)290 os.unlink(fileName) 292 291 except (IOError, OSError, sqlite.Error), e: 293 292 traceback.print_exc() … … 974 973 for path in self.connWrap.execSqlQuerySingleColumn( 975 974 "select filepath from wikiwords"): 976 if not os.path.exists( pathEnc(os.path.join(self.dataDir, path))):975 if not os.path.exists(longPathEnc(os.path.join(self.dataDir, path))): 977 976 self.connWrap.execSql("delete from wikiwords " 978 977 "where filepath = ?", (path,)) … … 982 981 for path in (diskFiles - dbFiles): 983 982 fullPath = os.path.join(self.dataDir, path) 984 st = stat(pathEnc(fullPath))983 st = os.stat(longPathEnc(fullPath)) 985 984 986 985 wikiWord = self._findNewWordForFile(path) … … 1038 1037 def _getAllWikiFileNamesFromDisk(self): # Used for rebuilding wiki 1039 1038 try: 1040 files = glob.glob( pathEnc(join(self.dataDir,1039 files = glob.glob(longPathEnc(join(self.dataDir, 1041 1040 u'*' + self.pagefileSuffix))) 1042 1041 1043 return [ pathDec(basename(fn)) for fn in files]1042 return [longPathDec(basename(fn)) for fn in files] 1044 1043 1045 1044 # result = [] … … 1093 1092 """ 1094 1093 path = self.getWikiWordFileNameRaw(wikiWord) 1095 return pathEnc(join(self.dataDir, path))1094 return longPathEnc(join(self.dataDir, path)) 1096 1095 1097 1096 … … 1155 1154 if len(existing) > 0: 1156 1155 continue 1157 if exists( pathEnc(join(self.dataDir, fileName))):1156 if exists(longPathEnc(join(self.dataDir, fileName))): 1158 1157 continue 1159 1158 … … 1878 1877 if len(existing) > 0: 1879 1878 continue 1880 if exists( pathEnc(join(self.dataDir, fileName))):1879 if exists(longPathEnc(join(self.dataDir, fileName))): 1881 1880 continue 1882 1881 … … 1919 1918 if filePath is not None: 1920 1919 # The entry is in an external file, so delete it 1921 os.unlink( join(self.dataDir, filePath))1920 os.unlink(longPathEnc(join(self.dataDir, filePath))) 1922 1921 self.connWrap.execSql( 1923 1922 "delete from datablocksexternal " -
branches/mbutscher/next/lib/pwiki/wxHelper.py
r173 r178 515 515 516 516 class IconCache: 517 def __init__(self, iconDir , lowResources):517 def __init__(self, iconDir): 518 518 self.iconDir = iconDir 519 self.lowResources = lowResources 520 521 # add the gif handler for gif icon support 522 # wxImage_AddHandler(wxGIFHandler()) 519 # self.lowResources = lowResources 520 523 521 # default icon is page.gif 524 522 icons = ['page.gif'] … … 550 548 id = self.iconImageList.Add(bitmap, wx.NullBitmap) 551 549 552 if self.lowResources: # and not icon.startswith("tb_"):553 bitmap = None550 # if self.lowResources: # and not icon.startswith("tb_"): 551 # bitmap = None 554 552 555 553 iconname = icon.replace('.gif', '') … … 740 738 def __init__(*args, **kwargs): 741 739 wx.ListCtrl.__init__(*args, **kwargs) 742 740 743 741 def GetAllSelected(self): 744 742 result = [] -
branches/mbutscher/next/setup.py
r166 r178 9 9 wikidpad = Target( 10 10 # used for the versioninfo resource 11 version = ' 1.9',11 version = '2.0', 12 12 name = 'WikidPad', 13 copyright = '(C) 2005-200 8Jason Horman, Michael Butscher, Gerhard Reitmayr',13 copyright = '(C) 2005-2009 Jason Horman, Michael Butscher, Gerhard Reitmayr', 14 14 description = 'Single user wiki notepad', 15 15 comments='', … … 27 27 "optimize": 2, 28 28 "ascii": 1, 29 "excludes": excludes}}, 29 "excludes": excludes, 30 "dll_excludes": ["msvcp90.dll"]}}, 30 31 31 32 name='WikidPad', 32 version = ' 1.9beta',33 version = '2.0alpha', 33 34 author = 'Michael Butscher', 34 35 author_email = 'mbutscher@gmx.de', … … 45 46 # ('lib', glob('sql_mar.*')), 46 47 ('extensions', glob('extensions/*.*')), 48 ('extensions/wikidPadParser', glob('extensions/wikidPadParser/*.*')), 47 49 ('', ['sqlite3.dll', 'WikidPad.xrc', 'readme_Wic.txt', 'gadfly.zip', 48 50 'langlist.txt', 'appbase.css'] + glob('WikidPad_*.po')), -
branches/mbutscher/next/wikidpad_spelladdon.iss
r167 r178 2 2 SolidCompression=true 3 3 AppName=WikidPadSpellAddon 4 AppVerName=WikidPad spell addon 1.0beta14 AppVerName=WikidPad spell addon 2.0 5 5 DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{22A83C29-58A8-4CAB-8EDC-918D74F8429E%7d_is1,InstallLocation|{pf}\WikidPad} 6 6 DefaultGroupName=WikidPad 7 7 AppID={{8C751029-AC6E-43AC-B2CE-F13EB8D84DAD} 8 VersionInfoVersion= 1.09 VersionInfoTextVersion=WikidPad spell addon 1.0beta18 VersionInfoVersion=2.0 9 VersionInfoTextVersion=WikidPad spell addon 2.0 10 10 LicenseFile=C:\DATEN\Projekte\Wikidpad\Current\license-spelladdon.txt 11 11 AllowNoIcons=true 12 12 ShowLanguageDialog=auto 13 13 Compression=lzma/ultra 14 OutputBaseFilename=WP-SpellAddon- 1.0beta114 OutputBaseFilename=WP-SpellAddon-2.0 15 15 InternalCompressLevel=ultra 16 16 AppCopyright= … … 41 41 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\share\enchant\myspell\fr_FR.dic; DestDir: {app}\share\enchant\myspell 42 42 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\share\enchant\ispell\README.txt; DestDir: {app}\share\enchant\ispell 43 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\ libglib-2.0-0.dll; DestDir: {app}43 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\iconv.dll; DestDir: {app} 44 44 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\intl.dll; DestDir: {app} 45 45 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\libenchant.dll; DestDir: {app} 46 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\ iconv.dll; DestDir: {app}46 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\libglib-2.0-0.dll; DestDir: {app} 47 47 Source: ..\..\..\..\Programme\Python26\Lib\site-packages\enchant\libgmodule-2.0-0.dll; DestDir: {app} 48 48 49 Source: license-spelladdon.txt; DestDir: {app} -
branches/mbutscher/next/wikidpad_unicode.iss
r166 r178 5 5 Source: dist\icons\*.gif; DestDir: {app}\icons\; Components: Program_files; Flags: onlyifdoesntexist 6 6 Source: dist\icons\pwiki.ico; DestDir: {app}\icons\; Components: Program_files; Flags: onlyifdoesntexist 7 Source: dist\WikidPadHelp\*; DestDir: {app}\WikidPadHelp\; Components: Gadfly\Help; Flags: recursesubdirs ignoreversion8 Source: dist\w9xpopen.exe; DestDir: {app}; Components: Program_files7 Source: dist\WikidPadHelp\*; DestDir: {app}\WikidPadHelp\; Components: Program_files; Flags: recursesubdirs ignoreversion 8 ; Source: dist\w9xpopen.exe; DestDir: {app}; Components: Program_files 9 9 Source: dist\license.txt; DestDir: {app}; Components: Program_files 10 Source: dist\readme_Wic.txt; DestDir: {app}; Components: Program_files 11 Source: dist\python24.dll; DestDir: {app}; Components: Program_files 12 Source: dist\MSVCR71.dll; DestDir: {app}; Components: Program_files 13 Source: dist\sqlite3.dll; DestDir: {app}; Components: Sqlite 14 Source: dist\wxmsw26uh_stc_vc.dll; DestDir: {app}; Components: Program_files 15 Source: dist\wxmsw26uh_vc.dll; DestDir: {app}; Components: Program_files 16 Source: dist\_activex.pyd; DestDir: {app}; Components: Program_files 17 Source: dist\_controls_.pyd; DestDir: {app}; Components: Program_files 18 Source: dist\_core_.pyd; DestDir: {app}; Components: Program_files 10 ; Source: dist\readme_Wic.txt; DestDir: {app}; Components: Program_files 11 Source: dist\python26.dll; DestDir: {app}; Components: Program_files 12 ; Source: dist\MSVCR71.dll; DestDir: {app}; Components: Program_files 13 Source: dist\sqlite3.dll; DestDir: {app}; Components: Program_files 14 Source: dist\wxmsw28uh_adv_vc.dll; DestDir: {app}; Components: Program_files 15 Source: dist\wxmsw28uh_core_vc.dll; DestDir: {app}; Components: Program_files 16 Source: dist\wxmsw28uh_html_vc.dll; DestDir: {app}; Components: Program_files 17 Source: dist\wxmsw28uh_stc_vc.dll; DestDir: {app}; Components: Program_files 18 Source: dist\wxmsw28uh_xrc_vc.dll; DestDir: {app}; Components: Program_files 19 Source: dist\wxbase28uh_net_vc.dll; DestDir: {app}; Components: Program_files 20 Source: dist\wxbase28uh_vc.dll; DestDir: {app}; Components: Program_files 21 Source: dist\wxbase28uh_xml_vc.dll; DestDir: {app}; Components: Program_files 19 22 Source: dist\_ctypes.pyd; DestDir: {app}; Components: Program_files 20 Source: dist\_gdi_.pyd; DestDir: {app}; Components: Program_files 21 Source: dist\_html.pyd; DestDir: {app}; Components: Program_files 22 Source: dist\_misc_.pyd; DestDir: {app}; Components: Program_files 23 Source: dist\_hashlib.pyd; DestDir: {app}; Components: Program_files 23 24 Source: dist\pyexpat.pyd; DestDir: {app}; Components: Program_files 24 25 Source: dist\_socket.pyd; DestDir: {app}; Components: Program_files 25 Source: dist\_stc.pyd; DestDir: {app}; Components: Program_files 26 Source: dist\_windows_.pyd; DestDir: {app}; Components: Program_files 27 Source: dist\_xrc.pyd; DestDir: {app}; Components: Program_files 28 Source: dist\zlib.pyd; DestDir: {app}; Components: Program_files 26 Source: dist\select.pyd; DestDir: {app}; Components: Program_files 27 Source: dist\wx._controls_.pyd; DestDir: {app}; Components: Program_files 28 Source: dist\wx._core_.pyd; DestDir: {app}; Components: Program_files 29 Source: dist\wx._gdi_.pyd; DestDir: {app}; Components: Program_files 30 Source: dist\wx._html.pyd; DestDir: {app}; Components: Program_files 31 Source: dist\wx._misc_.pyd; DestDir: {app}; Components: Program_files 32 Source: dist\wx._stc.pyd; DestDir: {app}; Components: Program_files 33 Source: dist\wx._windows_.pyd; DestDir: {app}; Components: Program_files 34 Source: dist\wx._xrc.pyd; DestDir: {app}; Components: Program_files 29 35 Source: dist\WikidPad.xrc; DestDir: {app}; Components: Program_files 30 36 Source: dist\WikidPad_*.po; DestDir: {app}; Components: Program_files; Flags: ignoreversion sortfilesbyextension 31 37 Source: dist\langlist.txt; DestDir: {app}; Components: Program_files; Flags: ignoreversion 32 Source: dist\gadfly.zip; DestDir: {app}; Components: Gadfly38 Source: dist\gadfly.zip; DestDir: {app}; Components: Program_files 33 39 Source: dist\library.zip; DestDir: {app}; Components: Program_files 34 40 [Dirs] 35 41 Name: {app}\extensions; Components: Program_files 36 42 Name: {app}\icons; Components: Program_files 37 Name: {app}\WikidPadHelp; Components: Gadfly\Help38 Name: {app}\WikidPadHelp\data; Components: Gadfly\Help39 Name: {app}\WikidPadHelp\files 43 Name: {app}\WikidPadHelp; Components: Program_files 44 Name: {app}\WikidPadHelp\data; Components: Program_files 45 Name: {app}\WikidPadHelp\files; Components: Program_files 40 46 Name: {app}\export; Components: Program_files 47 [Components] 48 Name: Program_files; Description: Main program files; Flags: fixed; Types: custom compact full 41 49 [Setup] 42 50 SolidCompression=true 43 51 AppName=WikidPad 44 AppVerName=WikidPad 1.9beta2052 AppVerName=WikidPad 2.0alpha1 45 53 DefaultDirName={pf}\WikidPad 46 54 DefaultGroupName=WikidPad 47 55 AppID={{22A83C29-58A8-4CAB-8EDC-918D74F8429E} 48 VersionInfoVersion= 1.9.20.049 VersionInfoTextVersion=WikidPad 1.9beta2056 VersionInfoVersion=2.0.1.0 57 VersionInfoTextVersion=WikidPad 2.0alpha1 50 58 LicenseFile=C:\DATEN\Projekte\Wikidpad\Current\license.txt 51 59 AllowNoIcons=true 52 60 ShowLanguageDialog=yes 53 Compression=lzma/ ultra54 OutputBaseFilename=WikidPad- 1.9beta2055 InternalCompressLevel= ultra56 AppCopyright=© 2005-200 8Jason Horman, Michael Butscher, Gerhard Reitmayr61 Compression=lzma/fast 62 OutputBaseFilename=WikidPad-2.0alpha1 63 InternalCompressLevel=none 64 AppCopyright=© 2005-2009 Jason Horman, Michael Butscher, Gerhard Reitmayr 57 65 UsePreviousAppDir=true 58 [Components]59 Name: Program_files; Description: Main program files; Flags: fixed; Types: custom compact full60 Name: Gadfly; Description: Gadfly database; Types: custom compact full61 Name: Gadfly\Help; Description: Help wiki; Types: custom compact full62 Name: Sqlite; Description: Sqlite database; Types: custom compact full63 66 [Icons] 64 Name: {code:IconDest|Dummy}\WikidPad; Filename: {app}\WikidPad.exe; IconFilename: {app}\icons\pwiki.ico; Components: Program_files Gadfly\Help; IconIndex: 067 Name: {code:IconDest|Dummy}\WikidPad; Filename: {app}\WikidPad.exe; IconFilename: {app}\icons\pwiki.ico; Components: Program_files; IconIndex: 0 65 68 Name: {code:IconDest|Dummy}\{cm:UninstallProgram, WikidPad}; Filename: {uninstallexe} 66 69 [Registry] … … 90 93 [InstallDelete] 91 94 Name: {app}\regexpr.cache; Type: files 92 Name: {app}\icons\tb_data file.gif; Type: files93 95 [UninstallDelete] 94 96 Name: {app}\regexpr.cache; Type: files
