diff --git a/.gitignore b/.gitignore
index de84a6d..7ea9905 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,7 +54,7 @@ cover/
# Translations
*.mo
*.pot
-
+demuxer.txt
# Django stuff:
*.log
local_settings.py
diff --git a/.idea/dictionaries/afar.xml b/.idea/dictionaries/afar.xml
new file mode 100644
index 0000000..f26b101
--- /dev/null
+++ b/.idea/dictionaries/afar.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/Pipfile b/Pipfile
index 6e4d2ed..4e85ab9 100644
--- a/Pipfile
+++ b/Pipfile
@@ -11,6 +11,7 @@ pylama = "*"
ffmpeg = "*"
pip = "*"
ffmpeg-python = "*"
+pydub = "*"
[dev-packages]
diff --git a/Pipfile.lock b/Pipfile.lock
index 7d192f9..a3c7feb 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "6c12b28b456a859b8139dd5175876beeec58f47abcfbcb6d98dbfdc3a955320d"
+ "sha256": "b9153460b4a961fc9063b87ddac6e4c7bf8748bfaefcefc26f2401e340ae7b1e"
},
"pipfile-spec": 6,
"requires": {
@@ -148,6 +148,14 @@
"markers": "python_version >= '3.5'",
"version": "==5.1.1"
},
+ "pydub": {
+ "hashes": [
+ "sha256:25fdfbbfd4c69363006a27c7bd2346c4b886a0dd3da264c14d858b71a9593284",
+ "sha256:630c68bfff9bb27cbc5e1f02923f717c3bc5f4d73fd685fda08b6ce90f76dc69"
+ ],
+ "index": "pypi",
+ "version": "==0.24.1"
+ },
"pyflakes": {
"hashes": [
"sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92",
diff --git a/src/gui/fonts/Raleway.zip b/src/gui/fonts/Raleway.zip
new file mode 100644
index 0000000..8245daf
Binary files /dev/null and b/src/gui/fonts/Raleway.zip differ
diff --git a/src/gui/images/icons/generate.png b/src/gui/images/icons/generate.png
index 0d755ef..71fc236 100644
Binary files a/src/gui/images/icons/generate.png and b/src/gui/images/icons/generate.png differ
diff --git a/src/gui/ui/preview_dialog.ui b/src/gui/ui/preview_dialog.ui
index d1a1f29..f80790e 100644
--- a/src/gui/ui/preview_dialog.ui
+++ b/src/gui/ui/preview_dialog.ui
@@ -1,7 +1,7 @@
- dialog
-
+ PreviewDialog
+
Qt::NonModal
@@ -18,85 +18,68 @@
-
-
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
-
-
-
- -
-
-
- Qt::Horizontal
+
+
+ Czas rozpoczęcia:
-
-
-
- Qt::Horizontal
-
-
- QSlider::TicksBothSides
-
-
- 1
+
+
+ -
+
+
+ Czas zakończenia:
-
-
-
- Qt::Horizontal
+
+
+ -
+
+
+ utwórz podgląd
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
-
+
+
+ start
-
-
-
-
-
-
- Początek fragmentu
-
-
-
- -
-
-
- -
-
-
- Koniec fragemntu
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- start
-
-
-
- -
-
-
- stop
-
-
-
- -
-
-
- zakończ
-
-
-
-
+
+
+ stop
+
+
diff --git a/src/python/classes/mainwindow.py b/src/python/classes/mainwindow.py
index 23366ed..baac0d4 100644
--- a/src/python/classes/mainwindow.py
+++ b/src/python/classes/mainwindow.py
@@ -2,6 +2,8 @@ import os
import shutil
import subprocess
import tempfile
+from pathlib import Path
+from pydub.utils import mediainfo
# import resources_rc
from PyQt5.QtCore import Qt
@@ -10,12 +12,18 @@ from PyQt5.QtWidgets import QMainWindow, QLabel, QFileDialog, QDialog, QDialogBu
from src.python.classes.settings_dialog import SettingsDialog
from src.python.ui.mainwindow_ui import Ui_MainWindow
+
from src.python.classes.translate import Translator
+from src.python.classes.preview_dialog import PreviewDialog
import generate_demuxer
class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
+ """
+ MainWindow Class
+ """
+
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.translator = Translator()
@@ -29,9 +37,14 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
self.aresample = "8000"
self.test_data()
+ self.image_extensions = ['.jpg', '.png']
+ self.audio_extensions = ['.mp3', '.wav']
+
def setup_logic(self):
+ """Connect ui elements with methods."""
self.action_settings.triggered.connect(self.open_setting_dialog)
self.button_generate.clicked.connect(self.generate_video_podcast)
+ self.button_preview.clicked.connect(self.preview_video_podcast)
self.button_audio_1.clicked.connect(lambda: self.open_audio_import(audio_number=1))
self.button_audio_2.clicked.connect(lambda: self.open_audio_import(audio_number=2))
self.button_select_avatar_1.clicked.connect(lambda: self.open_image_import(image_number=1))
@@ -42,6 +55,7 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
self.check_box_connected_channels.stateChanged.connect(self.channels_connected)
def change_language(self):
+ """Retranslate user interface."""
self.translator.load_lang(self.lang)
self.retranslateUi(self.window())
@@ -49,25 +63,12 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
self.test_data()
def setup_detail(self):
+ """TODO: add names to images"""
self.line_edit_name_1.setDisabled(True)
self.line_edit_name_2.setDisabled(True)
- @staticmethod
- def create_custom_dialog(title: str, msg: str):
- dialog = QDialog()
- label = QLabel()
- label.setText(msg)
- label.setObjectName('message_box')
- buttons = QDialogButtonBox.Ok
- button_box = QDialogButtonBox(buttons)
- button_box.accepted.connect(dialog.accept)
- layout = QVBoxLayout()
- layout.addWidget(label)
- layout.addWidget(button_box)
- dialog.setLayout(layout)
- return dialog
-
def test_data(self):
+ """Test data."""
self.line_edit_audio_1.setText('./src/sounds/oba_kanały.mp3')
pixmap1 = QPixmap('./src/gui/images/both.png')
scaled_pixmap1 = pixmap1.scaled(pixmap1.size(), Qt.KeepAspectRatio)
@@ -89,83 +90,122 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
self.preview_label_avatar_4.setPixmap(scaled_pixmap4)
self.preview_label_avatar_4.setProperty('path', './src/gui/images/right.png')
- def open_setting_dialog(self):
- old_lang = self.lang
- settings = SettingsDialog(parent=self)
- settings.exec_()
- if old_lang != self.lang:
- print(old_lang, self.lang)
- self.change_language()
-
- def open_image_import(self, image_number: int):
- dialog = QFileDialog()
- dialog.setOption(dialog.DontUseNativeDialog, True)
- dialog.setFileMode(QFileDialog.ExistingFile)
- file_formats = "All Files (*);;JPG (*.jpg);;PNG (*.png)"
- file, _ = dialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", file_formats, options=dialog.options())
- if not file:
- title = 'Ostrzeżenie'
- msg = "[!] Nie wybrano żadnego pliku."
- dialog = self.create_custom_dialog(title=title, msg=msg)
- dialog.exec_()
-
- if file and not file.lower().endswith('.jpg') and not file.lower().endswith('.png'):
- title = 'Błąd'
- msg = F"[!] Plik {file} nie jest plikiem jpg/png."
- dialog = self.create_custom_dialog(title=title, msg=msg)
- dialog.exec_()
-
- else:
- if file:
- pixmap = QPixmap(file)
-
- scaled_pixmap = pixmap.scaled(pixmap.size(), Qt.KeepAspectRatio)
-
- if image_number == 1:
- self.preview_label_avatar_1.setProperty('path', file)
- self.preview_label_avatar_1.setPixmap(scaled_pixmap)
-
- elif image_number == 2:
- self.preview_label_avatar_2.setProperty('path', file)
- self.preview_label_avatar_2.setPixmap(scaled_pixmap)
-
- elif image_number == 3:
- self.preview_label_avatar_3.setProperty('path', file)
- self.preview_label_avatar_3.setPixmap(scaled_pixmap)
-
- elif image_number == 4:
- self.preview_label_avatar_4.setProperty('path', file)
- self.preview_label_avatar_4.setPixmap(scaled_pixmap)
-
- print(F"[*] Zaimportowano garfikę {image_number} z pliku: '{file}'.")
- print(F"[*] Rodzielczość grafiki: {pixmap.width()}x{pixmap.height()}")
-
- def open_audio_import(self, audio_number: int):
- dialog = QFileDialog()
- dialog.setOption(dialog.DontUseNativeDialog, True)
- dialog.setFileMode(QFileDialog.ExistingFile)
- file_formats = "All Files (*);;mp3 (*.mp3);;wav (*.wav)"
- file, _ = dialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", file_formats, options=dialog.options())
+ def check_file(self, file, extensions):
+ """Check file exist and have good extension."""
if not file:
msg = "[!] Nie wybrano żadnego pliku."
dialog = self.create_custom_dialog(title='Ostrzeżenie', msg=msg)
dialog.exec_()
+ return False
- elif not file.lower().endswith('.mp3') and not file.lower().endswith('.wav'):
- msg = F"[!] Plik {file} nie jest plikiem mp3/wav."
- dialog = self.create_custom_dialog(title='Błąd', msg=msg)
+ elif not Path(file).is_file():
+ msg = f"[!] Wybrany plik: {file} - nie istnieje."
+ dialog = self.create_custom_dialog(title='Ostrzeżenie', msg=msg)
dialog.exec_()
+ return False
+ elif not any(file.lower().endswith(x) for x in extensions):
+ dialog = self.create_custom_dialog(
+ title='Błąd',
+ msg=F"[!] Wybrany plik: {file.rsplit('/')[-1]} - nie jest plikiem o rozszerzeniu {extensions}.")
+ dialog.exec_()
+ return False
+
+ return True
+
+ def create_custom_dialog(self, title: str, msg: str):
+ """Create custom dialog."""
+ dialog = QDialog(parent=self)
+ dialog.setWindowTitle(title)
+ label = QLabel()
+ label.setText(msg)
+ label.setObjectName('message_box')
+ buttons = QDialogButtonBox.Ok
+ button_box = QDialogButtonBox(buttons)
+ button_box.accepted.connect(dialog.accept)
+ layout = QVBoxLayout()
+ layout.addWidget(label)
+ layout.addWidget(button_box)
+ dialog.setLayout(layout)
+ return dialog
+
+ def open_image_import(self, image_number: int):
+ """"Import images."""
+ dialog: QFileDialog = QFileDialog()
+ dialog.setOption(dialog.DontUseNativeDialog, False)
+ dialog.setFileMode(QFileDialog.ExistingFile)
+
+ title = f"Import image file {image_number}:"
+
+ # TODO: dynamic create formats filter based on list self.image_extensions
+ formats_filter = "All Files (*);;JPG (*.jpg);;PNG (*.png)"
+
+ file, _ = dialog.getOpenFileName(
+ self, caption=title, filter=formats_filter, options=dialog.options()
+ )
+
+ if not self.check_file(file, self.image_extensions):
+ return -1
+ else:
+ pixmap = QPixmap(file)
+ scaled_pixmap = pixmap.scaled(pixmap.size(), Qt.KeepAspectRatio)
+
+ if image_number == 1:
+ self.preview_label_avatar_1.setProperty('path', file)
+ self.preview_label_avatar_1.setPixmap(scaled_pixmap)
+
+ elif image_number == 2:
+ self.preview_label_avatar_2.setProperty('path', file)
+ self.preview_label_avatar_2.setPixmap(scaled_pixmap)
+
+ elif image_number == 3:
+ self.preview_label_avatar_3.setProperty('path', file)
+ self.preview_label_avatar_3.setPixmap(scaled_pixmap)
+
+ elif image_number == 4:
+ self.preview_label_avatar_4.setProperty('path', file)
+ self.preview_label_avatar_4.setPixmap(scaled_pixmap)
+
+ print(F"[*] Zaimportowano garfikę {image_number} z pliku: '{file}'.")
+ print(F"[*] Rodzielczość grafiki: {pixmap.width()}x{pixmap.height()}")
+
+ def open_audio_import(self, audio_number: int):
+ """Method to import audio."""
+ dialog = QFileDialog()
+ dialog.setOption(dialog.DontUseNativeDialog, True)
+ dialog.setFileMode(QFileDialog.ExistingFile)
+ file_formats = "All Files (*);;mp3 (*.mp3);;wav (*.wav)"
+ title = f"Import audio file {audio_number}:"
+ file, _ = dialog.getOpenFileName(
+ self, caption=title, filter=file_formats, options=dialog.options()
+ )
+ if not self.check_file(file, self.audio_extensions):
+ return -1
else:
if audio_number == 1:
self.line_edit_audio_1.setText(file)
-
+ self.line_edit_audio_1.setProperty('duration', mediainfo(file)['duration'])
+ print(f"[*] Audio 1: {file} duration: {mediainfo(file)['duration']}")
elif audio_number == 2:
self.line_edit_audio_2.setText(file)
+ self.line_edit_audio_2.setProperty('duration', mediainfo(file)['duration'])
+ print(f"[*] Audio 2: {file} duration: {mediainfo(file)['duration']}")
print(F"[*] Zaimportowano ścieżkę {audio_number} pliku: '{file}'.")
+ def open_setting_dialog(self):
+ """Open settings dialog."""
+ old_lang = self.lang
+ settings = SettingsDialog(parent=self)
+ settings.exec_()
+
+ if old_lang != self.lang:
+ print(old_lang, self.lang)
+ self.change_language()
+ return True
+
def channels_connected(self, checked):
+ """Change information id channels connected."""
print(checked)
if checked:
self.button_audio_2.setDisabled(True)
@@ -177,10 +217,15 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
self.line_edit_audio_2.setDisabled(False)
self.line_edit_audio_1.setPlaceholderText("Plik audio 1 rozmówcy")
- def generate_video_podcast(self):
- # TODO: Change to pure python
+ def preview_video_podcast(self):
+ """Preview Video Podcast"""
+ preview_dialog = PreviewDialog(parent=self)
+ preview_dialog.exec_()
+
+ def generate_video_podcast(self, start=None, end=None):
"""Generate podcast based on values from UI."""
connected_channels = self.check_box_connected_channels.isChecked()
+
# Setup images
image_files = {
'both': self.preview_label_avatar_1.property('path'),
@@ -188,7 +233,12 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
'left': self.preview_label_avatar_3.property('path'),
'right': self.preview_label_avatar_4.property('path')
}
+
audio_files = []
+ for image_path in image_files.values():
+ if not self.check_file(image_path, self.image_extensions):
+ self.create_custom_dialog(title='Błąd!', msg=f"Tworzenie podcastu zostało przerwane.")
+ return -1
if not connected_channels:
audio_files.append({'file': self.line_edit_audio_1.text()})
@@ -197,6 +247,12 @@ class MainWindow(QMainWindow, QApplication, Ui_MainWindow):
else:
audio_files.append({'file': self.line_edit_audio_1.text()})
+ for audio_path in audio_files:
+ if not Path(audio_path['file']).is_file():
+ if not self.check_file(audio_path['file'], self.audio_extensions):
+ self.create_custom_dialog(title='Błąd!', msg=f"Tworzenie podcastu zostało przerwane.")
+ return -1
+
# Split name and extension of the file
for dictionary in audio_files:
dictionary['ext'] = dictionary['file'].rsplit('.')[-1]
diff --git a/src/python/classes/preview_dialog.py b/src/python/classes/preview_dialog.py
new file mode 100644
index 0000000..24f0136
--- /dev/null
+++ b/src/python/classes/preview_dialog.py
@@ -0,0 +1,72 @@
+from PyQt5.QtMultimedia import QMediaPlayer
+from PyQt5.QtMultimediaWidgets import QVideoWidget
+
+
+from src.python.classes.range_slider import QRangeSlider
+from src.python.ui.preview_dialog_ui import Ui_PreviewDialog
+from PyQt5.QtWidgets import QDialog, QLabel, QStyle
+
+
+class PreviewDialog(QDialog, Ui_PreviewDialog):
+ """
+ Dialog to show preview of podcast.
+ """
+ def __init__(self, parent=None, start_time=0, end_time=15):
+ super(PreviewDialog, self).__init__(parent=parent)
+ self.setupUi(self)
+ self.mediaPlayer = QMediaPlayer(parent=self, flags=QMediaPlayer.VideoSurface)
+
+ self.video_widget = QVideoWidget()
+ self.range_slider = QRangeSlider()
+ self.v_layout_1.addWidget(self.video_widget)
+ self.v_layout_1.addWidget(self.range_slider)
+
+ self.range_slider.setRange(start=int(start_time), end=int(end_time))
+
+ def setup_video_logic(self):
+ """
+ Setup connections to events
+ """
+ self.mediaPlayer.setVideoOutput(self.video_widget)
+ self.mediaPlayer.stateChanged.connect(self.media_state_changed)
+ self.mediaPlayer.positionChanged.connect(self.position_changed)
+ self.mediaPlayer.durationChanged.connect(self.duration_changed)
+ self.create_preview_button.connect(self.generate_podcast_preview)
+
+ def media_state_changed(self, state):
+ """
+
+ :param state:
+ """
+ if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
+ self.playButton.setIcon(
+ self.style().standardIcon(QStyle.SP_MediaPause))
+ else:
+ self.playButton.setIcon(
+ self.style().standardIcon(QStyle.SP_MediaPlay))
+
+ def position_changed(self):
+ """
+ Position Changed
+ """
+ if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
+ self.mediaPlayer.pause()
+ else:
+ self.mediaPlayer.play()
+
+ def play(self):
+ """
+ Play
+ """
+ if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
+ self.mediaPlayer.pause()
+ else:
+ self.mediaPlayer.play()
+
+ def duration_changed(self, duration):
+ """
+
+ :param duration:
+ :return:
+ """
+ self.positionSlider.setRange(0, duration)
diff --git a/src/python/classes/range_slider.py b/src/python/classes/range_slider.py
new file mode 100644
index 0000000..2463e5e
--- /dev/null
+++ b/src/python/classes/range_slider.py
@@ -0,0 +1,150 @@
+from PyQt5.QtWidgets import *
+from PyQt5.QtCore import *
+from PyQt5.QtGui import *
+
+
+class QRangeSlider(QAbstractSlider):
+ """
+ QRangeSlider
+ """
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.first_position = 1
+ self.second_position = 8
+
+ self.opt = QStyleOptionSlider()
+ self.opt.minimum = 0
+ self.opt.maximum = 100
+
+ self.setTickPosition(QSlider.TicksAbove)
+ self.setTickInterval(1)
+
+ self.setSizePolicy(
+ QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed, QSizePolicy.Slider)
+ )
+
+ def setRangeLimit(self, minimum: int, maximum: int):
+ self.opt.minimum = minimum
+ self.opt.maximum = maximum
+
+ def setRange(self, start: int, end: int):
+ self.first_position = start
+ self.second_position = end
+
+ def getRange(self):
+ return self.first_position, self.second_position
+
+ def setTickPosition(self, position: QSlider.TickPosition):
+ self.opt.tickPosition = position
+
+ def setTickInterval(self, ti: int):
+ self.opt.tickInterval = ti
+
+ def paintEvent(self, event: QPaintEvent):
+
+ painter = QPainter(self)
+
+ # Draw rule
+ self.opt.initFrom(self)
+ self.opt.rect = self.rect()
+ self.opt.sliderPosition = 0
+ self.opt.subControls = QStyle.SC_SliderGroove | QStyle.SC_SliderTickmarks
+
+ # Draw GROOVE
+ self.style().drawComplexControl(QStyle.CC_Slider, self.opt, painter)
+
+ # Draw INTERVAL
+
+ color = self.palette().color(QPalette.Highlight)
+ color.setAlpha(160)
+ painter.setBrush(QBrush(color))
+ painter.setPen(Qt.NoPen)
+
+ self.opt.sliderPosition = self.first_position
+ x_left_handle = (
+ self.style()
+ .subControlRect(QStyle.CC_Slider, self.opt, QStyle.SC_SliderHandle)
+ .right()
+ )
+
+ self.opt.sliderPosition = self.second_position
+ x_right_handle = (
+ self.style()
+ .subControlRect(QStyle.CC_Slider, self.opt, QStyle.SC_SliderHandle)
+ .left()
+ )
+
+ groove_rect = self.style().subControlRect(
+ QStyle.CC_Slider, self.opt, QStyle.SC_SliderGroove
+ )
+
+ selection = QRect(
+ x_left_handle,
+ groove_rect.y(),
+ x_right_handle - x_left_handle,
+ groove_rect.height(),
+ ).adjusted(-1, 1, 1, -1)
+
+ painter.drawRect(selection)
+
+ # Draw first handle
+
+ self.opt.subControls = QStyle.SC_SliderHandle
+ self.opt.sliderPosition = self.first_position
+ self.style().drawComplexControl(QStyle.CC_Slider, self.opt, painter)
+
+ # Draw second handle
+ self.opt.sliderPosition = self.second_position
+ self.style().drawComplexControl(QStyle.CC_Slider, self.opt, painter)
+
+ def mousePressEvent(self, event: QMouseEvent):
+
+ self.opt.sliderPosition = self.first_position
+ self._first_sc = self.style().hitTestComplexControl(
+ QStyle.CC_Slider, self.opt, event.pos(), self
+ )
+
+ self.opt.sliderPosition = self.second_position
+ self._second_sc = self.style().hitTestComplexControl(
+ QStyle.CC_Slider, self.opt, event.pos(), self
+ )
+
+ def mouseMoveEvent(self, event: QMouseEvent):
+
+ distance = self.opt.maximum - self.opt.minimum
+
+ pos = self.style().sliderValueFromPosition(
+ 0, distance, event.pos().x(), self.rect().width()
+ )
+
+ if self._first_sc == QStyle.SC_SliderHandle:
+ if pos <= self.second_position:
+ self.first_position = pos
+ self.update()
+ return
+
+ if self._second_sc == QStyle.SC_SliderHandle:
+ if pos >= self.first_position:
+ self.second_position = pos
+ self.update()
+
+ def sizeHint(self):
+ """ override """
+ SliderLength = 84
+ TickSpace = 5
+
+ w = SliderLength
+ h = self.style().pixelMetric(QStyle.PM_SliderThickness, self.opt, self)
+
+ if (
+ self.opt.tickPosition & QSlider.TicksAbove
+ or self.opt.tickPosition & QSlider.TicksBelow
+ ):
+ h += TickSpace
+
+ return (
+ self.style()
+ .sizeFromContents(QStyle.CT_Slider, self.opt, QSize(w, h), self)
+ .expandedTo(QApplication.globalStrut())
+ )
diff --git a/src/python/ui/preview_dialog_ui.py b/src/python/ui/preview_dialog_ui.py
index a763647..989ed68 100644
--- a/src/python/ui/preview_dialog_ui.py
+++ b/src/python/ui/preview_dialog_ui.py
@@ -11,81 +11,72 @@
from PyQt5 import QtCore, QtGui, QtWidgets
-class Ui_dialog(object):
- def setupUi(self, dialog):
- dialog.setObjectName("dialog")
- dialog.setWindowModality(QtCore.Qt.NonModal)
- dialog.resize(782, 356)
- self.verticalLayout = QtWidgets.QVBoxLayout(dialog)
+class Ui_PreviewDialog(object):
+ def setupUi(self, PreviewDialog):
+ PreviewDialog.setObjectName("PreviewDialog")
+ PreviewDialog.setWindowModality(QtCore.Qt.NonModal)
+ PreviewDialog.resize(782, 356)
+ self.verticalLayout = QtWidgets.QVBoxLayout(PreviewDialog)
self.verticalLayout.setObjectName("verticalLayout")
- self.vertical_layout = QtWidgets.QVBoxLayout()
- self.vertical_layout.setObjectName("vertical_layout")
- self.graphics_view = QtWidgets.QGraphicsView(dialog)
- self.graphics_view.setObjectName("graphics_view")
- self.vertical_layout.addWidget(self.graphics_view)
- self.line = QtWidgets.QFrame(dialog)
- self.line.setFrameShape(QtWidgets.QFrame.HLine)
- self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
- self.line.setObjectName("line")
- self.vertical_layout.addWidget(self.line)
- self.range_silder = QtWidgets.QSlider(dialog)
- self.range_silder.setOrientation(QtCore.Qt.Horizontal)
- self.range_silder.setTickPosition(QtWidgets.QSlider.TicksBothSides)
- self.range_silder.setTickInterval(1)
- self.range_silder.setObjectName("range_silder")
- self.vertical_layout.addWidget(self.range_silder)
- self.line_2 = QtWidgets.QFrame(dialog)
+ self.v_layout_1 = QtWidgets.QVBoxLayout()
+ self.v_layout_1.setObjectName("v_layout_1")
+ self.verticalLayout.addLayout(self.v_layout_1)
+ self.line_2 = QtWidgets.QFrame(PreviewDialog)
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
- self.vertical_layout.addWidget(self.line_2)
- self.horizontal_layout_2 = QtWidgets.QHBoxLayout()
- self.horizontal_layout_2.setObjectName("horizontal_layout_2")
- self.label = QtWidgets.QLabel(dialog)
- self.label.setObjectName("label")
- self.horizontal_layout_2.addWidget(self.label)
- self.line_edit = QtWidgets.QLineEdit(dialog)
- self.line_edit.setObjectName("line_edit")
- self.horizontal_layout_2.addWidget(self.line_edit)
- self.label_2 = QtWidgets.QLabel(dialog)
- self.label_2.setObjectName("label_2")
- self.horizontal_layout_2.addWidget(self.label_2)
- self.line_edit_2 = QtWidgets.QLineEdit(dialog)
- self.line_edit_2.setObjectName("line_edit_2")
- self.horizontal_layout_2.addWidget(self.line_edit_2)
- self.vertical_layout.addLayout(self.horizontal_layout_2)
- self.horizontal_layout_3 = QtWidgets.QHBoxLayout()
- self.horizontal_layout_3.setObjectName("horizontal_layout_3")
- self.push_button = QtWidgets.QPushButton(dialog)
- self.push_button.setObjectName("push_button")
- self.horizontal_layout_3.addWidget(self.push_button)
- self.push_button_2 = QtWidgets.QPushButton(dialog)
- self.push_button_2.setObjectName("push_button_2")
- self.horizontal_layout_3.addWidget(self.push_button_2)
- self.push_button_3 = QtWidgets.QPushButton(dialog)
- self.push_button_3.setObjectName("push_button_3")
- self.horizontal_layout_3.addWidget(self.push_button_3)
- self.vertical_layout.addLayout(self.horizontal_layout_3)
- self.verticalLayout.addLayout(self.vertical_layout)
+ self.verticalLayout.addWidget(self.line_2)
+ self.h_layout_range_values = QtWidgets.QHBoxLayout()
+ self.h_layout_range_values.setObjectName("h_layout_range_values")
+ self.left_label = QtWidgets.QLabel(PreviewDialog)
+ self.left_label.setObjectName("left_label")
+ self.h_layout_range_values.addWidget(self.left_label)
+ self.left_range = QtWidgets.QLineEdit(PreviewDialog)
+ self.left_range.setObjectName("left_range")
+ self.h_layout_range_values.addWidget(self.left_range)
+ self.right_label = QtWidgets.QLabel(PreviewDialog)
+ self.right_label.setObjectName("right_label")
+ self.h_layout_range_values.addWidget(self.right_label)
+ self.right_range = QtWidgets.QLineEdit(PreviewDialog)
+ self.right_range.setObjectName("right_range")
+ self.h_layout_range_values.addWidget(self.right_range)
+ self.create_preview_button = QtWidgets.QPushButton(PreviewDialog)
+ self.create_preview_button.setObjectName("create_preview_button")
+ self.h_layout_range_values.addWidget(self.create_preview_button)
+ self.verticalLayout.addLayout(self.h_layout_range_values)
+ self.line = QtWidgets.QFrame(PreviewDialog)
+ self.line.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line.setObjectName("line")
+ self.verticalLayout.addWidget(self.line)
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.play_button = QtWidgets.QPushButton(PreviewDialog)
+ self.play_button.setObjectName("play_button")
+ self.horizontalLayout.addWidget(self.play_button)
+ self.stop_button = QtWidgets.QPushButton(PreviewDialog)
+ self.stop_button.setObjectName("stop_button")
+ self.horizontalLayout.addWidget(self.stop_button)
+ self.verticalLayout.addLayout(self.horizontalLayout)
- self.retranslateUi(dialog)
- QtCore.QMetaObject.connectSlotsByName(dialog)
+ self.retranslateUi(PreviewDialog)
+ QtCore.QMetaObject.connectSlotsByName(PreviewDialog)
- def retranslateUi(self, dialog):
+ def retranslateUi(self, PreviewDialog):
_translate = QtCore.QCoreApplication.translate
- dialog.setWindowTitle(_translate("dialog", "Dialog"))
- self.label.setText(_translate("dialog", "Początek fragmentu"))
- self.label_2.setText(_translate("dialog", "Koniec fragemntu"))
- self.push_button.setText(_translate("dialog", "start"))
- self.push_button_2.setText(_translate("dialog", "stop"))
- self.push_button_3.setText(_translate("dialog", "zakończ"))
+ PreviewDialog.setWindowTitle(_translate("PreviewDialog", "Dialog"))
+ self.left_label.setText(_translate("PreviewDialog", "Czas rozpoczęcia:"))
+ self.right_label.setText(_translate("PreviewDialog", "Czas zakończenia:"))
+ self.create_preview_button.setText(_translate("PreviewDialog", "utwórz podgląd"))
+ self.play_button.setText(_translate("PreviewDialog", "start"))
+ self.stop_button.setText(_translate("PreviewDialog", "stop"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
- dialog = QtWidgets.QDialog()
- ui = Ui_dialog()
- ui.setupUi(dialog)
- dialog.show()
+ PreviewDialog = QtWidgets.QDialog()
+ ui = Ui_PreviewDialog()
+ ui.setupUi(PreviewDialog)
+ PreviewDialog.show()
sys.exit(app.exec_())