add option to paste as pngs; compress pngs

This commit is contained in:
Damien Elmes 2012-05-04 15:29:22 +09:00
parent 2279704a11
commit b1ba96d517
4 changed files with 24 additions and 8 deletions

View file

@ -1075,14 +1075,19 @@ class EditorWebView(AnkiWebView):
def _processImage(self, mime): def _processImage(self, mime):
im = QImage(mime.imageData()) im = QImage(mime.imageData())
name = namedtmp("paste-%d.png" % im.cacheKey()) name = namedtmp("paste-%d" % im.cacheKey())
uname = unicode(name, sys.getfilesystemencoding()) uname = unicode(name, sys.getfilesystemencoding())
if im.hasAlphaChannel(): if self.editor.mw.pm.profile.get("pastePNG", False):
im.save(uname) ext = ".png"
im.save(uname+ext, None, 50)
else: else:
im.save(uname, None, 95) ext = ".jpg"
im.save(uname+ext, None, 80)
# invalid image?
if not os.path.exists(uname+ext):
return QMimeData()
mime = QMimeData() mime = QMimeData()
mime.setHtml(self.editor._addMedia(uname)) mime.setHtml(self.editor._addMedia(uname+ext))
return mime return mime
def _retrieveURL(self, url): def _retrieveURL(self, url):

View file

@ -128,12 +128,14 @@ Not currently enabled; click the sync button in the main window to enable."""))
def setupOptions(self): def setupOptions(self):
self.form.stripHTML.setChecked(self.prof['stripHTML']) self.form.stripHTML.setChecked(self.prof['stripHTML'])
self.form.pastePNG.setChecked(self.prof.get("pastePNG", False))
self.connect( self.connect(
self.form.profilePass, SIGNAL("clicked()"), self.form.profilePass, SIGNAL("clicked()"),
self.onProfilePass) self.onProfilePass)
def updateOptions(self): def updateOptions(self):
self.prof['stripHTML'] = self.form.stripHTML.isChecked() self.prof['stripHTML'] = self.form.stripHTML.isChecked()
self.prof['pastePNG'] = self.form.pastePNG.isChecked()
def onProfilePass(self): def onProfilePass(self):
pw, ret = getText(_("""\ pw, ret = getText(_("""\

View file

@ -42,6 +42,7 @@ profileConf = dict(
editFontFamily=fontForPlatform(), editFontFamily=fontForPlatform(),
editFontSize=12, editFontSize=12,
editLineSize=20, editLineSize=20,
pastePNG=False,
# not exposed in gui # not exposed in gui
deleteMedia=False, deleteMedia=False,
preserveKeyboard=True, preserveKeyboard=True,

View file

@ -44,6 +44,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="useCurrent">
<property name="text">
<string>Use the current deck as the default when adding notes</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QCheckBox" name="stripHTML"> <widget class="QCheckBox" name="stripHTML">
<property name="text"> <property name="text">
@ -52,9 +59,9 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="useCurrent"> <widget class="QCheckBox" name="pastePNG">
<property name="text"> <property name="text">
<string>Use the current deck as the default when adding notes</string> <string>Paste clipboard images as PNG</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -464,8 +471,9 @@
<tabstops> <tabstops>
<tabstop>showEstimates</tabstop> <tabstop>showEstimates</tabstop>
<tabstop>showProgress</tabstop> <tabstop>showProgress</tabstop>
<tabstop>stripHTML</tabstop>
<tabstop>useCurrent</tabstop> <tabstop>useCurrent</tabstop>
<tabstop>stripHTML</tabstop>
<tabstop>pastePNG</tabstop>
<tabstop>newSpread</tabstop> <tabstop>newSpread</tabstop>
<tabstop>dayOffset</tabstop> <tabstop>dayOffset</tabstop>
<tabstop>lrnCutoff</tabstop> <tabstop>lrnCutoff</tabstop>