diff --git a/addons/FastWQ.py b/addons/FastWQ.py index 5b86821..f83ca5d 100644 --- a/addons/FastWQ.py +++ b/addons/FastWQ.py @@ -38,6 +38,8 @@ def start_here(): fastwq.config_menu() fastwq.browser_menu() fastwq.customize_addcards() + if fastwq.config.auto_update: + fastwq.check_updates(True) fastwq.window_shortcut(shortcut) addHook("profileLoaded", start_here) diff --git a/addons/fastwq/__init__.py b/addons/fastwq/__init__.py index 6e3bcc2..f8fd3ea 100644 --- a/addons/fastwq/__init__.py +++ b/addons/fastwq/__init__.py @@ -22,7 +22,7 @@ from aqt import mw from anki.hooks import addHook, wrap from aqt.addcards import AddCards from aqt.utils import showInfo, shortcut -from .gui import show_options, show_about_dialog +from .gui import show_options, show_about_dialog, check_updates from .query import query_from_browser, query_from_editor_all_fields from .context import config, APP_ICON from .lang import _ @@ -31,7 +31,7 @@ from .lang import _ __all__ = [ 'add_query_button', 'browser_menu', 'customize_addcards', 'config_menu', - 'window_shortcut' + 'window_shortcut', 'check_updates' ] @@ -122,4 +122,3 @@ def window_shortcut(key_sequence): """ global my_shortcut my_shortcut = key_sequence - diff --git a/addons/fastwq/context.py b/addons/fastwq/context.py index 58199a7..85d4f29 100644 --- a/addons/fastwq/context.py +++ b/addons/fastwq/context.py @@ -114,5 +114,10 @@ class Config(object): '''ignore accents of field in querying''' return self.data.get('ignore_accents', False) + @property + def auto_update(self): + '''auto check new version''' + return self.data.get('auto_update', True) + config = Config(mw) diff --git a/addons/fastwq/gui/common.py b/addons/fastwq/gui/common.py index b7f2bc1..f4acdd5 100644 --- a/addons/fastwq/gui/common.py +++ b/addons/fastwq/gui/common.py @@ -33,16 +33,18 @@ from ..service import service_manager __all__ = ['show_options', 'check_updates', 'show_fm_dialog', 'show_about_dialog'] -def check_updates(): +def check_updates(background=False): '''check add-on last version''' try: - state = ankihub.update([Endpoint.check_version], False, Endpoint.version) - if state == 0: - showInfo(_('LATEST_VERSION')) - elif state == -1: - showInfo(_('CHECK_FAILURE')) + state = ankihub.update([Endpoint.check_version], Endpoint.version, background) + if not background: + if state == 0: + showInfo(_('LATEST_VERSION')) + elif state == -1: + showInfo(_('CHECK_FAILURE')) except: - showInfo(_('CHECK_FAILURE')) + if not background: + showInfo(_('CHECK_FAILURE')) def show_fm_dialog(browser = None): diff --git a/addons/fastwq/gui/setting.py b/addons/fastwq/gui/setting.py index 5459a3a..e1bb7d4 100644 --- a/addons/fastwq/gui/setting.py +++ b/addons/fastwq/gui/setting.py @@ -35,6 +35,8 @@ class SettingDialog(Dialog): super(SettingDialog, self).__init__(parent, title) self.setFixedWidth(400) self.check_force_update = None + self.check_ignore_accents = None + self.check_auto_update = None self.input_thread_number = None self.build() @@ -51,6 +53,11 @@ class SettingDialog(Dialog): layout.addWidget(check_ignore_accents) layout.addSpacing(10) + check_auto_update = QCheckBox(_("AUTO_UPDATE")) + check_auto_update.setChecked(config.auto_update) + layout.addWidget(check_auto_update) + layout.addSpacing(10) + hbox = QHBoxLayout() input_thread_number = QSpinBox(parent=self) input_thread_number.setRange(1, 120) @@ -71,6 +78,7 @@ class SettingDialog(Dialog): self.check_force_update = check_force_update self.check_ignore_accents = check_ignore_accents + self.check_auto_update = check_auto_update self.input_thread_number = input_thread_number layout.setAlignment(Qt.AlignTop|Qt.AlignLeft) @@ -84,7 +92,8 @@ class SettingDialog(Dialog): data = { 'force_update': self.check_force_update.isChecked(), 'ignore_accents': self.check_ignore_accents.isChecked(), - 'thread_number': self.input_thread_number.value() + 'auto_update': self.check_auto_update.isChecked(), + 'thread_number': self.input_thread_number.value(), } config.update(data) \ No newline at end of file diff --git a/addons/fastwq/lang.py b/addons/fastwq/lang.py index a7f977a..5f96f33 100644 --- a/addons/fastwq/lang.py +++ b/addons/fastwq/lang.py @@ -18,7 +18,10 @@ # along with this program. If not, see . from anki.lang import currentLang - +try: + basestring +except NameError: + basestring = str __all__ = ['_', '_cl', '_sl'] @@ -55,6 +58,7 @@ _arr = [ ['CHECK_FAILURE', u'版本检查失败.', u'Version check failed.'], ['NEW_VERSION', u'检查到新版本:', u'New version available:'], ['UPDATE', u'更新', u'Update'], + ['AUTO_UPDATE', u'自动检测新版本', u'Auto check new version'], ['FORCE_UPDATE', u'强制更新字段', u'Forced Updates of all fields'], ['IGNORE_ACCENTS', u'忽略声调', u'Ignore Accents'], ['SKIP_VALUED', u'跳过有值项', u'Skip non-empty'], diff --git a/addons/fastwq/libs/ankihub.py b/addons/fastwq/libs/ankihub.py index 6f0a008..109cb2d 100644 --- a/addons/fastwq/libs/ankihub.py +++ b/addons/fastwq/libs/ankihub.py @@ -22,6 +22,10 @@ from ..context import APP_ICON from .AnkiHub.updates import Ui_DialogUpdates from .AnkiHub.markdown2 import markdown + +__all__ = ['update'] + + # taken from Anki's aqt/profiles.py def defaultBase(): path = mw.pm.addonFolder() @@ -34,7 +38,8 @@ dataPath = os.path.join(defaultBase(),'.fastwq_2.0.x_ankihub.json') class DialogUpdates(QDialog, Ui_DialogUpdates): - def __init__(self, parent, data, oldData, callback, install=False): + def __init__(self, parent, data, oldData, callback): + parent = parent if parent else mw QDialog.__init__(self,parent) self.setModal(True) self.setWindowFlags( @@ -46,7 +51,7 @@ class DialogUpdates(QDialog, Ui_DialogUpdates): totalSize = sum(map(lambda x:x['size'],data['assets'])) def answer(): self.update.setEnabled(False) - callback(self.appendHtml, self.finish, install) + callback(self.appendHtml, self.finish) self.html = u'' self.appendHtml(markdown(data['body'])) @@ -105,7 +110,7 @@ def asset(a): def updateSingle(repositories, path, data): - def callback(appendHtml, onReady, install): + def callback(appendHtml, onReady): for asset in data['assets']: code = asset['url'] p, fname = os.path.split(code) @@ -147,19 +152,22 @@ def updateSingle(repositories, path, data): return callback -def update(add=[], install=False, VERSION='v0.0.0'): +def update(add=[], VERSION='v0.0.0', background=False): # progress win - progresswin = QProgressDialog('Update Checking...', '', 0, 0, mw) - progresswin.setWindowModality(Qt.ApplicationModal) - progresswin.setCancelButton(None) - progresswin.setWindowFlags( - progresswin.windowFlags() & - ~Qt.WindowContextHelpButtonHint - ) - progresswin.setWindowIcon(APP_ICON) - progresswin.setWindowTitle('FastWQ - Updater') - progresswin.resize(280, 60) - progresswin.show() + if not background: + progresswin = QProgressDialog('Update Checking...', '', 0, 0, mw) + progresswin.setWindowModality(Qt.ApplicationModal) + progresswin.setCancelButton(None) + progresswin.setWindowFlags( + progresswin.windowFlags() & + ~Qt.WindowContextHelpButtonHint + ) + progresswin.setWindowIcon(APP_ICON) + progresswin.setWindowTitle('FastWQ - Updater') + progresswin.resize(280, 60) + progresswin.show() + else: + progresswin = None # conn = httplib.HTTPSConnection("api.github.com") try: @@ -214,7 +222,7 @@ def update(add=[], install=False, VERSION='v0.0.0'): if isMinor: i = 1 while i