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 )