Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hörist <forenjunkie@chello.at>2017-05-08 00:23:04 +0300
committerPhilipp Hörist <forenjunkie@chello.at>2017-05-08 00:23:04 +0300
commit7447ffc3738eda21f4720a833c2362a47223e01e (patch)
tree76958fd617f02ef0ed039da34abf636d23e35e94
parent7de642625c78625fae4e7eea244f2e4ea9d9f335 (diff)
parent315318a7381a09b632386a4a47b5d0f5fa3ca57c (diff)
Merge branch 'httpupload' into 'gtk3'
httpupload version 0.6.2 See merge request !39
-rw-r--r--httpupload/httpupload.py23
-rw-r--r--httpupload/manifest.ini2
-rw-r--r--httpupload/thumbnail.py90
3 files changed, 10 insertions, 105 deletions
diff --git a/httpupload/httpupload.py b/httpupload/httpupload.py
index fef54c3..b9a94ff 100644
--- a/httpupload/httpupload.py
+++ b/httpupload/httpupload.py
@@ -155,7 +155,7 @@ class Base(object):
self.controls[jid] = button
id_ = button.connect(
- 'clicked', self.on_file_button_clicked, jid, chat_control)
+ 'clicked', self.on_file_button_clicked, chat_control)
chat_control.handlers[id_] = button
self.set_button_state(self.enabled, button)
button.show()
@@ -174,17 +174,12 @@ class Base(object):
for jid in self.controls:
self.set_button_state(state, self.controls[jid])
- def encryption_activated(self, jid):
- for plugin in gajim.plugin_manager.active_plugins:
- if type(plugin).__name__ == 'OmemoPlugin':
- state = plugin.get_omemo_state(self.account)
- encryption = state.encryption.is_active(jid)
- log.info('Encryption is: %s', bool(encryption))
- return bool(encryption)
- log.info('OMEMO not found, encryption disabled')
- return False
+ def encryption_activated(self, chat_control):
+ encrypted = chat_control.encryption == 'OMEMO'
+ log.info('Encryption is: %s', encrypted)
+ return encrypted
- def on_file_dialog_ok(self, widget, jid, chat_control):
+ def on_file_dialog_ok(self, widget, chat_control):
path = widget.get_filename()
widget.destroy()
@@ -205,7 +200,7 @@ class Base(object):
transient_for=chat_control.parent_win.window)
return
- encrypted = self.encryption_activated(jid)
+ encrypted = self.encryption_activated(chat_control)
if encrypted and not ENCRYPTION_AVAILABLE:
ErrorDialog(
_('Error'),
@@ -233,9 +228,9 @@ class Base(object):
progress=progress, event=event)
self.request_slot(file)
- def on_file_button_clicked(self, widget, jid, chat_control):
+ def on_file_button_clicked(self, widget, chat_control):
FileChooserDialog(
- on_response_ok=lambda widget: self.on_file_dialog_ok(widget, jid,
+ on_response_ok=lambda widget: self.on_file_dialog_ok(widget,
chat_control),
title_text=_('Choose file to send'),
action=Gtk.FileChooserAction.OPEN,
diff --git a/httpupload/manifest.ini b/httpupload/manifest.ini
index a3b61e7..a794451 100644
--- a/httpupload/manifest.ini
+++ b/httpupload/manifest.ini
@@ -1,7 +1,7 @@
[info]
name: HttpUpload
short_name: httpupload
-version: 0.6.1
+version: 0.6.2
description: This plugin is designed to send a file to a contact or muc by using httpupload.<br/>
Your server must support <a href="http://xmpp.org/extensions/xep-0363.html">XEP-0363: HTTP Upload</a>.<br/>
authors: Thilo Molitor <thilo@eightysoft.de>
diff --git a/httpupload/thumbnail.py b/httpupload/thumbnail.py
deleted file mode 100644
index b55660d..0000000
--- a/httpupload/thumbnail.py
+++ /dev/null
@@ -1,90 +0,0 @@
-from gi.repository import GdkPixbuf
-import base64
-from io import BytesIO
-import os
-import sys
-import logging
-from urllib.parse import quote as urlquote
-try:
- from PIL import Image
- pil_available = True
-except:
- pil_available = False
-
-log = logging.getLogger('gajim.plugin_system.httpupload.thumbnail')
-
-def scale_down_to(pixbuf, size):
- # Creates a pixbuf that fits in the specified square of sizexsize
- # while preserving the aspect ratio
- # Returns scaled_pixbuf
- image_width = pixbuf.get_width()
- image_height = pixbuf.get_height()
-
- if image_width > image_height:
- if image_width > size:
- image_height = int(size / float(image_width) * image_height)
- image_width = int(size)
- else:
- if image_height > size:
- image_width = int(size / float(image_height) * image_width)
- image_height = int(size)
-
- crop_pixbuf = pixbuf.scale_simple(image_width, image_height, GdkPixbuf.InterpType.BILINEAR)
- return crop_pixbuf
-
-
-max_thumbnail_size = 2048
-max_thumbnail_dimension = 160
-base64_size_factor = 4/3
-def thumbnail(path_to_file):
- """
- Generates a JPEG thumbnail and base64-encodes, ensuring that the encoded
- size is less than max_thumbnail_size bytes. If this is not possible, returns
- None.
- """
- thumb = None
- quality_steps = (100, 80, 60, 50, 40, 35, 30, 25, 23, 20, 18, 15, 13, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
- # If the whole file is small enough, we'll just use that as a thumbnail
- # without downsampling.
- if os.path.getsize(path_to_file) * base64_size_factor < max_thumbnail_size:
- with open(path_to_file, 'rb') as content_file:
- thumb = urlquote(base64.standard_b64encode(content_file.read()), '')
- log.info("Image small enough (%d bytes), not resampling" % len(thumb))
- return thumb
- elif pil_available:
- log.info("PIL available, using it for image downsampling")
- try:
- for quality in quality_steps:
- thumb = Image.open(path_to_file)
- thumb.thumbnail((max_thumbnail_dimension, max_thumbnail_dimension), Image.ANTIALIAS)
- output = BytesIO()
- thumb.save(output, format='JPEG', quality=quality, optimize=True)
- thumb = output.getvalue()
- output.close()
- thumb = urlquote(base64.standard_b64encode(thumb), '')
- log.debug("pil thumbnail jpeg quality %d produces an image of size %d...", quality, len(thumb))
- if len(thumb) < max_thumbnail_size:
- log.debug("Size is acceptable.")
- return thumb
- except:
- log.info("Exception occurred during PIL downsampling", exc_info=sys.exc_info())
- thumb = None
- # If we haven't returned by now we couldn't use PIL for one reason or
- # another, so let's pass on to GdkPixbuf
- log.info("using GdkPixBuf for image downsampling")
- temp_file = None
- try:
- pixbuf = GdkPixbuf.Pixbuf.new_from_file(path_to_file)
- scaled_pb = scale_down_to(pixbuf, max_thumbnail_dimension)
- for quality in quality_steps:
- success, thumb_raw = scaled_pb.save_to_bufferv("jpeg", ["quality"], [str(quality)])
- log.debug("gdkpixbuf thumbnail jpeg quality %d produces an image of size %d...",
- quality,
- len(thumb_raw) * base64_size_factor)
- if len(thumb_raw) * base64_size_factor < max_thumbnail_size:
- log.debug("Size is acceptable.")
- return urlquote(base64.standard_b64encode(thumb_raw))
- except:
- log.info("Exception occurred during GdkPixbuf downsampling, not providing thumbnail", exc_info=sys.exc_info())
- return None
- log.info("No acceptably small thumbnail was generated.")