From 307d499f9ae2729c790fe9258d88aca72331cdf6 Mon Sep 17 00:00:00 2001 From: tassaron Date: Mon, 12 Jun 2017 22:34:37 -0400 Subject: adding an asterisk to modified, unsaved presets flags for unsaved changes saved in project files --- components/__base__.py | 38 ++++++++++++++++++++++++++------------ components/color.py | 7 ++++++- components/image.py | 6 +++++- components/original.py | 10 +++++++--- components/text.py | 11 ++++++++--- components/video.py | 6 +++++- 6 files changed, 57 insertions(+), 21 deletions(-) (limited to 'components') diff --git a/components/__base__.py b/components/__base__.py index 3ccb5dc..b32c120 100644 --- a/components/__base__.py +++ b/components/__base__.py @@ -1,9 +1,15 @@ -from PyQt4 import QtGui +from PyQt4 import QtGui, QtCore +class Component(QtCore.QObject): + '''A base class for components to inherit from''' -class Component: - def __init__(self): + # modified = QtCore.pyqtSignal(int, bool) + + def __init__(self, moduleIndex, compPos): + super().__init__() self.currentPreset = None + self.moduleIndex = moduleIndex + self.compPos = compPos def __str__(self): return self.__doc__ @@ -13,12 +19,27 @@ class Component: return 1 def cancel(self): - # make sure your component responds to these variables in frameRender() + # please stop any lengthy process in response to this variable self.canceled = True def reset(self): self.canceled = False + def update(self): + self.modified.emit(self.compPos, True) + # use super().update() then read your widget values here + + def loadPreset(self, presetDict, presetName): + '''Children should take (presetDict, presetName=None) as args''' + + # Use super().loadPreset(presetDict, presetName) + # Then update your widgets using the preset dict + self.currentPreset = presetName \ + if presetName != None else presetDict['preset'] + + def savePreset(self): + return {} + def preFrameRender(self, **kwargs): for var, value in kwargs.items(): exec('self.%s = value' % var) @@ -62,7 +83,7 @@ class Component: return page def update(self): - # read widget values + super().update() self.parent.drawPreview() def previewRender(self, previewWorker): @@ -77,13 +98,6 @@ class Component: image = Image.new("RGBA", (width, height), (0,0,0,0)) return image - def loadPreset(self, presetDict, presetName=None): - self.currentPreset = presetName - # update widgets using a preset dict - - def savePreset(self): - return {} - def cancel(self): self.canceled = True diff --git a/components/color.py b/components/color.py index 11c1b19..b6105c8 100644 --- a/components/color.py +++ b/components/color.py @@ -7,6 +7,9 @@ from . import __base__ class Component(__base__.Component): '''Color''' + + modified = QtCore.pyqtSignal(int, bool) + def widget(self, parent): self.parent = parent page = uic.loadUi(os.path.join( @@ -45,6 +48,7 @@ class Component(__base__.Component): return page def update(self): + super().update() 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() @@ -70,7 +74,8 @@ class Component(__base__.Component): return Image.new("RGBA", (width, height), (r, g, b, 255)) def loadPreset(self, pr, presetName=None): - self.currentPreset = presetName if presetName else pr['preset'] + super().loadPreset(pr, presetName) + self.page.lineEdit_color1.setText('%s,%s,%s' % pr['color1']) self.page.lineEdit_color2.setText('%s,%s,%s' % pr['color2']) diff --git a/components/image.py b/components/image.py index 441e0e1..ed5f243 100644 --- a/components/image.py +++ b/components/image.py @@ -6,6 +6,9 @@ from . import __base__ class Component(__base__.Component): '''Image''' + + modified = QtCore.pyqtSignal(int, bool) + def widget(self, parent): self.parent = parent self.settings = parent.settings @@ -22,6 +25,7 @@ class Component(__base__.Component): return page def update(self): + super().update() self.imagePath = self.page.lineEdit_image.text() self.parent.drawPreview() @@ -49,7 +53,7 @@ class Component(__base__.Component): return frame def loadPreset(self, pr, presetName=None): - self.currentPreset = presetName if presetName else pr['preset'] + super().loadPreset(pr, presetName) self.page.lineEdit_image.setText(pr['image']) def savePreset(self): diff --git a/components/original.py b/components/original.py index 7873f43..f3f578d 100644 --- a/components/original.py +++ b/components/original.py @@ -1,9 +1,8 @@ import numpy from PIL import Image, ImageDraw -from PyQt4 import uic, QtGui +from PyQt4 import uic, QtGui, QtCore from PyQt4.QtGui import QColor import os -import random from . import __base__ import time from copy import copy @@ -11,6 +10,9 @@ from copy import copy class Component(__base__.Component): '''Original Audio Visualization''' + + modified = QtCore.pyqtSignal(int, bool) + def widget(self, parent): self.parent = parent self.visColor = (255, 255, 255) @@ -33,12 +35,14 @@ class Component(__base__.Component): return page def update(self): + super().update() self.layout = self.page.comboBox_visLayout.currentIndex() self.visColor = self.RGBFromString(self.page.lineEdit_visColor.text()) self.parent.drawPreview() def loadPreset(self, pr, presetName=None): - self.currentPreset = presetName if presetName else pr['preset'] + super().loadPreset(pr, presetName) + self.page.lineEdit_visColor.setText('%s,%s,%s' % pr['visColor']) btnStyle = "QPushButton { background-color : %s; outline: none; }" \ % QColor(*pr['visColor']).name() diff --git a/components/text.py b/components/text.py index e8fb3d5..a40e2a9 100644 --- a/components/text.py +++ b/components/text.py @@ -9,8 +9,11 @@ from . import __base__ class Component(__base__.Component): '''Title Text''' - def __init__(self): - super().__init__() + + modified = QtCore.pyqtSignal(int, bool) + + def __init__(self, *args): + super().__init__(*args) self.titleFont = QFont() def widget(self, parent): @@ -53,6 +56,7 @@ class Component(__base__.Component): return page def update(self): + super().update() self.title = self.page.lineEdit_title.text() self.alignment = self.page.comboBox_textAlign.currentIndex() self.titleFont = self.page.fontComboBox_titleFont.currentFont() @@ -79,7 +83,8 @@ class Component(__base__.Component): return x, self.yPosition def loadPreset(self, pr, presetName=None): - self.currentPreset = presetName if presetName else pr['preset'] + super().loadPreset(pr, presetName) + self.page.lineEdit_title.setText(pr['title']) font = QFont() font.fromString(pr['titleFont']) diff --git a/components/video.py b/components/video.py index bd1bf96..ff06329 100644 --- a/components/video.py +++ b/components/video.py @@ -86,6 +86,9 @@ class Video: class Component(__base__.Component): '''Video''' + + modified = QtCore.pyqtSignal(int, bool) + def widget(self, parent): self.parent = parent self.settings = parent.settings @@ -106,6 +109,7 @@ class Component(__base__.Component): return page def update(self): + super().update() self.videoPath = self.page.lineEdit_video.text() self.loopVideo = self.page.checkBox_loop.isChecked() self.parent.drawPreview() @@ -136,7 +140,7 @@ class Component(__base__.Component): return self.video.frame(frameNo) def loadPreset(self, pr, presetName=None): - self.currentPreset = presetName if presetName else pr['preset'] + super().loadPreset(pr, presetName) self.page.lineEdit_video.setText(pr['video']) self.page.checkBox_loop.setChecked(pr['loop']) -- cgit v1.2.3