diff --git a/aqt/__init__.py b/aqt/__init__.py index ca1aece9e..b877aeaae 100644 --- a/aqt/__init__.py +++ b/aqt/__init__.py @@ -8,8 +8,7 @@ from PyQt4.QtGui import * appName="Anki" appVersion="1.99" appWebsite="http://ankisrs.net/" -appWiki="http://ankisrs.net/wiki/" -appHelpSite="http://ankisrs.net/docs/" +appHelpSite="http://ankisrs.net/docs/dev/" appDonate="http://ankisrs.net/support/" modDir=os.path.dirname(os.path.abspath(__file__)) runningDir=os.path.split(modDir)[0] @@ -19,6 +18,14 @@ if hasattr(sys, "frozen"): sys.path.append(modDir) modDir = os.path.dirname(sys.argv[0]) +def openHelp(name): + if "#" in name: + name = name.split("#") + name = name[0] + ".html#" + name[1] + else: + name = name + ".html" + QDesktopServices.openUrl(QUrl(appHelpSite + name)) + # Dialog manager - manages modeless windows ########################################################################## diff --git a/aqt/about.py b/aqt/about.py index d37f1ff70..987793424 100644 --- a/aqt/about.py +++ b/aqt/about.py @@ -14,7 +14,7 @@ def show(parent): abouttext += '
' + _("Anki is a friendly, intelligent spaced learning \ system. It's free and open source.") abouttext += '
' + _("Version %s") % appVersion + '
'
- abouttext += _("Visit website") + \
+ abouttext += (_("Visit website") % aqt.appWebsite) + \
""
abouttext += '
' + _("Written by Damien Elmes, with patches, translation,\ testing and design from:
%(cont)s") % {'cont': u""" diff --git a/aqt/activetags.py b/aqt/activetags.py index c35f18a22..35050d92d 100644 --- a/aqt/activetags.py +++ b/aqt/activetags.py @@ -129,8 +129,7 @@ class ActiveTagsChooser(QDialog): QDialog.accept(self) def onHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "SelectiveStudy")) + aqt.openHelp("SelectiveStudy") def show(parent, type): at = ActiveTagsChooser(parent, type) diff --git a/aqt/addcards.py b/aqt/addcards.py index ddabecc24..8720a779f 100644 --- a/aqt/addcards.py +++ b/aqt/addcards.py @@ -59,7 +59,7 @@ class AddCards(QDialog): self.dialog.modelArea.setLayout(self.modelChooser) def helpRequested(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + "AddItems")) + aqt.openHelp("AddItems") def addButtons(self): self.addButton = QPushButton(_("Add")) diff --git a/aqt/cardlist.py b/aqt/cardlist.py index 1c99c5444..f38240c67 100644 --- a/aqt/cardlist.py +++ b/aqt/cardlist.py @@ -1137,8 +1137,8 @@ where id in %s""" % ids2str(sf)) }, parent=self) def onFindReplaceHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "Browser#FindReplace")) + aqt.openHelp("Browser#FindReplace") + # Edit: finding dupes ###################################################################### @@ -1270,7 +1270,7 @@ select fm.id, fm.name from fieldmodels fm""") ###################################################################### def onHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + "Browser")) + aqt.openHelp("Browser") # Generate card dialog ###################################################################### @@ -1315,8 +1315,7 @@ order by ordinal""" % ids2str(self.cms)) QDialog.accept(self) def onHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "Browser#GenerateCards")) + aqt.openHelp("Browser#GenerateCards") # Change model dialog ###################################################################### @@ -1476,5 +1475,4 @@ Are you sure you want to continue?"""), parent=self): return QDialog.accept(self) def onHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "Browser#ChangeModel")) + aqt.openHelp("Browser#ChangeModel") diff --git a/aqt/clayout.py b/aqt/clayout.py index 5705e7218..cec4b7eaf 100644 --- a/aqt/clayout.py +++ b/aqt/clayout.py @@ -325,8 +325,7 @@ order by n""", id=card.id) QDialog.reject(self) def onHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "CardLayout")) + aqt.openHelp("CardLayout") # Fields ########################################################################## diff --git a/aqt/deckproperties.py b/aqt/deckproperties.py index 899041da8..4263a6df9 100644 --- a/aqt/deckproperties.py +++ b/aqt/deckproperties.py @@ -147,8 +147,7 @@ class DeckProperties(QDialog): self.d.setModified() def helpRequested(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "DeckProperties")) + aqt.openHelp("DeckProperties") def reject(self): n = _("Deck Properties") diff --git a/aqt/facteditor.py b/aqt/facteditor.py index 8cf844c5a..8f34e02b0 100644 --- a/aqt/facteditor.py +++ b/aqt/facteditor.py @@ -884,8 +884,7 @@ class FactEditor(object): def onHtmlEdit(self): def helpRequested(): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "HtmlEditor")) + aqt.openHelp("HtmlEditor") w = self.focusedEdit() if w: self.saveFields() diff --git a/aqt/groupconf.py b/aqt/groupconf.py index ff8f141f8..ae7286693 100644 --- a/aqt/groupconf.py +++ b/aqt/groupconf.py @@ -24,8 +24,7 @@ class GroupConf(QDialog): self.setup() self.connect(self.form.buttonBox, SIGNAL("helpRequested()"), - lambda: QDesktopServices.openUrl(QUrl( - aqt.appWiki + "GroupOptions"))) + lambda: aqt.openHelp("GroupOptions")) self.connect(self.form.buttonBox.button(QDialogButtonBox.RestoreDefaults), SIGNAL("clicked()"), self.onRestore) diff --git a/aqt/groupman.py b/aqt/groupman.py index cd90d0ab7..fc09ee674 100644 --- a/aqt/groupman.py +++ b/aqt/groupman.py @@ -63,8 +63,7 @@ class GroupManager(QDialog): b = button(_("&Options..."), self.onEdit).setShortcut("o") self.connect(box, SIGNAL("helpRequested()"), - lambda: QDesktopServices.openUrl(QUrl( - aqt.appWiki + "GroupManager"))) + lambda: aqt.openHelp("GroupManager")) def onStudy(self): self.mw.deck.reset() diff --git a/aqt/importing.py b/aqt/importing.py index ec19edcb6..ab7f25ab7 100644 --- a/aqt/importing.py +++ b/aqt/importing.py @@ -66,7 +66,7 @@ class UpdateMap(QDialog): self.exec_() def helpRequested(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + "FileImport")) + aqt.openHelp("FileImport") def accept(self): self.updateKey = ( @@ -312,4 +312,4 @@ you can enter it here. Use \\t to represent tab."""), QDialog.reject(self) def helpRequested(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + "FileImport")) + aqt.openHelp("FileImport") diff --git a/aqt/modelchooser.py b/aqt/modelchooser.py index b563111b4..6f4d219d1 100644 --- a/aqt/modelchooser.py +++ b/aqt/modelchooser.py @@ -205,5 +205,4 @@ class AddModel(QDialog): QDialog.accept(self) def onHelp(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "AddModel")) + aqt.openHelp("AddModel") diff --git a/aqt/modelproperties.py b/aqt/modelproperties.py index e6e6a15e3..6dc826571 100644 --- a/aqt/modelproperties.py +++ b/aqt/modelproperties.py @@ -252,8 +252,7 @@ class ModelProperties(QDialog): self.ignoreCardUpdate = False def helpRequested(self): - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "ModelProperties")) + aqt.openHelp("ModelProperties") # Cleanup ########################################################################## diff --git a/aqt/plugins.py b/aqt/plugins.py index 77a8428bb..6f61b8cbb 100644 --- a/aqt/plugins.py +++ b/aqt/plugins.py @@ -123,9 +123,6 @@ to work with this version of Anki.""")) path = self.pluginsFolder() openFolder(path) - def onGetPlugins(self): - QDesktopServices.openUrl(QUrl("http://ichi2.net/anki/wiki/Plugins")) - def enablePlugin(self, p): pd = self.pluginsFolder() old = os.path.join(pd, p) diff --git a/aqt/preferences.py b/aqt/preferences.py index 6df8ef83a..e14577746 100644 --- a/aqt/preferences.py +++ b/aqt/preferences.py @@ -248,7 +248,4 @@ class Preferences(QDialog): return self.codeToIndex("en") def helpRequested(self): - idx = self.dialog.tabWidget.currentIndex() - QDesktopServices.openUrl(QUrl(aqt.appWiki + - "Preferences#" + - tabs[idx])) + aqt.openHelp("Preferences") diff --git a/aqt/reviewer.py b/aqt/reviewer.py index f031a6cdf..75d326c9b 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -527,9 +527,8 @@ div#filler { # progress addWgt(vertSep()) class QClickableProgress(QProgressBar): - url = "http://ichi2.net/anki/wiki/ProgressBars" def mouseReleaseEvent(self, evt): - QDesktopServices.openUrl(QUrl(self.url)) + aqt.openHelp("ProgressBars") progressBarSize = (50, 14) self.progressBar = QClickableProgress() self.progressBar.setFixedSize(*progressBarSize) @@ -590,10 +589,9 @@ div#filler { def onLeech(self, card): print "leech" return + link = aqt.appHelpSite + "Leeches.html" txt = (_("""\ -%s... is a leech.""") - % stripHTML(stripSounds(self.currentCard.question)).\ - replace("\n", " ")[0:30]) +Card was a leech.""") % link) if isLeech and self.deck.db.scalar( "select 1 from cards where id = :id and type < 0", id=cardId): txt += _(" It has been suspended.") diff --git a/aqt/share.py b/aqt/share.py index 3ee7d4f51..8e4c6d22b 100644 --- a/aqt/share.py +++ b/aqt/share.py @@ -69,8 +69,8 @@ This is an exported packaged deck created by Anki.
To share this deck with other people, upload it to - -http://anki.ichi2.net/file/upload, or email + +http://ankiweb.net/file/upload, or email it to your friends.