Merge branch 'master' of https://github.com/dae/anki into CorrectBranchInCardPreview

This commit is contained in:
Arthur-Milchior 2019-02-17 19:33:05 +01:00
commit 95a475472c
7 changed files with 93 additions and 64 deletions

View file

@ -28,7 +28,7 @@ pyqt5-dev-tools) as well.
If you're on another platform or your distro has the wrong Qt version, you If you're on another platform or your distro has the wrong Qt version, you
can install PyQt with pip: can install PyQt with pip:
$ pip3 install sip pyqt5 $ pip3 install PyQt5 PyQtWebEngine
To use the development version: To use the development version:

View file

@ -474,6 +474,7 @@ class ConfigEditor(QDialog):
self.form.setupUi(self) self.form.setupUi(self)
restore = self.form.buttonBox.button(QDialogButtonBox.RestoreDefaults) restore = self.form.buttonBox.button(QDialogButtonBox.RestoreDefaults)
restore.clicked.connect(self.onRestoreDefaults) restore.clicked.connect(self.onRestoreDefaults)
self.setupFonts()
self.updateHelp() self.updateHelp()
self.updateText(self.conf) self.updateText(self.conf)
self.show() self.show()
@ -482,6 +483,10 @@ class ConfigEditor(QDialog):
default_conf = self.mgr.addonConfigDefaults(self.addon) default_conf = self.mgr.addonConfigDefaults(self.addon)
self.updateText(default_conf) self.updateText(default_conf)
def setupFonts(self):
font_mono = QFontDatabase.systemFont(QFontDatabase.FixedFont)
self.form.editor.setFont(font_mono)
def updateHelp(self): def updateHelp(self):
txt = self.mgr.addonConfigHelp(self.addon) txt = self.mgr.addonConfigHelp(self.addon)
if txt: if txt:

View file

@ -380,7 +380,6 @@ def setupApkgImport(mw, importer):
if not full: if not full:
# adding # adding
return True return True
backup = re.match("backup-.*\\.apkg", base)
if not mw.restoringBackup and not askUser(_("""\ if not mw.restoringBackup and not askUser(_("""\
This will delete your existing collection and replace it with the data in \ This will delete your existing collection and replace it with the data in \
the file you're importing. Are you sure?"""), msgfunc=QMessageBox.warning, the file you're importing. Are you sure?"""), msgfunc=QMessageBox.warning,
@ -389,7 +388,7 @@ the file you're importing. Are you sure?"""), msgfunc=QMessageBox.warning,
# schedule replacement; don't do it immediately as we may have been # schedule replacement; don't do it immediately as we may have been
# called as part of the startup routine # called as part of the startup routine
mw.progress.timer( mw.progress.timer(
100, lambda mw=mw, f=importer.file: replaceWithApkg(mw, f, backup), False) 100, lambda mw=mw, f=importer.file: replaceWithApkg(mw, f, mw.restoringBackup), False)
def replaceWithApkg(mw, file, backup): def replaceWithApkg(mw, file, backup):
mw.unloadCollection(lambda: _replaceWithApkg(mw, file, backup)) mw.unloadCollection(lambda: _replaceWithApkg(mw, file, backup))

View file

@ -13,7 +13,7 @@ from anki.utils import isWin, isMac
from PyQt5.Qt import * from PyQt5.Qt import *
# trigger explicit message in case of missing libraries # trigger explicit message in case of missing libraries
# instead of silently failing to import # instead of silently failing to import
from PyQt5.QtWebEngineWidgets import QWebEnginePage from PyQt5.QtWebEngineWidgets import *
try: try:
from PyQt5 import sip from PyQt5 import sip
except ImportError: except ImportError:

View file

@ -325,13 +325,22 @@ def ensureWidgetInScreenBoundaries(widget):
aqt.mw.progress.timer(50, lambda: ensureWidgetInScreenBoundaries(widget), False) aqt.mw.progress.timer(50, lambda: ensureWidgetInScreenBoundaries(widget), False)
return return
# ensure qt has restored the window within the screen's bounds, # ensure widget is smaller than screen bounds
# and at least 50px from bottom right
geom = handle.screen().availableGeometry() geom = handle.screen().availableGeometry()
pos = widget.pos() wsize = widget.size()
x = min(max(geom.x(), pos.x()), geom.width()+geom.x()-50) cappedWidth = min(geom.width(), wsize.width())
y = min(max(geom.y(), pos.y()), geom.height()+geom.y()-50) cappedHeight = min(geom.height(), wsize.height())
if pos.x() != x or pos.y() != y: if cappedWidth > wsize.width() or cappedHeight > wsize.height():
widget.resize(QSize(cappedWidth, cappedHeight))
# ensure widget is inside top left
wpos = widget.pos()
x = max(geom.x(), wpos.x())
y = max(geom.y(), wpos.y())
# and bottom right
x = min(x, geom.width()+geom.x()-cappedWidth)
y = min(y, geom.height()+geom.y()-cappedHeight)
if x != wpos.x() or y != wpos.y():
widget.move(x, y) widget.move(x, y)
def saveState(widget, key): def saveState(widget, key):

View file

@ -18,63 +18,78 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QScrollArea" name="scrollArea"> <widget class="QSplitter" name="splitter">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property> </property>
<property name="frameShape"> <widget class="QPlainTextEdit" name="editor">
<enum>QFrame::NoFrame</enum> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<property name="widgetResizable"> <horstretch>3</horstretch>
<bool>true</bool> <verstretch>0</verstretch>
</property> </sizepolicy>
<widget class="QWidget" name="scrollAreaWidgetContents"> </property>
<property name="geometry"> <property name="lineWrapMode">
<rect> <enum>QPlainTextEdit::NoWrap</enum>
<x>0</x>
<y>0</y>
<width>607</width>
<height>112</height>
</rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</widget> <widget class="QScrollArea" name="scrollArea">
</item> <property name="sizePolicy">
<item> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<widget class="QPlainTextEdit" name="editor"> <horstretch>1</horstretch>
<property name="sizePolicy"> <verstretch>0</verstretch>
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> </sizepolicy>
<horstretch>0</horstretch> </property>
<verstretch>3</verstretch> <property name="frameShape">
</sizepolicy> <enum>QFrame::NoFrame</enum>
</property> </property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>80</width>
<height>470</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</widget> </widget>
</item> </item>
<item> <item>

View file

@ -4,3 +4,4 @@ pyaudio
requests requests
decorator decorator
markdown markdown
psutil; sys_platform == "win32"