aboutsummaryrefslogtreecommitdiff
path: root/components/color.py
diff options
context:
space:
mode:
Diffstat (limited to 'components/color.py')
-rw-r--r--components/color.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/components/color.py b/components/color.py
new file mode 100644
index 0000000..c2a49e2
--- /dev/null
+++ b/components/color.py
@@ -0,0 +1,87 @@
+from PIL import Image, ImageDraw
+from PyQt4 import uic, QtGui, QtCore
+from PyQt4.QtGui import QColor
+import os
+from . import __base__
+
+class Component(__base__.Component):
+ '''Color'''
+ def widget(self, parent):
+ self.parent = parent
+ page = uic.loadUi(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'color.ui'))
+
+ self.color1 = (0,0,0)
+ self.color2 = (133,133,133)
+ self.x = 0
+ self.y = 0
+
+ page.lineEdit_color1.setText('%s,%s,%s' % self.color1)
+ page.lineEdit_color2.setText('%s,%s,%s' % self.color2)
+ page.pushButton_color1.clicked.connect(lambda: self.pickColor(1))
+ btnStyle = "QPushButton { background-color : %s; outline: none; }" % QColor(*self.color1).name()
+ page.pushButton_color1.setStyleSheet(btnStyle)
+ page.pushButton_color2.clicked.connect(lambda: self.pickColor(2))
+ btnStyle = "QPushButton { background-color : %s; outline: none; }" % QColor(*self.color2).name()
+ page.pushButton_color2.setStyleSheet(btnStyle)
+ # disable color #2 until non-default 'fill' option gets changed
+ page.lineEdit_color2.setDisabled(True)
+ page.pushButton_color2.setDisabled(True)
+ page.spinBox_x.setValue(self.x)
+ page.spinBox_x.setValue(self.y)
+
+ page.lineEdit_color1.textChanged.connect(self.update)
+ page.lineEdit_color2.textChanged.connect(self.update)
+ page.spinBox_x.valueChanged.connect(self.update)
+ page.spinBox_y.valueChanged.connect(self.update)
+ self.page = page
+ return page
+
+ def update(self):
+ self.color1 = self.RGBFromString(self.page.lineEdit_color1.text())
+ self.color2 = self.RGBFromString(self.page.lineEdit_color2.text())
+ self.x = self.page.spinBox_x.value()
+ self.y = self.page.spinBox_y.value()
+ self.parent.drawPreview()
+
+ def previewRender(self, previewWorker):
+ width = int(previewWorker.core.settings.value('outputWidth'))
+ height = int(previewWorker.core.settings.value('outputHeight'))
+ return self.drawFrame(width, height)
+
+ def preFrameRender(self, **kwargs):
+ super().preFrameRender(**kwargs)
+ return ['static']
+
+ def frameRender(self, moduleNo, arrayNo, frameNo):
+ width = int(self.worker.core.settings.value('outputWidth'))
+ height = int(self.worker.core.settings.value('outputHeight'))
+ return self.drawFrame(width, height)
+
+ def drawFrame(self, width, height):
+ r,g,b = self.color1
+ return Image.new("RGBA", (width, height), (r, g, b, 255))
+
+ def loadPreset(self, pr):
+ self.page.lineEdit_color1.setText('%s,%s,%s' % pr['color1'])
+ self.page.lineEdit_color2.setText('%s,%s,%s' % pr['color2'])
+ btnStyle = "QPushButton { background-color : %s; outline: none; }" % QColor(*pr['color1']).name()
+ self.page.pushButton_color1.setStyleSheet(btnStyle)
+ btnStyle = "QPushButton { background-color : %s; outline: none; }" % QColor(*pr['color2']).name()
+ self.page.pushButton_color2.setStyleSheet(btnStyle)
+
+ def savePreset(self):
+ return {
+ 'color1' : self.color1,
+ 'color2' : self.color2,
+ }
+
+ def pickColor(self, num):
+ RGBstring, btnStyle = super().pickColor()
+ if not RGBstring:
+ return
+ if num == 1:
+ self.page.lineEdit_color1.setText(RGBstring)
+ self.page.pushButton_color1.setStyleSheet(btnStyle)
+ else:
+ self.page.lineEdit_color2.setText(RGBstring)
+ self.page.pushButton_color2.setStyleSheet(btnStyle)