Added text alignment option

This commit is contained in:
Maximilian Siess 2017-04-18 13:35:29 +02:00
parent 7d2ecb0d15
commit c772bf5583
8 changed files with 58 additions and 8 deletions

BIN
.core.py.swp Normal file

Binary file not shown.

BIN
.main.py.swp Normal file

Binary file not shown.

BIN
.main.ui.swp Normal file

Binary file not shown.

BIN
.preview_thread.py.swp Normal file

Binary file not shown.

10
core.py
View File

@ -26,7 +26,7 @@ class Core():
except:
return "avconv"
def drawBaseImage(self, backgroundImage, titleText, titleFont):
def drawBaseImage(self, backgroundImage, titleText, titleFont, alignment):
if self._image == None or not self.lastBackgroundImage == backgroundImage:
self.lastBackgroundImage = backgroundImage
@ -49,7 +49,13 @@ class Core():
painter.setFont(font)
painter.setPen(QColor(255, 255, 255))
painter.drawText(70, 375, titleText)
fm = QtGui.QFontMetrics(font)
if alignment == "Left":
painter.drawText(70, 375, titleText)
if alignment == "Middle":
painter.drawText(1280/2 - fm.width(titleText)/2, 375, titleText)
if alignment == "Right":
painter.drawText(1210 - fm.width(titleText), 375, titleText)
painter.end()
buffer = QtCore.QBuffer()

11
main.py
View File

@ -14,7 +14,7 @@ import preview_thread, core, video_thread
class Main(QtCore.QObject):
newTask = QtCore.pyqtSignal(str, str, QFont)
newTask = QtCore.pyqtSignal(str, str, QFont, str)
processTask = QtCore.pyqtSignal()
videoTask = QtCore.pyqtSignal(str, str, QFont, str, str)
@ -49,6 +49,7 @@ class Main(QtCore.QObject):
window.fontComboBox.currentFontChanged.connect(self.drawPreview)
window.lineEdit_title.textChanged.connect(self.drawPreview)
window.alignmentComboBox.currentIndexChanged.connect(self.drawPreview)
window.progressBar_create.setValue(0)
window.setWindowTitle("Audio Visualizer")
@ -56,12 +57,17 @@ class Main(QtCore.QObject):
window.pushButton_selectOutput.setText("Select Output Video File")
window.pushButton_selectBackground.setText("Select Background Image")
window.label_font.setText("Title Font")
window.label_alignment.setText("Alignment")
window.label_title.setText("Title Text")
window.pushButton_createVideo.setText("Create Video")
window.groupBox_create.setTitle("Create")
window.groupBox_settings.setTitle("Settings")
window.groupBox_preview.setTitle("Preview")
window.alignmentComboBox.addItem("Left");
window.alignmentComboBox.addItem("Middle");
window.alignmentComboBox.addItem("Right");
titleFont = self.settings.value("titleFont")
if not titleFont == None:
window.fontComboBox.setCurrentFont(QFont(titleFont))
@ -136,7 +142,8 @@ class Main(QtCore.QObject):
def drawPreview(self):
self.newTask.emit(self.window.label_background.text(),
self.window.lineEdit_title.text(),
self.window.fontComboBox.currentFont())
self.window.fontComboBox.currentFont(),
self.window.alignmentComboBox.currentText())
# self.processTask.emit()
def showPreviewImage(self, image):

35
main.ui
View File

@ -171,6 +171,41 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_alignment">
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="alignmentComboBox"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>

View File

@ -19,13 +19,14 @@ class Worker(QtCore.QObject):
self.queue = queue
@pyqtSlot(str, str, QtGui.QFont)
def createPreviewImage(self, backgroundImage, titleText, titleFont):
@pyqtSlot(str, str, QtGui.QFont, str)
def createPreviewImage(self, backgroundImage, titleText, titleFont, alignment):
# print('worker thread id: {}'.format(QtCore.QThread.currentThreadId()))
dic = {
"backgroundImage": backgroundImage,
"titleText": titleText,
"titleFont": titleFont
"titleFont": titleFont,
"alignment": alignment
}
self.queue.put(dic)
@ -42,7 +43,8 @@ class Worker(QtCore.QObject):
im = self.core.drawBaseImage(
nextPreviewInformation["backgroundImage"],
nextPreviewInformation["titleText"],
nextPreviewInformation["titleFont"])
nextPreviewInformation["titleFont"],
nextPreviewInformation["alignment"])
spectrum = numpy.fromfunction(lambda x: 0.008*(x-128)**2, (255,), dtype="int16")