From 4af34aa41f19ddd3953a3d8bd9f50ad503e8cb51 Mon Sep 17 00:00:00 2001 From: nyanpasu64 Date: Wed, 6 Mar 2019 21:43:59 -0800 Subject: [PATCH 1/4] Add raw ui_mainwindow.py from Qt Designer .ui --- corrscope/gui/ui_mainwindow.py | 591 +++++++++++++++++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 corrscope/gui/ui_mainwindow.py diff --git a/corrscope/gui/ui_mainwindow.py b/corrscope/gui/ui_mainwindow.py new file mode 100644 index 0000000..115ca6f --- /dev/null +++ b/corrscope/gui/ui_mainwindow.py @@ -0,0 +1,591 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainwindow.ui' +# +# Created by: PyQt5 UI code generator 5.12 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(1160, 0) + self.centralWidget = QtWidgets.QWidget(MainWindow) + self.centralWidget.setObjectName("centralWidget") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralWidget) + self.horizontalLayout.setContentsMargins(11, 11, 11, 11) + self.horizontalLayout.setSpacing(6) + self.horizontalLayout.setObjectName("horizontalLayout") + self.tabWidget = QtWidgets.QTabWidget(self.centralWidget) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding + ) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.tabWidget.sizePolicy().hasHeightForWidth()) + self.tabWidget.setSizePolicy(sizePolicy) + self.tabWidget.setObjectName("tabWidget") + self.tabGeneral = QtWidgets.QWidget() + self.tabGeneral.setObjectName("tabGeneral") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tabGeneral) + self.verticalLayout_2.setContentsMargins(11, 11, 11, 11) + self.verticalLayout_2.setSpacing(6) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.optionGlobal = QtWidgets.QGroupBox(self.tabGeneral) + self.optionGlobal.setObjectName("optionGlobal") + self.formLayout = QtWidgets.QFormLayout(self.optionGlobal) + self.formLayout.setContentsMargins(11, 11, 11, 11) + self.formLayout.setSpacing(6) + self.formLayout.setObjectName("formLayout") + self.fpsL = QtWidgets.QLabel(self.optionGlobal) + self.fpsL.setObjectName("fpsL") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.fpsL) + self.fps = BoundSpinBox(self.optionGlobal) + self.fps.setMinimum(1) + self.fps.setMaximum(999) + self.fps.setSingleStep(10) + self.fps.setObjectName("fps") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.fps) + self.trigger_msL = QtWidgets.QLabel(self.optionGlobal) + self.trigger_msL.setObjectName("trigger_msL") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.trigger_msL) + self.trigger_ms = BoundSpinBox(self.optionGlobal) + self.trigger_ms.setMinimum(5) + self.trigger_ms.setSingleStep(5) + self.trigger_ms.setObjectName("trigger_ms") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.trigger_ms) + self.render_msL = QtWidgets.QLabel(self.optionGlobal) + self.render_msL.setObjectName("render_msL") + self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.render_msL) + self.render_ms = BoundSpinBox(self.optionGlobal) + self.render_ms.setMinimum(5) + self.render_ms.setSingleStep(5) + self.render_ms.setObjectName("render_ms") + self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.render_ms) + self.amplificationL = QtWidgets.QLabel(self.optionGlobal) + self.amplificationL.setObjectName("amplificationL") + self.formLayout.setWidget( + 3, QtWidgets.QFormLayout.LabelRole, self.amplificationL + ) + self.amplification = BoundDoubleSpinBox(self.optionGlobal) + self.amplification.setSingleStep(0.1) + self.amplification.setObjectName("amplification") + self.formLayout.setWidget( + 3, QtWidgets.QFormLayout.FieldRole, self.amplification + ) + self.begin_timeL = QtWidgets.QLabel(self.optionGlobal) + self.begin_timeL.setObjectName("begin_timeL") + self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.begin_timeL) + self.begin_time = BoundDoubleSpinBox(self.optionGlobal) + self.begin_time.setMaximum(9999.0) + self.begin_time.setObjectName("begin_time") + self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.begin_time) + self.verticalLayout_2.addWidget(self.optionGlobal) + self.optionAppear = QtWidgets.QGroupBox(self.tabGeneral) + self.optionAppear.setObjectName("optionAppear") + self.formLayout_4 = QtWidgets.QFormLayout(self.optionAppear) + self.formLayout_4.setContentsMargins(11, 11, 11, 11) + self.formLayout_4.setSpacing(6) + self.formLayout_4.setObjectName("formLayout_4") + self.render_resolutionL = QtWidgets.QLabel(self.optionAppear) + self.render_resolutionL.setObjectName("render_resolutionL") + self.formLayout_4.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.render_resolutionL + ) + self.render_resolution = BoundLineEdit(self.optionAppear) + self.render_resolution.setObjectName("render_resolution") + self.formLayout_4.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.render_resolution + ) + self.render__bg_colorL = QtWidgets.QLabel(self.optionAppear) + self.render__bg_colorL.setObjectName("render__bg_colorL") + self.formLayout_4.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.render__bg_colorL + ) + self.render__bg_color = BoundColorWidget(self.optionAppear) + self.render__bg_color.setObjectName("render__bg_color") + self.formLayout_4.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.render__bg_color + ) + self.render__init_line_colorL = QtWidgets.QLabel(self.optionAppear) + self.render__init_line_colorL.setObjectName("render__init_line_colorL") + self.formLayout_4.setWidget( + 2, QtWidgets.QFormLayout.LabelRole, self.render__init_line_colorL + ) + self.render__init_line_color = BoundColorWidget(self.optionAppear) + self.render__init_line_color.setObjectName("render__init_line_color") + self.formLayout_4.setWidget( + 2, QtWidgets.QFormLayout.FieldRole, self.render__init_line_color + ) + self.render__line_widthL = QtWidgets.QLabel(self.optionAppear) + self.render__line_widthL.setObjectName("render__line_widthL") + self.formLayout_4.setWidget( + 3, QtWidgets.QFormLayout.LabelRole, self.render__line_widthL + ) + self.render__line_width = BoundDoubleSpinBox(self.optionAppear) + self.render__line_width.setMinimum(0.5) + self.render__line_width.setSingleStep(0.5) + self.render__line_width.setObjectName("render__line_width") + self.formLayout_4.setWidget( + 3, QtWidgets.QFormLayout.FieldRole, self.render__line_width + ) + self.render__grid_colorL = QtWidgets.QLabel(self.optionAppear) + self.render__grid_colorL.setObjectName("render__grid_colorL") + self.formLayout_4.setWidget( + 4, QtWidgets.QFormLayout.LabelRole, self.render__grid_colorL + ) + self.render__grid_color = OptionalColorWidget(self.optionAppear) + self.render__grid_color.setObjectName("render__grid_color") + self.formLayout_4.setWidget( + 4, QtWidgets.QFormLayout.FieldRole, self.render__grid_color + ) + self.render__midline_colorL = QtWidgets.QLabel(self.optionAppear) + self.render__midline_colorL.setObjectName("render__midline_colorL") + self.formLayout_4.setWidget( + 5, QtWidgets.QFormLayout.LabelRole, self.render__midline_colorL + ) + self.render__midline_color = OptionalColorWidget(self.optionAppear) + self.render__midline_color.setObjectName("render__midline_color") + self.formLayout_4.setWidget( + 5, QtWidgets.QFormLayout.FieldRole, self.render__midline_color + ) + self.render__v_midline = BoundCheckBox(self.optionAppear) + self.render__v_midline.setObjectName("render__v_midline") + self.formLayout_4.setWidget( + 6, QtWidgets.QFormLayout.LabelRole, self.render__v_midline + ) + self.render__h_midline = BoundCheckBox(self.optionAppear) + self.render__h_midline.setObjectName("render__h_midline") + self.formLayout_4.setWidget( + 6, QtWidgets.QFormLayout.FieldRole, self.render__h_midline + ) + self.verticalLayout_2.addWidget(self.optionAppear) + self.optionLayout = QtWidgets.QGroupBox(self.tabGeneral) + self.optionLayout.setObjectName("optionLayout") + self.formLayout_2 = QtWidgets.QFormLayout(self.optionLayout) + self.formLayout_2.setContentsMargins(11, 11, 11, 11) + self.formLayout_2.setSpacing(6) + self.formLayout_2.setObjectName("formLayout_2") + self.layout__orientationL = QtWidgets.QLabel(self.optionLayout) + self.layout__orientationL.setObjectName("layout__orientationL") + self.formLayout_2.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.layout__orientationL + ) + self.layout__orientation = BoundComboBox(self.optionLayout) + self.layout__orientation.setObjectName("layout__orientation") + self.formLayout_2.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.layout__orientation + ) + self.layout__ncolsL = QtWidgets.QLabel(self.optionLayout) + self.layout__ncolsL.setObjectName("layout__ncolsL") + self.formLayout_2.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.layout__ncolsL + ) + self.layoutDims = QtWidgets.QHBoxLayout() + self.layoutDims.setSpacing(6) + self.layoutDims.setObjectName("layoutDims") + self.layout__ncols = BoundSpinBox(self.optionLayout) + self.layout__ncols.setSpecialValueText(" ") + self.layout__ncols.setObjectName("layout__ncols") + self.layoutDims.addWidget(self.layout__ncols) + self.layout__nrowsL = QtWidgets.QLabel(self.optionLayout) + self.layout__nrowsL.setObjectName("layout__nrowsL") + self.layoutDims.addWidget(self.layout__nrowsL) + self.layout__nrows = BoundSpinBox(self.optionLayout) + self.layout__nrows.setSpecialValueText(" ") + self.layout__nrows.setObjectName("layout__nrows") + self.layoutDims.addWidget(self.layout__nrows) + self.formLayout_2.setLayout(1, QtWidgets.QFormLayout.FieldRole, self.layoutDims) + self.verticalLayout_2.addWidget(self.optionLayout) + spacerItem = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding + ) + self.verticalLayout_2.addItem(spacerItem) + self.tabWidget.addTab(self.tabGeneral, "") + self.tabStereo = QtWidgets.QWidget() + self.tabStereo.setObjectName("tabStereo") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tabStereo) + self.verticalLayout_3.setContentsMargins(11, 11, 11, 11) + self.verticalLayout_3.setSpacing(6) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.optionStereo = QtWidgets.QGroupBox(self.tabStereo) + self.optionStereo.setObjectName("optionStereo") + self.formLayout_8 = QtWidgets.QFormLayout(self.optionStereo) + self.formLayout_8.setContentsMargins(11, 11, 11, 11) + self.formLayout_8.setSpacing(6) + self.formLayout_8.setObjectName("formLayout_8") + self.trigger_stereoL = QtWidgets.QLabel(self.optionStereo) + self.trigger_stereoL.setObjectName("trigger_stereoL") + self.formLayout_8.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.trigger_stereoL + ) + self.trigger_stereo = BoundComboBox(self.optionStereo) + self.trigger_stereo.setObjectName("trigger_stereo") + self.formLayout_8.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.trigger_stereo + ) + self.render_stereoL = QtWidgets.QLabel(self.optionStereo) + self.render_stereoL.setObjectName("render_stereoL") + self.formLayout_8.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.render_stereoL + ) + self.render_stereo = BoundComboBox(self.optionStereo) + self.render_stereo.setObjectName("render_stereo") + self.formLayout_8.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.render_stereo + ) + self.verticalLayout_3.addWidget(self.optionStereo) + self.dockStereo_2 = QtWidgets.QGroupBox(self.tabStereo) + self.dockStereo_2.setObjectName("dockStereo_2") + self.formLayout_7 = QtWidgets.QFormLayout(self.dockStereo_2) + self.formLayout_7.setContentsMargins(11, 11, 11, 11) + self.formLayout_7.setSpacing(6) + self.formLayout_7.setObjectName("formLayout_7") + self.layout__stereo_orientationL = QtWidgets.QLabel(self.dockStereo_2) + self.layout__stereo_orientationL.setObjectName("layout__stereo_orientationL") + self.formLayout_7.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.layout__stereo_orientationL + ) + self.layout__stereo_orientation = BoundComboBox(self.dockStereo_2) + self.layout__stereo_orientation.setObjectName("layout__stereo_orientation") + self.formLayout_7.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.layout__stereo_orientation + ) + self.render__stereo_grid_opacityL = QtWidgets.QLabel(self.dockStereo_2) + self.render__stereo_grid_opacityL.setObjectName("render__stereo_grid_opacityL") + self.formLayout_7.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.render__stereo_grid_opacityL + ) + self.render__stereo_grid_opacity = BoundDoubleSpinBox(self.dockStereo_2) + self.render__stereo_grid_opacity.setMaximum(1.0) + self.render__stereo_grid_opacity.setSingleStep(0.25) + self.render__stereo_grid_opacity.setObjectName("render__stereo_grid_opacity") + self.formLayout_7.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.render__stereo_grid_opacity + ) + self.verticalLayout_3.addWidget(self.dockStereo_2) + spacerItem1 = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding + ) + self.verticalLayout_3.addItem(spacerItem1) + self.tabWidget.addTab(self.tabStereo, "") + self.tabPerf = QtWidgets.QWidget() + self.tabPerf.setObjectName("tabPerf") + self.verticalLayout = QtWidgets.QVBoxLayout(self.tabPerf) + self.verticalLayout.setContentsMargins(11, 11, 11, 11) + self.verticalLayout.setSpacing(6) + self.verticalLayout.setObjectName("verticalLayout") + self.perfAll = QtWidgets.QGroupBox(self.tabPerf) + self.perfAll.setObjectName("perfAll") + self.formLayout_5 = QtWidgets.QFormLayout(self.perfAll) + self.formLayout_5.setContentsMargins(11, 11, 11, 11) + self.formLayout_5.setSpacing(6) + self.formLayout_5.setObjectName("formLayout_5") + self.trigger_subsamplingL = QtWidgets.QLabel(self.perfAll) + self.trigger_subsamplingL.setObjectName("trigger_subsamplingL") + self.formLayout_5.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.trigger_subsamplingL + ) + self.trigger_subsampling = BoundSpinBox(self.perfAll) + self.trigger_subsampling.setMinimum(1) + self.trigger_subsampling.setObjectName("trigger_subsampling") + self.formLayout_5.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.trigger_subsampling + ) + self.render_subsamplingL = QtWidgets.QLabel(self.perfAll) + self.render_subsamplingL.setObjectName("render_subsamplingL") + self.formLayout_5.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.render_subsamplingL + ) + self.render_subsampling = BoundSpinBox(self.perfAll) + self.render_subsampling.setMinimum(1) + self.render_subsampling.setObjectName("render_subsampling") + self.formLayout_5.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.render_subsampling + ) + self.verticalLayout.addWidget(self.perfAll) + self.perfPreview = QtWidgets.QGroupBox(self.tabPerf) + self.perfPreview.setObjectName("perfPreview") + self.formLayout_3 = QtWidgets.QFormLayout(self.perfPreview) + self.formLayout_3.setContentsMargins(11, 11, 11, 11) + self.formLayout_3.setSpacing(6) + self.formLayout_3.setObjectName("formLayout_3") + self.render_subfpsL = QtWidgets.QLabel(self.perfPreview) + self.render_subfpsL.setObjectName("render_subfpsL") + self.formLayout_3.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.render_subfpsL + ) + self.render_subfps = BoundSpinBox(self.perfPreview) + self.render_subfps.setMinimum(1) + self.render_subfps.setObjectName("render_subfps") + self.formLayout_3.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.render_subfps + ) + self.render__res_divisorL = QtWidgets.QLabel(self.perfPreview) + self.render__res_divisorL.setObjectName("render__res_divisorL") + self.formLayout_3.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.render__res_divisorL + ) + self.render__res_divisor = BoundDoubleSpinBox(self.perfPreview) + self.render__res_divisor.setMinimum(1.0) + self.render__res_divisor.setSingleStep(0.5) + self.render__res_divisor.setObjectName("render__res_divisor") + self.formLayout_3.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.render__res_divisor + ) + self.verticalLayout.addWidget(self.perfPreview) + spacerItem2 = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding + ) + self.verticalLayout.addItem(spacerItem2) + self.tabWidget.addTab(self.tabPerf, "") + self.horizontalLayout.addWidget(self.tabWidget) + self.audioColumn = QtWidgets.QVBoxLayout() + self.audioColumn.setSpacing(6) + self.audioColumn.setObjectName("audioColumn") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setSpacing(6) + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.audioGroup = QtWidgets.QGroupBox(self.centralWidget) + self.audioGroup.setObjectName("audioGroup") + self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.audioGroup) + self.horizontalLayout_3.setContentsMargins(11, 11, 11, 11) + self.horizontalLayout_3.setSpacing(6) + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.master_audio = BoundLineEdit(self.audioGroup) + self.master_audio.setObjectName("master_audio") + self.horizontalLayout_3.addWidget(self.master_audio) + self.master_audio_browse = QtWidgets.QPushButton(self.audioGroup) + self.master_audio_browse.setObjectName("master_audio_browse") + self.horizontalLayout_3.addWidget(self.master_audio_browse) + self.horizontalLayout_4.addWidget(self.audioGroup) + self.optionAudio = QtWidgets.QGroupBox(self.centralWidget) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed + ) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.optionAudio.sizePolicy().hasHeightForWidth()) + self.optionAudio.setSizePolicy(sizePolicy) + self.optionAudio.setObjectName("optionAudio") + self.gridLayout = QtWidgets.QGridLayout(self.optionAudio) + self.gridLayout.setContentsMargins(11, 11, 11, 11) + self.gridLayout.setSpacing(6) + self.gridLayout.setObjectName("gridLayout") + self.trigger__edge_strengthL = QtWidgets.QLabel(self.optionAudio) + self.trigger__edge_strengthL.setObjectName("trigger__edge_strengthL") + self.gridLayout.addWidget(self.trigger__edge_strengthL, 0, 0, 1, 1) + self.trigger__responsivenessL = QtWidgets.QLabel(self.optionAudio) + self.trigger__responsivenessL.setObjectName("trigger__responsivenessL") + self.gridLayout.addWidget(self.trigger__responsivenessL, 0, 1, 1, 1) + self.trigger__buffer_falloffL = QtWidgets.QLabel(self.optionAudio) + self.trigger__buffer_falloffL.setObjectName("trigger__buffer_falloffL") + self.gridLayout.addWidget(self.trigger__buffer_falloffL, 0, 2, 1, 1) + self.trigger__edge_strength = BoundDoubleSpinBox(self.optionAudio) + self.trigger__edge_strength.setMinimum(-99.0) + self.trigger__edge_strength.setObjectName("trigger__edge_strength") + self.gridLayout.addWidget(self.trigger__edge_strength, 1, 0, 1, 1) + self.trigger__responsiveness = BoundDoubleSpinBox(self.optionAudio) + self.trigger__responsiveness.setMaximum(1.0) + self.trigger__responsiveness.setSingleStep(0.1) + self.trigger__responsiveness.setObjectName("trigger__responsiveness") + self.gridLayout.addWidget(self.trigger__responsiveness, 1, 1, 1, 1) + self.trigger__buffer_falloff = BoundDoubleSpinBox(self.optionAudio) + self.trigger__buffer_falloff.setSingleStep(0.5) + self.trigger__buffer_falloff.setObjectName("trigger__buffer_falloff") + self.gridLayout.addWidget(self.trigger__buffer_falloff, 1, 2, 1, 1) + self.trigger__pitch_tracking = BoundCheckBox(self.optionAudio) + self.trigger__pitch_tracking.setObjectName("trigger__pitch_tracking") + self.gridLayout.addWidget(self.trigger__pitch_tracking, 0, 3, 2, 1) + self.horizontalLayout_4.addWidget(self.optionAudio) + self.audioColumn.addLayout(self.horizontalLayout_4) + self.channelsGroup = QtWidgets.QGroupBox(self.centralWidget) + self.channelsGroup.setObjectName("channelsGroup") + self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.channelsGroup) + self.verticalLayout_4.setContentsMargins(11, 11, 11, 11) + self.verticalLayout_4.setSpacing(6) + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.channelBar = QtWidgets.QHBoxLayout() + self.channelBar.setSpacing(6) + self.channelBar.setObjectName("channelBar") + spacerItem3 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum + ) + self.channelBar.addItem(spacerItem3) + self.channelAdd = ShortcutButton(self.channelsGroup) + self.channelAdd.setObjectName("channelAdd") + self.channelBar.addWidget(self.channelAdd) + self.channelDelete = ShortcutButton(self.channelsGroup) + self.channelDelete.setObjectName("channelDelete") + self.channelBar.addWidget(self.channelDelete) + self.channelUp = ShortcutButton(self.channelsGroup) + self.channelUp.setObjectName("channelUp") + self.channelBar.addWidget(self.channelUp) + self.channelDown = ShortcutButton(self.channelsGroup) + self.channelDown.setObjectName("channelDown") + self.channelBar.addWidget(self.channelDown) + self.verticalLayout_4.addLayout(self.channelBar) + self.channel_view = ChannelTableView(self.channelsGroup) + self.channel_view.setObjectName("channel_view") + self.verticalLayout_4.addWidget(self.channel_view) + self.audioColumn.addWidget(self.channelsGroup) + self.horizontalLayout.addLayout(self.audioColumn) + self.horizontalLayout.setStretch(1, 1) + MainWindow.setCentralWidget(self.centralWidget) + self.menuBar = QtWidgets.QMenuBar(MainWindow) + self.menuBar.setObjectName("menuBar") + self.menuFile = QtWidgets.QMenu(self.menuBar) + self.menuFile.setObjectName("menuFile") + self.menuTools = QtWidgets.QMenu(self.menuBar) + self.menuTools.setObjectName("menuTools") + MainWindow.setMenuBar(self.menuBar) + self.toolBar = QtWidgets.QToolBar(MainWindow) + self.toolBar.setObjectName("toolBar") + MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) + self.actionOpen = QtWidgets.QAction(MainWindow) + self.actionOpen.setObjectName("actionOpen") + self.actionSave = QtWidgets.QAction(MainWindow) + self.actionSave.setObjectName("actionSave") + self.actionNew = QtWidgets.QAction(MainWindow) + self.actionNew.setObjectName("actionNew") + self.actionSaveAs = QtWidgets.QAction(MainWindow) + self.actionSaveAs.setObjectName("actionSaveAs") + self.actionExit = QtWidgets.QAction(MainWindow) + self.actionExit.setObjectName("actionExit") + self.actionPreview = QtWidgets.QAction(MainWindow) + self.actionPreview.setObjectName("actionPreview") + self.actionRender = QtWidgets.QAction(MainWindow) + self.actionRender.setObjectName("actionRender") + self.action_separate_render_dir = QtWidgets.QAction(MainWindow) + self.action_separate_render_dir.setCheckable(True) + self.action_separate_render_dir.setObjectName("action_separate_render_dir") + self.menuFile.addAction(self.actionNew) + self.menuFile.addAction(self.actionOpen) + self.menuFile.addAction(self.actionSave) + self.menuFile.addAction(self.actionSaveAs) + self.menuFile.addSeparator() + self.menuFile.addAction(self.actionPreview) + self.menuFile.addAction(self.actionRender) + self.menuFile.addSeparator() + self.menuFile.addAction(self.actionExit) + self.menuTools.addAction(self.action_separate_render_dir) + self.menuBar.addAction(self.menuFile.menuAction()) + self.menuBar.addAction(self.menuTools.menuAction()) + self.toolBar.addAction(self.actionNew) + self.toolBar.addAction(self.actionOpen) + self.toolBar.addAction(self.actionSave) + self.toolBar.addAction(self.actionSaveAs) + self.toolBar.addSeparator() + self.toolBar.addAction(self.actionPreview) + self.toolBar.addAction(self.actionRender) + + self.retranslateUi(MainWindow) + self.tabWidget.setCurrentIndex(0) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.optionGlobal.setTitle(_translate("MainWindow", "Global")) + self.fpsL.setText(_translate("MainWindow", "FPS")) + self.trigger_msL.setText(_translate("MainWindow", "Trigger Width")) + self.render_msL.setText(_translate("MainWindow", "Render Width")) + self.amplificationL.setText(_translate("MainWindow", "Amplification")) + self.begin_timeL.setText(_translate("MainWindow", "Begin Time")) + self.optionAppear.setTitle(_translate("MainWindow", "Appearance")) + self.render_resolutionL.setText(_translate("MainWindow", "Resolution")) + self.render_resolution.setText(_translate("MainWindow", "vs")) + self.render__bg_colorL.setText(_translate("MainWindow", "Background")) + self.render__init_line_colorL.setText(_translate("MainWindow", "Line Color")) + self.render__line_widthL.setText(_translate("MainWindow", "Line Width")) + self.render__grid_colorL.setText(_translate("MainWindow", "Grid Color")) + self.render__midline_colorL.setText(_translate("MainWindow", "Midline Color")) + self.render__v_midline.setText(_translate("MainWindow", "Vertical")) + self.render__h_midline.setText(_translate("MainWindow", "Horizontal Midline")) + self.optionLayout.setTitle(_translate("MainWindow", "Layout")) + self.layout__orientationL.setText(_translate("MainWindow", "Orientation")) + self.layout__ncolsL.setText(_translate("MainWindow", "Columns")) + self.layout__nrowsL.setText(_translate("MainWindow", "Rows")) + self.tabWidget.setTabText( + self.tabWidget.indexOf(self.tabGeneral), + _translate("MainWindow", "&General"), + ) + self.optionStereo.setTitle(_translate("MainWindow", "Stereo Enable")) + self.trigger_stereoL.setText(_translate("MainWindow", "Trigger Stereo")) + self.render_stereoL.setText(_translate("MainWindow", "Render Stereo")) + self.dockStereo_2.setTitle(_translate("MainWindow", "Stereo Appearance")) + self.layout__stereo_orientationL.setText( + _translate("MainWindow", "Stereo Orientation") + ) + self.render__stereo_grid_opacityL.setText( + _translate("MainWindow", "Grid Opacity") + ) + self.tabWidget.setTabText( + self.tabWidget.indexOf(self.tabStereo), _translate("MainWindow", "&Stereo") + ) + self.perfAll.setTitle(_translate("MainWindow", "Preview and Render")) + self.trigger_subsamplingL.setText( + _translate("MainWindow", "Trigger Subsampling") + ) + self.render_subsamplingL.setText(_translate("MainWindow", "Render Subsampling")) + self.perfPreview.setTitle(_translate("MainWindow", "Preview Only")) + self.render_subfpsL.setText(_translate("MainWindow", "Render FPS Divisor")) + self.render__res_divisorL.setText( + _translate("MainWindow", "Resolution Divisor") + ) + self.tabWidget.setTabText( + self.tabWidget.indexOf(self.tabPerf), + _translate("MainWindow", "&Performance"), + ) + self.audioGroup.setTitle(_translate("MainWindow", "Master Audio")) + self.master_audio.setText(_translate("MainWindow", "/")) + self.master_audio_browse.setText(_translate("MainWindow", "&Browse...")) + self.optionAudio.setTitle(_translate("MainWindow", "Trigger")) + self.trigger__edge_strengthL.setText(_translate("MainWindow", "Edge Strength")) + self.trigger__responsivenessL.setText( + _translate("MainWindow", "Responsiveness") + ) + self.trigger__buffer_falloffL.setText( + _translate("MainWindow", "Buffer Falloff") + ) + self.trigger__pitch_tracking.setText(_translate("MainWindow", "Pitch Tracking")) + self.channelsGroup.setTitle(_translate("MainWindow", "Oscilloscope Channels")) + self.channelAdd.setText(_translate("MainWindow", "&Add...")) + self.channelDelete.setText(_translate("MainWindow", "&Delete")) + self.channelUp.setText(_translate("MainWindow", "Up")) + self.channelDown.setText(_translate("MainWindow", "Down")) + self.menuFile.setTitle(_translate("MainWindow", "&File")) + self.menuTools.setTitle(_translate("MainWindow", "&Tools")) + self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) + self.actionOpen.setText(_translate("MainWindow", "&Open")) + self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+O")) + self.actionSave.setText(_translate("MainWindow", "&Save")) + self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S")) + self.actionNew.setText(_translate("MainWindow", "&New")) + self.actionNew.setShortcut(_translate("MainWindow", "Ctrl+N")) + self.actionSaveAs.setText(_translate("MainWindow", "Save &As")) + self.actionSaveAs.setShortcut(_translate("MainWindow", "Ctrl+Shift+S")) + self.actionExit.setText(_translate("MainWindow", "E&xit")) + self.actionExit.setShortcut(_translate("MainWindow", "Ctrl+Q")) + self.actionPreview.setText(_translate("MainWindow", "&Preview")) + self.actionPreview.setShortcut(_translate("MainWindow", "Ctrl+P")) + self.actionRender.setText(_translate("MainWindow", "&Render to Video")) + self.actionRender.setShortcut(_translate("MainWindow", "Ctrl+R")) + self.action_separate_render_dir.setText( + _translate("MainWindow", "&Separate Render Folder") + ) + + +from corrscope.gui.__init__ import ChannelTableView, ShortcutButton +from corrscope.gui.data_bind import ( + BoundCheckBox, + BoundColorWidget, + BoundComboBox, + BoundDoubleSpinBox, + BoundLineEdit, + BoundSpinBox, + OptionalColorWidget, +) From 82c9c5adda8ca2472f8942e86d3010abcd6c6b63 Mon Sep 17 00:00:00 2001 From: nyanpasu64 Date: Wed, 6 Mar 2019 21:44:06 -0800 Subject: [PATCH 2/4] Squash branch "remove-qt-ui" --- corrscope/gui/__init__.py | 10 +- corrscope/gui/data_bind.py | 7 +- corrscope/gui/layout_stack.py | 280 ++++++++++ corrscope/gui/mainwindow.ui | 795 --------------------------- corrscope/gui/translate.pro | 2 + corrscope/gui/ui_mainwindow.py | 958 +++++++++++++-------------------- 6 files changed, 682 insertions(+), 1370 deletions(-) create mode 100644 corrscope/gui/layout_stack.py delete mode 100644 corrscope/gui/mainwindow.ui create mode 100644 corrscope/gui/translate.pro diff --git a/corrscope/gui/__init__.py b/corrscope/gui/__init__.py index a12d5b8..cf10769 100644 --- a/corrscope/gui/__init__.py +++ b/corrscope/gui/__init__.py @@ -9,7 +9,6 @@ from typing import Optional, List, Any, Tuple, Callable, Union, Dict, Sequence import PyQt5.QtCore as qc import PyQt5.QtWidgets as qw import attr -from PyQt5 import uic from PyQt5.QtCore import QModelIndex, Qt from PyQt5.QtCore import QVariant from PyQt5.QtGui import QKeySequence, QFont, QCloseEvent @@ -34,6 +33,7 @@ from corrscope.gui.history_file_dlg import ( get_open_file_list, get_save_file_path, ) +from corrscope.gui.ui_mainwindow import MainWindow as Ui_MainWindow from corrscope.gui.util import color2hex, Locked, find_ranges, TracebackDialog from corrscope.layout import Orientation, StereoOrientation from corrscope.outputs import IOutputConfig, FFplayOutputConfig, FFmpegOutputConfig @@ -74,7 +74,7 @@ def gui_main(cfg_or_path: Union[Config, Path]): sys.exit(app.exec_()) -class MainWindow(qw.QMainWindow): +class MainWindow(qw.QMainWindow, Ui_MainWindow): """ Main window. @@ -94,7 +94,7 @@ class MainWindow(qw.QMainWindow): self.pref = gp.load_prefs() # Load UI. - uic.loadUi(res("mainwindow.ui"), self) # sets windowTitle + self.setupUi(self) # sets windowTitle # Bind UI buttons, etc. Functions block main thread, avoiding race conditions. self.master_audio_browse.clicked.connect(self.on_master_audio_browse) @@ -151,7 +151,7 @@ class MainWindow(qw.QMainWindow): self._update_unsaved_title() # GUI layout widgets - tabWidget: qw.QTabWidget + left_tabs: qw.QTabWidget # Config models model: Optional["ConfigModel"] = None @@ -232,7 +232,7 @@ class MainWindow(qw.QMainWindow): self._cfg_path = cfg_path self._any_unsaved = False self.load_title() - self.tabWidget.setCurrentIndex(0) + self.left_tabs.setCurrentIndex(0) if self.model is None: self.model = ConfigModel(cfg) diff --git a/corrscope/gui/data_bind.py b/corrscope/gui/data_bind.py index b2f9e68..5a609bb 100644 --- a/corrscope/gui/data_bind.py +++ b/corrscope/gui/data_bind.py @@ -71,6 +71,9 @@ class PresentationModel(qc.QObject): updater() +SKIP_BINDING = "skip" + + def map_gui(view: "MainWindow", model: PresentationModel) -> None: """ Binding: @@ -90,7 +93,8 @@ def map_gui(view: "MainWindow", model: PresentationModel) -> None: # Exclude nameless ColorText inside BoundColorWidget wrapper, # since bind_widget(path="") will crash. # BoundColorWidget.bind_widget() handles binding children. - if path: + if path != SKIP_BINDING: + assert path != "" widget.bind_widget(model, path) @@ -366,6 +370,7 @@ class _ColorText(BoundLineEdit): def __init__(self, parent: QWidget, optional: bool): super().__init__(parent) + self.setObjectName(SKIP_BINDING) self.optional = optional hex_color = qc.pyqtSignal(str) diff --git a/corrscope/gui/layout_stack.py b/corrscope/gui/layout_stack.py new file mode 100644 index 0000000..d47ccbb --- /dev/null +++ b/corrscope/gui/layout_stack.py @@ -0,0 +1,280 @@ +from contextlib import contextmanager +from typing import * + +import attr +from PyQt5.QtCore import QObject, Qt +from PyQt5.QtWidgets import * + +from corrscope.util import obj_name + +T = TypeVar("T") +ctx = Iterator +SomeQW = TypeVar("SomeQW", bound=QWidget) +WidgetOrLayout = TypeVar("WidgetOrLayout", bound=Union[QWidget, QLayout]) + + +def new_widget_or_layout( + item_type: Type[WidgetOrLayout], parent: QWidget +) -> WidgetOrLayout: + """Creates a widget or layout, for insertion into an existing layout. + Do NOT use for filling a widget with a layout!""" + if issubclass(item_type, QWidget): + right = item_type(parent) + else: + right = item_type(None) + return right + + +@attr.dataclass +class StackFrame: + widget: Optional[QWidget] + layout: Optional[QLayout] = None + + def with_layout(self, layout: Optional[QLayout]): + return attr.evolve(self, layout=layout) + + +class LayoutStack: + def __init__(self, root: Optional[QWidget]): + self._items = [StackFrame(root)] + self.widget_to_label: Dict[QWidget, QLabel] = {} + + @contextmanager + def push(self, item: T) -> ctx[T]: + if isinstance(item, StackFrame): + frame = item + elif isinstance(item, QWidget): + frame = StackFrame(item) + elif isinstance(item, QLayout): + frame = self.peek().with_layout(item) + else: + raise TypeError(obj_name(item)) + + self._items.append(frame) + + try: + yield item + finally: + self._items.pop() + + def peek(self) -> StackFrame: + return self._items[-1] + + @property + def widget(self): + return self.peek().widget + + @property + def layout(self): + return self.peek().layout + + +def set_layout(stack: LayoutStack, layout_type: Type[QLayout]) -> QLayout: + layout = layout_type(stack.peek().widget) + stack.peek().layout = layout + return layout + + +def assert_peek(stack: LayoutStack, cls): + assert isinstance(stack.widget, cls) + + +def central_widget(stack: LayoutStack, widget_type: Type[SomeQW] = QWidget): + assert_peek(stack, QMainWindow) + # do NOT orphan=True + return _add_widget(stack, widget_type, exit_action="setCentralWidget") + + +def orphan_widget(stack: LayoutStack, widget_type: Type[SomeQW] = QWidget): + return _add_widget(stack, widget_type, orphan=True) + + +@contextmanager +def append_widget( + stack: LayoutStack, item_type: Type[WidgetOrLayout] +) -> ctx[WidgetOrLayout]: + with _add_widget(stack, item_type) as item: + yield item + add_widget_or_layout(stack.layout, item) + + +# noinspection PyArgumentList +def add_widget_or_layout(layout: QLayout, item: WidgetOrLayout, *args, **kwargs): + if isinstance(item, QWidget): + layout.addWidget(item, *args, **kwargs) + elif isinstance(item, QLayout): + # QLayout and some subclasses (like QFormLayout) omit this method, + # and will crash at runtime. + layout.addLayout(item, *args, **kwargs) + else: + raise TypeError(item) + + +# Main window toolbars/menus + + +def set_menu_bar(stack: LayoutStack): + assert_peek(stack, QMainWindow) + return _add_widget(stack, QMenuBar, exit_action="setMenuBar") + + +# won't bother adding type hints that pycharm is too dumb to understand +def append_menu(stack: LayoutStack): + assert_peek(stack, QMenuBar) + return _add_widget(stack, QMenu, exit_action="addMenu") + + +def add_toolbar(stack: LayoutStack, area=Qt.TopToolBarArea): + assert_peek(stack, QMainWindow) + + def _add_toolbar(parent: QMainWindow, toolbar): + parent.addToolBar(area, toolbar) + + return _add_widget(stack, QToolBar, exit_action=_add_toolbar) + + +# Implementation + + +@contextmanager +def _add_widget( + stack: LayoutStack, + item_type: Type[WidgetOrLayout], + orphan=False, + exit_action: Union[Callable[[Any, Any], Any], str] = "", +) -> ctx[WidgetOrLayout]: + """ + - Constructs item_type using parent. + - Yields item_type. + """ + + if not orphan: + parent = stack.widget + else: + parent = None + + with stack.push(new_widget_or_layout(item_type, parent)) as item: + yield item + + real_parent = stack.widget + if callable(exit_action): + exit_action(real_parent, item) + elif exit_action: + getattr(real_parent, exit_action)(item) + + +def append_stretch(stack: LayoutStack): + cast(QBoxLayout, stack.layout).addStretch() + + +Left = TypeVar("Left", bound=QWidget) +Right = TypeVar("Right", bound=Union[QWidget, QLayout]) # same as WidgetOrLayout + + +Both = object() + + +def widget_pair_inserter(append_widgets: Callable): + @contextmanager + def add_row_col(stack: LayoutStack, arg1, arg2=None): + left_type: Type[Left] + right_type: Type[Right] + if arg2 is None: + left_type, right_type = QLabel, arg1 + auto_left_label = True + else: + left_type, right_type = arg1, arg2 + auto_left_label = False + + parent = stack.widget + left = new_widget_or_layout(left_type, parent) # TODO support str + + if right_type is Both: + right = Both + push = left + else: + right = new_widget_or_layout(right_type, parent) + push = right + + with stack.push(push): + if right is Both: + yield left + elif auto_left_label: + yield right + else: + yield left, right + + append_widgets(stack.layout, left, right) + if auto_left_label: + assert isinstance(left, QLabel) + stack.widget_to_label[right] = left + + return add_row_col + + +def _add_row(layout: QFormLayout, left, right): + assert isinstance(layout, QFormLayout), layout + if right is Both: + raise TypeError("Cannot add_row(QFormLayout, span=Both)") + return layout.addRow(left, right) + + +add_row = widget_pair_inserter(_add_row) + + +def _add_grid_col(layout: QGridLayout, up, down): + assert isinstance(layout, QGridLayout), layout + col = layout.columnCount() + + """ + void QGridLayout::addWidget( + QWidget *widget, + int fromRow, int fromColumn, [int rowSpan, int columnSpan], + Qt::Alignment alignment = Qt::Alignment() + ) + """ + if down is Both: + shape = lambda: [0, col, -1, 1] + add_widget_or_layout(layout, up, *shape()) + else: + shape = lambda row: [row, col] + add_widget_or_layout(layout, up, *shape(0)) + add_widget_or_layout(layout, down, *shape(1)) + + +add_grid_col = widget_pair_inserter(_add_grid_col) + + +@contextmanager +def add_tab(stack, widget_type: Type[SomeQW] = QWidget, label: str = "") -> ctx[SomeQW]: + """ + - Constructs widget using parent. + - Yields widget. + """ + tabs: QTabWidget = stack.widget + assert isinstance(tabs, QTabWidget), tabs + + with orphan_widget(stack, widget_type) as w: + yield w + tabs.addTab(w, label) + + +# After building a tree... +def set_attr_objectName(ui, stack: LayoutStack): + """ + - Set objectName of all objects referenced by ui. + - For all object $name added by add_row() or add_grid_col(), + if $label was generated but not yielded + setattr(ui.$name + "L" = $label) + """ + widget_to_label = stack.widget_to_label + + for name, obj in dict(ui.__dict__).items(): + if not isinstance(obj, QObject): + continue + obj.setObjectName(name) + if obj in widget_to_label: + label = widget_to_label[obj] + label_name = name + "L" + label.setObjectName(label_name) + ui.__dict__[label_name] = label diff --git a/corrscope/gui/mainwindow.ui b/corrscope/gui/mainwindow.ui deleted file mode 100644 index 0c9ce48..0000000 --- a/corrscope/gui/mainwindow.ui +++ /dev/null @@ -1,795 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1160 - 0 - - - - MainWindow - - - - - - - - 0 - 0 - - - - 0 - - - - &General - - - - - - Global - - - - - - FPS - - - - - - - 1 - - - 999 - - - 10 - - - - - - - Trigger Width - - - - - - - 5 - - - 5 - - - - - - - Render Width - - - - - - - 5 - - - 5 - - - - - - - Amplification - - - - - - - 0.100000000000000 - - - - - - - Begin Time - - - - - - - 9999.000000000000000 - - - - - - - - - - Appearance - - - - - - Resolution - - - - - - - vs - - - - - - - Background - - - - - - - - - - Line Color - - - - - - - - - - Line Width - - - - - - - 0.500000000000000 - - - 0.500000000000000 - - - - - - - Grid Color - - - - - - - - - - Midline Color - - - - - - - - - - Vertical - - - - - - - Horizontal Midline - - - - - - - - - - Layout - - - - - - Orientation - - - - - - - - - - Columns - - - - - - - - -   - - - - - - - Rows - - - - - - -   - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - &Stereo - - - - - - Stereo Enable - - - - - - Trigger Stereo - - - - - - - - - - Render Stereo - - - - - - - - - - - - - Stereo Appearance - - - - - - Stereo Orientation - - - - - - - - - - Grid Opacity - - - - - - - 1.000000000000000 - - - 0.250000000000000 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - &Performance - - - - - - Preview and Render - - - - - - Trigger Subsampling - - - - - - - 1 - - - - - - - Render Subsampling - - - - - - - 1 - - - - - - - - - - Preview Only - - - - - - Render FPS Divisor - - - - - - - 1 - - - - - - - Resolution Divisor - - - - - - - 1.000000000000000 - - - 0.500000000000000 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - Master Audio - - - - - - / - - - - - - - &Browse... - - - - - - - - - - - 0 - 0 - - - - Trigger - - - - - - Edge Strength - - - - - - - Responsiveness - - - - - - - Buffer Falloff - - - - - - - 0.000000000000000 - - - - - - - 1.000000000000000 - - - 0.100000000000000 - - - - - - - 0.500000000000000 - - - - - - - Pitch Tracking - - - - - - - Edge Direction - - - - - - - - - - - - - - - Oscilloscope Channels - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - &Add... - - - - - - - &Delete - - - - - - - Up - - - - - - - Down - - - - - - - - - - - - - - - - - - - &File - - - - - - - - - - - - - - &Tools - - - - - - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - &Open - - - Ctrl+O - - - - - &Save - - - Ctrl+S - - - - - &New - - - Ctrl+N - - - - - Save &As - - - Ctrl+Shift+S - - - - - E&xit - - - Ctrl+Q - - - - - &Preview - - - Ctrl+P - - - - - &Render to Video - - - Ctrl+R - - - - - true - - - &Separate Render Folder - - - - - - - BoundLineEdit - QLineEdit -
corrscope/gui/data_bind.h
-
- - BoundSpinBox - QSpinBox -
corrscope/gui/data_bind.h
-
- - BoundDoubleSpinBox - QDoubleSpinBox -
corrscope/gui/data_bind.h
-
- - BoundComboBox - QComboBox -
corrscope/gui/data_bind.h
-
- - BoundCheckBox - QCheckBox -
corrscope/gui/data_bind.h
-
- - ShortcutButton - QPushButton -
corrscope/gui/__init__.h
-
- - ChannelTableView - QTableView -
corrscope/gui/__init__.h
-
- - BoundColorWidget - QWidget -
corrscope/gui/data_bind.h
- 1 -
- - OptionalColorWidget - QWidget -
corrscope/gui/data_bind.h
- 1 -
-
- - -
diff --git a/corrscope/gui/translate.pro b/corrscope/gui/translate.pro new file mode 100644 index 0000000..4bae3de --- /dev/null +++ b/corrscope/gui/translate.pro @@ -0,0 +1,2 @@ +SOURCES += view_mainwindow.py +TRANSLATIONS += corrscope_xa.ts diff --git a/corrscope/gui/ui_mainwindow.py b/corrscope/gui/ui_mainwindow.py index 115ca6f..d74b4e0 100644 --- a/corrscope/gui/ui_mainwindow.py +++ b/corrscope/gui/ui_mainwindow.py @@ -1,582 +1,402 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'mainwindow.ui' -# -# Created by: PyQt5 UI code generator 5.12 -# -# WARNING! All changes made in this file will be lost! +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * -from PyQt5 import QtCore, QtGui, QtWidgets +from corrscope.gui.layout_stack import ( + LayoutStack, + set_layout, + central_widget, + append_widget, + add_row, + add_tab, + set_attr_objectName, + append_stretch, + add_grid_col, + Both, + set_menu_bar, + append_menu, + add_toolbar, +) + +NBSP = "\xa0" -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") +def fixed_size_policy(): + return QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + + +# noinspection PyAttributeOutsideInit +class MainWindow(QWidget): + @staticmethod + def tr(*args, **kwargs) -> str: + """Only at runtime, not at pylupdate5 time.""" + # noinspection PyCallByClass,PyTypeChecker + return QCoreApplication.translate("MainWindow", *args, **kwargs) + + def setupUi(self, MainWindow: QMainWindow): + MainWindow.resize(1160, 0) - self.centralWidget = QtWidgets.QWidget(MainWindow) - self.centralWidget.setObjectName("centralWidget") - self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralWidget) - self.horizontalLayout.setContentsMargins(11, 11, 11, 11) - self.horizontalLayout.setSpacing(6) - self.horizontalLayout.setObjectName("horizontalLayout") - self.tabWidget = QtWidgets.QTabWidget(self.centralWidget) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.tabWidget.sizePolicy().hasHeightForWidth()) - self.tabWidget.setSizePolicy(sizePolicy) - self.tabWidget.setObjectName("tabWidget") - self.tabGeneral = QtWidgets.QWidget() - self.tabGeneral.setObjectName("tabGeneral") - self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tabGeneral) - self.verticalLayout_2.setContentsMargins(11, 11, 11, 11) - self.verticalLayout_2.setSpacing(6) - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.optionGlobal = QtWidgets.QGroupBox(self.tabGeneral) - self.optionGlobal.setObjectName("optionGlobal") - self.formLayout = QtWidgets.QFormLayout(self.optionGlobal) - self.formLayout.setContentsMargins(11, 11, 11, 11) - self.formLayout.setSpacing(6) - self.formLayout.setObjectName("formLayout") - self.fpsL = QtWidgets.QLabel(self.optionGlobal) - self.fpsL.setObjectName("fpsL") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.fpsL) - self.fps = BoundSpinBox(self.optionGlobal) - self.fps.setMinimum(1) - self.fps.setMaximum(999) - self.fps.setSingleStep(10) - self.fps.setObjectName("fps") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.fps) - self.trigger_msL = QtWidgets.QLabel(self.optionGlobal) - self.trigger_msL.setObjectName("trigger_msL") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.trigger_msL) - self.trigger_ms = BoundSpinBox(self.optionGlobal) - self.trigger_ms.setMinimum(5) - self.trigger_ms.setSingleStep(5) - self.trigger_ms.setObjectName("trigger_ms") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.trigger_ms) - self.render_msL = QtWidgets.QLabel(self.optionGlobal) - self.render_msL.setObjectName("render_msL") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.render_msL) - self.render_ms = BoundSpinBox(self.optionGlobal) - self.render_ms.setMinimum(5) - self.render_ms.setSingleStep(5) - self.render_ms.setObjectName("render_ms") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.render_ms) - self.amplificationL = QtWidgets.QLabel(self.optionGlobal) - self.amplificationL.setObjectName("amplificationL") - self.formLayout.setWidget( - 3, QtWidgets.QFormLayout.LabelRole, self.amplificationL - ) - self.amplification = BoundDoubleSpinBox(self.optionGlobal) - self.amplification.setSingleStep(0.1) - self.amplification.setObjectName("amplification") - self.formLayout.setWidget( - 3, QtWidgets.QFormLayout.FieldRole, self.amplification - ) - self.begin_timeL = QtWidgets.QLabel(self.optionGlobal) - self.begin_timeL.setObjectName("begin_timeL") - self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.begin_timeL) - self.begin_time = BoundDoubleSpinBox(self.optionGlobal) - self.begin_time.setMaximum(9999.0) - self.begin_time.setObjectName("begin_time") - self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.begin_time) - self.verticalLayout_2.addWidget(self.optionGlobal) - self.optionAppear = QtWidgets.QGroupBox(self.tabGeneral) - self.optionAppear.setObjectName("optionAppear") - self.formLayout_4 = QtWidgets.QFormLayout(self.optionAppear) - self.formLayout_4.setContentsMargins(11, 11, 11, 11) - self.formLayout_4.setSpacing(6) - self.formLayout_4.setObjectName("formLayout_4") - self.render_resolutionL = QtWidgets.QLabel(self.optionAppear) - self.render_resolutionL.setObjectName("render_resolutionL") - self.formLayout_4.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.render_resolutionL - ) - self.render_resolution = BoundLineEdit(self.optionAppear) - self.render_resolution.setObjectName("render_resolution") - self.formLayout_4.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.render_resolution - ) - self.render__bg_colorL = QtWidgets.QLabel(self.optionAppear) - self.render__bg_colorL.setObjectName("render__bg_colorL") - self.formLayout_4.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.render__bg_colorL - ) - self.render__bg_color = BoundColorWidget(self.optionAppear) - self.render__bg_color.setObjectName("render__bg_color") - self.formLayout_4.setWidget( - 1, QtWidgets.QFormLayout.FieldRole, self.render__bg_color - ) - self.render__init_line_colorL = QtWidgets.QLabel(self.optionAppear) - self.render__init_line_colorL.setObjectName("render__init_line_colorL") - self.formLayout_4.setWidget( - 2, QtWidgets.QFormLayout.LabelRole, self.render__init_line_colorL - ) - self.render__init_line_color = BoundColorWidget(self.optionAppear) - self.render__init_line_color.setObjectName("render__init_line_color") - self.formLayout_4.setWidget( - 2, QtWidgets.QFormLayout.FieldRole, self.render__init_line_color - ) - self.render__line_widthL = QtWidgets.QLabel(self.optionAppear) - self.render__line_widthL.setObjectName("render__line_widthL") - self.formLayout_4.setWidget( - 3, QtWidgets.QFormLayout.LabelRole, self.render__line_widthL - ) - self.render__line_width = BoundDoubleSpinBox(self.optionAppear) - self.render__line_width.setMinimum(0.5) - self.render__line_width.setSingleStep(0.5) - self.render__line_width.setObjectName("render__line_width") - self.formLayout_4.setWidget( - 3, QtWidgets.QFormLayout.FieldRole, self.render__line_width - ) - self.render__grid_colorL = QtWidgets.QLabel(self.optionAppear) - self.render__grid_colorL.setObjectName("render__grid_colorL") - self.formLayout_4.setWidget( - 4, QtWidgets.QFormLayout.LabelRole, self.render__grid_colorL - ) - self.render__grid_color = OptionalColorWidget(self.optionAppear) - self.render__grid_color.setObjectName("render__grid_color") - self.formLayout_4.setWidget( - 4, QtWidgets.QFormLayout.FieldRole, self.render__grid_color - ) - self.render__midline_colorL = QtWidgets.QLabel(self.optionAppear) - self.render__midline_colorL.setObjectName("render__midline_colorL") - self.formLayout_4.setWidget( - 5, QtWidgets.QFormLayout.LabelRole, self.render__midline_colorL - ) - self.render__midline_color = OptionalColorWidget(self.optionAppear) - self.render__midline_color.setObjectName("render__midline_color") - self.formLayout_4.setWidget( - 5, QtWidgets.QFormLayout.FieldRole, self.render__midline_color - ) - self.render__v_midline = BoundCheckBox(self.optionAppear) - self.render__v_midline.setObjectName("render__v_midline") - self.formLayout_4.setWidget( - 6, QtWidgets.QFormLayout.LabelRole, self.render__v_midline - ) - self.render__h_midline = BoundCheckBox(self.optionAppear) - self.render__h_midline.setObjectName("render__h_midline") - self.formLayout_4.setWidget( - 6, QtWidgets.QFormLayout.FieldRole, self.render__h_midline - ) - self.verticalLayout_2.addWidget(self.optionAppear) - self.optionLayout = QtWidgets.QGroupBox(self.tabGeneral) - self.optionLayout.setObjectName("optionLayout") - self.formLayout_2 = QtWidgets.QFormLayout(self.optionLayout) - self.formLayout_2.setContentsMargins(11, 11, 11, 11) - self.formLayout_2.setSpacing(6) - self.formLayout_2.setObjectName("formLayout_2") - self.layout__orientationL = QtWidgets.QLabel(self.optionLayout) - self.layout__orientationL.setObjectName("layout__orientationL") - self.formLayout_2.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.layout__orientationL - ) - self.layout__orientation = BoundComboBox(self.optionLayout) - self.layout__orientation.setObjectName("layout__orientation") - self.formLayout_2.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.layout__orientation - ) - self.layout__ncolsL = QtWidgets.QLabel(self.optionLayout) - self.layout__ncolsL.setObjectName("layout__ncolsL") - self.formLayout_2.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.layout__ncolsL - ) - self.layoutDims = QtWidgets.QHBoxLayout() - self.layoutDims.setSpacing(6) - self.layoutDims.setObjectName("layoutDims") - self.layout__ncols = BoundSpinBox(self.optionLayout) - self.layout__ncols.setSpecialValueText(" ") - self.layout__ncols.setObjectName("layout__ncols") - self.layoutDims.addWidget(self.layout__ncols) - self.layout__nrowsL = QtWidgets.QLabel(self.optionLayout) - self.layout__nrowsL.setObjectName("layout__nrowsL") - self.layoutDims.addWidget(self.layout__nrowsL) - self.layout__nrows = BoundSpinBox(self.optionLayout) - self.layout__nrows.setSpecialValueText(" ") - self.layout__nrows.setObjectName("layout__nrows") - self.layoutDims.addWidget(self.layout__nrows) - self.formLayout_2.setLayout(1, QtWidgets.QFormLayout.FieldRole, self.layoutDims) - self.verticalLayout_2.addWidget(self.optionLayout) - spacerItem = QtWidgets.QSpacerItem( - 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding - ) - self.verticalLayout_2.addItem(spacerItem) - self.tabWidget.addTab(self.tabGeneral, "") - self.tabStereo = QtWidgets.QWidget() - self.tabStereo.setObjectName("tabStereo") - self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tabStereo) - self.verticalLayout_3.setContentsMargins(11, 11, 11, 11) - self.verticalLayout_3.setSpacing(6) - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.optionStereo = QtWidgets.QGroupBox(self.tabStereo) - self.optionStereo.setObjectName("optionStereo") - self.formLayout_8 = QtWidgets.QFormLayout(self.optionStereo) - self.formLayout_8.setContentsMargins(11, 11, 11, 11) - self.formLayout_8.setSpacing(6) - self.formLayout_8.setObjectName("formLayout_8") - self.trigger_stereoL = QtWidgets.QLabel(self.optionStereo) - self.trigger_stereoL.setObjectName("trigger_stereoL") - self.formLayout_8.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.trigger_stereoL - ) - self.trigger_stereo = BoundComboBox(self.optionStereo) - self.trigger_stereo.setObjectName("trigger_stereo") - self.formLayout_8.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.trigger_stereo - ) - self.render_stereoL = QtWidgets.QLabel(self.optionStereo) - self.render_stereoL.setObjectName("render_stereoL") - self.formLayout_8.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.render_stereoL - ) - self.render_stereo = BoundComboBox(self.optionStereo) - self.render_stereo.setObjectName("render_stereo") - self.formLayout_8.setWidget( - 1, QtWidgets.QFormLayout.FieldRole, self.render_stereo - ) - self.verticalLayout_3.addWidget(self.optionStereo) - self.dockStereo_2 = QtWidgets.QGroupBox(self.tabStereo) - self.dockStereo_2.setObjectName("dockStereo_2") - self.formLayout_7 = QtWidgets.QFormLayout(self.dockStereo_2) - self.formLayout_7.setContentsMargins(11, 11, 11, 11) - self.formLayout_7.setSpacing(6) - self.formLayout_7.setObjectName("formLayout_7") - self.layout__stereo_orientationL = QtWidgets.QLabel(self.dockStereo_2) - self.layout__stereo_orientationL.setObjectName("layout__stereo_orientationL") - self.formLayout_7.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.layout__stereo_orientationL - ) - self.layout__stereo_orientation = BoundComboBox(self.dockStereo_2) - self.layout__stereo_orientation.setObjectName("layout__stereo_orientation") - self.formLayout_7.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.layout__stereo_orientation - ) - self.render__stereo_grid_opacityL = QtWidgets.QLabel(self.dockStereo_2) - self.render__stereo_grid_opacityL.setObjectName("render__stereo_grid_opacityL") - self.formLayout_7.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.render__stereo_grid_opacityL - ) - self.render__stereo_grid_opacity = BoundDoubleSpinBox(self.dockStereo_2) - self.render__stereo_grid_opacity.setMaximum(1.0) - self.render__stereo_grid_opacity.setSingleStep(0.25) - self.render__stereo_grid_opacity.setObjectName("render__stereo_grid_opacity") - self.formLayout_7.setWidget( - 1, QtWidgets.QFormLayout.FieldRole, self.render__stereo_grid_opacity - ) - self.verticalLayout_3.addWidget(self.dockStereo_2) - spacerItem1 = QtWidgets.QSpacerItem( - 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding - ) - self.verticalLayout_3.addItem(spacerItem1) - self.tabWidget.addTab(self.tabStereo, "") - self.tabPerf = QtWidgets.QWidget() - self.tabPerf.setObjectName("tabPerf") - self.verticalLayout = QtWidgets.QVBoxLayout(self.tabPerf) - self.verticalLayout.setContentsMargins(11, 11, 11, 11) - self.verticalLayout.setSpacing(6) - self.verticalLayout.setObjectName("verticalLayout") - self.perfAll = QtWidgets.QGroupBox(self.tabPerf) - self.perfAll.setObjectName("perfAll") - self.formLayout_5 = QtWidgets.QFormLayout(self.perfAll) - self.formLayout_5.setContentsMargins(11, 11, 11, 11) - self.formLayout_5.setSpacing(6) - self.formLayout_5.setObjectName("formLayout_5") - self.trigger_subsamplingL = QtWidgets.QLabel(self.perfAll) - self.trigger_subsamplingL.setObjectName("trigger_subsamplingL") - self.formLayout_5.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.trigger_subsamplingL - ) - self.trigger_subsampling = BoundSpinBox(self.perfAll) - self.trigger_subsampling.setMinimum(1) - self.trigger_subsampling.setObjectName("trigger_subsampling") - self.formLayout_5.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.trigger_subsampling - ) - self.render_subsamplingL = QtWidgets.QLabel(self.perfAll) - self.render_subsamplingL.setObjectName("render_subsamplingL") - self.formLayout_5.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.render_subsamplingL - ) - self.render_subsampling = BoundSpinBox(self.perfAll) - self.render_subsampling.setMinimum(1) - self.render_subsampling.setObjectName("render_subsampling") - self.formLayout_5.setWidget( - 1, QtWidgets.QFormLayout.FieldRole, self.render_subsampling - ) - self.verticalLayout.addWidget(self.perfAll) - self.perfPreview = QtWidgets.QGroupBox(self.tabPerf) - self.perfPreview.setObjectName("perfPreview") - self.formLayout_3 = QtWidgets.QFormLayout(self.perfPreview) - self.formLayout_3.setContentsMargins(11, 11, 11, 11) - self.formLayout_3.setSpacing(6) - self.formLayout_3.setObjectName("formLayout_3") - self.render_subfpsL = QtWidgets.QLabel(self.perfPreview) - self.render_subfpsL.setObjectName("render_subfpsL") - self.formLayout_3.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.render_subfpsL - ) - self.render_subfps = BoundSpinBox(self.perfPreview) - self.render_subfps.setMinimum(1) - self.render_subfps.setObjectName("render_subfps") - self.formLayout_3.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.render_subfps - ) - self.render__res_divisorL = QtWidgets.QLabel(self.perfPreview) - self.render__res_divisorL.setObjectName("render__res_divisorL") - self.formLayout_3.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.render__res_divisorL - ) - self.render__res_divisor = BoundDoubleSpinBox(self.perfPreview) - self.render__res_divisor.setMinimum(1.0) - self.render__res_divisor.setSingleStep(0.5) - self.render__res_divisor.setObjectName("render__res_divisor") - self.formLayout_3.setWidget( - 1, QtWidgets.QFormLayout.FieldRole, self.render__res_divisor - ) - self.verticalLayout.addWidget(self.perfPreview) - spacerItem2 = QtWidgets.QSpacerItem( - 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding - ) - self.verticalLayout.addItem(spacerItem2) - self.tabWidget.addTab(self.tabPerf, "") - self.horizontalLayout.addWidget(self.tabWidget) - self.audioColumn = QtWidgets.QVBoxLayout() - self.audioColumn.setSpacing(6) - self.audioColumn.setObjectName("audioColumn") - self.horizontalLayout_4 = QtWidgets.QHBoxLayout() - self.horizontalLayout_4.setSpacing(6) - self.horizontalLayout_4.setObjectName("horizontalLayout_4") - self.audioGroup = QtWidgets.QGroupBox(self.centralWidget) - self.audioGroup.setObjectName("audioGroup") - self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.audioGroup) - self.horizontalLayout_3.setContentsMargins(11, 11, 11, 11) - self.horizontalLayout_3.setSpacing(6) - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.master_audio = BoundLineEdit(self.audioGroup) - self.master_audio.setObjectName("master_audio") - self.horizontalLayout_3.addWidget(self.master_audio) - self.master_audio_browse = QtWidgets.QPushButton(self.audioGroup) - self.master_audio_browse.setObjectName("master_audio_browse") - self.horizontalLayout_3.addWidget(self.master_audio_browse) - self.horizontalLayout_4.addWidget(self.audioGroup) - self.optionAudio = QtWidgets.QGroupBox(self.centralWidget) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.optionAudio.sizePolicy().hasHeightForWidth()) - self.optionAudio.setSizePolicy(sizePolicy) - self.optionAudio.setObjectName("optionAudio") - self.gridLayout = QtWidgets.QGridLayout(self.optionAudio) - self.gridLayout.setContentsMargins(11, 11, 11, 11) - self.gridLayout.setSpacing(6) - self.gridLayout.setObjectName("gridLayout") - self.trigger__edge_strengthL = QtWidgets.QLabel(self.optionAudio) - self.trigger__edge_strengthL.setObjectName("trigger__edge_strengthL") - self.gridLayout.addWidget(self.trigger__edge_strengthL, 0, 0, 1, 1) - self.trigger__responsivenessL = QtWidgets.QLabel(self.optionAudio) - self.trigger__responsivenessL.setObjectName("trigger__responsivenessL") - self.gridLayout.addWidget(self.trigger__responsivenessL, 0, 1, 1, 1) - self.trigger__buffer_falloffL = QtWidgets.QLabel(self.optionAudio) - self.trigger__buffer_falloffL.setObjectName("trigger__buffer_falloffL") - self.gridLayout.addWidget(self.trigger__buffer_falloffL, 0, 2, 1, 1) - self.trigger__edge_strength = BoundDoubleSpinBox(self.optionAudio) - self.trigger__edge_strength.setMinimum(-99.0) - self.trigger__edge_strength.setObjectName("trigger__edge_strength") - self.gridLayout.addWidget(self.trigger__edge_strength, 1, 0, 1, 1) - self.trigger__responsiveness = BoundDoubleSpinBox(self.optionAudio) - self.trigger__responsiveness.setMaximum(1.0) - self.trigger__responsiveness.setSingleStep(0.1) - self.trigger__responsiveness.setObjectName("trigger__responsiveness") - self.gridLayout.addWidget(self.trigger__responsiveness, 1, 1, 1, 1) - self.trigger__buffer_falloff = BoundDoubleSpinBox(self.optionAudio) - self.trigger__buffer_falloff.setSingleStep(0.5) - self.trigger__buffer_falloff.setObjectName("trigger__buffer_falloff") - self.gridLayout.addWidget(self.trigger__buffer_falloff, 1, 2, 1, 1) - self.trigger__pitch_tracking = BoundCheckBox(self.optionAudio) - self.trigger__pitch_tracking.setObjectName("trigger__pitch_tracking") - self.gridLayout.addWidget(self.trigger__pitch_tracking, 0, 3, 2, 1) - self.horizontalLayout_4.addWidget(self.optionAudio) - self.audioColumn.addLayout(self.horizontalLayout_4) - self.channelsGroup = QtWidgets.QGroupBox(self.centralWidget) - self.channelsGroup.setObjectName("channelsGroup") - self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.channelsGroup) - self.verticalLayout_4.setContentsMargins(11, 11, 11, 11) - self.verticalLayout_4.setSpacing(6) - self.verticalLayout_4.setObjectName("verticalLayout_4") - self.channelBar = QtWidgets.QHBoxLayout() - self.channelBar.setSpacing(6) - self.channelBar.setObjectName("channelBar") - spacerItem3 = QtWidgets.QSpacerItem( - 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum - ) - self.channelBar.addItem(spacerItem3) - self.channelAdd = ShortcutButton(self.channelsGroup) - self.channelAdd.setObjectName("channelAdd") - self.channelBar.addWidget(self.channelAdd) - self.channelDelete = ShortcutButton(self.channelsGroup) - self.channelDelete.setObjectName("channelDelete") - self.channelBar.addWidget(self.channelDelete) - self.channelUp = ShortcutButton(self.channelsGroup) - self.channelUp.setObjectName("channelUp") - self.channelBar.addWidget(self.channelUp) - self.channelDown = ShortcutButton(self.channelsGroup) - self.channelDown.setObjectName("channelDown") - self.channelBar.addWidget(self.channelDown) - self.verticalLayout_4.addLayout(self.channelBar) - self.channel_view = ChannelTableView(self.channelsGroup) - self.channel_view.setObjectName("channel_view") - self.verticalLayout_4.addWidget(self.channel_view) - self.audioColumn.addWidget(self.channelsGroup) - self.horizontalLayout.addLayout(self.audioColumn) - self.horizontalLayout.setStretch(1, 1) - MainWindow.setCentralWidget(self.centralWidget) - self.menuBar = QtWidgets.QMenuBar(MainWindow) - self.menuBar.setObjectName("menuBar") - self.menuFile = QtWidgets.QMenu(self.menuBar) - self.menuFile.setObjectName("menuFile") - self.menuTools = QtWidgets.QMenu(self.menuBar) - self.menuTools.setObjectName("menuTools") - MainWindow.setMenuBar(self.menuBar) - self.toolBar = QtWidgets.QToolBar(MainWindow) - self.toolBar.setObjectName("toolBar") - MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) - self.actionOpen = QtWidgets.QAction(MainWindow) - self.actionOpen.setObjectName("actionOpen") - self.actionSave = QtWidgets.QAction(MainWindow) - self.actionSave.setObjectName("actionSave") - self.actionNew = QtWidgets.QAction(MainWindow) - self.actionNew.setObjectName("actionNew") - self.actionSaveAs = QtWidgets.QAction(MainWindow) - self.actionSaveAs.setObjectName("actionSaveAs") - self.actionExit = QtWidgets.QAction(MainWindow) - self.actionExit.setObjectName("actionExit") - self.actionPreview = QtWidgets.QAction(MainWindow) - self.actionPreview.setObjectName("actionPreview") - self.actionRender = QtWidgets.QAction(MainWindow) - self.actionRender.setObjectName("actionRender") - self.action_separate_render_dir = QtWidgets.QAction(MainWindow) - self.action_separate_render_dir.setCheckable(True) - self.action_separate_render_dir.setObjectName("action_separate_render_dir") - self.menuFile.addAction(self.actionNew) - self.menuFile.addAction(self.actionOpen) - self.menuFile.addAction(self.actionSave) - self.menuFile.addAction(self.actionSaveAs) - self.menuFile.addSeparator() - self.menuFile.addAction(self.actionPreview) - self.menuFile.addAction(self.actionRender) - self.menuFile.addSeparator() - self.menuFile.addAction(self.actionExit) - self.menuTools.addAction(self.action_separate_render_dir) - self.menuBar.addAction(self.menuFile.menuAction()) - self.menuBar.addAction(self.menuTools.menuAction()) - self.toolBar.addAction(self.actionNew) - self.toolBar.addAction(self.actionOpen) - self.toolBar.addAction(self.actionSave) - self.toolBar.addAction(self.actionSaveAs) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionPreview) - self.toolBar.addAction(self.actionRender) + s = LayoutStack(MainWindow) + + # Window contents + with central_widget(s, QWidget) as self.centralWidget: + horizontalLayout = set_layout(s, QHBoxLayout) + + # Left-hand config tabs + with append_widget(s, QTabWidget) as self.left_tabs: + self.tabGeneral = self.add_general_tab(s) + self.tabStereo = self.add_stereo_tab(s) + self.tabPerf = self.add_performance_tab(s) + + # Right-hand channel list + with append_widget(s, QVBoxLayout) as self.audioColumn: + + # Top bar (master audio, trigger) + self.add_top_bar(s) + + # Channel list (group box) + self.channelsGroup = self.add_channels_list(s) + + # Right-hand channel list expands to fill space. + horizontalLayout.setStretch(1, 1) + + self.add_actions(s, MainWindow) + + # Creates references to labels + set_attr_objectName(self, s) + + # Initializes labels by reference self.retranslateUi(MainWindow) - self.tabWidget.setCurrentIndex(0) - QtCore.QMetaObject.connectSlotsByName(MainWindow) + self.left_tabs.setCurrentIndex(0) + # Depends on objectName + QMetaObject.connectSlotsByName(MainWindow) + + def add_general_tab(self, s: LayoutStack) -> QWidget: + tr = self.tr + with self._add_tab(s, tr("&General")) as tab: + set_layout(s, QVBoxLayout) + + # Global group + with append_widget(s, QGroupBox) as self.optionGlobal: + set_layout(s, QFormLayout) + + with add_row(s, BoundSpinBox) as self.fps: + self.fps.setMinimum(1) + self.fps.setMaximum(999) + self.fps.setSingleStep(10) + + with add_row(s, BoundSpinBox) as self.trigger_ms: + self.trigger_ms.setMinimum(5) + self.trigger_ms.setSingleStep(5) + + with add_row(s, BoundSpinBox) as self.render_ms: + self.render_ms.setMinimum(5) + self.render_ms.setSingleStep(5) + + with add_row(s, BoundDoubleSpinBox) as self.amplification: + self.amplification.setSingleStep(0.1) + + with add_row(s, BoundDoubleSpinBox) as self.begin_time: + self.begin_time.setMaximum(9999.0) + + with append_widget(s, QGroupBox) as self.optionAppearance: + set_layout(s, QFormLayout) + + with add_row(s, BoundLineEdit) as self.render_resolution: + pass + + with add_row(s, BoundColorWidget) as self.render__bg_color: + pass + + with add_row(s, BoundColorWidget) as self.render__init_line_color: + pass + + with add_row(s, BoundDoubleSpinBox) as self.render__line_width: + self.render__line_width.setMinimum(0.5) + self.render__line_width.setSingleStep(0.5) + + with add_row(s, OptionalColorWidget) as self.render__grid_color: + pass + + with add_row(s, OptionalColorWidget) as self.render__midline_color: + pass + + with add_row(s, BoundCheckBox, BoundCheckBox) as ( + self.render__v_midline, + self.render__h_midline, + ): + pass + + with append_widget(s, QGroupBox) as self.optionLayout: + set_layout(s, QFormLayout) + + with add_row(s, BoundComboBox) as self.layout__orientation: + pass + + with add_row(s, QLabel, QHBoxLayout) as ( + self.layout__ncolsL, + self.layoutDims, + ): + with append_widget(s, BoundSpinBox) as self.layout__ncols: + self.layout__ncols.setSpecialValueText(NBSP) + + with append_widget(s, QLabel) as self.layout__nrowsL: + pass + + with append_widget(s, BoundSpinBox) as self.layout__nrows: + self.layout__nrows.setSpecialValueText(NBSP) + + append_stretch(s) + + return tab + + def add_stereo_tab(self, s: LayoutStack) -> QWidget: + tr = self.tr + with self._add_tab(s, tr("&Stereo")) as tab: + set_layout(s, QVBoxLayout) + + with append_widget(s, QGroupBox) as self.optionStereo: + set_layout(s, QFormLayout) + with add_row(s, BoundComboBox) as self.trigger_stereo: + pass + + with add_row(s, BoundComboBox) as self.render_stereo: + pass + + with append_widget(s, QGroupBox) as self.dockStereo_2: + set_layout(s, QFormLayout) + + with add_row(s, BoundComboBox) as self.layout__stereo_orientation: + pass + + with add_row(s, BoundDoubleSpinBox) as ( + self.render__stereo_grid_opacity + ): + self.render__stereo_grid_opacity.setMaximum(1.0) + self.render__stereo_grid_opacity.setSingleStep(0.25) + + append_stretch(s) + + return tab + + def add_performance_tab(self, s: LayoutStack) -> QWidget: + tr = self.tr + with self._add_tab(s, tr("&Performance")) as tab: + set_layout(s, QVBoxLayout) + + with append_widget(s, QGroupBox) as self.perfAll: + set_layout(s, QFormLayout) + + with add_row(s, BoundSpinBox) as self.trigger_subsampling: + self.trigger_subsampling.setMinimum(1) + + with add_row(s, BoundSpinBox) as self.render_subsampling: + self.render_subsampling.setMinimum(1) + + with append_widget(s, QGroupBox) as self.perfPreview: + set_layout(s, QFormLayout) + + with add_row(s, BoundSpinBox) as self.render_subfps: + self.render_subfps.setMinimum(1) + + with add_row(s, BoundDoubleSpinBox) as self.render__res_divisor: + self.render__res_divisor.setMinimum(1.0) + self.render__res_divisor.setSingleStep(0.5) + + append_stretch(s) + + return tab + + @staticmethod + def _add_tab(s: LayoutStack, label: str = ""): + return add_tab(s, QWidget, label) + + def add_top_bar(self, s): + with append_widget(s, QHBoxLayout): + # Master audio + with append_widget(s, QGroupBox) as self.masterAudioGroup: + set_layout(s, QHBoxLayout) + with append_widget(s, BoundLineEdit) as self.master_audio: + pass + with append_widget(s, QPushButton) as self.master_audio_browse: + pass + + # Trigger config + with append_widget(s, QGroupBox) as self.optionAudio: + # Prevent expansion (does nothing even if removed :| ) + self.optionAudio.setSizePolicy(fixed_size_policy()) + + set_layout(s, QGridLayout) + + with add_grid_col(s, BoundComboBox) as (self.trigger__edge_direction): + pass + + with add_grid_col(s, BoundDoubleSpinBox) as ( + self.trigger__edge_strength + ): + self.trigger__edge_strength.setMinimum(0.0) + + with add_grid_col(s, BoundDoubleSpinBox) as ( + self.trigger__responsiveness + ): + self.trigger__responsiveness.setMaximum(1.0) + self.trigger__responsiveness.setSingleStep(0.1) + + with add_grid_col(s, BoundDoubleSpinBox) as ( + self.trigger__buffer_falloff + ): + self.trigger__buffer_falloff.setSingleStep(0.5) + + with add_grid_col(s, BoundCheckBox, Both) as ( + self.trigger__pitch_tracking + ): + assert isinstance(self.trigger__pitch_tracking, QWidget) + + def add_channels_list(self, s): + with append_widget(s, QGroupBox) as group: + set_layout(s, QVBoxLayout) + + # Button toolbar + with append_widget(s, QHBoxLayout) as self.channelBar: + append_stretch(s) + + with append_widget(s, ShortcutButton) as self.channelAdd: + pass + with append_widget(s, ShortcutButton) as self.channelDelete: + pass + with append_widget(s, ShortcutButton) as self.channelUp: + pass + with append_widget(s, ShortcutButton) as self.channelDown: + pass + + # Spreadsheet grid + with append_widget(s, ChannelTableView) as self.channel_view: + pass + + return group + + def add_actions(self, s: LayoutStack, MainWindow): + # Setup actions + self.actionOpen = QAction(MainWindow) + self.actionSave = QAction(MainWindow) + self.actionNew = QAction(MainWindow) + self.actionSaveAs = QAction(MainWindow) + self.actionExit = QAction(MainWindow) + self.actionPreview = QAction(MainWindow) + self.actionRender = QAction(MainWindow) + self.action_separate_render_dir = QAction(MainWindow) + self.action_separate_render_dir.setCheckable(True) + + # Setup menu_bar + assert s.widget is MainWindow + with set_menu_bar(s) as self.menuBar: + with append_menu(s) as self.menuFile: + self.menuFile.addAction(self.actionNew) + self.menuFile.addAction(self.actionOpen) + self.menuFile.addAction(self.actionSave) + self.menuFile.addAction(self.actionSaveAs) + self.menuFile.addSeparator() + self.menuFile.addAction(self.actionPreview) + self.menuFile.addAction(self.actionRender) + self.menuFile.addSeparator() + self.menuFile.addAction(self.actionExit) + + with append_menu(s) as self.menuTools: + self.menuTools.addAction(self.action_separate_render_dir) + + # Setup toolbar + with add_toolbar(s, Qt.TopToolBarArea) as self.toolBar: + self.toolBar.addAction(self.actionNew) + self.toolBar.addAction(self.actionOpen) + self.toolBar.addAction(self.actionSave) + self.toolBar.addAction(self.actionSaveAs) + self.toolBar.addSeparator() + self.toolBar.addAction(self.actionPreview) + self.toolBar.addAction(self.actionRender) + + # noinspection PyUnresolvedReferences def retranslateUi(self, MainWindow): - _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) - self.optionGlobal.setTitle(_translate("MainWindow", "Global")) - self.fpsL.setText(_translate("MainWindow", "FPS")) - self.trigger_msL.setText(_translate("MainWindow", "Trigger Width")) - self.render_msL.setText(_translate("MainWindow", "Render Width")) - self.amplificationL.setText(_translate("MainWindow", "Amplification")) - self.begin_timeL.setText(_translate("MainWindow", "Begin Time")) - self.optionAppear.setTitle(_translate("MainWindow", "Appearance")) - self.render_resolutionL.setText(_translate("MainWindow", "Resolution")) - self.render_resolution.setText(_translate("MainWindow", "vs")) - self.render__bg_colorL.setText(_translate("MainWindow", "Background")) - self.render__init_line_colorL.setText(_translate("MainWindow", "Line Color")) - self.render__line_widthL.setText(_translate("MainWindow", "Line Width")) - self.render__grid_colorL.setText(_translate("MainWindow", "Grid Color")) - self.render__midline_colorL.setText(_translate("MainWindow", "Midline Color")) - self.render__v_midline.setText(_translate("MainWindow", "Vertical")) - self.render__h_midline.setText(_translate("MainWindow", "Horizontal Midline")) - self.optionLayout.setTitle(_translate("MainWindow", "Layout")) - self.layout__orientationL.setText(_translate("MainWindow", "Orientation")) - self.layout__ncolsL.setText(_translate("MainWindow", "Columns")) - self.layout__nrowsL.setText(_translate("MainWindow", "Rows")) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tabGeneral), - _translate("MainWindow", "&General"), - ) - self.optionStereo.setTitle(_translate("MainWindow", "Stereo Enable")) - self.trigger_stereoL.setText(_translate("MainWindow", "Trigger Stereo")) - self.render_stereoL.setText(_translate("MainWindow", "Render Stereo")) - self.dockStereo_2.setTitle(_translate("MainWindow", "Stereo Appearance")) - self.layout__stereo_orientationL.setText( - _translate("MainWindow", "Stereo Orientation") - ) - self.render__stereo_grid_opacityL.setText( - _translate("MainWindow", "Grid Opacity") - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tabStereo), _translate("MainWindow", "&Stereo") - ) - self.perfAll.setTitle(_translate("MainWindow", "Preview and Render")) - self.trigger_subsamplingL.setText( - _translate("MainWindow", "Trigger Subsampling") - ) - self.render_subsamplingL.setText(_translate("MainWindow", "Render Subsampling")) - self.perfPreview.setTitle(_translate("MainWindow", "Preview Only")) - self.render_subfpsL.setText(_translate("MainWindow", "Render FPS Divisor")) - self.render__res_divisorL.setText( - _translate("MainWindow", "Resolution Divisor") - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tabPerf), - _translate("MainWindow", "&Performance"), - ) - self.audioGroup.setTitle(_translate("MainWindow", "Master Audio")) - self.master_audio.setText(_translate("MainWindow", "/")) - self.master_audio_browse.setText(_translate("MainWindow", "&Browse...")) - self.optionAudio.setTitle(_translate("MainWindow", "Trigger")) - self.trigger__edge_strengthL.setText(_translate("MainWindow", "Edge Strength")) - self.trigger__responsivenessL.setText( - _translate("MainWindow", "Responsiveness") - ) - self.trigger__buffer_falloffL.setText( - _translate("MainWindow", "Buffer Falloff") - ) - self.trigger__pitch_tracking.setText(_translate("MainWindow", "Pitch Tracking")) - self.channelsGroup.setTitle(_translate("MainWindow", "Oscilloscope Channels")) - self.channelAdd.setText(_translate("MainWindow", "&Add...")) - self.channelDelete.setText(_translate("MainWindow", "&Delete")) - self.channelUp.setText(_translate("MainWindow", "Up")) - self.channelDown.setText(_translate("MainWindow", "Down")) - self.menuFile.setTitle(_translate("MainWindow", "&File")) - self.menuTools.setTitle(_translate("MainWindow", "&Tools")) - self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) - self.actionOpen.setText(_translate("MainWindow", "&Open")) - self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+O")) - self.actionSave.setText(_translate("MainWindow", "&Save")) - self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S")) - self.actionNew.setText(_translate("MainWindow", "&New")) - self.actionNew.setShortcut(_translate("MainWindow", "Ctrl+N")) - self.actionSaveAs.setText(_translate("MainWindow", "Save &As")) - self.actionSaveAs.setShortcut(_translate("MainWindow", "Ctrl+Shift+S")) - self.actionExit.setText(_translate("MainWindow", "E&xit")) - self.actionExit.setShortcut(_translate("MainWindow", "Ctrl+Q")) - self.actionPreview.setText(_translate("MainWindow", "&Preview")) - self.actionPreview.setShortcut(_translate("MainWindow", "Ctrl+P")) - self.actionRender.setText(_translate("MainWindow", "&Render to Video")) - self.actionRender.setShortcut(_translate("MainWindow", "Ctrl+R")) - self.action_separate_render_dir.setText( - _translate("MainWindow", "&Separate Render Folder") - ) + tr = self.tr + + MainWindow.setWindowTitle(tr("MainWindow")) + + # self.left_tabs.setTabText( + # self.left_tabs.indexOf(self.tabGeneral), tr("&General") + # ) + # self.left_tabs.setTabText(self.left_tabs.indexOf(self.tabStereo), ) + # self.left_tabs.setTabText( + # self.left_tabs.indexOf(self.tabPerf), tr("&Performance") + # ) + + self.optionGlobal.setTitle(tr("Global")) + self.fpsL.setText(tr("FPS")) + self.trigger_msL.setText(tr("Trigger Width")) + self.render_msL.setText(tr("Render Width")) + self.amplificationL.setText(tr("Amplification")) + self.begin_timeL.setText(tr("Begin Time")) + self.optionAppearance.setTitle(tr("Appearance")) + self.render_resolutionL.setText(tr("Resolution")) + self.render_resolution.setText(tr("vs")) + self.render__bg_colorL.setText(tr("Background")) + self.render__init_line_colorL.setText(tr("Line Color")) + self.render__line_widthL.setText(tr("Line Width")) + self.render__grid_colorL.setText(tr("Grid Color")) + self.render__midline_colorL.setText(tr("Midline Color")) + self.render__v_midline.setText(tr("Vertical")) + self.render__h_midline.setText(tr("Horizontal Midline")) + self.optionLayout.setTitle(tr("Layout")) + self.layout__orientationL.setText(tr("Orientation")) + self.layout__ncolsL.setText(tr("Columns")) + self.layout__nrowsL.setText(tr("Rows")) + self.optionStereo.setTitle(tr("Stereo Enable")) + self.trigger_stereoL.setText(tr("Trigger Stereo")) + self.render_stereoL.setText(tr("Render Stereo")) + self.dockStereo_2.setTitle(tr("Stereo Appearance")) + self.layout__stereo_orientationL.setText(tr("Stereo Orientation")) + self.render__stereo_grid_opacityL.setText(tr("Grid Opacity")) + + self.perfAll.setTitle(tr("Preview and Render")) + self.trigger_subsamplingL.setText(tr("Trigger Subsampling")) + self.render_subsamplingL.setText(tr("Render Subsampling")) + self.perfPreview.setTitle(tr("Preview Only")) + self.render_subfpsL.setText(tr("Render FPS Divisor")) + self.render__res_divisorL.setText(tr("Resolution Divisor")) + self.masterAudioGroup.setTitle(tr("Master Audio")) + self.master_audio.setText(tr("/")) + self.master_audio_browse.setText(tr("&Browse...")) + self.optionAudio.setTitle(tr("Trigger")) + self.trigger__edge_strengthL.setText(tr("Edge Strength")) + self.trigger__responsivenessL.setText(tr("Responsiveness")) + self.trigger__buffer_falloffL.setText(tr("Buffer Falloff")) + self.trigger__pitch_tracking.setText(tr("Pitch Tracking")) + self.trigger__edge_directionL.setText(tr("Edge Direction")) + + self.channelsGroup.setTitle(tr("Oscilloscope Channels")) + self.channelAdd.setText(tr("&Add...")) + self.channelDelete.setText(tr("&Delete")) + self.channelUp.setText(tr("Up")) + self.channelDown.setText(tr("Down")) + self.menuFile.setTitle(tr("&File")) + self.menuTools.setTitle(tr("&Tools")) + self.toolBar.setWindowTitle(tr("toolBar")) + self.actionOpen.setText(tr("&Open")) + self.actionOpen.setShortcut(tr("Ctrl+O")) + self.actionSave.setText(tr("&Save")) + self.actionSave.setShortcut(tr("Ctrl+S")) + self.actionNew.setText(tr("&New")) + self.actionNew.setShortcut(tr("Ctrl+N")) + self.actionSaveAs.setText(tr("Save &As")) + self.actionSaveAs.setShortcut(tr("Ctrl+Shift+S")) + self.actionExit.setText(tr("E&xit")) + self.actionExit.setShortcut(tr("Ctrl+Q")) + self.actionPreview.setText(tr("&Preview")) + self.actionPreview.setShortcut(tr("Ctrl+P")) + self.actionRender.setText(tr("&Render to Video")) + self.actionRender.setShortcut(tr("Ctrl+R")) + self.action_separate_render_dir.setText(tr("&Separate Render Folder")) from corrscope.gui.__init__ import ChannelTableView, ShortcutButton From 3ff37355e3f24fca4e10d84380460d1a27b9a9dc Mon Sep 17 00:00:00 2001 From: nyanpasu64 Date: Wed, 6 Mar 2019 22:21:18 -0800 Subject: [PATCH 3/4] Rename files to model/view/etc. --- corrscope/gui/__init__.py | 4 ++-- corrscope/gui/{data_bind.py => model_bind.py} | 0 .../gui/{ui_mainwindow.py => view_mainwindow.py} | 13 ++----------- corrscope/gui/{layout_stack.py => view_stack.py} | 0 tests/{test_data_bind.py => test_model_bind.py} | 2 +- 5 files changed, 5 insertions(+), 14 deletions(-) rename corrscope/gui/{data_bind.py => model_bind.py} (100%) rename corrscope/gui/{ui_mainwindow.py => view_mainwindow.py} (97%) rename corrscope/gui/{layout_stack.py => view_stack.py} (100%) rename tests/{test_data_bind.py => test_model_bind.py} (96%) diff --git a/corrscope/gui/__init__.py b/corrscope/gui/__init__.py index cf10769..52e147b 100644 --- a/corrscope/gui/__init__.py +++ b/corrscope/gui/__init__.py @@ -20,7 +20,7 @@ from corrscope import cli from corrscope.channel import ChannelConfig from corrscope.config import CorrError, copy_config, yaml from corrscope.corrscope import CorrScope, Config, Arguments, default_config -from corrscope.gui.data_bind import ( +from corrscope.gui.model_bind import ( PresentationModel, map_gui, behead, @@ -33,7 +33,7 @@ from corrscope.gui.history_file_dlg import ( get_open_file_list, get_save_file_path, ) -from corrscope.gui.ui_mainwindow import MainWindow as Ui_MainWindow +from corrscope.gui.view_mainwindow import MainWindow as Ui_MainWindow from corrscope.gui.util import color2hex, Locked, find_ranges, TracebackDialog from corrscope.layout import Orientation, StereoOrientation from corrscope.outputs import IOutputConfig, FFplayOutputConfig, FFmpegOutputConfig diff --git a/corrscope/gui/data_bind.py b/corrscope/gui/model_bind.py similarity index 100% rename from corrscope/gui/data_bind.py rename to corrscope/gui/model_bind.py diff --git a/corrscope/gui/ui_mainwindow.py b/corrscope/gui/view_mainwindow.py similarity index 97% rename from corrscope/gui/ui_mainwindow.py rename to corrscope/gui/view_mainwindow.py index d74b4e0..1dc28fa 100644 --- a/corrscope/gui/ui_mainwindow.py +++ b/corrscope/gui/view_mainwindow.py @@ -3,7 +3,7 @@ from PyQt5.QtCore import * from PyQt5.QtWidgets import * -from corrscope.gui.layout_stack import ( +from corrscope.gui.view_stack import ( LayoutStack, set_layout, central_widget, @@ -35,7 +35,6 @@ class MainWindow(QWidget): return QCoreApplication.translate("MainWindow", *args, **kwargs) def setupUi(self, MainWindow: QMainWindow): - MainWindow.resize(1160, 0) s = LayoutStack(MainWindow) @@ -323,14 +322,6 @@ class MainWindow(QWidget): MainWindow.setWindowTitle(tr("MainWindow")) - # self.left_tabs.setTabText( - # self.left_tabs.indexOf(self.tabGeneral), tr("&General") - # ) - # self.left_tabs.setTabText(self.left_tabs.indexOf(self.tabStereo), ) - # self.left_tabs.setTabText( - # self.left_tabs.indexOf(self.tabPerf), tr("&Performance") - # ) - self.optionGlobal.setTitle(tr("Global")) self.fpsL.setText(tr("FPS")) self.trigger_msL.setText(tr("Trigger Width")) @@ -400,7 +391,7 @@ class MainWindow(QWidget): from corrscope.gui.__init__ import ChannelTableView, ShortcutButton -from corrscope.gui.data_bind import ( +from corrscope.gui.model_bind import ( BoundCheckBox, BoundColorWidget, BoundComboBox, diff --git a/corrscope/gui/layout_stack.py b/corrscope/gui/view_stack.py similarity index 100% rename from corrscope/gui/layout_stack.py rename to corrscope/gui/view_stack.py diff --git a/tests/test_data_bind.py b/tests/test_model_bind.py similarity index 96% rename from tests/test_data_bind.py rename to tests/test_model_bind.py index 7d26fc5..d1d88c5 100644 --- a/tests/test_data_bind.py +++ b/tests/test_model_bind.py @@ -1,6 +1,6 @@ import pytest -from corrscope.gui.data_bind import rgetattr, rsetattr, rhasattr, flatten_attr +from corrscope.gui.model_bind import rgetattr, rsetattr, rhasattr, flatten_attr class Person(object): From 72ddf25b5a1467be350c91a9c7663b247bb32a02 Mon Sep 17 00:00:00 2001 From: nyanpasu64 Date: Fri, 8 Mar 2019 05:16:01 -0800 Subject: [PATCH 4/4] Don't try to bundle nonexistent .ui files in PyInstaller --- corrscope.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/corrscope.spec b/corrscope.spec index bbcffd6..68e386a 100644 --- a/corrscope.spec +++ b/corrscope.spec @@ -3,6 +3,7 @@ import os import shutil import subprocess from pathlib import Path +from typing import List, Tuple from PyInstaller.building.api import PYZ, EXE, COLLECT from PyInstaller.building.build_main import Analysis @@ -19,10 +20,12 @@ def keep(dir, wildcard): return [(include, dir) for include in includes] -datas = keep("corrscope/gui", "*.ui") +InFile = str +OutFolder = str +datas: List[Tuple[InFile, OutFolder]] = [] version = v.pyinstaller_write_version() -datas.append((v.version_txt, ".")) +datas += [(str(v.version_txt), ".")] app_name = "corrscope" app_name_version = f"{app_name}-{version}"