mirror of
https://github.com/Kilian/Trimage.git
synced 2026-01-26 18:08:42 -05:00
add closing shortcut, change to tableview, file processing logic
This commit is contained in:
parent
0736a8f3a3
commit
95789e1920
3 changed files with 73 additions and 22 deletions
46
trimage.py
46
trimage.py
|
|
@ -1,52 +1,66 @@
|
||||||
import sys
|
import sys
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
from ui import Ui_trimage
|
from ui import Ui_trimage
|
||||||
from os.path import isfile
|
|
||||||
|
|
||||||
class StartQT4(QtGui.QMainWindow):
|
class StartQT4(QtGui.QMainWindow):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QtGui.QWidget.__init__(self, parent)
|
QtGui.QWidget.__init__(self, parent)
|
||||||
self.ui = Ui_trimage()
|
self.ui = Ui_trimage()
|
||||||
self.ui.setupUi(self)
|
self.ui.setupUi(self)
|
||||||
|
self.quit_shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self); # todo use standardKey Quit.
|
||||||
|
|
||||||
# connect signals with slots
|
# connect signals with slots
|
||||||
QtCore.QObject.connect(self.ui.addfiles,QtCore.SIGNAL("clicked()"), self.file_dialog)
|
QtCore.QObject.connect(self.ui.addfiles, QtCore.SIGNAL("clicked()"), self.file_dialog)
|
||||||
QtCore.QObject.connect(self.ui.recompress,QtCore.SIGNAL("clicked()"), self.recompress_files)
|
QtCore.QObject.connect(self.ui.recompress, QtCore.SIGNAL("clicked()"), self.recompress_files)
|
||||||
|
QtCore.QObject.connect(self.quit_shortcut, QtCore.SIGNAL("activated()"), QtGui.qApp, QtCore.SLOT('quit()'))
|
||||||
|
|
||||||
# set recompress to false
|
# set recompress to false
|
||||||
self.ui.recompress.setEnabled(False)
|
self.ui.recompress.setEnabled(False)
|
||||||
|
|
||||||
|
|
||||||
def file_dialog(self):
|
def file_dialog(self):
|
||||||
fd = QtGui.QFileDialog(self)
|
fd = QtGui.QFileDialog(self)
|
||||||
images = fd.getOpenFileNames(self,
|
images = fd.getOpenFileNames(self,
|
||||||
"Select one or more image files to compress",
|
"Select one or more image files to compress",
|
||||||
"", # directory
|
"", # directory
|
||||||
"Image files (*.png *.gif *.jpg)")
|
"Image files (*.png *.gif *.jpg)")
|
||||||
|
|
||||||
for image in images:
|
for image in images:
|
||||||
filename = image
|
self.compress_file(image)
|
||||||
oldfilesize = QtCore.QFileInfo(image).size()
|
|
||||||
# send image to processing
|
|
||||||
|
|
||||||
def enable_recompress(self):
|
def enable_recompress(self):
|
||||||
self.ui.recompress.setEnabled(True)
|
self.ui.recompress.setEnabled(True)
|
||||||
|
|
||||||
|
|
||||||
def recompress_files(self):
|
def recompress_files(self):
|
||||||
# get list of currently processed files
|
# get list of currently processed files
|
||||||
# reprocess them
|
# reprocess them
|
||||||
# update columnview
|
# update columnview
|
||||||
self.setWindowTitle("check too!")
|
self.setWindowTitle("check too!")
|
||||||
|
|
||||||
def compress_file(self, filename):
|
|
||||||
# check file extention
|
|
||||||
# get file size
|
|
||||||
# run correct command line tool and get reply
|
|
||||||
# get new file size
|
|
||||||
# add to columnview
|
|
||||||
self.setWindowTitle("check too!")
|
|
||||||
|
|
||||||
def add_to_columnview(self):
|
def compress_file(self, filename):
|
||||||
# update column view with file info
|
oldfile = QtCore.QFileInfo(filename);
|
||||||
|
name = oldfile.fileName()
|
||||||
|
oldfilesize = oldfile.size()
|
||||||
|
|
||||||
|
if name.endsWith("jpg"):
|
||||||
|
self.jpg = True
|
||||||
|
# run jpegoptim
|
||||||
|
else:
|
||||||
|
self.jpg = False
|
||||||
|
#run optipng
|
||||||
|
|
||||||
|
newfile = oldfile
|
||||||
|
newfilesize = newfile.size()
|
||||||
|
ratio = 100 - (newfilesize / oldfilesize * 100)
|
||||||
|
ratio_str = "%.1f%%" % ratio
|
||||||
|
|
||||||
|
# get new file size
|
||||||
|
# add to columnview name, newsize, ratio_str,
|
||||||
|
|
||||||
|
def add_to_tableview(self, filename, filesize, ratio):
|
||||||
|
# update table view with file info
|
||||||
self.setWindowTitle("check too!")
|
self.setWindowTitle("check too!")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
20
ui.py
20
ui.py
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'window.ui'
|
# Form implementation generated from reading ui file 'window.ui'
|
||||||
#
|
#
|
||||||
# Created: Mon Feb 1 16:48:11 2010
|
# Created: Mon Feb 1 19:37:17 2010
|
||||||
# by: PyQt4 UI code generator 4.4.4
|
# by: PyQt4 UI code generator 4.4.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
@ -13,12 +13,15 @@ class Ui_trimage(object):
|
||||||
def setupUi(self, trimage):
|
def setupUi(self, trimage):
|
||||||
trimage.setObjectName("trimage")
|
trimage.setObjectName("trimage")
|
||||||
trimage.resize(600, 170)
|
trimage.resize(600, 170)
|
||||||
|
|
||||||
self.centralwidget = QtGui.QWidget(trimage)
|
self.centralwidget = QtGui.QWidget(trimage)
|
||||||
self.centralwidget.setObjectName("centralwidget")
|
self.centralwidget.setObjectName("centralwidget")
|
||||||
|
|
||||||
self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget)
|
self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget)
|
||||||
self.gridLayout_2.setMargin(0)
|
self.gridLayout_2.setMargin(0)
|
||||||
self.gridLayout_2.setSpacing(0)
|
self.gridLayout_2.setSpacing(0)
|
||||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||||
|
|
||||||
self.widget = QtGui.QWidget(self.centralwidget)
|
self.widget = QtGui.QWidget(self.centralwidget)
|
||||||
self.widget.setEnabled(True)
|
self.widget.setEnabled(True)
|
||||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
|
||||||
|
|
@ -27,20 +30,25 @@ class Ui_trimage(object):
|
||||||
sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
|
||||||
self.widget.setSizePolicy(sizePolicy)
|
self.widget.setSizePolicy(sizePolicy)
|
||||||
self.widget.setObjectName("widget")
|
self.widget.setObjectName("widget")
|
||||||
|
|
||||||
self.verticalLayout = QtGui.QVBoxLayout(self.widget)
|
self.verticalLayout = QtGui.QVBoxLayout(self.widget)
|
||||||
self.verticalLayout.setSpacing(0)
|
self.verticalLayout.setSpacing(0)
|
||||||
self.verticalLayout.setMargin(0)
|
self.verticalLayout.setMargin(0)
|
||||||
self.verticalLayout.setObjectName("verticalLayout")
|
self.verticalLayout.setObjectName("verticalLayout")
|
||||||
|
|
||||||
self.frame = QtGui.QFrame(self.widget)
|
self.frame = QtGui.QFrame(self.widget)
|
||||||
self.frame.setObjectName("frame")
|
self.frame.setObjectName("frame")
|
||||||
|
|
||||||
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame)
|
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame)
|
||||||
self.verticalLayout_2.setSpacing(0)
|
self.verticalLayout_2.setSpacing(0)
|
||||||
self.verticalLayout_2.setMargin(0)
|
self.verticalLayout_2.setMargin(0)
|
||||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||||
|
|
||||||
self.horizontalLayout = QtGui.QHBoxLayout()
|
self.horizontalLayout = QtGui.QHBoxLayout()
|
||||||
self.horizontalLayout.setSpacing(0)
|
self.horizontalLayout.setSpacing(0)
|
||||||
self.horizontalLayout.setMargin(10)
|
self.horizontalLayout.setMargin(10)
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
|
|
||||||
self.addfiles = QtGui.QPushButton(self.frame)
|
self.addfiles = QtGui.QPushButton(self.frame)
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setPointSize(9)
|
font.setPointSize(9)
|
||||||
|
|
@ -51,6 +59,7 @@ class Ui_trimage(object):
|
||||||
self.addfiles.setIcon(icon)
|
self.addfiles.setIcon(icon)
|
||||||
self.addfiles.setObjectName("addfiles")
|
self.addfiles.setObjectName("addfiles")
|
||||||
self.horizontalLayout.addWidget(self.addfiles)
|
self.horizontalLayout.addWidget(self.addfiles)
|
||||||
|
|
||||||
self.label = QtGui.QLabel(self.frame)
|
self.label = QtGui.QLabel(self.frame)
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setPointSize(8)
|
font.setPointSize(8)
|
||||||
|
|
@ -60,6 +69,7 @@ class Ui_trimage(object):
|
||||||
self.label.setIndent(10)
|
self.label.setIndent(10)
|
||||||
self.label.setObjectName("label")
|
self.label.setObjectName("label")
|
||||||
self.horizontalLayout.addWidget(self.label)
|
self.horizontalLayout.addWidget(self.label)
|
||||||
|
|
||||||
spacerItem = QtGui.QSpacerItem(498, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
spacerItem = QtGui.QSpacerItem(498, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||||
self.horizontalLayout.addItem(spacerItem)
|
self.horizontalLayout.addItem(spacerItem)
|
||||||
self.recompress = QtGui.QPushButton(self.frame)
|
self.recompress = QtGui.QPushButton(self.frame)
|
||||||
|
|
@ -67,14 +77,17 @@ class Ui_trimage(object):
|
||||||
font.setPointSize(9)
|
font.setPointSize(9)
|
||||||
self.recompress.setFont(font)
|
self.recompress.setFont(font)
|
||||||
self.recompress.setCursor(QtCore.Qt.PointingHandCursor)
|
self.recompress.setCursor(QtCore.Qt.PointingHandCursor)
|
||||||
|
|
||||||
icon1 = QtGui.QIcon()
|
icon1 = QtGui.QIcon()
|
||||||
icon1.addPixmap(QtGui.QPixmap("view-refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon1.addPixmap(QtGui.QPixmap("view-refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||||
|
|
||||||
self.recompress.setIcon(icon1)
|
self.recompress.setIcon(icon1)
|
||||||
self.recompress.setCheckable(False)
|
self.recompress.setCheckable(False)
|
||||||
self.recompress.setObjectName("recompress")
|
self.recompress.setObjectName("recompress")
|
||||||
self.horizontalLayout.addWidget(self.recompress)
|
self.horizontalLayout.addWidget(self.recompress)
|
||||||
self.verticalLayout_2.addLayout(self.horizontalLayout)
|
self.verticalLayout_2.addLayout(self.horizontalLayout)
|
||||||
self.processedfiles = QtGui.QColumnView(self.frame)
|
|
||||||
|
self.processedfiles = QtGui.QTableView(self.frame)
|
||||||
self.processedfiles.setEnabled(True)
|
self.processedfiles.setEnabled(True)
|
||||||
self.processedfiles.setAcceptDrops(True)
|
self.processedfiles.setAcceptDrops(True)
|
||||||
self.processedfiles.setFrameShape(QtGui.QFrame.NoFrame)
|
self.processedfiles.setFrameShape(QtGui.QFrame.NoFrame)
|
||||||
|
|
@ -87,6 +100,9 @@ class Ui_trimage(object):
|
||||||
self.processedfiles.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
|
self.processedfiles.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
|
||||||
self.processedfiles.setAlternatingRowColors(True)
|
self.processedfiles.setAlternatingRowColors(True)
|
||||||
self.processedfiles.setTextElideMode(QtCore.Qt.ElideRight)
|
self.processedfiles.setTextElideMode(QtCore.Qt.ElideRight)
|
||||||
|
self.processedfiles.setShowGrid(True)
|
||||||
|
self.processedfiles.setGridStyle(QtCore.Qt.NoPen)
|
||||||
|
self.processedfiles.setSortingEnabled(True)
|
||||||
self.processedfiles.setObjectName("processedfiles")
|
self.processedfiles.setObjectName("processedfiles")
|
||||||
self.verticalLayout_2.addWidget(self.processedfiles)
|
self.verticalLayout_2.addWidget(self.processedfiles)
|
||||||
self.verticalLayout.addWidget(self.frame)
|
self.verticalLayout.addWidget(self.frame)
|
||||||
|
|
|
||||||
23
window.ui
23
window.ui
|
|
@ -147,7 +147,7 @@
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QColumnView" name="processedfiles">
|
<widget class="QTableView" name="processedfiles">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
|
@ -190,6 +190,27 @@
|
||||||
<property name="textElideMode">
|
<property name="textElideMode">
|
||||||
<enum>Qt::ElideRight</enum>
|
<enum>Qt::ElideRight</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="showGrid">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="gridStyle">
|
||||||
|
<enum>Qt::NoPen</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderHighlightSections">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderHighlightSections">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue