Exemple #1
0
	def __init__(self, args):
		QMainWindow.__init__(self)

		self.setWindowIcon(ImageDiffIcon)

		self.imageFolder = ""
		self.pm1 = self.pm2 = self.pm3 = None

		self.ui = Ui_MainWindow()
		self.ui.setupUi(self)
		self.setWindowTitle(title)

		self.settings = QSettings("TestPlant", "imageDiff")
		self.readSettings()
		self.ui.splitter.setChildrenCollapsible(False)

		self.scene = Scene(self)
		self.ui.graphicsView.setScene(self.scene)
		self.installEventFilter(self)

		self.ui.actionClearImages.setIcon(deleteIcon16)
		self.ui.actionOpenImages.setIcon(addIcon16)
		self.ui.actionClearImages.triggered.connect(self.clearImages)
		self.ui.actionOpenImages.triggered.connect(self.openFiles)
		self.ui.actionAbout.triggered.connect(self.about)
		self.ui.actionUser_Guide.triggered.connect(self.usage)
		self.ui.actionIgnore_Transparent_Pixels.triggered.connect(self.showOverlay)

		self.ui.actionExit.triggered.connect(self.close)
		self.connect(self.ui.scale_Slider, QtCore.SIGNAL("valueChanged(int)"), self.showImages)
		self.connect(self.ui.tolerance_le, QtCore.SIGNAL("editingFinished()"), self.showOverlay)
		self.ui.image1_title_te.setStyleSheet("background-color: transparent;")
		self.ui.image2_title_te.setStyleSheet("background-color: transparent;")
		self.ui.compare_title_te.setStyleSheet("background-color: transparent;")

		if args:
			self.scene.addImageFiles(args)

		QTimer.singleShot(2000, self.checkForNewVersion)
Exemple #2
0
#-*- coding:utf-8 -*-
import sys
import os
from globaltool import *

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic.properties import QtGui
from ui.Ui_mainWindow import Ui_MainWindow
from Event_mainWindows import Event_mainWindow

if __name__ == '__main__':
   #初始化环境变量
   cfenv.initEnvData()
   print("Bin:" + cfenv.binDir)
   print("Data:" + cfenv.dataDir)
   print("dbPlugin:" + cfenv.dbPluginDir)
   print("scriptEnv:" + cfenv.scriptEnvDir)
   print("script:" + cfenv.scriptDir)
   print("attach:" + cfenv.attachDir)
   print("configFile:" + cfenv.configFilePath)
   print("backupConfigFile:" + cfenv.backupConfigFilePath)
   print("templeteScriptFile:" + cfenv.templeteScriptFile)
   #启动程序
   app = QApplication(sys.argv)
   MainWindow = QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   uiEvent = Event_mainWindow()
   uiEvent.setMainEvent(MainWindow,ui)
   MainWindow.show()
   sys.exit(app.exec_())
Exemple #3
0
class ImageDiff(QMainWindow):
	def __init__(self, args):
		QMainWindow.__init__(self)

		self.setWindowIcon(ImageDiffIcon)

		self.imageFolder = ""
		self.pm1 = self.pm2 = self.pm3 = None

		self.ui = Ui_MainWindow()
		self.ui.setupUi(self)
		self.setWindowTitle(title)

		self.settings = QSettings("TestPlant", "imageDiff")
		self.readSettings()
		self.ui.splitter.setChildrenCollapsible(False)

		self.scene = Scene(self)
		self.ui.graphicsView.setScene(self.scene)
		self.installEventFilter(self)

		self.ui.actionClearImages.setIcon(deleteIcon16)
		self.ui.actionOpenImages.setIcon(addIcon16)
		self.ui.actionClearImages.triggered.connect(self.clearImages)
		self.ui.actionOpenImages.triggered.connect(self.openFiles)
		self.ui.actionAbout.triggered.connect(self.about)
		self.ui.actionUser_Guide.triggered.connect(self.usage)
		self.ui.actionIgnore_Transparent_Pixels.triggered.connect(self.showOverlay)

		self.ui.actionExit.triggered.connect(self.close)
		self.connect(self.ui.scale_Slider, QtCore.SIGNAL("valueChanged(int)"), self.showImages)
		self.connect(self.ui.tolerance_le, QtCore.SIGNAL("editingFinished()"), self.showOverlay)
		self.ui.image1_title_te.setStyleSheet("background-color: transparent;")
		self.ui.image2_title_te.setStyleSheet("background-color: transparent;")
		self.ui.compare_title_te.setStyleSheet("background-color: transparent;")

		if args:
			self.scene.addImageFiles(args)

		QTimer.singleShot(2000, self.checkForNewVersion)

	def about(self):
		QtGui.QMessageBox.about(self, title, "%s by TestPlant\nVersion %s"%(title, _version))

	def usage(self):
		QtGui.QMessageBox.about(self, "Usage", "Add files from the file menu, or by drag and drop.\n\n" +
		"Move images using the mouse or the keyboard cursor keys.\n\n" +
		"The overlapping regions of two images are shown in the lower windows.\n\n" +
		"The discrepancy is the count and percentage of different pixels.\n\n" +
		"Tolerance is the maximum allowed difference in each RGB value of a pixel.\nSet one integer for all colors or 3 for red green and blue.\n\n" +
		"Ignoring transparency is set in the options menu.\n\n"
		"Right-click an image to change the overlap order or remove.")

	def getTolerance(self):
		try:
			s =  str(self.ui.tolerance_le.text())
			if not s: return (0,0,0)
			tolerances = map(lambda t: int(t), s.split())
			if len(tolerances) == 1:
				return (tolerances[0], tolerances[0], tolerances[0])
			elif len(tolerances) != 3:
				raise
		except:
			QtGui.QMessageBox.warning(self, title, "Tolerance must be an integer or 3 space separated integers for RGB")
			tolerances = (0,0,0)
		return tolerances

	def showOverlay(self):
		self.scene.showOverlay()

	def clearImages(self):
		self.scene.clear()
		self.ui.image1_lbl.clear()
		self.ui.image2_lbl.clear()
		self.ui.overlay_lbl.clear()
		self.pm1 = self.pm2 = self.pm3 = None
		self.ui.image1_title_te.clear()
		self.ui.image2_title_te.clear()
		self.ui.compare_title_te.clear()

	def showImages(self):
		self.scaleImage(self.ui.image1_lbl, self.pm1)
		self.scaleImage(self.ui.image2_lbl, self.pm2)
		self.scaleImage(self.ui.overlay_lbl, self.pm3)

	def scaleImage(self, lbl, pm):
		if pm:
			lbl.setPixmap(pm.scaled(pm.width() * self.ui.scale_Slider.value(),
			pm.height() * self.ui.scale_Slider.value(), QtCore.Qt.KeepAspectRatio))

	def openFiles(self):
		filePaths = QtGui.QFileDialog.getOpenFileNames(self, "Select images", self.imageFolder, 'image files (*.png *.tiff *.bmp);;*.*')
		if filePaths:
			self.scene.addImageFiles(filePaths)
			self.imageFolder = os.path.dirname(unicode(filePaths[0]))

	def eventFilter(self, object, event):
		if event.type() == 2113:
			self.scene.removeNode()
			return True
		return False

	def closeEvent(self, e):
		self.saveSettings()
		e.accept()

	def saveSettings(self):
		self.settings.setValue('imageFolder', self.imageFolder)
		self.settings.setValue('ignoreAlpha', self.ui.actionIgnore_Transparent_Pixels.isChecked())
		self.settings.setValue('checkupdate', self.ui.actionCheck_for_update_at_start.isChecked())
		self.settings.setValue('tolerance', self.ui.tolerance_le.text())
		self.settings.beginGroup("/geometry")
		self.settings.setValue("X", self.pos().x())
		self.settings.setValue("Y", self.pos().y())
		self.settings.setValue("W", self.size().width())
		self.settings.setValue("H", self.size().height())
		self.settings.endGroup()

	def readSettings(self):
		self.imageFolder = os.path.normpath(str(self.settings.value("imageFolder").toString()))
		self.ui.actionIgnore_Transparent_Pixels.setChecked( self.settings.value("ignoreAlpha", True).toBool())
		self.ui.actionCheck_for_update_at_start.setChecked( self.settings.value("checkupdate", True).toBool())
		self.ui.tolerance_le.setText( self.settings.value("tolerance").toString())
		self.settings.beginGroup("/geometry")
		p = QPoint()  # position
		s = QSize()  # size

		x = self.settings.value("X", -1).toInt()[0]
		y = self.settings.value("Y", -1).toInt()[0]
		# don't position outside current screen
		qRect = QtGui.QDesktopWidget.availableGeometry(app.desktop())
		if x > qRect.right():
			x = 10
		if y > qRect.bottom():
			y = 10
		p.setX(x)
		p.setY(y)
		s.setWidth(self.settings.value("W", -1).toInt()[0])
		s.setHeight(self.settings.value("H", -1).toInt()[0])
		self.settings.endGroup()
		if p.x() > 0 and p.y() > 0 and s.width() > 0 and s.height() > 0:
			self.resize(s)  # restore size
			self.move(p)  # restore position

	def checkForNewVersion(self):
		if not self.ui.actionCheck_for_update_at_start.isChecked():
			return
		r = urllib2.urlopen('http://downloads.testplant.com/downloads/ImageDiff/ImageDiff.txt')
		if r.getcode() == 200 and int(r.readline()) > _release:
			msgBox = QtGui.QMessageBox(self)
			msgBox.setWindowTitle("Version Check")
			msgBox.setTextFormat(QtCore.Qt.RichText)
			msgBox.setText( "A new version is available from:<P> <a href=\"http://www.testplant.com/dlds/eggplant-functional\">eggPlant Functional downloads</a>" )
			msgBox.setIconPixmap(QPixmap(":/images/ImageDiff-64.png"))
			msgBox.exec_()