anki-word-query/addons/fastwq/gui/common.py

102 lines
3.3 KiB
Python
Raw Normal View History

2018-07-14 15:24:21 +08:00
#-*- coding:utf-8 -*-
#
2018-07-27 17:57:00 +08:00
# Copyright (C) 2018 sthoo <sth201807@gmail.com>
2018-07-14 15:24:21 +08:00
#
# Support: Report an issue at https://github.com/sth2018/FastWordQuery/issues
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version; http://www.gnu.org/copyleft/gpl.html.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import types
from aqt import mw
2018-07-31 02:21:35 +08:00
from aqt.qt import *
2018-07-14 15:24:21 +08:00
from aqt.utils import showInfo
from .options import OptionsDialog
from .foldermanager import FoldersManageDialog
2018-08-15 00:46:46 +08:00
from .dictmanager import DictManageDialog
2018-07-14 15:24:21 +08:00
from ..libs import ankihub
from ..context import config
from ..lang import _
from ..constants import Endpoint, Template
2018-08-15 00:46:46 +08:00
from ..service import service_manager, service_pool
2018-07-14 15:24:21 +08:00
__all__ = ['show_options', 'check_updates', 'show_fm_dialog', 'show_about_dialog']
2018-09-12 12:28:50 +08:00
def check_updates(background=False, parent=None):
2018-07-14 15:24:21 +08:00
'''check add-on last version'''
try:
2018-09-12 12:28:50 +08:00
parent = mw if parent is None else parent
state = ankihub.update([Endpoint.check_version], Endpoint.version, background, parent)
2018-07-31 15:46:03 +08:00
if not background:
if state == 0:
showInfo(_('LATEST_VERSION'))
elif state == -1:
showInfo(_('CHECK_FAILURE'))
2018-07-14 15:24:21 +08:00
except:
2018-07-31 15:46:03 +08:00
if not background:
showInfo(_('CHECK_FAILURE'))
2018-07-14 15:24:21 +08:00
def show_fm_dialog(browser = None):
'''open dictionary folder manager window'''
parent = mw if browser is None else browser
fm_dialog = FoldersManageDialog(parent, u'Dictionary Folder Manager')
fm_dialog.activateWindow()
fm_dialog.raise_()
2018-07-31 02:21:35 +08:00
if fm_dialog.exec_() == QDialog.Accepted:
2018-07-14 15:24:21 +08:00
# update local services
2018-08-15 00:46:46 +08:00
service_pool.clean()
2018-07-14 15:24:21 +08:00
service_manager.update_services()
2018-07-31 02:30:38 +08:00
fm_dialog.destroy()
2018-07-14 15:24:21 +08:00
# reshow options window
show_options(browser)
2018-08-15 00:46:46 +08:00
def show_dm_dialog(browser = None):
parent = mw if browser is None else browser
dm_dialog = DictManageDialog(parent, u'Dictionary Manager')
dm_dialog.activateWindow()
dm_dialog.raise_()
if dm_dialog.exec_() == QDialog.Accepted:
# update local services
service_pool.clean()
service_manager.update_services()
dm_dialog.destroy()
# reshow options window
show_options(browser)
2018-07-14 15:24:21 +08:00
def show_options(browser = None, model_id = -1, callback = None, *args, **kwargs):
'''open options window'''
parent = mw if browser is None else browser
config.read()
opt_dialog = OptionsDialog(parent, u'Options', model_id)
opt_dialog.activateWindow()
opt_dialog.raise_()
2018-08-15 00:46:46 +08:00
result = opt_dialog.exec_()
opt_dialog.destroy()
if result == QDialog.Accepted:
2018-07-14 15:24:21 +08:00
if isinstance(callback, types.FunctionType):
callback(*args, **kwargs)
2018-08-15 00:46:46 +08:00
elif result == 1001:
show_fm_dialog(parent)
elif result == 1002:
show_dm_dialog(parent)
2018-07-14 15:24:21 +08:00
def show_about_dialog(parent):
'''open about dialog'''
2018-07-31 02:21:35 +08:00
QMessageBox.about(parent, _('ABOUT'), Template.tmpl_about)