Nils
3 years ago
16 changed files with 622 additions and 293 deletions
@ -0,0 +1,107 @@ |
|||
[library] |
|||
;All parameters must be set. |
|||
;Library ID is unique across all Tembro Library files |
|||
id=0 |
|||
name=Tembro Defaul Instrument |
|||
description=This uses the sfz-Synthesizer features, and not samples. If this is the only instrument |
|||
you see you have not (correctly) downloaded the sample files and set the correct path via |
|||
the Edit menu. |
|||
license=https://creativecommons.org/publicdomain/zero/1.0/ |
|||
vendor=Hilbricht Nils 2021, Laborejo Software Suite https://www.laborejo.org info@laborejo.org |
|||
|
|||
;;;;;;;;;;;;;;;;;;; |
|||
;;;;Instruments;;;; |
|||
;;;;;;;;;;;;;;;;;;; |
|||
|
|||
;Each instrument creates its own JACK midi port and audio output ports. |
|||
|
|||
;Instrument [section] names have no meaning except to differentiate them from "library". |
|||
;The explict id (see below) is the permanent instrument identifier. |
|||
[sine] |
|||
;Instrument parameters that are mandatory: |
|||
;Instrument ID is unique within this library file |
|||
id=0 |
|||
;The pretty name for the whole instrument. If you cannot find a name that describes all variants |
|||
;(see below) that is a sign that the variants are not the same instrument. |
|||
name=Sine Wave |
|||
|
|||
;Variants are case sensitive and comma separated. Sorry, no commas in sfz file names here. |
|||
;No space-padding. Spaces in filenames are allowed. |
|||
;The order and naming of these files MUST remain permanently the same. This is most likely a version history. |
|||
variants=Sine.sfz |
|||
;Which variant shall be loaded when no save file exists. When updated versions are created this may change. |
|||
defaultVariant=Sine.sfz |
|||
|
|||
description=Sine wave synthesizer. |
|||
|
|||
;Tags are comma separated keywords for search and filtering. Do not create arbitrary tags. They are premade. |
|||
tags=sine |
|||
|
|||
;Instrument parameters that are optional. With explanation why: |
|||
|
|||
;Additional Vendor notes. They are specific to this instrument. |
|||
;Use them to add additional persons or explain differences to |
|||
;the library author information provided above |
|||
;UNCOMMENT vendor=Test entry to provide more vendor information |
|||
|
|||
|
|||
;An instrument license entry will override the library one. The license will be shown in each |
|||
;instruments GUI entry. Either the default one or *only* the license one. This is different to the |
|||
;author entry, where additional information is just appended. |
|||
;UNCOMMENT license=https://unlicense.org/ |
|||
|
|||
;Group. While tags are a global way to group across all libraries a group is a one-level structure |
|||
;within a library. Instruments without a group are top-level instruments (within the lib). |
|||
;Intended mainly for common groups like orchstra-sections (brass, strings etc.) |
|||
group=synthesizer |
|||
|
|||
;From here on just the basics: |
|||
[saw] |
|||
id=1 |
|||
name=Saw Wave |
|||
variants=Saw.sfz |
|||
defaultVariant=Saw.sfz |
|||
description=Saw wave synthesizer |
|||
tags=saw |
|||
group=synthesizer |
|||
|
|||
[square] |
|||
id=2 |
|||
name=Square Wave |
|||
variants=Square.sfz |
|||
defaultVariant=Square.sfz |
|||
description=Square wave synthesizer |
|||
tags=Square |
|||
group=synthesizer |
|||
|
|||
[triangle] |
|||
id=3 |
|||
name=Triangle Wave |
|||
variants=Triangle.sfz |
|||
defaultVariant=Triangle.sfz |
|||
description=Triangle wave synthesizer |
|||
tags=Triangle |
|||
group=synthesizer |
|||
|
|||
[noise] |
|||
id=4 |
|||
name=Noise |
|||
variants=Noise.sfz |
|||
defaultVariant=Noise.sfz |
|||
description=Noise from a synthesizer |
|||
tags=Noise |
|||
group=synthesizer |
|||
|
|||
[silence] |
|||
id=5 |
|||
name=Silence |
|||
variants=Silence.sfz |
|||
defaultVariant=Silence.sfz |
|||
description=Literally silence, but it is synthesized nevertheless, and goes through the whole audio-chain in the program. |
|||
If you find a usecase for this please send an email to info@laborejo.org :) |
|||
tags=Silence |
|||
group=synthesizer |
|||
|
|||
|
|||
|
|||
|
Binary file not shown.
@ -0,0 +1,93 @@ |
|||
#! /usr/bin/env python3 |
|||
# -*- coding: utf-8 -*- |
|||
""" |
|||
Copyright 2021, Nils Hilbricht, Germany ( https://www.hilbricht.net ) |
|||
|
|||
This file is part of the Laborejo Software Suite ( https://www.laborejo.org ), |
|||
|
|||
This application is free software: you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation, either version 3 of the License, or |
|||
(at your option) any later version. |
|||
|
|||
This program is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
""" |
|||
|
|||
import logging; logger = logging.getLogger(__name__); logger.info("import") |
|||
|
|||
|
|||
#Standard Lib |
|||
from pathlib import Path |
|||
import os.path |
|||
from os import makedirs |
|||
|
|||
#System Wide Modules |
|||
from PyQt5 import QtCore, QtWidgets, QtGui |
|||
|
|||
#Template Moduiles |
|||
from .designer.chooseDownloadDirectory import Ui_ChooseDownloadDirectory |
|||
from .resources import * #has the translation |
|||
|
|||
#Client Modules |
|||
from engine.config import * #imports METADATA |
|||
from qtgui.resources import * #Has the logo |
|||
|
|||
|
|||
class ChooseDownloadDirectory(QtWidgets.QDialog): |
|||
def __init__(self, qtApp): |
|||
|
|||
super().__init__() #no parent, this is the top level window at this time. |
|||
self.qtApp = qtApp |
|||
self.setModal(True) #block until closed |
|||
self.ui = Ui_ChooseDownloadDirectory() |
|||
self.ui.setupUi(self) |
|||
|
|||
settings = QtCore.QSettings("LaborejoSoftwareSuite", METADATA["shortName"]) |
|||
if settings.contains("sampleDownloadDirectory"): |
|||
self.ui.pathComboBox.insertItem(0, settings.value("sampleDownloadDirectory", type=str)) |
|||
else: |
|||
self.ui.pathComboBox.setCurrentText("") |
|||
|
|||
self.ui.buttonBox.accepted.connect(self.accept) |
|||
self.ui.buttonBox.rejected.connect(self.reject) |
|||
|
|||
self.ui.openFileDialogButton.setText("") |
|||
self.ui.openFileDialogButton.setIcon(self.style().standardIcon(getattr(QtWidgets.QStyle, "SP_DialogOpenButton"))) |
|||
self.ui.openFileDialogButton.clicked.connect(self.requestPathFromDialog) |
|||
self.exec() |
|||
|
|||
|
|||
def requestPathFromDialog(self): |
|||
if self.ui.pathComboBox.currentText() == "": |
|||
startPath = str(Path.home()) |
|||
else: |
|||
startPath = self.ui.pathComboBox.currentText() |
|||
dirname = QtWidgets.QFileDialog.getExistingDirectory(self, QtCore.QCoreApplication.translate("ChooseDownloadDirectory", "Choose Download Directory"), startPath, QtWidgets.QFileDialog.ShowDirsOnly|QtWidgets.QFileDialog.DontResolveSymlinks) |
|||
|
|||
if dirname: |
|||
self.ui.pathComboBox.setCurrentText(dirname) |
|||
|
|||
def accept(self): |
|||
self.path = self.ui.pathComboBox.currentText() #easy abstraction so that the caller does not need to know our widget name |
|||
settings = QtCore.QSettings("LaborejoSoftwareSuite", METADATA["shortName"]) |
|||
if not os.path.exists(self.path): |
|||
try: |
|||
makedirs(self.path) |
|||
except: |
|||
pass #file saving error logging is handled later |
|||
|
|||
#There is no guarantee that the dir really exists. but at this point the user is on its own. |
|||
#It is allowed to use /dev/null after all |
|||
settings.setValue("sampleDownloadDirectory", self.path) |
|||
super().accept() |
|||
|
|||
def reject(self): |
|||
self.path = None |
|||
super().reject() |
|||
|
@ -0,0 +1,71 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
# Form implementation generated from reading ui file 'chooseDownloadDirectory.ui' |
|||
# |
|||
# Created by: PyQt5 UI code generator 5.15.4 |
|||
# |
|||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is |
|||
# run again. Do not edit this file unless you know what you are doing. |
|||
|
|||
|
|||
from PyQt5 import QtCore, QtGui, QtWidgets |
|||
|
|||
|
|||
class Ui_ChooseDownloadDirectory(object): |
|||
def setupUi(self, ChooseDownloadDirectory): |
|||
ChooseDownloadDirectory.setObjectName("ChooseDownloadDirectory") |
|||
ChooseDownloadDirectory.resize(410, 329) |
|||
self.verticalLayout = QtWidgets.QVBoxLayout(ChooseDownloadDirectory) |
|||
self.verticalLayout.setObjectName("verticalLayout") |
|||
self.layoutWidget = QtWidgets.QWidget(ChooseDownloadDirectory) |
|||
self.layoutWidget.setObjectName("layoutWidget") |
|||
self.formLayout = QtWidgets.QFormLayout(self.layoutWidget) |
|||
self.formLayout.setContentsMargins(-1, -1, -1, 0) |
|||
self.formLayout.setObjectName("formLayout") |
|||
self.label = QtWidgets.QLabel(self.layoutWidget) |
|||
self.label.setWordWrap(True) |
|||
self.label.setObjectName("label") |
|||
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.label) |
|||
self.verticalLayout.addWidget(self.layoutWidget) |
|||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout() |
|||
self.horizontalLayout_2.setObjectName("horizontalLayout_2") |
|||
self.pathComboBox = QtWidgets.QComboBox(ChooseDownloadDirectory) |
|||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) |
|||
sizePolicy.setHorizontalStretch(0) |
|||
sizePolicy.setVerticalStretch(0) |
|||
sizePolicy.setHeightForWidth(self.pathComboBox.sizePolicy().hasHeightForWidth()) |
|||
self.pathComboBox.setSizePolicy(sizePolicy) |
|||
self.pathComboBox.setEditable(True) |
|||
self.pathComboBox.setObjectName("pathComboBox") |
|||
self.horizontalLayout_2.addWidget(self.pathComboBox) |
|||
self.openFileDialogButton = QtWidgets.QPushButton(ChooseDownloadDirectory) |
|||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) |
|||
sizePolicy.setHorizontalStretch(0) |
|||
sizePolicy.setVerticalStretch(0) |
|||
sizePolicy.setHeightForWidth(self.openFileDialogButton.sizePolicy().hasHeightForWidth()) |
|||
self.openFileDialogButton.setSizePolicy(sizePolicy) |
|||
self.openFileDialogButton.setFlat(False) |
|||
self.openFileDialogButton.setObjectName("openFileDialogButton") |
|||
self.horizontalLayout_2.addWidget(self.openFileDialogButton) |
|||
self.verticalLayout.addLayout(self.horizontalLayout_2) |
|||
self.buttonBox = QtWidgets.QDialogButtonBox(ChooseDownloadDirectory) |
|||
self.buttonBox.setOrientation(QtCore.Qt.Horizontal) |
|||
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) |
|||
self.buttonBox.setObjectName("buttonBox") |
|||
self.verticalLayout.addWidget(self.buttonBox) |
|||
self.widget_2 = QtWidgets.QWidget(ChooseDownloadDirectory) |
|||
self.widget_2.setObjectName("widget_2") |
|||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget_2) |
|||
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0) |
|||
self.horizontalLayout_4.setSpacing(0) |
|||
self.horizontalLayout_4.setObjectName("horizontalLayout_4") |
|||
self.verticalLayout.addWidget(self.widget_2) |
|||
|
|||
self.retranslateUi(ChooseDownloadDirectory) |
|||
QtCore.QMetaObject.connectSlotsByName(ChooseDownloadDirectory) |
|||
|
|||
def retranslateUi(self, ChooseDownloadDirectory): |
|||
_translate = QtCore.QCoreApplication.translate |
|||
ChooseDownloadDirectory.setWindowTitle(_translate("ChooseDownloadDirectory", "Choose Session Directory")) |
|||
self.label.setText(_translate("ChooseDownloadDirectory", "<html><head/><body><p>Please choose a directory for your sample files. The location can be read-only and will be shared by all sessions. </p><p>At the moment you have to manually download the files and move them to this directory. An integrated downloader will be added to this program after its beta-phase. </p><p>Changing the directory requires a program restart. The sample libraries will only be scanned on program start as well.</p><p>The download URL is:</p><p align=\"center\"><a href=\"https://www.laborejo.org/tembro/instruments\"><span style=\" text-decoration: underline; color:#55ffff;\">https://www.laborejo.org/tembro/instruments</span></a></p></body></html>")) |
|||
self.openFileDialogButton.setText(_translate("ChooseDownloadDirectory", "Choose Directory")) |
@ -0,0 +1,104 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<ui version="4.0"> |
|||
<class>ChooseDownloadDirectory</class> |
|||
<widget class="QDialog" name="ChooseDownloadDirectory"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>0</y> |
|||
<width>410</width> |
|||
<height>329</height> |
|||
</rect> |
|||
</property> |
|||
<property name="windowTitle"> |
|||
<string>Choose Session Directory</string> |
|||
</property> |
|||
<layout class="QVBoxLayout" name="verticalLayout"> |
|||
<item> |
|||
<widget class="QWidget" name="layoutWidget" native="true"> |
|||
<layout class="QFormLayout" name="formLayout"> |
|||
<property name="bottomMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<item row="0" column="1"> |
|||
<widget class="QLabel" name="label"> |
|||
<property name="text"> |
|||
<string><html><head/><body><p>Please choose a directory for your sample files. The location can be read-only and will be shared by all sessions. </p><p>At the moment you have to manually download the files and move them to this directory. An integrated downloader will be added to this program after its beta-phase. </p><p>Changing the directory requires a program restart. The sample libraries will only be scanned on program start as well.</p><p>The download URL is:</p><p align="center"><a href="https://www.laborejo.org/tembro/instruments"><span style=" text-decoration: underline; color:#55ffff;">https://www.laborejo.org/tembro/instruments</span></a></p></body></html></string> |
|||
</property> |
|||
<property name="wordWrap"> |
|||
<bool>true</bool> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<layout class="QHBoxLayout" name="horizontalLayout_2"> |
|||
<item> |
|||
<widget class="QComboBox" name="pathComboBox"> |
|||
<property name="sizePolicy"> |
|||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
|||
<horstretch>0</horstretch> |
|||
<verstretch>0</verstretch> |
|||
</sizepolicy> |
|||
</property> |
|||
<property name="editable"> |
|||
<bool>true</bool> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<widget class="QPushButton" name="openFileDialogButton"> |
|||
<property name="sizePolicy"> |
|||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> |
|||
<horstretch>0</horstretch> |
|||
<verstretch>0</verstretch> |
|||
</sizepolicy> |
|||
</property> |
|||
<property name="text"> |
|||
<string>Choose Directory</string> |
|||
</property> |
|||
<property name="flat"> |
|||
<bool>false</bool> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</item> |
|||
<item> |
|||
<widget class="QDialogButtonBox" name="buttonBox"> |
|||
<property name="orientation"> |
|||
<enum>Qt::Horizontal</enum> |
|||
</property> |
|||
<property name="standardButtons"> |
|||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<widget class="QWidget" name="widget_2" native="true"> |
|||
<layout class="QHBoxLayout" name="horizontalLayout_4"> |
|||
<property name="spacing"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="leftMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="topMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="rightMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="bottomMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
</layout> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
<resources/> |
|||
<connections/> |
|||
</ui> |
@ -1,247 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<ui version="4.0"> |
|||
<class>MainWindow</class> |
|||
<widget class="QMainWindow" name="MainWindow"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>0</y> |
|||
<width>1087</width> |
|||
<height>752</height> |
|||
</rect> |
|||
</property> |
|||
<property name="windowTitle"> |
|||
<string>MainWindow</string> |
|||
</property> |
|||
<widget class="QWidget" name="centralwidget"> |
|||
<layout class="QVBoxLayout" name="verticalLayout"> |
|||
<item> |
|||
<widget class="QSplitter" name="splitter_2"> |
|||
<property name="orientation"> |
|||
<enum>Qt::Horizontal</enum> |
|||
</property> |
|||
<widget class="QGroupBox" name="search_groupBox"> |
|||
<property name="title"> |
|||
<string>Search</string> |
|||
</property> |
|||
<layout class="QVBoxLayout" name="verticalLayout_4"> |
|||
<property name="spacing"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="leftMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="topMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="rightMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="bottomMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<item> |
|||
<widget class="QListWidget" name="search_listWidget"/> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
<widget class="QSplitter" name="splitter"> |
|||
<property name="orientation"> |
|||
<enum>Qt::Vertical</enum> |
|||
</property> |
|||
<widget class="QGroupBox" name="iinstruments_groupBox"> |
|||
<property name="enabled"> |
|||
<bool>true</bool> |
|||
</property> |
|||
<property name="title"> |
|||
<string>Instruments</string> |
|||
</property> |
|||
<layout class="QVBoxLayout" name="verticalLayout_2"> |
|||
<property name="spacing"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="leftMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="topMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="rightMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="bottomMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<item> |
|||
<widget class="QWidget" name="auditionerWidget" native="true"> |
|||
<layout class="QHBoxLayout" name="horizontalLayout"> |
|||
<item> |
|||
<widget class="QLabel" name="label"> |
|||
<property name="text"> |
|||
<string>Auditioner MIDI Input</string> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<widget class="QComboBox" name="auditionerMidiInputComboBox"> |
|||
<property name="sizeAdjustPolicy"> |
|||
<enum>QComboBox::AdjustToContents</enum> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<widget class="QLabel" name="auditionerCurrentInstrument_label"> |
|||
<property name="text"> |
|||
<string>TextLabel</string> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<spacer name="horizontalSpacer"> |
|||
<property name="orientation"> |
|||
<enum>Qt::Horizontal</enum> |
|||
</property> |
|||
<property name="sizeHint" stdset="0"> |
|||
<size> |
|||
<width>40</width> |
|||
<height>20</height> |
|||
</size> |
|||
</property> |
|||
</spacer> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
</item> |
|||
<item> |
|||
<widget class="QTreeWidget" name="instruments_treeWidget"> |
|||
<property name="editTriggers"> |
|||
<set>QAbstractItemView::NoEditTriggers</set> |
|||
</property> |
|||
<property name="showDropIndicator" stdset="0"> |
|||
<bool>false</bool> |
|||
</property> |
|||
<property name="alternatingRowColors"> |
|||
<bool>true</bool> |
|||
</property> |
|||
<property name="selectionMode"> |
|||
<enum>QAbstractItemView::SingleSelection</enum> |
|||
</property> |
|||
<property name="verticalScrollMode"> |
|||
<enum>QAbstractItemView::ScrollPerPixel</enum> |
|||
</property> |
|||
<property name="horizontalScrollMode"> |
|||
<enum>QAbstractItemView::ScrollPerPixel</enum> |
|||
</property> |
|||
<column> |
|||
<property name="text"> |
|||
<string/> |
|||
</property> |
|||
</column> |
|||
<column> |
|||
<property name="text"> |
|||
<string>ID</string> |
|||
</property> |
|||
</column> |
|||
<column> |
|||
<property name="text"> |
|||
<string>Name</string> |
|||
</property> |
|||
</column> |
|||
<column> |
|||
<property name="text"> |
|||
<string>Variant</string> |
|||
</property> |
|||
</column> |
|||
<column> |
|||
<property name="text"> |
|||
<string>Tags</string> |
|||
</property> |
|||
</column> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
<widget class="QGroupBox" name="details_groupBox"> |
|||
<property name="title"> |
|||
<string>NamePlaceholder</string> |
|||
</property> |
|||
<layout class="QVBoxLayout" name="verticalLayout_3"> |
|||
<property name="spacing"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="leftMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="topMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="rightMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<property name="bottomMargin"> |
|||
<number>0</number> |
|||
</property> |
|||
<item> |
|||
<widget class="QScrollArea" name="details_scrollArea"> |
|||
<property name="widgetResizable"> |
|||
<bool>true</bool> |
|||
</property> |
|||
<widget class="QWidget" name="scrollAreaWidgetContents"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>0</y> |
|||
<width>598</width> |
|||
<height>158</height> |
|||
</rect> |
|||
</property> |
|||
<layout class="QFormLayout" name="formLayout"> |
|||
<item row="0" column="0"> |
|||
<widget class="QLabel" name="variant_label"> |
|||
<property name="text"> |
|||
<string>Variants</string> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
<item row="0" column="1"> |
|||
<widget class="QComboBox" name="variants_comboBox"/> |
|||
</item> |
|||
<item row="1" column="1"> |
|||
<widget class="QLabel" name="info_label"> |
|||
<property name="text"> |
|||
<string>TextLabel</string> |
|||
</property> |
|||
<property name="alignment"> |
|||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> |
|||
</property> |
|||
<property name="wordWrap"> |
|||
<bool>true</bool> |
|||
</property> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
</widget> |
|||
</widget> |
|||
</item> |
|||
</layout> |
|||
</widget> |
|||
<widget class="QMenuBar" name="menubar"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>0</y> |
|||
<width>1087</width> |
|||
<height>20</height> |
|||
</rect> |
|||
</property> |
|||
</widget> |
|||
<widget class="QStatusBar" name="statusbar"/> |
|||
</widget> |
|||
<resources/> |
|||
<connections/> |
|||
</ui> |
Loading…
Reference in new issue