App-sitelenmute
view release on metacpan or search on metacpan
script/fcaption view on Meta::CPAN
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# fcaption: simple image caption editor
# Copyright(c) 2015-2016 by wave++ "Yuri D'Elia" <wavexx@thregr.org>
from __future__ import unicode_literals, generators, print_function
import os, sys
import argparse
import locale
try:
from PySide2 import QtCore, QtGui, QtWidgets
except ImportError:
from PyQt4 import QtCore, QtGui
QtWidgets = QtGui
APP_DESC = "Sitelen Mute image caption editor"
ENCODING = locale.getpreferredencoding()
FILE_EXT = ["jpg", "jpeg", "png", "tif", "tiff"]
if sys.version_info.major < 3:
str = unicode
class ScaledImage(QtWidgets.QLabel):
def __init__(self):
super(ScaledImage, self).__init__()
self._pixmap = QtGui.QPixmap()
def setPixmap(self, pixmap):
self._pixmap = pixmap
if not pixmap.isNull():
pixmap = pixmap.scaled(self.size(), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
super(ScaledImage, self).setPixmap(pixmap)
def resizeEvent(self, ev):
super(ScaledImage, self).resizeEvent(ev)
if not self._pixmap.isNull():
pixmap = self._pixmap.scaled(self.size(), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
super(ScaledImage, self).setPixmap(pixmap)
class BackgroundLoader(QtCore.QThread):
def __init__(self, path, size):
super(BackgroundLoader, self).__init__()
self.path = path
self.size = size
self.image = None
def run(self):
self.image = QtGui.QImage(self.path)
if not self.image.isNull() and self.size:
self.image = self.image.scaled(self.size,
QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle(APP_DESC)
# construct UI
horizontalSplitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
verticalSplitter = QtWidgets.QSplitter(QtCore.Qt.Vertical)
self.image = ScaledImage()
self.image.setMinimumSize(480, 319)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(1)
sizePolicy.setVerticalStretch(1)
self.image.setSizePolicy(sizePolicy)
self.image.setAlignment(QtCore.Qt.AlignCenter)
verticalSplitter.addWidget(self.image)
horizontalLayout = QtWidgets.QHBoxLayout()
formLayout = QtWidgets.QFormLayout()
formLayout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, QtWidgets.QLabel("Title:"))
self.edit_title = QtWidgets.QLineEdit()
formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.edit_title)
formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, QtWidgets.QLabel("Description:"))
self.edit_desc = QtWidgets.QPlainTextEdit()
self.edit_desc.setLineWrapMode(QtWidgets.QPlainTextEdit.WidgetWidth)
( run in 1.278 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )