This commit is contained in:
boris 2023-08-04 19:35:27 +02:00
commit 50a3ad341d
369 changed files with 195041 additions and 0 deletions

12
.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
.vs/
.vscode/
__pycache__/
AutoFTG/__pycache__/
AutoFTG/templates/
AutoFTG_*.zip
AutoFTG/qtGui/
sync.ffs_db
AutoFTG/,backup/*
AutoFTG/cameras/dibit*
AutoFTG/cameras/DJI-*
AutoFTG/templates/

0
AutoFTG/__init__.py Normal file
View File

2011
AutoFTG/autoftg_batch.py Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,326 @@
# AutoFTG - Scripts for Agisoft Metashape Pro
#
# Dialog: Batch Chunk Creator - Align Photos Settings
# ----------------------------------------------------------------
import os
import shutil
import sys
import time
import subprocess
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
import AutoFTG.autoftg_batch as autoftg_batch
from AutoFTG.autoftg_batch import *
class Ui_DialogAlignPhotos(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogAlignPhotos")
self.resize(290, 460)
self.setWindowTitle(u"Align Photos Settings")
self.formLayoutWidget = QWidget(self)
self.formLayoutWidget.setObjectName(u"formLayoutWidget")
self.formLayoutWidget.setGeometry(QRect(0, 0, 291, 461))
self.formLayout = QFormLayout(self.formLayoutWidget)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setContentsMargins(10, 10, 10, 10)
self.label_4 = QLabel(self.formLayoutWidget)
self.label_4.setObjectName(u"label_4")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
self.label_4.setSizePolicy(sizePolicy)
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setText(u"Align Photos Settings")
self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_4)
self.line = QFrame(self.formLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(1, QFormLayout.SpanningRole, self.line)
self.label = QLabel(self.formLayoutWidget)
self.label.setObjectName(u"label")
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
self.label.setFont(font1)
self.label.setText(u"Quality")
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label)
self.comboBox_quality = QComboBox(self.formLayoutWidget)
self.comboBox_quality.addItem(u"Highest")
self.comboBox_quality.addItem(u"High")
self.comboBox_quality.addItem(u"Medium")
self.comboBox_quality.addItem(u"Low")
self.comboBox_quality.addItem(u"Lowest")
self.comboBox_quality.setObjectName(u"comboBox_quality")
self.comboBox_quality.setCurrentText(u"Highest")
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_quality)
self.line_2 = QFrame(self.formLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.line_2)
self.label_2 = QLabel(self.formLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setFont(font1)
self.label_2.setText(u"Pre-selection")
self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_2)
self.checkBox_gen = QCheckBox(self.formLayoutWidget)
self.checkBox_gen.setObjectName(u"checkBox_gen")
self.checkBox_gen.setText(u"Generic")
self.formLayout.setWidget(4, QFormLayout.FieldRole, self.checkBox_gen)
self.checkBox_ref = QCheckBox(self.formLayoutWidget)
self.checkBox_ref.setObjectName(u"checkBox_ref")
self.checkBox_ref.setText(u"Reference")
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.checkBox_ref)
self.comboBox_ref = QComboBox(self.formLayoutWidget)
self.comboBox_ref.addItem(u"Source")
self.comboBox_ref.addItem(u"Estimated")
self.comboBox_ref.addItem(u"Sequential")
self.comboBox_ref.setObjectName(u"comboBox_ref")
self.comboBox_ref.setEnabled(False)
self.comboBox_ref.setCurrentText(u"Source")
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.comboBox_ref)
self.line_5 = QFrame(self.formLayoutWidget)
self.line_5.setObjectName(u"line_5")
self.line_5.setFrameShape(QFrame.HLine)
self.line_5.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(7, QFormLayout.SpanningRole, self.line_5)
self.label_3 = QLabel(self.formLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setFont(font1)
self.label_3.setText(u"Point Limit")
self.formLayout.setWidget(8, QFormLayout.LabelRole, self.label_3)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_6 = QLabel(self.formLayoutWidget)
self.label_6.setObjectName(u"label_6")
sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
self.label_6.setSizePolicy(sizePolicy)
self.label_6.setText(u"Key")
self.horizontalLayout_2.addWidget(self.label_6)
self.label_5 = QLabel(self.formLayoutWidget)
self.label_5.setObjectName(u"label_5")
sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy)
self.label_5.setText(u"Tie")
self.horizontalLayout_2.addWidget(self.label_5)
self.formLayout.setLayout(8, QFormLayout.FieldRole, self.horizontalLayout_2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.lineEdit_keypoints = QLineEdit(self.formLayoutWidget)
self.lineEdit_keypoints.setObjectName(u"lineEdit_keypoints")
self.lineEdit_keypoints.setPlaceholderText(u"40000")
self.horizontalLayout.addWidget(self.lineEdit_keypoints)
self.lineEdit_tiepoints = QLineEdit(self.formLayoutWidget)
self.lineEdit_tiepoints.setObjectName(u"lineEdit_tiepoints")
self.lineEdit_tiepoints.setPlaceholderText(u"10000")
self.horizontalLayout.addWidget(self.lineEdit_tiepoints)
self.formLayout.setLayout(9, QFormLayout.FieldRole, self.horizontalLayout)
self.line_4 = QFrame(self.formLayoutWidget)
self.line_4.setObjectName(u"line_4")
self.line_4.setFrameShape(QFrame.HLine)
self.line_4.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(10, QFormLayout.SpanningRole, self.line_4)
self.label_7 = QLabel(self.formLayoutWidget)
self.label_7.setObjectName(u"label_7")
self.label_7.setFont(font1)
self.label_7.setText(u"Other")
self.formLayout.setWidget(11, QFormLayout.LabelRole, self.label_7)
self.checkBox_filtmask = QCheckBox(self.formLayoutWidget)
self.checkBox_filtmask.setObjectName(u"checkBox_filtmask")
self.checkBox_filtmask.setText(u"Filter Masked")
self.formLayout.setWidget(11, QFormLayout.FieldRole, self.checkBox_filtmask)
self.checkBox_masktie = QCheckBox(self.formLayoutWidget)
self.checkBox_masktie.setObjectName(u"checkBox_masktie")
self.checkBox_masktie.setText(u"Mask Tie Points")
self.formLayout.setWidget(13, QFormLayout.FieldRole, self.checkBox_masktie)
self.checkBox_keepkey = QCheckBox(self.formLayoutWidget)
self.checkBox_keepkey.setObjectName(u"checkBox_keepkey")
self.checkBox_keepkey.setText(u"Keep Key Points")
self.formLayout.setWidget(14, QFormLayout.FieldRole, self.checkBox_keepkey)
self.checkBox_guided = QCheckBox(self.formLayoutWidget)
self.checkBox_guided.setObjectName(u"checkBox_guided")
self.checkBox_guided.setText(u"Guided Matching")
self.formLayout.setWidget(15, QFormLayout.FieldRole, self.checkBox_guided)
self.checkBox_reset = QCheckBox(self.formLayoutWidget)
self.checkBox_reset.setObjectName(u"checkBox_reset")
self.checkBox_reset.setText(u"Reset Alignement")
self.formLayout.setWidget(16, QFormLayout.FieldRole, self.checkBox_reset)
self.verticalSpacer = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(17, QFormLayout.FieldRole, self.verticalSpacer)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.pushButton_save = QPushButton(self.formLayoutWidget)
self.pushButton_save.setObjectName(u"pushButton_save")
self.pushButton_save.setText(u"Save")
icon = QIcon()
icon.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_save.setIcon(icon)
self.pushButton_save.setIconSize(QSize(20, 20))
self.horizontalLayout_3.addWidget(self.pushButton_save)
self.pushButton_cancel = QPushButton(self.formLayoutWidget)
self.pushButton_cancel.setObjectName(u"pushButton_cancel")
self.pushButton_cancel.setText(u"Cancel")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_cancel.setIcon(icon1)
self.pushButton_cancel.setIconSize(QSize(20, 20))
self.horizontalLayout_3.addWidget(self.pushButton_cancel)
self.formLayout.setLayout(18, QFormLayout.FieldRole, self.horizontalLayout_3)
self.checkBox_filtsta = QCheckBox(self.formLayoutWidget)
self.checkBox_filtsta.setObjectName(u"checkBox_filtsta")
self.checkBox_filtsta.setText(u"Filter Stationary Points")
self.formLayout.setWidget(12, QFormLayout.FieldRole, self.checkBox_filtsta)
self.pushButton_cancel.clicked.connect(self.reject)
self.pushButton_save.clicked.connect(self.saveSettingsAlign)
self.currentChkDef = autoftg_batch.chunkSet
self.loadSettingsAlign()
self.exec_()
def loadSettingsAlign(self):
align_quality = autoftg_main.menuCfg.get(self.currentChkDef, "align_quality")
align_gen_presel = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_gen_presel")
align_ref_presel = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_ref_presel")
align_ref_presel_mode = autoftg_main.menuCfg.get(self.currentChkDef, "align_ref_presel_mode")
align_key_limit = autoftg_main.menuCfg.getint(self.currentChkDef, "align_key_limit")
align_tie_limit = autoftg_main.menuCfg.getint(self.currentChkDef, "align_tie_limit")
align_filter_mask = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_filter_mask")
align_mask_tiepoint = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_mask_tiepoint")
align_filter_stationary = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_filter_stationary")
align_keep_keypoints = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_keep_keypoints")
align_guided_matching = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_guided_matching")
align_reset_current = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_reset_current")
self.comboBox_quality.setCurrentText(align_quality)
self.checkBox_gen.setChecked(align_gen_presel)
self.checkBox_ref.setChecked(align_ref_presel)
self.comboBox_ref.setCurrentText(align_ref_presel_mode)
self.lineEdit_keypoints.setText(str(align_key_limit))
self.lineEdit_tiepoints.setText(str(align_tie_limit))
self.checkBox_filtmask.setChecked(align_filter_mask)
self.checkBox_masktie.setChecked(align_mask_tiepoint)
self.checkBox_filtsta.setChecked(align_filter_stationary)
self.checkBox_keepkey.setChecked(align_keep_keypoints)
self.checkBox_guided.setChecked(align_guided_matching)
self.checkBox_reset.setChecked(align_reset_current)
print("Align Photos settings loaded...")
def saveSettingsAlign(self):
align_quality = self.comboBox_quality.currentText()
align_gen_presel = self.checkBox_gen.isChecked()
align_ref_presel = self.checkBox_ref.isChecked()
align_ref_presel_mode = self.comboBox_ref.currentText()
align_key_limit = self.lineEdit_keypoints.text()
align_tie_limit = self.lineEdit_tiepoints.text()
align_filter_mask = self.checkBox_filtmask.isChecked()
align_mask_tiepoint = self.checkBox_masktie.isChecked()
align_filter_stationary = self.checkBox_filtsta.isChecked()
align_keep_keypoints = self.checkBox_keepkey.isChecked()
align_guided_matching = self.checkBox_guided.isChecked()
align_reset_current = self.checkBox_reset.isChecked()
autoftg_main.menuCfg.set(self.currentChkDef, "align_quality", str(align_quality))
autoftg_main.menuCfg.set(self.currentChkDef, "align_gen_presel", str(align_gen_presel))
autoftg_main.menuCfg.set(self.currentChkDef, "align_ref_presel", str(align_ref_presel))
autoftg_main.menuCfg.set(self.currentChkDef, "align_ref_presel_mode", str(align_ref_presel_mode))
autoftg_main.menuCfg.set(self.currentChkDef, "align_key_limit", str(align_key_limit))
autoftg_main.menuCfg.set(self.currentChkDef, "align_tie_limit", str(align_tie_limit))
autoftg_main.menuCfg.set(self.currentChkDef, "align_filter_mask", str(align_filter_mask))
autoftg_main.menuCfg.set(self.currentChkDef, "align_mask_tiepoint", str(align_mask_tiepoint))
autoftg_main.menuCfg.set(self.currentChkDef, "align_filter_stationary", str(align_filter_stationary))
autoftg_main.menuCfg.set(self.currentChkDef, "align_keep_keypoints", str(align_keep_keypoints))
autoftg_main.menuCfg.set(self.currentChkDef, "align_guided_matching", str(align_guided_matching))
autoftg_main.menuCfg.set(self.currentChkDef, "align_reset_current", str(align_reset_current))
with open(autoftg_main.menuCfgFilePath, 'w') as configfile:
autoftg_main.menuCfg.write(configfile)
print("Align Photos settings saved...")
self.accept()

View File

@ -0,0 +1,485 @@
import os
import shutil
import sys
import time
import subprocess
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
import AutoFTG.autoftg_batch as autoftg_batch
from AutoFTG.autoftg_batch import *
from AutoFTG.autoftg_settingsmain import *
class Ui_DialogSettingsMesh(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.currentChkDef = autoftg_batch.chunkSet
self.setObjectName(u"DialogSettingsMesh")
self.resize(350, 510)
self.setWindowTitle(u"Settings: Mesh & Textures")
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(icon)
self.formLayoutWidget = QWidget(self)
self.formLayoutWidget.setObjectName(u"formLayoutWidget")
self.formLayoutWidget.setGeometry(QRect(0, 0, 351, 511))
self.formLayout = QFormLayout(self.formLayoutWidget)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setContentsMargins(10, 5, 10, 10)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_11 = QLabel(self.formLayoutWidget)
self.label_11.setObjectName(u"label_11")
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_11.sizePolicy().hasHeightForWidth())
self.label_11.setSizePolicy(sizePolicy)
self.label_11.setMaximumSize(QSize(24, 24))
self.label_11.setFrameShape(QFrame.NoFrame)
self.label_11.setText(u"")
self.label_11.setPixmap(QPixmap(u":/icons/icons8-geodesic-dome-48.png"))
self.label_11.setScaledContents(True)
self.horizontalLayout_2.addWidget(self.label_11)
self.label = QLabel(self.formLayoutWidget)
self.label.setObjectName(u"label")
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setText(u"Depth Maps")
self.horizontalLayout_2.addWidget(self.label)
self.formLayout.setLayout(0, QFormLayout.SpanningRole, self.horizontalLayout_2)
self.label_8 = QLabel(self.formLayoutWidget)
self.label_8.setObjectName(u"label_8")
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_8)
self.comboBox_depthQuality = QComboBox(self.formLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-connection-status-on-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon1, u"Ultra High")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-signal-full-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon2, u"HIgh")
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-signal-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon3, u"Medium")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-low-connection-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon4, u"Low")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-no-connection-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon5, u"Lowest")
self.comboBox_depthQuality.setObjectName(u"comboBox_depthQuality")
self.comboBox_depthQuality.setMinimumSize(QSize(0, 26))
self.comboBox_depthQuality.setMaximumSize(QSize(16777215, 26))
self.comboBox_depthQuality.setCurrentText(u"Medium")
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.comboBox_depthQuality)
self.label_9 = QLabel(self.formLayoutWidget)
self.label_9.setObjectName(u"label_9")
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_9)
self.comboBox_depthFilter = QComboBox(self.formLayoutWidget)
self.comboBox_depthFilter.addItem(u"Mild")
self.comboBox_depthFilter.addItem(u"Moderate")
self.comboBox_depthFilter.addItem(u"Aggresive")
self.comboBox_depthFilter.setObjectName(u"comboBox_depthFilter")
self.comboBox_depthFilter.setMinimumSize(QSize(0, 26))
self.comboBox_depthFilter.setMaximumSize(QSize(16777215, 26))
self.comboBox_depthFilter.setCurrentText(u"Moderate")
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_depthFilter)
self.line_3 = QFrame(self.formLayoutWidget)
self.line_3.setObjectName(u"line_3")
self.line_3.setFrameShape(QFrame.HLine)
self.line_3.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.line_3)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.label_12 = QLabel(self.formLayoutWidget)
self.label_12.setObjectName(u"label_12")
sizePolicy.setHeightForWidth(self.label_12.sizePolicy().hasHeightForWidth())
self.label_12.setSizePolicy(sizePolicy)
self.label_12.setMaximumSize(QSize(24, 24))
self.label_12.setFrameShape(QFrame.NoFrame)
self.label_12.setText(u"")
self.label_12.setPixmap(QPixmap(u":/icons/icons8-mesh-48.png"))
self.label_12.setScaledContents(True)
self.horizontalLayout_4.addWidget(self.label_12)
self.label_10 = QLabel(self.formLayoutWidget)
self.label_10.setObjectName(u"label_10")
self.label_10.setFont(font)
self.label_10.setText(u"Mesh Options")
self.horizontalLayout_4.addWidget(self.label_10)
self.formLayout.setLayout(4, QFormLayout.SpanningRole, self.horizontalLayout_4)
self.label_2 = QLabel(self.formLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"Surface Type")
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_2)
self.cbMeshType = QComboBox(self.formLayoutWidget)
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-3d-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbMeshType.addItem(icon6, u"Arbitrary")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-national-park-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbMeshType.addItem(icon7, u"Height Field")
self.cbMeshType.setObjectName(u"cbMeshType")
self.cbMeshType.setMinimumSize(QSize(0, 26))
self.cbMeshType.setMaximumSize(QSize(16777215, 26))
#if QT_CONFIG(tooltip)
self.cbMeshType.setToolTip(u"Choose type of model reconstruction")
#endif // QT_CONFIG(tooltip)
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.cbMeshType)
self.label_3 = QLabel(self.formLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"Face Count")
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_3)
self.cbFaceCount = QComboBox(self.formLayoutWidget)
self.cbFaceCount.addItem(icon2, u"High")
self.cbFaceCount.addItem(icon3, u"Medium")
self.cbFaceCount.addItem(icon4, u"Low")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-rename-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbFaceCount.addItem(icon8, u"Custom")
self.cbFaceCount.setObjectName(u"cbFaceCount")
self.cbFaceCount.setMinimumSize(QSize(0, 26))
self.cbFaceCount.setMaximumSize(QSize(16777215, 26))
#if QT_CONFIG(tooltip)
self.cbFaceCount.setToolTip(u"Choose face count density")
#endif // QT_CONFIG(tooltip)
self.cbFaceCount.setCurrentText(u"Medium")
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.cbFaceCount)
self.lineEditFaceCount = QLineEdit(self.formLayoutWidget)
self.lineEditFaceCount.setObjectName(u"lineEditFaceCount")
self.lineEditFaceCount.setEnabled(False)
self.lineEditFaceCount.setPlaceholderText(u"Custom face count")
self.formLayout.setWidget(7, QFormLayout.FieldRole, self.lineEditFaceCount)
self.checkBox_inter = QCheckBox(self.formLayoutWidget)
self.checkBox_inter.setObjectName(u"checkBox_inter")
#if QT_CONFIG(tooltip)
self.checkBox_inter.setToolTip(u"Enable interpolation")
#endif // QT_CONFIG(tooltip)
self.checkBox_inter.setText(u"Interpolation")
self.formLayout.setWidget(8, QFormLayout.FieldRole, self.checkBox_inter)
self.checkBox_vcol = QCheckBox(self.formLayoutWidget)
self.checkBox_vcol.setObjectName(u"checkBox_vcol")
#if QT_CONFIG(tooltip)
self.checkBox_vcol.setToolTip(u"Calculate vertex colors")
#endif // QT_CONFIG(tooltip)
self.checkBox_vcol.setText(u"Vertex Colors")
self.checkBox_vcol.setChecked(True)
self.formLayout.setWidget(9, QFormLayout.FieldRole, self.checkBox_vcol)
self.checkBox_vcon = QCheckBox(self.formLayoutWidget)
self.checkBox_vcon.setObjectName(u"checkBox_vcon")
#if QT_CONFIG(tooltip)
self.checkBox_vcon.setToolTip(u"Calculate vertex confidence")
#endif // QT_CONFIG(tooltip)
self.checkBox_vcon.setText(u"Vertex Confidence")
self.formLayout.setWidget(10, QFormLayout.FieldRole, self.checkBox_vcon)
self.line = QFrame(self.formLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(11, QFormLayout.SpanningRole, self.line)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.label_13 = QLabel(self.formLayoutWidget)
self.label_13.setObjectName(u"label_13")
sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
self.label_13.setSizePolicy(sizePolicy)
self.label_13.setMaximumSize(QSize(24, 24))
self.label_13.setFrameShape(QFrame.NoFrame)
self.label_13.setText(u"")
self.label_13.setPixmap(QPixmap(u":/icons/icons8-video-wall-50.png"))
self.label_13.setScaledContents(True)
self.horizontalLayout_5.addWidget(self.label_13)
self.label_5 = QLabel(self.formLayoutWidget)
self.label_5.setObjectName(u"label_5")
self.label_5.setFont(font)
self.label_5.setText(u"Textures Options")
self.horizontalLayout_5.addWidget(self.label_5)
self.formLayout.setLayout(12, QFormLayout.SpanningRole, self.horizontalLayout_5)
self.groupBox_buildTex = QGroupBox(self.formLayoutWidget)
self.groupBox_buildTex.setObjectName(u"groupBox_buildTex")
self.groupBox_buildTex.setMinimumSize(QSize(0, 90))
self.groupBox_buildTex.setTitle(u"Build Textures")
self.groupBox_buildTex.setCheckable(True)
self.gridLayoutWidget = QWidget(self.groupBox_buildTex)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(10, 30, 311, 52))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"Size")
self.gridLayout.addWidget(self.label_4, 0, 2, 1, 1)
self.checkBox_texFillHoles = QCheckBox(self.gridLayoutWidget)
self.checkBox_texFillHoles.setObjectName(u"checkBox_texFillHoles")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.checkBox_texFillHoles.sizePolicy().hasHeightForWidth())
self.checkBox_texFillHoles.setSizePolicy(sizePolicy1)
self.checkBox_texFillHoles.setText(u"Fill Holes")
self.checkBox_texFillHoles.setChecked(True)
self.gridLayout.addWidget(self.checkBox_texFillHoles, 0, 0, 1, 1)
self.lineEdit_texSize = QLineEdit(self.gridLayoutWidget)
self.lineEdit_texSize.setObjectName(u"lineEdit_texSize")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.lineEdit_texSize.sizePolicy().hasHeightForWidth())
self.lineEdit_texSize.setSizePolicy(sizePolicy2)
self.lineEdit_texSize.setMaximumSize(QSize(60, 16777215))
self.lineEdit_texSize.setText(u"4096")
self.gridLayout.addWidget(self.lineEdit_texSize, 1, 2, 1, 1)
self.label_6 = QLabel(self.gridLayoutWidget)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"Levels")
self.gridLayout.addWidget(self.label_6, 0, 4, 1, 1)
self.checkBox_texGhostFilt = QCheckBox(self.gridLayoutWidget)
self.checkBox_texGhostFilt.setObjectName(u"checkBox_texGhostFilt")
sizePolicy1.setHeightForWidth(self.checkBox_texGhostFilt.sizePolicy().hasHeightForWidth())
self.checkBox_texGhostFilt.setSizePolicy(sizePolicy1)
self.checkBox_texGhostFilt.setText(u"Ghosting Filter")
self.checkBox_texGhostFilt.setChecked(True)
self.gridLayout.addWidget(self.checkBox_texGhostFilt, 1, 0, 1, 1)
self.lineEdit_texLevels = QLineEdit(self.gridLayoutWidget)
self.lineEdit_texLevels.setObjectName(u"lineEdit_texLevels")
sizePolicy2.setHeightForWidth(self.lineEdit_texLevels.sizePolicy().hasHeightForWidth())
self.lineEdit_texLevels.setSizePolicy(sizePolicy2)
self.lineEdit_texLevels.setMaximumSize(QSize(50, 16777215))
self.lineEdit_texLevels.setText(u"1")
self.lineEdit_texLevels.setMaxLength(2)
self.gridLayout.addWidget(self.lineEdit_texLevels, 1, 4, 1, 1)
self.label_7 = QLabel(self.gridLayoutWidget)
self.label_7.setObjectName(u"label_7")
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth())
self.label_7.setSizePolicy(sizePolicy3)
self.label_7.setText(u"x")
self.gridLayout.addWidget(self.label_7, 1, 3, 1, 1)
self.horizontalSpacer = QSpacerItem(20, 5, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.gridLayout.addItem(self.horizontalSpacer, 1, 1, 1, 1)
self.formLayout.setWidget(13, QFormLayout.SpanningRole, self.groupBox_buildTex)
self.line_2 = QFrame(self.formLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(15, QFormLayout.SpanningRole, self.line_2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton_Save = QPushButton(self.formLayoutWidget)
self.pushButton_Save.setObjectName(u"pushButton_Save")
self.pushButton_Save.setText(u"Save")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-save-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_Save.setIcon(icon9)
self.pushButton_Save.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_Save)
self.pushButton_Cancel = QPushButton(self.formLayoutWidget)
self.pushButton_Cancel.setObjectName(u"pushButton_Cancel")
self.pushButton_Cancel.setText(u"Cancel")
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_Cancel.setIcon(icon10)
self.pushButton_Cancel.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_Cancel)
self.formLayout.setLayout(16, QFormLayout.FieldRole, self.horizontalLayout)
self.verticalSpacer = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(14, QFormLayout.FieldRole, self.verticalSpacer)
QWidget.setTabOrder(self.comboBox_depthQuality, self.comboBox_depthFilter)
QWidget.setTabOrder(self.comboBox_depthFilter, self.cbMeshType)
QWidget.setTabOrder(self.cbMeshType, self.cbFaceCount)
QWidget.setTabOrder(self.cbFaceCount, self.lineEditFaceCount)
QWidget.setTabOrder(self.lineEditFaceCount, self.checkBox_inter)
QWidget.setTabOrder(self.checkBox_inter, self.checkBox_vcol)
QWidget.setTabOrder(self.checkBox_vcol, self.checkBox_vcon)
QWidget.setTabOrder(self.checkBox_vcon, self.groupBox_buildTex)
QWidget.setTabOrder(self.groupBox_buildTex, self.checkBox_texFillHoles)
QWidget.setTabOrder(self.checkBox_texFillHoles, self.checkBox_texGhostFilt)
QWidget.setTabOrder(self.checkBox_texGhostFilt, self.lineEdit_texSize)
QWidget.setTabOrder(self.lineEdit_texSize, self.lineEdit_texLevels)
QWidget.setTabOrder(self.lineEdit_texLevels, self.pushButton_Save)
QWidget.setTabOrder(self.pushButton_Save, self.pushButton_Cancel)
self.pushButton_Cancel.clicked.connect(self.reject)
self.pushButton_Save.clicked.connect(self.saveSettingsMesh)
self.cbFaceCount.currentTextChanged.connect(self.customFaceCount)
self.cbFaceCount.setCurrentIndex(1)
self.comboBox_depthQuality.setCurrentIndex(2)
self.comboBox_depthFilter.setCurrentIndex(1)
self.cbFaceCount.setCurrentIndex(1)
self.pushButton_Save.setDefault(True)
QMetaObject.connectSlotsByName(self)
self.loadSettingsMesh()
self.exec_()
def customFaceCount(self):
if self.cbFaceCount.currentText() == "Custom":
self.lineEditFaceCount.setEnabled(True)
else:
self.lineEditFaceCount.setEnabled(False)
def loadSettingsMesh(self):
depth_quality = autoftg_main.menuCfg.get(self.currentChkDef, "mesh_depthmaps")
depth_filter = autoftg_main.menuCfg.get(self.currentChkDef, "mesh_depthfilter")
mesh_type = autoftg_main.menuCfg.get(self.currentChkDef, "mesh_type")
mesh_face_count = autoftg_main.menuCfg.get(self.currentChkDef, "mesh_face_count")
mesh_face_count_custom = autoftg_main.menuCfg.get(self.currentChkDef, "mesh_face_count_custom")
mesh_interpolation = autoftg_main.menuCfg.getboolean(self.currentChkDef, "mesh_interpolation")
mesh_vertex_color = autoftg_main.menuCfg.getboolean(self.currentChkDef, "mesh_vertex_color")
mesh_vertex_confidence = autoftg_main.menuCfg.getboolean(self.currentChkDef, "mesh_vertex_confidence")
texture_build = autoftg_main.menuCfg.getboolean(self.currentChkDef, "texture_build")
texture_size = autoftg_main.menuCfg.get(self.currentChkDef, "texture_size")
texture_levels = autoftg_main.menuCfg.get(self.currentChkDef, "texture_levels")
texture_fill = autoftg_main.menuCfg.getboolean(self.currentChkDef, "texture_fill")
texture_ghosting = autoftg_main.menuCfg.getboolean(self.currentChkDef, "texture_ghosting")
self.comboBox_depthQuality.setCurrentText(depth_quality)
self.comboBox_depthFilter.setCurrentText(depth_filter)
self.cbMeshType.setCurrentText(mesh_type)
self.cbFaceCount.setCurrentText(mesh_face_count)
self.lineEditFaceCount.setText(mesh_face_count_custom)
self.checkBox_inter.setChecked(mesh_interpolation)
self.checkBox_vcol.setChecked(mesh_vertex_color)
self.checkBox_vcon.setChecked(mesh_vertex_confidence)
self.groupBox_buildTex.setChecked(texture_build)
self.checkBox_texFillHoles.setChecked(texture_fill)
self.checkBox_texGhostFilt.setChecked(texture_ghosting)
self.lineEdit_texSize.setText(texture_size)
self.lineEdit_texLevels.setText(texture_levels)
print("Mesh and textures settings loaded...")
def saveSettingsMesh(self):
depth_quality = self.comboBox_depthQuality.currentText()
depth_filter = self.comboBox_depthFilter.currentText()
mesh_type = self.cbMeshType.currentText()
mesh_face_count = self.cbFaceCount.currentText()
mesh_face_count_custom = self.lineEditFaceCount.text()
mesh_interpolation = self.checkBox_inter.isChecked()
mesh_vertex_color = self.checkBox_vcol.isChecked()
mesh_vertex_confidence = self.checkBox_vcon.isChecked()
texture_build = self.groupBox_buildTex.isChecked()
texture_size = self.lineEdit_texSize.text()
texture_levels = self.lineEdit_texLevels.text()
texture_fill = self.checkBox_texFillHoles.isChecked()
texture_ghosting = self.checkBox_texGhostFilt.isChecked()
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_depthmaps", depth_quality)
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_depthfilter", depth_filter)
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_type", mesh_type)
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_face_count", mesh_face_count)
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_face_count_custom", mesh_face_count_custom)
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_interpolation", str(mesh_interpolation))
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_vertex_color", str(mesh_vertex_color))
autoftg_main.menuCfg.set(self.currentChkDef, "mesh_vertex_confidence", str(mesh_vertex_confidence))
autoftg_main.menuCfg.set(self.currentChkDef, "texture_build", str(texture_build))
autoftg_main.menuCfg.set(self.currentChkDef, "texture_size", texture_size)
autoftg_main.menuCfg.set(self.currentChkDef, "texture_levels", texture_levels)
autoftg_main.menuCfg.set(self.currentChkDef, "texture_fill", str(texture_fill))
autoftg_main.menuCfg.set(self.currentChkDef, "texture_ghosting", str(texture_ghosting))
with open(autoftg_main.menuCfgFilePath, 'w') as configfile:
autoftg_main.menuCfg.write(configfile)
print("Mesh and textures settings saved...")
self.accept()

View File

@ -0,0 +1,202 @@
# AutoFTG - Scripts for Agisoft Metashape Pro
#
# Dialog: Batch Chunk Creator - Point Cloud Settings
# ----------------------------------------------------------------
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_batch as autoftg_batch
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.autoftg_batch import *
from AutoFTG.qtresources_rc2 import *
class Ui_DialogPCloudSet(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogPointCloud")
self.resize(320, 240)
self.setWindowTitle(u"Point Cloud Settings")
icon = QIcon()
icon.addFile(u":/icons/icons8-live-photos-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.gridLayoutWidget = QWidget(self)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(0, 0, 321, 243))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setHorizontalSpacing(10)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.checkBox_2 = QCheckBox(self.gridLayoutWidget)
self.checkBox_2.setObjectName(u"checkBox_2")
self.checkBox_2.setLayoutDirection(Qt.RightToLeft)
self.checkBox_2.setText(u"Calculate Confidence")
self.gridLayout.addWidget(self.checkBox_2, 3, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 1, 0, 1, 2)
self.label_3 = QLabel(self.gridLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"Regular")
self.gridLayout.addWidget(self.label_3, 4, 1, 1, 1)
self.lineEdit = QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setPlaceholderText(u"0.05")
self.lineEdit.setClearButtonEnabled(True)
self.gridLayout.addWidget(self.lineEdit, 5, 1, 1, 1)
self.checkBox_3 = QCheckBox(self.gridLayoutWidget)
self.checkBox_3.setObjectName(u"checkBox_3")
self.checkBox_3.setLayoutDirection(Qt.RightToLeft)
self.checkBox_3.setText(u"Point Sampling")
self.gridLayout.addWidget(self.checkBox_3, 4, 0, 1, 1)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
self.label.setText(u"Enabled")
self.gridLayout.addWidget(self.label, 2, 1, 1, 1)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"Point spacing (m)")
self.label_4.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"Disabled")
self.gridLayout.addWidget(self.label_2, 3, 1, 1, 1)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.gridLayout.addItem(self.verticalSpacer, 6, 1, 1, 1)
self.checkBox = QCheckBox(self.gridLayoutWidget)
self.checkBox.setObjectName(u"checkBox")
self.checkBox.setLayoutDirection(Qt.RightToLeft)
self.checkBox.setText(u"Calculate Colors")
self.checkBox.setChecked(True)
self.gridLayout.addWidget(self.checkBox, 2, 0, 1, 1)
self.label_5 = QLabel(self.gridLayoutWidget)
self.label_5.setObjectName(u"label_5")
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(14)
self.label_5.setFont(font)
self.label_5.setText(u"Point Cloud Settings")
self.gridLayout.addWidget(self.label_5, 0, 0, 1, 2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setText(u"Cancel")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon1)
self.pushButton.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy)
self.pushButton_2.setText(u"Save")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon2)
self.pushButton_2.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_2)
self.gridLayout.addLayout(self.horizontalLayout, 7, 0, 1, 2)
self.label_4.setBuddy(self.lineEdit)
QWidget.setTabOrder(self.checkBox, self.checkBox_2)
QWidget.setTabOrder(self.checkBox_2, self.checkBox_3)
QWidget.setTabOrder(self.checkBox_3, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.pushButton_2)
QWidget.setTabOrder(self.pushButton_2, self.pushButton)
self.pushButton_2.clicked.connect(self.saveSetPCloud)
self.pushButton.clicked.connect(self.reject)
self.checkBox_3.toggled.connect(self.actionSetPointSampling.setVisible)
self.setWindowTitle(u"Dialog")
self.currentChkDef = autoftg_batch.chunkSet
self.loadSetPCloud()
self.exec_()
def loadSetPCloud(self):
self.pointcloud_source_data = autoftg_main.menuCfg.get(self.currentChkDef, "pointcloud_source_data")
if self.pointcloud_source_data == "DepthMaps":
self.source_data = Metashape.DataSource.DepthMapsData
elif self.pointcloud_source_data == "Mesh":
self.source_data = Metashape.DataSource.ModelData
else:
self.source_data = Metashape.DataSource.DepthMapsData
pointcloud_point_colors = autoftg_main.menuCfg.getboolean(self.currentChkDef, "pointcloud_point_colors")
self.checkBox.setChecked(pointcloud_point_colors)
pointcloud_point_confidence = autoftg_main.menuCfg.getboolean(self.currentChkDef, "pointcloud_point_confidence")
self.checkBox_2.setChecked(pointcloud_point_confidence)
pointcloud_uniform_sam = autoftg_main.menuCfg.getboolean(self.currentChkDef, "pointcloud_uniform_sampling")
self.checkBox_3.setChecked(pointcloud_uniform_sam)
pointcloud_points_spacing = autoftg_main.menuCfg.get(self.currentChkDef, "pointcloud_points_spacing")
self.lineEdit.setText(str(pointcloud_points_spacing))
print("Point Cloud settings loaded...")
def saveSetPCloud(self):
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_source_data", str(self.pointcloud_source_data))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_point_colors", str(self.checkBox.isChecked))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_point_confidence", str(self.checkBox_2.isChecked))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_uniform_sampling", str(self.checkBox_3.isChecked))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_points_spacing", str(self.lineEdit.text))
with open(autoftg_main.menuCfgFilePath, 'w') as configfile:
autoftg_main.menuCfg.write(configfile)
print("Point Cloud settings saved...")
self.accept()

View File

@ -0,0 +1,176 @@
# Class for settings editing UI
import os
import pydoc
import shutil
import sys
import time
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
class Ui_DialogAddChunkQuick(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogAddChunkQuick")
self.resize(310, 155)
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
self.setSizePolicy(sizePolicy)
self.setMinimumSize(QSize(310, 155))
self.setMaximumSize(QSize(310, 155))
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(9)
self.setFont(font)
self.setWindowTitle(u"Create New Chunk")
self.verticalLayoutWidget = QWidget(self)
self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
self.verticalLayoutWidget.setGeometry(QRect(9, 9, 295, 141))
self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setSpacing(5)
self.verticalLayout.setContentsMargins(10, 10, 10, 10)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.labelQuickAdd = QLabel(self.verticalLayoutWidget)
self.labelQuickAdd.setObjectName(u"labelQuickAdd")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.labelQuickAdd.sizePolicy().hasHeightForWidth())
self.labelQuickAdd.setSizePolicy(sizePolicy)
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
font1.setBold(True)
font1.setWeight(75)
self.labelQuickAdd.setFont(font1)
self.labelQuickAdd.setText(u"Create New Chunk")
self.verticalLayout.addWidget(self.labelQuickAdd)
self.line_2 = QFrame(self.verticalLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.verticalLayout.addWidget(self.line_2)
self.label = QLabel(self.verticalLayoutWidget)
self.label.setObjectName(u"label")
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
self.label.setText(u"Select chunk creation settings:")
self.label.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
self.verticalLayout.addWidget(self.label)
self.cbChunkSettings = QComboBox(self.verticalLayoutWidget)
for section in autoftg_main.chunk_sections:
menu_icon = autoftg_main.menuCfg.get(section, "menu_icon")
menu_icon_path = u":/icons/" + autoftg_main.icoCfg.get("ICONS", menu_icon)
seticon = QIcon()
seticon.addFile(menu_icon_path, QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(seticon, section)
self.cbChunkSettings.setObjectName(u"cbChunkSettings")
sizePolicy.setHeightForWidth(self.cbChunkSettings.sizePolicy().hasHeightForWidth())
self.cbChunkSettings.setSizePolicy(sizePolicy)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(11)
self.cbChunkSettings.setFont(font2)
self.cbChunkSettings.setCursor(QCursor(Qt.PointingHandCursor))
self.cbChunkSettings.setCurrentText(u"GENERAL")
self.cbChunkSettings.setIconSize(QSize(20, 20))
self.verticalLayout.addWidget(self.cbChunkSettings)
self.line = QFrame(self.verticalLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.verticalLayout.addWidget(self.line)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.btnCreate = QPushButton(self.verticalLayoutWidget)
self.btnCreate.setObjectName(u"btnCreate")
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.btnCreate.sizePolicy().hasHeightForWidth())
self.btnCreate.setSizePolicy(sizePolicy3)
self.btnCreate.setText(u"Create")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-add-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.btnCreate.setIcon(icon4)
self.btnCreate.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.btnCreate)
self.checkBoxAutoProc = QCheckBox(self.verticalLayoutWidget)
self.checkBoxAutoProc.setObjectName(u"checkBoxAutoProc")
self.checkBoxAutoProc.setText(u"Auto Processing")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-in-progress-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.checkBoxAutoProc.setIcon(icon5)
self.checkBoxAutoProc.setChecked(True)
self.horizontalLayout.addWidget(self.checkBoxAutoProc)
self.btnCancel = QPushButton(self.verticalLayoutWidget)
self.btnCancel.setObjectName(u"btnCancel")
sizePolicy3.setHeightForWidth(self.btnCancel.sizePolicy().hasHeightForWidth())
self.btnCancel.setSizePolicy(sizePolicy3)
self.btnCancel.setText(u"Close")
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-enter-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.btnCancel.setIcon(icon6)
self.btnCancel.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.btnCancel)
self.verticalLayout.addLayout(self.horizontalLayout)
QtCore.QObject.connect(self.btnCreate, QtCore.SIGNAL("clicked()"), self.startProcess)
QtCore.QObject.connect(self.btnCancel, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))
self.exec()
def startProcess(self):
# global selected_pre
# global selected_suf
autoftg_main.selected_menu = self.cbChunkSettings.currentText()
autoftg_main.selected_pre = autoftg_main.menuCfg.get(autoftg_main.selected_menu, "chunk_name_prefix")
autoftg_main.selected_suf = autoftg_main.menuCfg.get(autoftg_main.selected_menu, "chunk_name_suffix")
selected_workfolder = autoftg_main.menuCfg.get(autoftg_main.selected_menu, "work_folder")
if self.checkBoxAutoProc.isChecked == False:
self.accept()
autoftg_main.newchunk_manual(autoftg_main.selected_pre, autoftg_main.selected_suf, selected_workfolder)
else:
self.accept()
autoftg_main.newchunk_auto(autoftg_main.selected_pre, autoftg_main.selected_suf, selected_workfolder)

View File

@ -0,0 +1,118 @@
# Class for Copy Region UI
import os
import pydoc
import shutil
import sys
import time
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
from AutoFTG.autoftg_batch import *
from AutoFTG.autoftg_settingschunk import *
from AutoFTG.autoftg_settingsmain import *
from AutoFTG.qtresources_rc2 import *
class CopyBoundingBoxDlg(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setWindowTitle("Copy Region (Bounding Box)")
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
self.labelFrom = QtWidgets.QLabel("From")
self.labelTo = QtWidgets.QLabel("To")
self.fromChunk = QtWidgets.QComboBox()
for chunk in Metashape.app.document.chunks:
self.fromChunk.addItem(chunk.label)
self.toChunks = QtWidgets.QListWidget()
self.toChunks.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
for chunk in Metashape.app.document.chunks:
self.toChunks.addItem(chunk.label)
self.btnOk = QtWidgets.QPushButton("Copy")
self.btnOk.setFixedSize(120, 36)
self.btnOk.setToolTip("Copy region from one chunk to multiple chunks.:")
self.btnQuit = QtWidgets.QPushButton("Cancel")
self.btnQuit.setFixedSize(80, 36)
layout = QtWidgets.QGridLayout() # creating layout
layout.setColumnMinimumWidth(0, 80) # minimum column width
layout.setColumnMinimumWidth(1, 180) # minimum column width
layout.addWidget(self.labelFrom, 0, 0)
layout.addWidget(self.fromChunk, 0, 1)
layout.addWidget(self.labelTo, 1, 0)
layout.addWidget(self.toChunks, 1, 1, 20, 2)
layout.addWidget(self.btnQuit, 30, 0)
layout.addWidget(self.btnOk, 30, 1)
self.setLayout(layout)
QtCore.QObject.connect(self.btnOk, QtCore.SIGNAL("clicked()"), self.copyBoundingBox)
QtCore.QObject.connect(self.btnQuit, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))
self.exec()
def copyBoundingBox(self):
print("Copy region bounding box...")
doc = Metashape.app.document
fromChunk = doc.chunks[self.fromChunk.currentIndex()]
toChunks = []
for i in range(self.toChunks.count()):
if self.toChunks.item(i).isSelected():
toChunks.append(doc.chunks[i])
print("Copy region from/to: '" + fromChunk.label + "' to " + str(len(toChunks)))
T0 = fromChunk.transform.matrix
region = fromChunk.region
R0 = region.rot
C0 = region.center
s0 = region.size
for chunk in toChunks:
if chunk == fromChunk:
continue
T = chunk.transform.matrix.inv() * T0
R = Metashape.Matrix([[T[0, 0], T[0, 1], T[0, 2]],
[T[1, 0], T[1, 1], T[1, 2]],
[T[2, 0], T[2, 1], T[2, 2]]])
scale = R.row(0).norm()
R = R * (1 / scale)
new_region = Metashape.Region()
new_region.rot = R * R0
c = T.mulp(C0)
new_region.center = c
new_region.size = s0 * scale / 1.
chunk.region = new_region
print("Process complete!\n\nFrom: " + fromChunk.label + " / To: " + str(len(toChunks)) + "\n")
self.reject()

825
AutoFTG/autoftg_main.py Normal file
View File

@ -0,0 +1,825 @@
# AutoFTG - Scripts for Agisoft Metashape Pro
#
# This is an assembly of python scripts for process automation, and some existing scripts from other users
#
# Scripts were written for use in work process on project 2TDK, construction of railroad tunnels in Slovenia,
# but were later modified to support any kind of project where lots of processing is needed.
#
# Author: Boris Bilc
#
# Script repository (GitHub):
# ---------------------------
# URL: https://github.com/bilkos/AutoFTG-Scripts_Metashape-Pro
#
#
# References:
# -----------
#
# Copy Bounding Box Script:
# - https://github.com/agisoft-llc/metashape-scripts/blob/master/src/copy_bounding_box_dialog.py
# Copies bounding boxes from chunk to other chunks.
#
#
# If you add or change resorces (icons, images, etc... in qtresorces.qrc), then you need to re-compile qtresorces.qrc file.
# To do that you need to navigate to script folder and run following command:
#
# pyside2-rcc -o resource.py qtresources.qrc
#
# If you are using VSCode that you can modify and compile UI elements with PySide2-VSC extension.
#
# Scripts are free to use for commercial or non-commercial use.
#
# Please use 'Issues' page in GitHub repository to report any bugs, and suggestions for improvements.
# Link to issues page: https://github.com/bilkos/AutoFTG-Scripts_Metashape-Pro/issues
import os
import pydoc
import shutil
import sys
import time
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_batch
import AutoFTG.autoftg_chunkquickadd
import AutoFTG.autoftg_copyregion
import AutoFTG.autoftg_settingscamedit
import AutoFTG.autoftg_settingschunk
import AutoFTG.autoftg_settingsmain
import AutoFTG.qtresources_rc2
from AutoFTG.autoftg_batch import *
from AutoFTG.autoftg_chunkquickadd import *
from AutoFTG.autoftg_copyregion import *
from AutoFTG.autoftg_settingscamedit import *
from AutoFTG.autoftg_settingschunk import *
from AutoFTG.autoftg_settingsmain import *
from AutoFTG.qtresources_rc2 import *
# App info
app_name = "AutoFTG"
app_ver = "2.6.4"
appsettings_ver = "6"
app_author = "Author: Boris Bilc\n\n"
app_repo = "Repository URL:\nhttps://github.com/bilkos/AutoFTG-Scripts_Metashape-Pro"
ref_repo = "Agisoft GitHub repository:\nhttps://github.com/agisoft-llc/metashape-scripts"
ref_scripts = "Copy Bounding Box Script:\nhttps://github.com/agisoft-llc/metashape-scripts/blob/master/src/copy_bounding_box_dialog.py"
app_about = "Scripts for process automation in Agisoft Metashape Pro\n\nThis is an assembly of existing scripts from other users,\nand some additional scripts written for use in work process at project 2TIR, tunnel T8-KP in Slovenia."
# Check compatibility with Metashape
compatible_major_version = "2.0"
found_major_version = ".".join(Metashape.app.version.split('.')[:2])
if found_major_version != compatible_major_version:
raise Exception("Incompatible Metashape version: {} != {}".format(found_major_version, compatible_major_version))
projectOpened = False
settingsRebuild = False
selected_data_folder = ''
selected_camera = "No Calibration - Frame (Default)"
selected_pre = ''
selected_suf = ''
selected_menu = ''
# Load icons settings
icoCfg = ConfigParser()
icoCfgFile = 'settings_icons.ini'
icoCfgPath = os.path.expanduser('~\AppData\Local\Agisoft\Metashape Pro\scripts\AutoFTG\\').replace("\\", "/")
icoCfgFilePath = icoCfgPath + icoCfgFile
icons_list = []
def loadIcoSettings():
global icons_list
icoCfgFileExists = os.path.isfile(icoCfgFilePath) # Check if settings file exists
if icoCfgFileExists == False:
icoCfg.add_section("ICONS")
icoCfg.set("ICONS", "ico-0", "icons8-xbox-cross-96.png")
icoCfg.set("ICONS", "ico-1", "icons8-product-documents-50.png")
icoCfg.set("ICONS", "ico-2", "icons8-documents-folder-50-2.png")
icoCfg.set("ICONS", "ico-3", "icons8-documents-folder-50.png")
icoCfg.set("ICONS", "ico-4", "icons8-dossier-50.png")
icoCfg.set("ICONS", "ico-5", "icons8-pictures-folder-50-2.png")
icoCfg.set("ICONS", "ico-6", "icons8-folded-booklet-50.png")
icoCfg.set("ICONS", "ico-7", "icons8-images-folder-50.png")
icoCfg.set("ICONS", "ico-8", "icons8-full-image-50.png")
icoCfg.set("ICONS", "ico-9", "icons8-video-folder-50.png")
icoCfg.set("ICONS", "ico-10", "icons8-ftp-50.png")
icoCfg.set("ICONS", "ico-11", "icons8-web-camera-50.png")
icoCfg.set("ICONS", "ico-12", "icons8-camera-on-tripod-96.png")
icoCfg.set("ICONS", "ico-13", "icons8-sd-50.png")
icoCfg.set("ICONS", "ico-14", "icons8-quadcopter-50.png")
icoCfg.set("ICONS", "ico-15", "icons8-plane-48.png")
icoCfg.set("ICONS", "ico-16", "icons8-national-park-48.png")
icoCfg.set("ICONS", "ico-17", "icons8-ground-48.png")
icoCfg.set("ICONS", "ico-18", "icons8-country-48.png")
icoCfg.set("ICONS", "ico-19", "icons8-subway-50.png")
icoCfg.set("ICONS", "ico-20", "icons8-underground-50.png")
icoCfg.set("ICONS", "ico-21", "icons8-land-surveying-48.png")
icoCfg.set("ICONS", "ico-22", "icons8-drawing-compass-48.png")
icoCfg.set("ICONS", "ico-23", "icons8-camera-50.png")
icoCfg.set("ICONS", "ico-24", "menu_kalota-modra.png")
icoCfg.set("ICONS", "ico-25", "menu_kalota-oranzna.png")
icoCfg.set("ICONS", "ico-26", "template_kalota-modra.png")
icoCfg.set("ICONS", "ico-27", "template_kalota-oranzna.png")
icoCfg.set("ICONS", "ico-28", "template_kalota-rdeca.png")
icoCfg.set("ICONS", "ico-29", "template_kalota-vijola.png")
icoCfg.set("ICONS", "ico-30", "template_kalota-zelena.png")
icoCfg.set("ICONS", "ico-31", "template_stopnica-modra.png")
icoCfg.set("ICONS", "ico-32", "template_stopnica-oranzna.png")
icoCfg.set("ICONS", "ico-33", "template_stopnica-rdeca.png")
icoCfg.set("ICONS", "ico-34", "template_stopnica-vijola.png")
icoCfg.set("ICONS", "ico-35", "template_stopnica-zelena.png")
with open(icoCfgFilePath, 'w') as icoconfig:
camCfg.write(icoconfig)
icoCfgFileExists = True
icoCfg.read(icoCfgFilePath)
icons_list = icoCfg.options("ICONS")
print("Loading chunk definition icons... OK.")
# Load main app settings
appCfg = ConfigParser()
appCfgFile = 'settings_autoftg.ini'
appCfgPath = os.path.expanduser('~\AppData\Local\Agisoft\Metashape Pro\scripts\AutoFTG\\').replace("\\", "/")
appCfgFilePath = appCfgPath + appCfgFile
appCfgFileExists = os.path.isfile(appCfgFilePath) # Check if settings file exists
# Load custom menu settings
menuCfg = ConfigParser()
menuCfgFile = "settings_newchunk.ini"
menuCfgPath = os.path.expanduser('~\AppData\Local\Agisoft\Metashape Pro\scripts\AutoFTG').replace("\\", "/")
menuCfgFilePath = menuCfgPath + "/" + menuCfgFile
menuCfgFilePathExists = os.path.isfile(menuCfgFilePath)
chunk_sections = []
# Init configparser for camera settings. Set empty camera variables for global use.
camCfg = ConfigParser()
cam_name = ''
cam_desc = ''
cam_type = ''
cam_subtype = ''
cam_res = ''
cam_file = ''
cameraXmlSource = ''
cameraXmlDest = ''
camCfgFile = "settings_cam.ini"
camCfgPath = os.path.expanduser('~\AppData\Local\Agisoft\Metashape Pro\scripts\AutoFTG\cameras\\').replace("\\", "/")
camCfgFilePath = camCfgPath + camCfgFile
camCfgFilePathExists = os.path.isfile(camCfgFilePath)
cam_list = []
projCfg = ConfigParser() # INICALIZACIJA NASTAVITEV
def camCfgLoad():
global cam_list
if camCfgFilePathExists == False:
defcam_name = 'No Calibration - Frame (Default)'
defcam_description = 'Default Metashape camera settings for type FRAME. Calibration is calculated On-The-Fly.'
defcam_type = 'Frame'
defcam_subtype = 'Standard'
defcam_resolution = '0'
defcam_file = 'None'
defcam2_name = 'No Calibration - Fisheye'
defcam2_description = 'Default Metashape camera settings for type FISHEYE. Calibration is calculated On-The-Fly.'
defcam2_type = 'Fisheye'
defcam2_subtype = 'Standard'
defcam2_resolution = '0'
defcam2_file = 'None'
camCfg.add_section(defcam_name)
camCfg.set(defcam_name, "description", defcam_description)
camCfg.set(defcam_name, "type", defcam_type)
camCfg.set(defcam_name, "subtype", defcam_subtype)
camCfg.set(defcam_name, "resolution", defcam_resolution)
camCfg.set(defcam_name, "file", defcam_file)
camCfg.add_section(defcam2_name)
camCfg.set(defcam2_name, "description", defcam2_description)
camCfg.set(defcam2_name, "type", defcam2_type)
camCfg.set(defcam2_name, "subtype", defcam2_subtype)
camCfg.set(defcam2_name, "resolution", defcam2_resolution)
camCfg.set(defcam2_name, "file", defcam2_file)
with open(camCfgFilePath, 'w') as camconfigfile:
camCfg.write(camconfigfile)
camCfg.read(camCfgFilePath)
cam_list = camCfg.sections()
print("Camera settings loaded...")
# Read camera settings from INI config file
def readCameraSettings(cam_section):
global cam_name
global cam_desc
global cam_type
global cam_subtype
global cam_res
global cam_file
# Read settings for requested camera
cam_name = cam_section
cam_desc = camCfg.get(cam_section, "Description")
cam_type = camCfg.get(cam_section, "Type")
cam_subtype = camCfg.get(cam_section, "SubType")
cam_res = camCfg.get(cam_section, "Resolution")
cam_file = camCfg.get(cam_section, "File")
print("Using camera\n" + "Name: " + cam_name + "\nDesc.: " + cam_desc + "\nType: " + cam_type + "\nSubType: " + cam_subtype + "\nResolution: " + cam_res + "\nFile: " + cam_file)
# Called to apply camera settings when creating new chunk
def useCameraSettings():
# Init document
doc = Metashape.app.document
chunk = doc.chunk
# readCameraSettings(settings.defaultCamera)
camera_path = camCfgPath + cam_file
# Sensor to which we will apply settings
chunk_sensor = chunk.sensors[0]
# Set sensor type from camera
if cam_type == "Fisheye":
chunk_sensor.type = Metashape.Sensor.Type.Fisheye
elif cam_type == "Frame":
chunk_sensor.type = Metashape.Sensor.Type.Frame
elif cam_type == "Spherical":
chunk_sensor.type = Metashape.Sensor.Type.Spherical
elif cam_type == "Cylindrical":
chunk_sensor.type = Metashape.Sensor.Type.Cylindrical
elif cam_type == "RPC":
chunk_sensor.type = Metashape.Sensor.Type.RPC
else:
Metashape.app.messagBox("Camera Type not recognized.\nPlease check camera settings...")
# Init calibration and import settings from camera calibration file (Metashape XML)
chunk_calib = Metashape.Calibration()
if cam_file != "None":
chunk_calib.load(path=camera_path, format=Metashape.CalibrationFormatXML)
chunk_sensor.user_calib = chunk_calib
# Save document and show message with applied settings
doc.save()
# Metashape.app.messageBox("Camera settings applied.\n\nCamera: " + cam_name + "\nType: " + cam_type + "\nFilename: " + cam_file)
Metashape.app.update()
def selectCamChunk():
camCfgLoad()
diaSelectCamera()
if selected_camera == None:
print("No camera chosen. Using default camera.")
else:
readCameraSettings(selected_camera)
useCameraSettings()
print("\n\nApplied custom camera: " + selected_camera)
# Routine for adding/editing camera configuration
def saveCamConfig(camorig, camname, camdesc, camtype, camsub, camres, camfile):
if camCfg.has_section(camorig) == True:
camCfg.remove_section(camorig)
camCfg.add_section(camname)
camCfg.set(camname, "Description", camdesc)
camCfg.set(camname, "Type", camtype)
camCfg.set(camname, "SubType", camsub)
camCfg.set(camname, "Resolution", camres)
camCfg.set(camname, "File", camfile)
Metashape.app.messageBox("Camera Updated\n\n" + "Name: " + camname + "\nDesc.: " + camdesc + "\nType: " + camtype + "\nSubType: " + camsub + "\nRes.:: " + camres + " MP\nFile: " + camfile)
else:
camCfg.add_section(camname)
camCfg.set(camname, "Description", camdesc)
camCfg.set(camname, "Type", camtype)
camCfg.set(camname, "SubType", camsub)
camCfg.set(camname, "Resolution", camres)
camCfg.set(camname, "File", camfile)
Metashape.app.messageBox("Camera Created\n\n" + "Name: " + camname + "\nDesc.: " + camdesc + "\nType: " + camtype + "\nSubType: " + camsub + "\nRes.:: " + camres + " MP\nFile: " + camfile)
with open(camCfgFilePath, 'w') as configfile:
camCfg.write(configfile)
camCfgLoad()
# Routine for adding/editing camera configuration
def removeCamConfig(camname):
cam_xmlmsg = ''
if camCfg.has_section(camname) == True:
if camCfg.get(camname, "File") != "":
cameraXml = camCfgPath + camCfg.get(camname, "File")
if os.path.isfile(cameraXml):
os.remove(cameraXml)
cam_xmlmsg = "\nXML file " + cameraXml + " deleted."
camCfg.remove_section(camname)
cam_secmsg = "Camera [" + camname + "] removed from settings." + cam_xmlmsg
with open(camCfgFilePath, 'w') as configfile:
camCfg.write(configfile)
camCfgLoad()
Metashape.app.messageBox(cam_secmsg)
else:
Metashape.app.messageBox("Error! No camera named (" + str(camname) + ") was found.\n\nDid you manualy edit comaera configuration?")
def chunksCfgLoad():
global chunk_sections
if menuCfgFilePathExists == False:
menu_section_m = "GENERAL"
menuCfg.add_section(menu_section_m)
menuCfg.set(menu_section_m, "menu_icon", "ico-0")
menuCfg.set(menu_section_m, "chunk_name_format", "metashape")
menuCfg.set(menu_section_m, "chunk_name_prefix", "")
menuCfg.set(menu_section_m, "chunk_name_suffix", "")
menuCfg.set(menu_section_m, "work_folder", str(Metashape.app.getExistingDirectory("Project data folder (batch)")))
menuCfg.set(menu_section_m, "export_folder", str(Metashape.app.getExistingDirectory("Project data export folder (batch)")))
with open(menuCfgFilePath, 'w') as menuconfig:
menuCfg.write(menuconfig)
menuCfg.read(menuCfgFilePath)
chunk_sections = menuCfg.sections()
print("Custom chunk settings loaded...\nFile: " + menuCfgFile)
def appCfgLoad():
global selected_data_folder
global selected_camera
appCfgFileExists = os.path.isfile(appCfgFilePath) # Check if settings file exists
if appCfgFileExists == False:
print("\nSettings initialization...\nPlease choose data folder, and default camera.")
Metashape.app.messageBox("Settings file not found...\nPlease choose default data folder, and default camera.")
foldeData = str(Metashape.app.getExistingDirectory("Working data folder"))
#selectCamDefault()
diaSelectCamera()
appCfg.add_section('APP SETTINGS')
appCfg.set('APP SETTINGS', 'settings_version', appsettings_ver)
appCfg.set('APP SETTINGS', 'folder_data', foldeData)
appCfg.set('APP SETTINGS', 'default_camera', selected_camera)
appCfg.set('APP SETTINGS', 'default_chunk_def', "GENERAL")
# Writing our configuration file to 'example.cfg'
with open(appCfgFilePath, 'w') as configfile:
appCfg.write(configfile)
appCfg.read(appCfgFilePath)
checkSettingsVer()
selected_data_folder = appCfg.get('APP SETTINGS', 'folder_data')
selected_camera = appCfg.get('APP SETTINGS', 'default_camera')
# Project settings initialization (used when .psx project is loaded)
def projCfgLoad():
global settingsRebuild
global projDoc
global projCfgFilePath
global projCfgFilePathExists
global projCfg
global projectOpened
global selected_camera
global selected_data_folder
projDoc = Metashape.app.document
projDocFile = str(projDoc).replace("<Document '", "").replace("'>", "")
projCfgFilePath = projDocFile.replace(".psx", "_settings.ini") # Datoteka z nastavitvami projekta
projCfgFilePathExists = os.path.isfile(projCfgFilePath) # Preveri, če datoteka z projektom obstaja
if projCfgFilePathExists == False:
print("\nProject settings initialization...\nPlease choose data folder, and default camera.")
Metashape.app.messageBox("Settings initialization...\nPlease choose data folder, and default camera.")
proj_data = Metashape.app.getExistingDirectory("Project data folder")
diaSelectCamera()
if projCfg.has_section('PROJECT SETTINGS') == True:
projCfg.remove_section('PROJECT SETTINGS')
projCfg.add_section('PROJECT SETTINGS')
projCfg.set('PROJECT SETTINGS', 'settings_version', appsettings_ver)
projCfg.set('PROJECT SETTINGS', 'folder_data', str(proj_data))
projCfg.set('PROJECT SETTINGS', 'default_camera', selected_camera)
projCfg.set('PROJECT SETTINGS', 'default_chunk_def', "GENERAL")
# Writing our configuration file to 'example.cfg'
with open(projCfgFilePath, 'w') as configfile:
projCfg.write(configfile)
projCfg.read(projCfgFilePath)
checkSettingsVer()
selected_data_folder = projCfg.get('PROJECT SETTINGS', 'folder_data')
selected_camera = projCfg.get('PROJECT SETTINGS', 'default_camera')
selected_chunk_def = projCfg.get('PROJECT SETTINGS', 'default_chunk_def')
readCameraSettings(selected_camera)
projectOpened = True
Metashape.app.messageBox("Project settings loaded.\n\n"
+ "Data Folder: " + str(selected_data_folder) + "\n"
+ "Default Camera: " + str(selected_camera) + "\n"
+ "Def. Chunk Definition: " + str(selected_chunk_def))
# Check settings version
def checkSettingsVer():
global settingsRebuild
if appCfg.get("APP SETTINGS", "settings_version") != appsettings_ver:
settingsReset()
# Reset settings
def settingsReset():
if projectOpened == True:
os.remove(projCfgFilePath)
projCfgLoad()
else:
os.remove(appCfgFilePath)
appCfgLoad()
# Routine to check if project exists before initializing settings
def projectOpenedCheck():
global projectOpened
doc = Metashape.app.document
#fileDoc = str(doc).replace("<Document '", "").replace("'>", "")
if doc == "<Document ''>" or doc == None:
projectOpened = False
appCfgLoad()
Metashape.app.messageBox("Empty project?\n\nSave project first, or open an existing project. (*.psx).")
else:
projectOpened = True
projCfgLoad()
# Show progress of processing
def progress_print(p):
print('Completed: {:.2f}%'.format(p))
# Detect markers and import coords
def marker_targets():
doc = Metashape.app.document
chunk = doc.chunk
netpath = Metashape.app.document.path
netroot = path.dirname(netpath)
nadaljujem = Metashape.app.getBool("Start marker detection?")
if nadaljujem == True:
chunk.detectMarkers(target_type=Metashape.CircularTarget12bit, tolerance=98)
Metashape.app.messageBox("Marker detection finished.\n\nIn next step choose file containing marker coordinates.\n\nFile must contain header, coordinates are expected starting at line 7.")
path_ref = Metashape.app.getOpenFileName("Import coordinates " + chunk.label, netroot, "Text file (*.txt)")
chunk.importReference(path_ref, format=Metashape.ReferenceFormatCSV, columns='nxyz', delimiter=',', skip_rows=6, create_markers=True)
chunk.updateTransform()
Metashape.app.messageBox("Target coordinates imported.\n\nNext step: Workflow > Align Photos")
Metashape.app.update()
doc.save()
# Routine for finding files - used when creating new chunk
def find_files(folder, types):
return [entry.path for entry in os.scandir(folder) if (entry.is_file() and os.path.splitext(entry.name)[1].lower() in types)]
def newchunk_manual(name_prefix, name_suffix, work_folder):
global projectOpened
if projectOpened == True:
doc = Metashape.app.document
# netroot = path.dirname(netpath)
netroot = work_folder
try:
image_folder = Metashape.app.getExistingDirectory("Select data folder", netroot)
except:
print("Add Chunk cancelled...")
else:
photos = find_files(image_folder, [".jpg", ".jpeg", ".png", ".tif", ".tiff"])
chunk = doc.addChunk()
chunk_nameraw = os.path.basename(image_folder)
chunk_name = name_prefix + chunk_nameraw + name_suffix
chunk.label = Metashape.app.getString("Chunk Name", chunk_name)
chunk.addPhotos(photos)
doc.chunk = chunk
doc.save()
Metashape.app.messageBox("New chunk added!\n\nChunk Name: " + chunk_name)
addcalib = Metashape.app.getBool("Confirm to import default camera calibration.\n\nDefault Camera: " + cam_name)
if addcalib == True:
readCameraSettings(selected_camera)
useCameraSettings()
doc.save()
else:
diaSelectCamera()
readCameraSettings(selected_camera)
useCameraSettings()
nadaljujem = Metashape.app.getBool("Camera set...\nUsing Camera: " + str(selected_camera) + "\n\nContinue with marker detection and coordinates import?")
if nadaljujem == True:
chunk.detectMarkers(target_type=Metashape.CircularTarget12bit, tolerance=98)
Metashape.app.messageBox("Marker Detection complete!\n\nNext step: Choose file with target coordinates.\nPoint file must have header.\nImport starts at line 7.")
path_ref = Metashape.app.getOpenFileName("Import Target Coordinates", image_folder, "Text file (*.txt)")
chunk.importReference(path_ref, format=Metashape.ReferenceFormatCSV, columns='nxyz', delimiter=',', skip_rows=6, create_markers=True)
chunk.updateTransform()
Metashape.app.messageBox("Target coordinates imported.\n\nNext step: Workflow > Align Photos")
Metashape.app.update()
doc.save()
else:
projectOpenedCheck()
# Create chunk AUTO - automaticaly use predefined options
def newchunk_auto(name_prefix, name_suffix, work_folder):
global projectOpened
if projectOpened == True:
doc = Metashape.app.document
netpath = Metashape.app.document.path
netroot = work_folder
try:
image_folder = Metashape.app.getExistingDirectory("Select data folder", netroot)
except:
print("Add Chunk cancelled...")
else:
photos = find_files(image_folder, [".jpg", ".jpeg", ".png", ".tif", ".tiff"])
chunk = doc.addChunk()
chunk.addPhotos(photos)
chunk_nameraw = os.path.basename(image_folder)
chunk_name = name_prefix + chunk_nameraw + name_suffix
# chunk.label = Metashape.app.getString("Chunk Name", chunk_name)
chunk.label = chunk_name
doc.chunk = chunk
doc.save(netpath)
Metashape.app.update()
# Metashape.app.messageBox("Nalaganje slik...")
# time.sleep(3)
readCameraSettings(selected_camera)
useCameraSettings()
chunk.detectMarkers(target_type=Metashape.CircularTarget12bit, tolerance=98)
# path_ref = Metashape.app.getOpenFileName("Import marker coordinates", image_folder, "Text file (*.txt)")
points_file = image_folder + "/" + chunk_nameraw + ".txt"
chunk.importReference(points_file, format=Metashape.ReferenceFormatCSV, columns='nxyz', delimiter=',', skip_rows=6, create_markers=True)
chunk.updateTransform()
doc.save(netpath)
Metashape.app.update()
else:
projectOpenedCheck()
# Choose default camera routine
def selectCamDefault():
camCfgLoad()
diaSelectCamera()
if selected_camera == None:
Metashape.app.messageBox("No camera selected. Nothing has changed...")
else:
if projectOpened == True:
projCfg.set('PROJECT SETTINGS', 'default_camera', selected_camera)
with open(projCfgFilePath, 'w') as configfile:
projCfg.write(configfile)
projCfg.read(projCfgFilePath)
else:
appCfg.set('APP SETTINGS', 'default_camera', selected_camera)
with open(appCfgFilePath, 'w') as configfile:
appCfg.write(configfile)
appCfg.read(appCfgFilePath)
print("Default camera settings saved.\nDefault Camera: " + selected_camera)
# Create About message dialog
def appAbout():
app_aboutmsg = app_name + "\n\nVersion: " + app_ver + "\n" + app_author + "\n" + app_about + "\n\n" + app_repo + "\n\nReferences:\n" + ref_repo + "\n\n" + ref_scripts + "\n"
message_box = QMessageBox()
message_box.setMinimumSize(600,500)
message_box.setTextFormat(Qt.PlainText)
message_box.setText(app_aboutmsg)
message_box.exec_()
def prazno():
print("Prazna vrstica")
# Routine for calling Edit Settings UI - called when user want's to edit settings
def editSettings():
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
editDialog = Ui_settingsDialog(parent)
# Routine for calling Edit Settings UI - called when user want's to edit settings
def addCameraDialog(camnew, camname):
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
if camnew == False:
dia = Ui_DialogAddEditCam(parent, camnew, camname)
else:
dia = Ui_DialogAddEditCam(parent, camnew, camname="")
# Routine for calling Edit Settings UI - called when user want's to edit settings
def diaSelectCamera():
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
diaChCam = Ui_dialogChooseCamera(parent)
# Routine for calling Edit Settings UI - called when user want's to edit settings
def camerasEditor():
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
camEditDialog = Ui_dialogCamGui(parent)
# Routine for calling Copy Regions UI
def copy_bbox():
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
dlg = CopyBoundingBoxDlg(parent)
def diaAddChunkSingle():
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
dia = Ui_DialogAddChunkQuick(parent)
def diaAddChunkBatch():
projectOpenedCheck()
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
dia2 = Ui_DialogBatchChunk(parent)
def diaChunkSettings():
app = QtWidgets.QApplication.instance()
parent = app.activeWindow()
dia_cs = Ui_DialogChunkSettings(parent)
icon_app = ":/icons/AutoFTG-appicon.png"
icon_app2 = ":/icons/AUTOFTG-V2.png"
icon0 = ":/icons/icons8-about-50.png"
iconadd = ":/icons/icons8-add-50.png"
icon2 = ":/icons/icons8-add-camera-50.png"
icon3 = ":/icons/icons8-add-list-50.png"
icon4 = ":/icons/icons8-add-new-50.png"
icon5 = ":/icons/icons8-aperture-50.png"
icon6 = ":/icons/icons8-apps-tab-50.png"
icon7 = ":/icons/icons8-bursts-50.png"
icon8 = ":/icons/icons8-camera-50.png"
icon9 = ":/icons/icons8-cameras-50.png"
icon10 = ":/icons/icons8-cancel-50.png"
icon11 = ":/icons/icons8-christmas-star-50.png"
icon12 = ":/icons/icons8-close-50.png"
icon13 = ":/icons/icons8-close-window-50.png"
icon14 = ":/icons/icons8-design-50.png"
icon15 = ":/icons/icons8-drag-and-drop-50.png"
icon16 = ":/icons/icons8-edit-50.png"
icon17 = ":/icons/icons8-full-page-view-50.png"
icon18 = ":/icons/icons8-images-folder-50.png"
icon19 = ":/icons/icons8-ios-application-placeholder-50.png"
icon20 = ":/icons/icons8-my-location-50.png"
icon21 = ":/icons/icons8-opened-folder-50.png"
icon22 = ":/icons/icons8-overscan-settings-50.png"
icon23 = ":/icons/icons8-panorama-50.png"
icon24 = ":/icons/icons8-quadcopter-50.png"
icon25 = ":/icons/icons8-restore-50.png"
icon26 = ":/icons/icons8-save-50.png"
icon27 = ":/icons/icons8-save-as-50.png"
icon28 = ":/icons/icons8-services-50.png"
icon29 = ":/icons/icons8-settings-50.png"
icon30 = ":/icons/icons8-slr-back-side-50.png"
icon31 = ":/icons/icons8-slr-camera-50.png"
icon32 = ":/icons/icons8-tools-50.png"
icon33 = ":/icons/icons8-video-stabilization-50.png"
icon34 = ":/icons/icons8-video-wall-50.png"
icon35 = ":/icons/icons8-vintage-camera-50.png"
icon36 = ":/icons/icons8-wallpaper-50.png"
icon37 = ":/icons/icons8-web-camera-50.png"
icon38 = ":/icons/icons8-map-marker-50.png"
icon40 = ":/icons/icons8-toolbox-50.png"
iconaddc = ":/icons/icons8-plus-50.png"
iconloads = ":/icons/icons8-share-50.png"
iconimg28 = ":/icons/kalota.png"
iconimg29 = ":/icons/kalota_m.png"
iconimg59 = ":/icons/stopnca_o.png"
iconimg60 = ":/icons/stopnca_s.png"
# Add Main Menu to start with
labelmenu= "About Auto FTG"
Metashape.app.addMenuItem(labelmenu, appAbout, icon=icon_app)
labelAddChSingle = "AutoFTG/Add Chunk (Single)"
Metashape.app.addMenuItem(label=labelAddChSingle, func=diaAddChunkSingle, shortcut="Ctrl++", icon=iconadd)
labelAddChBatch = "AutoFTG/Batch Chunk Creator"
Metashape.app.addMenuItem(label=labelAddChBatch, func=diaAddChunkBatch, shortcut="Ctrl+*", icon=icon4)
labelChSet = "AutoFTG/Chunk Definition Settings"
Metashape.app.addMenuItem(label=labelChSet, func=diaChunkSettings, icon=":/icons/icons8-content-50.png")
labelsep1a = "AutoFTG/--------------------"
Metashape.app.addMenuItem(labelsep1a, prazno)
label3a = "AutoFTG/Detect markers && Import coordinates"
Metashape.app.addMenuItem(label3a, marker_targets, icon=icon38)
label4 = "AutoFTG/Copy Region (Bounding Box)"
Metashape.app.addMenuItem(label4, copy_bbox, icon=icon15)
labelsep1 = "AutoFTG/--------------------"
Metashape.app.addMenuItem(labelsep1, prazno)
label2 = "AutoFTG/Change Camera (Chunk)"
Metashape.app.addMenuItem(label2, selectCamChunk, icon=icon8)
label2aaa = "AutoFTG/Set Default Camera (Project)"
Metashape.app.addMenuItem(label2aaa, selectCamDefault, icon=icon35)
label2cccc = "AutoFTG/Cameras Editor"
Metashape.app.addMenuItem(label2cccc, camerasEditor, icon=icon9)
labelsep55 = "AutoFTG/--------------------"
Metashape.app.addMenuItem(labelsep55, prazno)
labelset2 = "AutoFTG/Load Project Settings"
Metashape.app.addMenuItem(labelset2, projectOpenedCheck, icon=icon40)
labelset4 = "AutoFTG/Edit Loaded Settings"
Metashape.app.addMenuItem(labelset4, editSettings, icon=icon32)
labelset2i = "Load Project Settings"
Metashape.app.addMenuItem(labelset2i, projectOpenedCheck, icon=icon40)
labelAddChQui = "Add Chunk (Single)"
Metashape.app.addMenuItem(label=labelAddChQui, func=diaAddChunkSingle, icon=iconadd)
labelAddChBat = "Add Chunk (Multi)"
Metashape.app.addMenuItem(label=labelAddChBat, func=diaAddChunkBatch, icon=icon4)
labelCopyReg = "Copy Region"
Metashape.app.addMenuItem(labelCopyReg, copy_bbox, icon=icon15)
# labelsep3 = "AutoFTG/New Chunk (2TIR)/--------------------"
# Metashape.app.addMenuItem(labelsep3, prazno)
#
# labelNewStIz = "AutoFTG/New Chunk (2TIR)/STOPNICA (IZKOP) Pefix\Suffix"
# Metashape.app.addMenuSeparator(labelNewStIz)
#
# label0c = "AutoFTG/New Chunk (2TIR)/STOPNICA (IZKOP) Pefix\Suffix/< Modify prefix"
# Metashape.app.addMenuItem(label0c, changeNameStIzPre)
#
# label0d = "AutoFTG/New Chunk (2TIR)/STOPNICA (IZKOP) Pefix\Suffix/> Modify suffix"
# Metashape.app.addMenuItem(label0d, changeNameStIzSuf)
#
# labelNewStBb = "AutoFTG/New Chunk (2TIR)/STOPNICA (B.BET.) Pefix\Suffix"
# Metashape.app.addMenuSeparator(labelNewStBb)
#
# label0f = "AutoFTG/New Chunk (2TIR)/STOPNICA (B.BET.) Pefix\Suffix/< Modify prefix"
# Metashape.app.addMenuItem(label0f, changeNameStBbPre)
#
# label0g = "AutoFTG/New Chunk (2TIR)/STOPNICA (B.BET.) Pefix\Suffix/> Modify suffix"
# Metashape.app.addMenuItem(label0g, changeNameStBbSuf)
# changeChunkAppend(setting_name, append_type)
# labelsep2 = "Cameras"
# Metashape.app.addMenuSeparator(labelsep2)
# labelsep5 = "AutoFTG/--------------------"
# Metashape.app.addMenuItem(labelsep5, prazno)
# Initialize AutoFTG
def loadAutoftg():
global projectOpened
camCfgLoad()
chunksCfgLoad()
loadIcoSettings()
projectOpenedCheck()
checkSettingsVer()
print("\n\nAutoFTG initialized...\nApp Version: " + str(app_ver) + "\nSettings Version: " + str(appCfg.get('APP SETTINGS', 'settings_version')))
print(str(app_author))
# Run
loadAutoftg()

View File

@ -0,0 +1,730 @@
# Class for settings editing UI
import os
import pydoc
import shutil
import sys
import time
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
selected_camera = None
class Ui_DialogAddEditCam(QtWidgets.QDialog):
def __init__(self, parent, camnew, camname):
global camOrigName
camOrigName = camname
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogAddEditCam")
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
self.resize(480, 270)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
self.setSizePolicy(sizePolicy)
self.setMinimumSize(QSize(480, 270))
self.setMaximumSize(QSize(480, 270))
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(10)
self.setFont(font)
self.setWindowTitle(u"Add/Edit Camera")
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
self.gridLayoutWidget = QWidget(self)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(10, 10, 461, 251))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.comboBox_2 = QComboBox(self.gridLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-camera-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon1, u"Standard")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-slr-small-lens-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon2, u"DSLR")
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-camera-on-tripod-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon3, u"Special")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-quadcopter-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon4, u"Drone")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-touchscreen-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon5, u"SmartPhone")
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-gopro-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon6, u"SportCam")
self.comboBox_2.setObjectName(u"comboBox_2")
self.comboBox_2.setFont(font)
self.comboBox_2.setIconSize(QSize(24, 24))
self.gridLayout.addWidget(self.comboBox_2, 3, 1, 1, 1)
self.lineEdit_2 = QLineEdit(self.gridLayoutWidget)
self.lineEdit_2.setObjectName(u"lineEdit_2")
self.lineEdit_2.setFont(font)
self.lineEdit_2.setPlaceholderText(u"Camera name")
self.gridLayout.addWidget(self.lineEdit_2, 0, 1, 1, 1)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setSpacing(5)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.lineEdit_3 = QLineEdit(self.gridLayoutWidget)
self.lineEdit_3.setObjectName(u"lineEdit_3")
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.lineEdit_3.sizePolicy().hasHeightForWidth())
self.lineEdit_3.setSizePolicy(sizePolicy1)
self.lineEdit_3.setMinimumSize(QSize(0, 28))
self.lineEdit_3.setMaximumSize(QSize(16777215, 28))
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(8)
self.lineEdit_3.setFont(font1)
self.lineEdit_3.setPlaceholderText(u"Choose calibration XML file...")
self.horizontalLayout_2.addWidget(self.lineEdit_3)
self.pushButton_3 = QPushButton(self.gridLayoutWidget)
self.pushButton_3.setObjectName(u"pushButton_3")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.pushButton_3.sizePolicy().hasHeightForWidth())
self.pushButton_3.setSizePolicy(sizePolicy2)
self.pushButton_3.setFont(font1)
self.pushButton_3.setToolTip(u"Choose XML calibration file...")
self.pushButton_3.setText(u"Browse")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-images-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_3.setIcon(icon7)
self.pushButton_3.setIconSize(QSize(24, 24))
self.horizontalLayout_2.addWidget(self.pushButton_3)
self.gridLayout.addLayout(self.horizontalLayout_2, 5, 1, 1, 1)
self.label_3 = QLabel(self.gridLayoutWidget)
self.label_3.setObjectName(u"label_3")
sizePolicy3 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy3)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(10)
font2.setBold(True)
font2.setWeight(75)
self.label_3.setFont(font2)
self.label_3.setText(u"Camera Name")
self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setMinimumSize(QSize(0, 0))
self.pushButton.setMaximumSize(QSize(90, 30))
self.pushButton.setText(u"Cancel")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon8)
self.pushButton.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy)
self.pushButton_2.setMinimumSize(QSize(0, 0))
self.pushButton_2.setMaximumSize(QSize(90, 30))
self.pushButton_2.setText(u"Save")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-save-all-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon9)
self.pushButton_2.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_2)
self.gridLayout.addLayout(self.horizontalLayout, 7, 0, 1, 2)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
sizePolicy3.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy3)
self.label.setFont(font)
self.label.setText(u"Type")
self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
sizePolicy3.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
self.label_4.setSizePolicy(sizePolicy3)
font3 = QFont()
font3.setFamily(u"Segoe UI")
font3.setPointSize(9)
self.label_4.setFont(font3)
self.label_4.setText(u"Resolution")
self.gridLayout.addWidget(self.label_4, 4, 0, 1, 1)
self.label_7 = QLabel(self.gridLayoutWidget)
self.label_7.setObjectName(u"label_7")
self.label_7.setFont(font3)
self.label_7.setText(u"Description")
self.gridLayout.addWidget(self.label_7, 1, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 6, 0, 1, 2)
self.comboBox = QComboBox(self.gridLayoutWidget)
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon10, u"Frame")
icon11 = QIcon()
icon11.addFile(u":/icons/icons8-video-wall-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon11, u"Fisheye")
icon12 = QIcon()
icon12.addFile(u":/icons/icons8-live-photos-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon12, u"Spherical")
icon13 = QIcon()
icon13.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon13, u"Cylindical")
icon14 = QIcon()
icon14.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon14, u"RPC")
self.comboBox.setObjectName(u"comboBox")
self.comboBox.setFont(font)
self.comboBox.setIconSize(QSize(24, 24))
self.gridLayout.addWidget(self.comboBox, 2, 1, 1, 1)
self.label_5 = QLabel(self.gridLayoutWidget)
self.label_5.setObjectName(u"label_5")
sizePolicy3.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy3)
self.label_5.setText(u"Callibration")
self.gridLayout.addWidget(self.label_5, 5, 0, 1, 1)
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
sizePolicy3.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy3)
self.label_2.setFont(font3)
self.label_2.setText(u"Sub-Type")
self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setSpacing(5)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.lineEdit = QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setMaximumSize(QSize(50, 16777215))
self.lineEdit.setFont(font)
self.lineEdit.setText(u"0")
self.horizontalLayout_3.addWidget(self.lineEdit)
self.label_6 = QLabel(self.gridLayoutWidget)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"MP")
self.horizontalLayout_3.addWidget(self.label_6)
self.gridLayout.addLayout(self.horizontalLayout_3, 4, 1, 1, 1)
self.lineEdit_4 = QLineEdit(self.gridLayoutWidget)
self.lineEdit_4.setObjectName(u"lineEdit_4")
self.lineEdit_4.setFont(font)
self.lineEdit_4.setPlaceholderText(u"Description of camera (optional)")
self.gridLayout.addWidget(self.lineEdit_4, 1, 1, 1, 1)
QWidget.setTabOrder(self.lineEdit_2, self.lineEdit_4)
QWidget.setTabOrder(self.lineEdit_4, self.comboBox)
QWidget.setTabOrder(self.comboBox, self.comboBox_2)
QWidget.setTabOrder(self.comboBox_2, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.lineEdit_3)
QWidget.setTabOrder(self.lineEdit_3, self.pushButton_3)
QWidget.setTabOrder(self.pushButton_3, self.pushButton_2)
QWidget.setTabOrder(self.pushButton_2, self.pushButton)
if camnew == True:
autoftg_main.cameraXmlSource = ''
autoftg_main.cameraXmlDest = ''
self.setWindowTitle(u"Add New Camera")
self.pushButton_2.setText(u"Add Camera")
else:
selCamType = autoftg_main.camCfg.get(camname, "Description")
selCamType = autoftg_main.camCfg.get(camname, "Type")
selCamSubType = autoftg_main.camCfg.get(camname, "SubType")
selCamRes = autoftg_main.camCfg.get(camname, "Resolution")
selCamFile = autoftg_main.camCfg.get(camname, "File")
autoftg_main.cameraXmlSource = selCamFile
autoftg_main.cameraXmlDest = selCamFile
self.lineEdit_2.setText(camname)
self.comboBox.setCurrentText(selCamType)
self.comboBox_2.setCurrentText(selCamSubType)
self.lineEdit.setText(selCamRes)
self.lineEdit_3.setText(selCamFile)
self.setWindowTitle(u"Edit Camera")
self.pushButton_2.setText(u"Save Changes")
QtCore.QObject.connect(self.pushButton_3, QtCore.SIGNAL("clicked()"), self.selectCameraFile)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), self.saveCamera)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))
self.exec()
def selectCameraFile(self):
autoftg_main.cameraXmlSource = Metashape.app.getOpenFileName(hint="Select Camera Calibration", dir=str(autoftg_main.selected_data_folder), filter="Metashape Camera Calibration (*.xml)")
camXmlFile = os.path.basename(autoftg_main.cameraXmlSource)
autoftg_main.cameraXmlDest = autoftg_main.camCfgPath + camXmlFile
self.lineEdit_3.setText(camXmlFile)
def saveCamera(self):
cameraNameAdd = self.lineEdit_2.text()
camDesc = self.lineEdit_4.text()
cameraTypeAdd = self.comboBox.currentText()
cameraSubTypeAdd = self.comboBox_2.currentText()
cameraResAdd = self.lineEdit.text()
cameraFileAdd = self.lineEdit_3.text()
if cameraNameAdd == "" or cameraNameAdd == None:
Metashape.app.messageBox("Error! No camera name entered...")
else:
if self.lineEdit_3.text() != "" or self.lineEdit_3.text() != None:
self.copyXml()
else:
cameraFileAdd = "None"
autoftg_main.saveCamConfig(camOrigName, cameraNameAdd, camDesc, cameraTypeAdd, cameraSubTypeAdd, cameraResAdd, cameraFileAdd)
autoftg_main.camCfgLoad()
autoftg_main.cameraXmlSource = ''
autoftg_main.cameraXmlDest = ''
self.close()
def copyXml(self):
if autoftg_main.cameraXmlSource != autoftg_main.cameraXmlDest:
cameraXmlDestExists = os.path.isfile(autoftg_main.cameraXmlDest)
if cameraXmlDestExists == False:
try:
shutil.copy2(autoftg_main.cameraXmlSource, autoftg_main.cameraXmlDest)
except:
Metashape.app.messageBox("Error! Could not copy calibration file...")
else:
try:
os.remove(autoftg_main.cameraXmlDest)
except:
Metashape.app.messageBox("Error! Failed to remove old calibration file...")
try:
shutil.copy2(autoftg_main.cameraXmlSource, autoftg_main.cameraXmlDest)
except:
Metashape.app.messageBox("Error! Failed to copy calibration file...")
def closeCameraDialog(self):
autoftg_main.camCfgLoad()
self.close()
class Ui_dialogCamGui(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"dialogCamGui")
self.resize(350, 300)
self.setWindowTitle(u"Cameras Editor")
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
layoutMain = QtWidgets.QVBoxLayout() # creating layout
menuico00 = QIcon()
menuico00.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico1 = QIcon()
menuico1.addFile(u":/icons/icons8-panorama-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico2 = QIcon()
menuico2.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico3 = QIcon()
menuico3.addFile(u":/icons/icons8-video-stabilization-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico4 = QIcon()
menuico4.addFile(u":/icons/icons8-touchscreen-48.png", QSize(), QIcon.Normal, QIcon.Off)
menuico5 = QIcon()
menuico5.addFile(u":/icons/icons8-quadcopter-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico6 = QIcon()
menuico6.addFile(u":/icons/icons8-add-camera-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico7 = QIcon()
menuico7.addFile(u":/icons/icons8-design-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico8 = QIcon()
menuico8.addFile(u":/icons/icons8-no-camera-96.png", QSize(), QIcon.Normal, QIcon.Off)
menuico9 = QIcon()
menuico9.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
icoTripod = QIcon()
icoTripod.addFile(u":/icons/icons8-camera-on-tripod-96.png", QSize(), QIcon.Normal, QIcon.Off)
font1 = QFont()
font1.setPointSize(10)
self.verticalLayoutWidget_2 = QWidget()
self.verticalLayoutWidget_2.setObjectName(u"verticalLayoutWidget_2")
self.verticalLayoutWidget_2.setGeometry(QRect(10, 10, 331, 211))
self.vLayout_Main = QVBoxLayout(self.verticalLayoutWidget_2)
self.vLayout_Main.setObjectName(u"vLayout_Main")
self.vLayout_Main.setContentsMargins(0, 0, 0, 0)
self.hLayoutCamEdit = QHBoxLayout()
self.hLayoutCamEdit.setObjectName(u"hLayoutCamEdit")
self.listWidgetCam = QListWidget(self.verticalLayoutWidget_2)
self.listWidgetCam.setObjectName(u"listWidgetCam")
self.listWidgetCam.setFont(font1)
self.listWidgetCam.setFrameShape(QFrame.StyledPanel)
self.listWidgetCam.setFrameShadow(QFrame.Plain)
self.listWidgetCam.setDefaultDropAction(Qt.IgnoreAction)
self.listWidgetCam.setIconSize(QSize(20, 20))
for camera in autoftg_main.cam_list:
lcam_type = str(autoftg_main.camCfg.get(camera, 'Type'))
lcam_stype = str(autoftg_main.camCfg.get(camera, "SubType"))
lcam_res = str(autoftg_main.camCfg.get(camera, 'Resolution'))
lcam_desc = str(autoftg_main.camCfg.get(camera, 'Description'))
self.listWidgetCamItem = QListWidgetItem(camera, self.listWidgetCam)
self.listWidgetCamItem.setText(str(camera))
# <html><head/><body><p><b>Processing error!</span></p></body></html>
if lcam_stype == "Drone":
self.listWidgetCamItem.setIcon(menuico5)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_stype == "SmartPhone":
self.listWidgetCamItem.setIcon(menuico4)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_stype == "Special":
self.listWidgetCamItem.setIcon(icoTripod)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "Fisheye":
self.listWidgetCamItem.setIcon(menuico1)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "Cylindrical":
self.listWidgetCamItem.setIcon(menuico2)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "Spherical":
self.listWidgetCamItem.setIcon(menuico3)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "RPC":
self.listWidgetCamItem.setIcon(menuico9)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
else:
self.listWidgetCamItem.setIcon(menuico00)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
self.hLayoutCamEdit.addWidget(self.listWidgetCam)
self.vLayout_CamBtn = QVBoxLayout()
self.vLayout_CamBtn.setObjectName(u"vLayout_CamBtn")
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
self.btnRemoveCam = QPushButton(self.verticalLayoutWidget_2)
self.btnRemoveCam.setObjectName(u"btnRemoveCam")
sizePolicy.setHeightForWidth(self.btnRemoveCam.sizePolicy().hasHeightForWidth())
self.btnRemoveCam.setSizePolicy(sizePolicy)
self.btnRemoveCam.setText(u" Remove")
self.btnRemoveCam.setIcon(menuico8)
self.btnRemoveCam.setIconSize(QSize(24, 24))
self.vLayout_CamBtn.addWidget(self.btnRemoveCam)
self.btnEditCam = QPushButton(self.verticalLayoutWidget_2)
self.btnEditCam.setObjectName(u"btnEditCam")
sizePolicy.setHeightForWidth(self.btnEditCam.sizePolicy().hasHeightForWidth())
self.btnEditCam.setSizePolicy(sizePolicy)
self.btnEditCam.setText(u" Edit")
self.btnEditCam.setIcon(menuico7)
self.btnEditCam.setIconSize(QSize(24, 24))
self.vLayout_CamBtn.addWidget(self.btnEditCam)
self.btnAddNewCam = QPushButton(self.verticalLayoutWidget_2)
self.btnAddNewCam.setObjectName(u"btnAddNewCam")
sizePolicy.setHeightForWidth(self.btnAddNewCam.sizePolicy().hasHeightForWidth())
self.btnAddNewCam.setSizePolicy(sizePolicy)
self.btnAddNewCam.setText(u" Add")
self.btnAddNewCam.setIcon(menuico6)
self.btnAddNewCam.setIconSize(QSize(24, 24))
self.vLayout_CamBtn.addWidget(self.btnAddNewCam)
self.hLayoutCamEdit.addLayout(self.vLayout_CamBtn)
layoutMain.addLayout(self.hLayoutCamEdit)
self.hLayout_MainBtn = QHBoxLayout()
self.hLayout_MainBtn.setObjectName(u"hLayout_MainBtn")
self.btnMainClose = QPushButton(self.verticalLayoutWidget_2)
self.btnMainClose.setObjectName(u"btnMainClose")
sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.btnMainClose.sizePolicy().hasHeightForWidth())
self.btnMainClose.setSizePolicy(sizePolicy1)
self.btnMainClose.setText(u"Close")
self.hLayout_MainBtn.addWidget(self.btnMainClose)
layoutMain.addLayout(self.hLayout_MainBtn)
self.setLayout(layoutMain)
QtCore.QObject.connect(self.btnAddNewCam, QtCore.SIGNAL("clicked()"), self.addNewCam)
QtCore.QObject.connect(self.btnEditCam, QtCore.SIGNAL("clicked()"), self.editSelCamera)
QtCore.QObject.connect(self.btnRemoveCam, QtCore.SIGNAL("clicked()"), self.removeSelCamera)
QtCore.QObject.connect(self.btnMainClose, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))
self.exec()
def refreshCamList(self):
self.listWidgetCam.clear()
menuico00 = QIcon()
menuico00.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico1 = QIcon()
menuico1.addFile(u":/icons/icons8-panorama-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico2 = QIcon()
menuico2.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico3 = QIcon()
menuico3.addFile(u":/icons/icons8-video-stabilization-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico4 = QIcon()
menuico4.addFile(u":/icons/icons8-touchscreen-48.png", QSize(), QIcon.Normal, QIcon.Off)
menuico5 = QIcon()
menuico5.addFile(u":/icons/icons8-quadcopter-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico6 = QIcon()
menuico6.addFile(u":/icons/icons8-add-camera-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico7 = QIcon()
menuico7.addFile(u":/icons/icons8-design-50.png", QSize(), QIcon.Normal, QIcon.Off)
menuico8 = QIcon()
menuico8.addFile(u":/icons/icons8-no-camera-96.png", QSize(), QIcon.Normal, QIcon.Off)
menuico9 = QIcon()
menuico9.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
icoTripod = QIcon()
icoTripod.addFile(u":/icons/icons8-camera-on-tripod-96.png", QSize(), QIcon.Normal, QIcon.Off)
for camera in autoftg_main.cam_list:
lcam_type = str(autoftg_main.camCfg.get(camera, 'Type'))
lcam_stype = str(autoftg_main.camCfg.get(camera, "SubType"))
lcam_res = str(autoftg_main.camCfg.get(camera, 'Resolution'))
lcam_desc = str(autoftg_main.camCfg.get(camera, 'Description'))
self.listWidgetCamItem = QListWidgetItem(camera, self.listWidgetCam)
self.listWidgetCamItem.setText(str(camera))
# <html><head/><body><p><b>Processing error!</span></p></body></html>
if lcam_stype == "Drone":
self.listWidgetCamItem.setIcon(menuico5)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_stype == "SmartPhone":
self.listWidgetCamItem.setIcon(menuico4)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_stype == "Special":
self.listWidgetCamItem.setIcon(icoTripod)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "Fisheye":
self.listWidgetCamItem.setIcon(menuico1)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "Cylindrical":
self.listWidgetCamItem.setIcon(menuico2)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "Spherical":
self.listWidgetCamItem.setIcon(menuico3)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
elif lcam_type == "RPC":
self.listWidgetCamItem.setIcon(menuico9)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
else:
self.listWidgetCamItem.setIcon(menuico00)
self.listWidgetCamItem.setToolTip("<html><head/><body><p><b>Type: " + lcam_type + "</b><br>SubType: " + lcam_stype + "<br>Res.: " + lcam_res + "MP" + "<br>Desc.: " + lcam_desc)
def addNewCam(self):
autoftg_main.addCameraDialog(camnew=True, camname="")
self.refreshCamList()
def editSelCamera(self):
# defaultItem = self.listWidgetCam.isItemSelected("Default")
if self.listWidgetCam.currentRow() > 1:
selCamName = self.listWidgetCam.currentItem().text()
autoftg_main.addCameraDialog(camnew=False, camname=selCamName)
self.refreshCamList()
elif self.listWidgetCam.currentRow() <= 1:
Metashape.app.messageBox("Default cameras can not be edited.")
else:
Metashape.app.messageBox("No camera selected...")
def removeSelCamera(self):
if self.listWidgetCam.currentRow() > 1:
del_cam = self.listWidgetCam.currentItem().text()
remove_confirm = Metashape.app.getBool("Remove selected camera?\n\nSelected: " + del_cam)
if remove_confirm == True:
autoftg_main.removeCamConfig(del_cam)
self.refreshCamList()
elif self.listWidgetCam.currentRow() <= 1:
Metashape.app.messageBox("Default cameras can not be removed.")
else:
Metashape.app.messageBox("No camera selected...")
class Ui_dialogChooseCamera(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"dialogChooseCamera")
self.resize(320, 300)
self.setWindowTitle(u"Choose Camera")
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
self.setSizePolicy(sizePolicy)
self.setMinimumSize(QSize(320, 300))
self.setMaximumSize(QSize(320, 300))
self.setWindowTitle(u"Choose Camera")
self.verticalLayoutWidget = QWidget(self)
self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
self.verticalLayoutWidget.setGeometry(QRect(10, 10, 301, 281))
self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setSpacing(5)
self.verticalLayout.setContentsMargins(10, 10, 10, 10)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.label = QLabel(self.verticalLayoutWidget)
self.label.setObjectName(u"label")
font = QFont()
font.setPointSize(11)
self.label.setFont(font)
self.label.setText(u"Select Camera")
self.verticalLayout.addWidget(self.label)
self.listWidget = QListWidget(self.verticalLayoutWidget)
icon = QIcon()
icon.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-panorama-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-video-stabilization-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-touchscreen-48.png", QSize(), QIcon.Normal, QIcon.Off)
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-quadcopter-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon5a = QIcon()
icon5a.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
icoTripod = QIcon()
icoTripod.addFile(u":/icons/icons8-camera-on-tripod-96.png", QSize(), QIcon.Normal, QIcon.Off)
font1 = QFont()
font1.setPointSize(10)
for cam in autoftg_main.cam_list:
icon_type = autoftg_main.camCfg.get(cam, "Type")
icon_subtype = autoftg_main.camCfg.get(cam, "SubType")
self.listwidget = QListWidgetItem(self.listWidget)
self.listwidget.setText(cam)
if icon_subtype == "SmartPhone":
self.listwidget.setIcon(icon4)
elif icon_subtype == "Drone":
self.listwidget.setIcon(icon5)
elif icon_subtype == "Special":
self.listwidget.setIcon(icoTripod)
else:
if icon_type == "Fisheye":
self.listwidget.setIcon(icon1)
elif icon_type == "Spherical":
self.listwidget.setIcon(icon3)
elif icon_type == "Cylindrical":
self.listwidget.setIcon(icon2)
elif icon_type == "RPC":
self.listwidget.setIcon(icon5a)
else:
self.listwidget.setIcon(icon)
self.listWidget.setObjectName(u"listWidget")
self.listWidget.setFont(font1)
self.listWidget.setFrameShape(QFrame.StyledPanel)
self.listWidget.setFrameShadow(QFrame.Plain)
self.listWidget.setDefaultDropAction(Qt.IgnoreAction)
self.listWidget.setIconSize(QSize(20, 20))
self.verticalLayout.addWidget(self.listWidget)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setSpacing(5)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.pushButton_2 = QPushButton(self.verticalLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon5)
self.pushButton_2.setText(u"Cancel")
self.horizontalLayout_2.addWidget(self.pushButton_2)
self.pushButton = QPushButton(self.verticalLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-done-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon6)
self.pushButton.setText(u"Ok")
self.horizontalLayout_2.addWidget(self.pushButton)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.listWidget.setCurrentRow(autoftg_main.cam_list.index(autoftg_main.selected_camera))
self.listWidget.setSortingEnabled(False)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.selectCam)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))
self.exec()
def selectCam(self):
autoftg_main.selected_camera = self.listWidget.currentItem().text()
self.close()

View File

@ -0,0 +1,889 @@
import os
import shutil
import sys
import time
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
class Ui_DialogChunkSettings(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogChunkSettings")
self.setWindowModality(Qt.WindowModal)
self.resize(720, 360)
self.setWindowTitle(u"Chunk Definition Settings")
sizePolicy0 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy0.setHorizontalStretch(0)
sizePolicy0.setVerticalStretch(0)
sizePolicy0.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
self.setSizePolicy(sizePolicy0)
self.setMinimumSize(QSize(720, 480))
self.setMaximumSize(QSize(720, 480))
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(icon)
self.gridLayoutWidget = QWidget(self)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(9, 10, 701, 461))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.label_menuSet_2 = QLabel(self.gridLayoutWidget)
self.label_menuSet_2.setObjectName(u"label_menuSet_2")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.label_menuSet_2.sizePolicy().hasHeightForWidth())
self.label_menuSet_2.setSizePolicy(sizePolicy1)
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_menuSet_2.setFont(font)
self.label_menuSet_2.setFrameShape(QFrame.StyledPanel)
self.label_menuSet_2.setText(u"Chunk Definitions List")
self.gridLayout.addWidget(self.label_menuSet_2, 0, 0, 1, 1)
self.listWidgetChunkDefs = QListWidget(self.gridLayoutWidget)
self.listWidgetChunkDefs.setObjectName(u"listWidgetChunkDefs")
sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.listWidgetChunkDefs.sizePolicy().hasHeightForWidth())
self.listWidgetChunkDefs.setSizePolicy(sizePolicy2)
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
self.listWidgetChunkDefs.setFont(font1)
self.listWidgetChunkDefs.setAutoScrollMargin(20)
self.listWidgetChunkDefs.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.listWidgetChunkDefs.setProperty("showDropIndicator", False)
self.listWidgetChunkDefs.setSelectionBehavior(QAbstractItemView.SelectItems)
self.listWidgetChunkDefs.setIconSize(QSize(24, 24))
self.listWidgetChunkDefs.setViewMode(QListView.ListMode)
self.listWidgetChunkDefs.setUniformItemSizes(True)
self.listWidgetChunkDefs.setSelectionRectVisible(True)
self.listWidgetChunkDefs.setSortingEnabled(False)
self.gridLayout.addWidget(self.listWidgetChunkDefs, 1, 0, 1, 1)
self.horizontalLayout_6 = QHBoxLayout()
self.horizontalLayout_6.setSpacing(5)
self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
self.pushButton_sremove = QPushButton(self.gridLayoutWidget)
self.pushButton_sremove.setObjectName(u"pushButton_sremove")
self.pushButton_sremove.setEnabled(True)
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.pushButton_sremove.sizePolicy().hasHeightForWidth())
self.pushButton_sremove.setSizePolicy(sizePolicy3)
self.pushButton_sremove.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_sremove.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Remove<br/></span>Remove selected definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_sremove.setText(u"Remove")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-full-recycle-bin-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_sremove.setIcon(icon7)
self.pushButton_sremove.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_sremove.setShortcut(u"R")
#endif // QT_CONFIG(shortcut)
self.pushButton_sremove.setAutoDefault(False)
self.horizontalLayout_6.addWidget(self.pushButton_sremove)
self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_6.addItem(self.horizontalSpacer_3)
self.pushButton_sedit = QPushButton(self.gridLayoutWidget)
self.pushButton_sedit.setObjectName(u"pushButton_sedit")
self.pushButton_sedit.setEnabled(True)
sizePolicy3.setHeightForWidth(self.pushButton_sedit.sizePolicy().hasHeightForWidth())
self.pushButton_sedit.setSizePolicy(sizePolicy3)
self.pushButton_sedit.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_sedit.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Edit</span><br/>Edit selected chunk definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_sedit.setLayoutDirection(Qt.RightToLeft)
self.pushButton_sedit.setText(u"Edit")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-design-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_sedit.setIcon(icon8)
self.pushButton_sedit.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_sedit.setShortcut(u"E")
#endif // QT_CONFIG(shortcut)
self.pushButton_sedit.setAutoDefault(False)
self.horizontalLayout_6.addWidget(self.pushButton_sedit)
self.gridLayout.addLayout(self.horizontalLayout_6, 2, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 3, 0, 1, 2)
self.formLayout = QFormLayout()
self.formLayout.setSpacing(5)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setHorizontalSpacing(5)
self.formLayout.setVerticalSpacing(5)
self.label_menuSet = QLabel(self.gridLayoutWidget)
self.label_menuSet.setObjectName(u"label_menuSet")
sizePolicy1.setHeightForWidth(self.label_menuSet.sizePolicy().hasHeightForWidth())
self.label_menuSet.setSizePolicy(sizePolicy1)
self.label_menuSet.setFont(font)
self.label_menuSet.setFrameShape(QFrame.StyledPanel)
self.label_menuSet.setText(u"Menu Settings")
self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_menuSet)
self.label_nameicon = QLabel(self.gridLayoutWidget)
self.label_nameicon.setObjectName(u"label_nameicon")
self.label_nameicon.setMinimumSize(QSize(80, 0))
self.label_nameicon.setMaximumSize(QSize(80, 16777215))
self.label_nameicon.setText(u"Name")
self.label_nameicon.setIndent(5)
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_nameicon)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setSpacing(5)
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.lineEdit_name = QLineEdit(self.gridLayoutWidget)
self.lineEdit_name.setObjectName(u"lineEdit_name")
sizePolicy4 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.lineEdit_name.sizePolicy().hasHeightForWidth())
self.lineEdit_name.setSizePolicy(sizePolicy4)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(12)
self.lineEdit_name.setFont(font2)
self.lineEdit_name.setPlaceholderText(u"Name shown in list...")
self.horizontalLayout_4.addWidget(self.lineEdit_name)
self.formLayout.setLayout(1, QFormLayout.FieldRole, self.horizontalLayout_4)
self.label_nameicon_2 = QLabel(self.gridLayoutWidget)
self.label_nameicon_2.setObjectName(u"label_nameicon_2")
sizePolicy5 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
sizePolicy5.setHorizontalStretch(0)
sizePolicy5.setVerticalStretch(0)
sizePolicy5.setHeightForWidth(self.label_nameicon_2.sizePolicy().hasHeightForWidth())
self.label_nameicon_2.setSizePolicy(sizePolicy5)
font3 = QFont()
font3.setFamily(u"Segoe UI")
font3.setPointSize(9)
self.label_nameicon_2.setFont(font3)
self.label_nameicon_2.setText(u"Icon")
self.label_nameicon_2.setIndent(5)
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_nameicon_2)
self.comboBox_icon = QComboBox(self.gridLayoutWidget)
self.comboBox_icon.setObjectName(u"comboBox_icon")
sizePolicy6 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy6.setHorizontalStretch(0)
sizePolicy6.setVerticalStretch(0)
sizePolicy6.setHeightForWidth(self.comboBox_icon.sizePolicy().hasHeightForWidth())
self.comboBox_icon.setSizePolicy(sizePolicy6)
self.comboBox_icon.setMaximumSize(QSize(100, 16777215))
#if QT_CONFIG(tooltip)
self.comboBox_icon.setToolTip(u"Choose icon to be used in list...")
#endif // QT_CONFIG(tooltip)
self.comboBox_icon.setIconSize(QSize(24, 24))
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_icon)
self.label_chunkSet = QLabel(self.gridLayoutWidget)
self.label_chunkSet.setObjectName(u"label_chunkSet")
sizePolicy1.setHeightForWidth(self.label_chunkSet.sizePolicy().hasHeightForWidth())
self.label_chunkSet.setSizePolicy(sizePolicy1)
self.label_chunkSet.setFont(font)
self.label_chunkSet.setFrameShape(QFrame.StyledPanel)
self.label_chunkSet.setText(u"Chunk Settings")
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.label_chunkSet)
self.horizontalLayout_7 = QHBoxLayout()
self.horizontalLayout_7.setSpacing(5)
self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
self.groupBoxChunkName = QGroupBox(self.gridLayoutWidget)
self.groupBoxChunkName.setObjectName(u"groupBoxChunkName")
sizePolicy7 = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Preferred)
sizePolicy7.setHorizontalStretch(0)
sizePolicy7.setVerticalStretch(0)
sizePolicy7.setHeightForWidth(self.groupBoxChunkName.sizePolicy().hasHeightForWidth())
self.groupBoxChunkName.setSizePolicy(sizePolicy7)
self.groupBoxChunkName.setMinimumSize(QSize(0, 130))
font4 = QFont()
font4.setFamily(u"Segoe UI")
font4.setPointSize(9)
font4.setBold(True)
font4.setWeight(75)
self.groupBoxChunkName.setFont(font4)
self.groupBoxChunkName.setTitle(u"Chunk Name Format")
self.gridLayoutWidget_2 = QWidget(self.groupBoxChunkName)
self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2")
self.gridLayoutWidget_2.setGeometry(QRect(12, 25, 411, 100))
self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setSpacing(5)
self.gridLayout_2.setContentsMargins(10, 10, 10, 10)
self.gridLayout_2.setObjectName(u"gridLayout_2")
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.radioButton_5 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_5.setObjectName(u"radioButton_5")
sizePolicy8 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy8.setHorizontalStretch(0)
sizePolicy8.setVerticalStretch(0)
sizePolicy8.setHeightForWidth(self.radioButton_5.sizePolicy().hasHeightForWidth())
self.radioButton_5.setSizePolicy(sizePolicy8)
font5 = QFont()
font5.setFamily(u"Segoe UI")
font5.setPointSize(9)
font5.setBold(False)
font5.setWeight(50)
self.radioButton_5.setFont(font5)
self.radioButton_5.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_5.setToolTip(u"<html><head/><body><p>Use date and time found in first image file that is imported from work folder.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_5.setText(u"Image date-time")
self.gridLayout_2.addWidget(self.radioButton_5, 1, 1, 1, 1)
self.radioButton_3 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_3.setObjectName(u"radioButton_3")
sizePolicy8.setHeightForWidth(self.radioButton_3.sizePolicy().hasHeightForWidth())
self.radioButton_3.setSizePolicy(sizePolicy8)
self.radioButton_3.setFont(font5)
self.radioButton_3.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_3.setToolTip(u"<html><head/><body><p>Use metadata string from point file that must be located in imported data folder, and must also have the same name as data folder..</p><p><span style=\" font-weight:600;\">Info:</span> String must be in metadata format at the beginnig of point file, as described in help.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_3.setText(u"Point File Metadata")
self.gridLayout_2.addWidget(self.radioButton_3, 2, 0, 1, 1)
self.radioButton_6 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_6.setObjectName(u"radioButton_6")
sizePolicy8.setHeightForWidth(self.radioButton_6.sizePolicy().hasHeightForWidth())
self.radioButton_6.setSizePolicy(sizePolicy8)
self.radioButton_6.setFont(font5)
self.radioButton_6.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_6.setToolTip(u"<html><head/><body><p>Use date and time at which chunk is created in custom provided format.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_6.setText(u"Custom date-time")
self.gridLayout_2.addWidget(self.radioButton_6, 2, 1, 1, 1)
self.radioButton_2 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_2.setObjectName(u"radioButton_2")
sizePolicy8.setHeightForWidth(self.radioButton_2.sizePolicy().hasHeightForWidth())
self.radioButton_2.setSizePolicy(sizePolicy8)
self.radioButton_2.setFont(font5)
self.radioButton_2.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_2.setToolTip(u"<html><head/><body><p>Uses the name of folder from which data is beeing imported from.</p><p>* Recommended naming format.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_2.setText(u"Data Folder Name")
self.gridLayout_2.addWidget(self.radioButton_2, 1, 0, 1, 1)
self.radioButton_1 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_1.setObjectName(u"radioButton_1")
sizePolicy8.setHeightForWidth(self.radioButton_1.sizePolicy().hasHeightForWidth())
self.radioButton_1.setSizePolicy(sizePolicy8)
self.radioButton_1.setFont(font5)
self.radioButton_1.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_1.setToolTip(u"<html><head/><body><p>Use default naming format provided by Metashape.</p><p>Example: Chunk 1, Chunk 2,...</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_1.setText(u"Metashape Default")
self.gridLayout_2.addWidget(self.radioButton_1, 0, 0, 1, 1)
self.radioButton_4 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_4.setObjectName(u"radioButton_4")
sizePolicy8.setHeightForWidth(self.radioButton_4.sizePolicy().hasHeightForWidth())
self.radioButton_4.setSizePolicy(sizePolicy8)
self.radioButton_4.setFont(font5)
self.radioButton_4.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_4.setToolTip(u"<html><head/><body><p>Use date and time at which chunk is created.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_4.setText(u"Creation date-time")
self.gridLayout_2.addWidget(self.radioButton_4, 0, 1, 1, 1)
self.horizontalLayout_8 = QHBoxLayout()
self.horizontalLayout_8.setSpacing(5)
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
self.horizontalSpacer_4 = QSpacerItem(225, 0, QSizePolicy.Fixed, QSizePolicy.Minimum)
self.horizontalLayout_8.addItem(self.horizontalSpacer_4)
self.lineEdit = QLineEdit(self.gridLayoutWidget_2)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setEnabled(False)
sizePolicy8.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
self.lineEdit.setSizePolicy(sizePolicy8)
self.lineEdit.setMinimumSize(QSize(140, 0))
self.lineEdit.setFont(font5)
#if QT_CONFIG(tooltip)
self.lineEdit.setToolTip(u"<html><head/><body><p>Enter format string in python format.</p><p>*For details please check help first.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.lineEdit.setPlaceholderText(u"%Y%m%d-%H%M%S")
self.horizontalLayout_8.addWidget(self.lineEdit)
self.horizontalSpacer_5 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_8.addItem(self.horizontalSpacer_5)
self.gridLayout_2.addLayout(self.horizontalLayout_8, 3, 0, 1, 2)
self.horizontalLayout_7.addWidget(self.groupBoxChunkName)
self.formLayout.setLayout(4, QFormLayout.SpanningRole, self.horizontalLayout_7)
self.label_wfolder_2 = QLabel(self.gridLayoutWidget)
self.label_wfolder_2.setObjectName(u"label_wfolder_2")
self.label_wfolder_2.setFont(font3)
self.label_wfolder_2.setText(u"Prefix/Suffix")
self.label_wfolder_2.setIndent(5)
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_wfolder_2)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setSpacing(5)
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.lineEdit_pre = QLineEdit(self.gridLayoutWidget)
self.lineEdit_pre.setObjectName(u"lineEdit_pre")
self.lineEdit_pre.setEnabled(False)
sizePolicy4.setHeightForWidth(self.lineEdit_pre.sizePolicy().hasHeightForWidth())
self.lineEdit_pre.setSizePolicy(sizePolicy4)
#if QT_CONFIG(tooltip)
self.lineEdit_pre.setToolTip(u"Leave empty to disable prefix.")
#endif // QT_CONFIG(tooltip)
self.lineEdit_pre.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.lineEdit_pre.setPlaceholderText(u"PREFIX_")
self.horizontalLayout_5.addWidget(self.lineEdit_pre)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
self.label.setStyleSheet(u"color: rgb(157, 158, 149);")
self.label.setText(u"<chunk name>")
self.label.setAlignment(Qt.AlignCenter)
self.horizontalLayout_5.addWidget(self.label)
self.lineEdit_suf = QLineEdit(self.gridLayoutWidget)
self.lineEdit_suf.setObjectName(u"lineEdit_suf")
self.lineEdit_suf.setEnabled(False)
sizePolicy4.setHeightForWidth(self.lineEdit_suf.sizePolicy().hasHeightForWidth())
self.lineEdit_suf.setSizePolicy(sizePolicy4)
#if QT_CONFIG(tooltip)
self.lineEdit_suf.setToolTip(u"Leave empty to disable suffix.")
#endif // QT_CONFIG(tooltip)
self.lineEdit_suf.setPlaceholderText(u"_SUFFIX")
self.horizontalLayout_5.addWidget(self.lineEdit_suf)
self.formLayout.setLayout(5, QFormLayout.FieldRole, self.horizontalLayout_5)
self.label_wfolder = QLabel(self.gridLayoutWidget)
self.label_wfolder.setObjectName(u"label_wfolder")
self.label_wfolder.setFont(font3)
self.label_wfolder.setText(u"Data Folder")
self.label_wfolder.setIndent(5)
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_wfolder)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.lineEdit_wfolder = QLineEdit(self.gridLayoutWidget)
self.lineEdit_wfolder.setObjectName(u"lineEdit_wfolder")
self.lineEdit_wfolder.setPlaceholderText(u"Path to folder with data...")
self.horizontalLayout.addWidget(self.lineEdit_wfolder)
self.pushButton_browsewf = QPushButton(self.gridLayoutWidget)
self.pushButton_browsewf.setObjectName(u"pushButton_browsewf")
sizePolicy3.setHeightForWidth(self.pushButton_browsewf.sizePolicy().hasHeightForWidth())
self.pushButton_browsewf.setSizePolicy(sizePolicy3)
#if QT_CONFIG(tooltip)
self.pushButton_browsewf.setToolTip(u"<html><head/><body><p>Select location with working data for this definition.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_browsewf.setText(u"")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-opened-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_browsewf.setIcon(icon9)
self.pushButton_browsewf.setIconSize(QSize(20, 20))
self.pushButton_browsewf.setAutoDefault(False)
self.horizontalLayout.addWidget(self.pushButton_browsewf)
self.formLayout.setLayout(6, QFormLayout.FieldRole, self.horizontalLayout)
self.label_efolder = QLabel(self.gridLayoutWidget)
self.label_efolder.setObjectName(u"label_efolder")
self.label_efolder.setFont(font3)
self.label_efolder.setText(u"Export Folder")
self.label_efolder.setIndent(5)
self.formLayout.setWidget(7, QFormLayout.LabelRole, self.label_efolder)
self.horizontalLayout_10 = QHBoxLayout()
self.horizontalLayout_10.setSpacing(5)
self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
self.lineEdit_efolder = QLineEdit(self.gridLayoutWidget)
self.lineEdit_efolder.setObjectName(u"lineEdit_efolder")
self.lineEdit_efolder.setPlaceholderText(u"Path to folder for exporting...")
self.horizontalLayout_10.addWidget(self.lineEdit_efolder)
self.pushButton_browseef = QPushButton(self.gridLayoutWidget)
self.pushButton_browseef.setObjectName(u"pushButton_browseef")
sizePolicy3.setHeightForWidth(self.pushButton_browseef.sizePolicy().hasHeightForWidth())
self.pushButton_browseef.setSizePolicy(sizePolicy3)
#if QT_CONFIG(tooltip)
self.pushButton_browseef.setToolTip(u"<html><head/><body><p>Select location with working data for this definition.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_browseef.setText(u"")
self.pushButton_browseef.setIcon(icon9)
self.pushButton_browseef.setIconSize(QSize(20, 20))
self.pushButton_browseef.setAutoDefault(False)
self.horizontalLayout_10.addWidget(self.pushButton_browseef)
self.formLayout.setLayout(7, QFormLayout.FieldRole, self.horizontalLayout_10)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setSpacing(5)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
self.pushButton_save = QPushButton(self.gridLayoutWidget)
self.pushButton_save.setObjectName(u"pushButton_save")
self.pushButton_save.setEnabled(False)
sizePolicy3.setHeightForWidth(self.pushButton_save.sizePolicy().hasHeightForWidth())
self.pushButton_save.setSizePolicy(sizePolicy3)
self.pushButton_save.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_save.setToolTip(u"<html><head/><body><p>Save currently selected chunk definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_save.setText(u"Save")
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_save.setIcon(icon10)
self.pushButton_save.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_save.setShortcut(u"S")
#endif // QT_CONFIG(shortcut)
self.pushButton_save.setAutoDefault(False)
self.horizontalLayout_2.addWidget(self.pushButton_save)
self.pushButton_add = QPushButton(self.gridLayoutWidget)
self.pushButton_add.setObjectName(u"pushButton_add")
sizePolicy3.setHeightForWidth(self.pushButton_add.sizePolicy().hasHeightForWidth())
self.pushButton_add.setSizePolicy(sizePolicy3)
self.pushButton_add.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_add.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Add new</span><br/>Add new chunk settings definition</p><p>*Crates new chunk definition with current options.<br/>**Definition Name must be unique.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_add.setText(u"Add New")
icon11 = QIcon()
icon11.addFile(u":/icons/icons8-add-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_add.setIcon(icon11)
self.pushButton_add.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_add.setShortcut(u"A")
#endif // QT_CONFIG(shortcut)
self.pushButton_add.setAutoDefault(True)
self.horizontalLayout_2.addWidget(self.pushButton_add)
self.formLayout.setLayout(9, QFormLayout.FieldRole, self.horizontalLayout_2)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(10, QFormLayout.LabelRole, self.verticalSpacer)
self.line_2 = QFrame(self.gridLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(8, QFormLayout.SpanningRole, self.line_2)
self.gridLayout.addLayout(self.formLayout, 0, 1, 3, 1)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setSpacing(5)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
font6 = QFont()
font6.setFamily(u"Segoe UI")
font6.setPointSize(8)
self.label_2.setFont(font6)
self.label_2.setText(u"<html><head/><body><p><span style=\" font-weight:600; font-style:italic;\">Shortcuts</span>: [A] Add New / [E] Edit / [R] Remove / [S] Save / [C] Close</p></body></html>")
self.horizontalLayout_3.addWidget(self.label_2)
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer)
self.pushButton_close = QPushButton(self.gridLayoutWidget)
self.pushButton_close.setObjectName(u"pushButton_close")
sizePolicy3.setHeightForWidth(self.pushButton_close.sizePolicy().hasHeightForWidth())
self.pushButton_close.setSizePolicy(sizePolicy3)
self.pushButton_close.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_close.setToolTip(u"Close Chunk Settings Editor")
#endif // QT_CONFIG(tooltip)
self.pushButton_close.setText(u"Close")
icon12 = QIcon()
icon12.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_close.setIcon(icon12)
self.pushButton_close.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_close.setShortcut(u"C")
#endif // QT_CONFIG(shortcut)
self.horizontalLayout_3.addWidget(self.pushButton_close)
self.gridLayout.addLayout(self.horizontalLayout_3, 4, 0, 1, 2)
QWidget.setTabOrder(self.listWidgetChunkDefs, self.pushButton_sremove)
QWidget.setTabOrder(self.pushButton_sremove, self.pushButton_sedit)
QWidget.setTabOrder(self.pushButton_sedit, self.lineEdit_name)
QWidget.setTabOrder(self.lineEdit_name, self.comboBox_icon)
QWidget.setTabOrder(self.comboBox_icon, self.radioButton_1)
QWidget.setTabOrder(self.radioButton_1, self.radioButton_2)
QWidget.setTabOrder(self.radioButton_2, self.radioButton_3)
QWidget.setTabOrder(self.radioButton_3, self.radioButton_4)
QWidget.setTabOrder(self.radioButton_4, self.radioButton_5)
QWidget.setTabOrder(self.radioButton_5, self.radioButton_6)
QWidget.setTabOrder(self.radioButton_6, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.lineEdit_pre)
QWidget.setTabOrder(self.lineEdit_pre, self.lineEdit_suf)
QWidget.setTabOrder(self.lineEdit_suf, self.lineEdit_wfolder)
QWidget.setTabOrder(self.lineEdit_wfolder, self.pushButton_browsewf)
QWidget.setTabOrder(self.pushButton_browsewf, self.lineEdit_efolder)
QWidget.setTabOrder(self.lineEdit_efolder, self.pushButton_browseef)
QWidget.setTabOrder(self.pushButton_browseef, self.pushButton_save)
QWidget.setTabOrder(self.pushButton_save, self.pushButton_add)
QWidget.setTabOrder(self.pushButton_add, self.pushButton_close)
self.btnAction = True
self.selFormat = str("metashape")
self.pushButton_sremove.clicked.connect(self.removeSelectedItem)
self.pushButton_add.clicked.connect(self.addBtnAction)
self.pushButton_close.clicked.connect(self.reject)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_sedit.setEnabled(True))
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_sremove.setEnabled(True))
self.pushButton_sedit.clicked.connect(self.editSelectedItem)
self.pushButton_browsewf.clicked.connect(self.selectWorkFolder)
self.pushButton_browseef.clicked.connect(self.selectExportFolder)
self.pushButton_save.clicked.connect(self.saveSelectedItem)
self.radioButton_1.toggled.connect(self.lineEdit_pre.setDisabled)
self.radioButton_1.toggled.connect(self.lineEdit_suf.setDisabled)
self.radioButton_2.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_2.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_3.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_3.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_4.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_4.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_5.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_5.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit.setEnabled)
self.radioButton_1.toggled.connect(self.updateChunkFormat)
self.radioButton_2.toggled.connect(self.updateChunkFormat)
self.radioButton_3.toggled.connect(self.updateChunkFormat)
self.radioButton_4.toggled.connect(self.updateChunkFormat)
self.radioButton_5.toggled.connect(self.updateChunkFormat)
self.radioButton_6.toggled.connect(self.updateChunkFormat)
self.pushButton_close.setDefault(True)
self.listChunkDefs()
self.readIconsIni()
self.selectChunkFormat()
self.exec()
# Dialog setup end
def updateChunkFormat(self):
selected_format = self.sender()
if selected_format.isChecked():
sel_name = selected_format.text()
self.selFormat = str(sel_name).split(" ")[0].lower()
self.selectChunkFormat()
def selectChunkFormat(self):
if self.selFormat == "metashape":
self.radioButton_1.setChecked(True)
elif self.selFormat == "data":
self.radioButton_2.setChecked(True)
elif self.selFormat == "point":
self.radioButton_3.setChecked(True)
elif self.selFormat == "creation":
self.radioButton_4.setChecked(True)
elif self.selFormat == "image":
self.radioButton_5.setChecked(True)
elif self.selFormat == "custom":
self.radioButton_6.setChecked(True)
def listChunkDefs(self):
self.lineEdit_wfolder.setText(autoftg_main.selected_data_folder)
self.pushButton_save.setDisabled(True)
self.pushButton_sremove.setEnabled(True)
self.listWidgetChunkDefs.clear()
for section in autoftg_main.chunk_sections:
menu_icon = autoftg_main.menuCfg.get(section, "menu_icon")
menu_icon_path = u":/icons/" + autoftg_main.icoCfg.get("ICONS", menu_icon)
seticon = QIcon()
seticon.addFile(menu_icon_path, QSize(), QIcon.Normal, QIcon.Off)
self.qlistwidgetitem = QListWidgetItem(self.listWidgetChunkDefs)
self.qlistwidgetitem.setText(section)
self.qlistwidgetitem.setIcon(seticon)
def readIconsIni(self):
ico_count = 0
for iconitem in autoftg_main.icons_list:
aicon_name = "ico-" + str(ico_count)
aicon_path = u":/icons/" + autoftg_main.icoCfg.get("ICONS", iconitem)
aicon = QIcon()
aicon.addFile(aicon_path, QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_icon.addItem(aicon, aicon_name)
ico_count += 1
def editSelectedItem(self):
selected_item = self.listWidgetChunkDefs.currentItem().text()
self.lineEdit_name.setText(selected_item)
self.comboBox_icon.setCurrentText(str(autoftg_main.menuCfg.get(selected_item, "menu_icon")))
self.selFormat = str(autoftg_main.menuCfg.get(selected_item, "chunk_name_format"))
self.selectChunkFormat()
self.lineEdit_wfolder.setText(str(autoftg_main.menuCfg.get(selected_item, "work_folder")))
self.lineEdit_efolder.setText(str(autoftg_main.menuCfg.get(selected_item, "export_folder")))
self.lineEdit_pre.setText(str(autoftg_main.menuCfg.get(selected_item, "chunk_name_prefix")))
self.lineEdit_suf.setText(str(autoftg_main.menuCfg.get(selected_item, "chunk_name_suffix")))
self.lineEdit_name.setDisabled(True)
self.listWidgetChunkDefs.setDisabled(True)
self.pushButton_sedit.setDisabled(True)
self.pushButton_sremove.setDisabled(True)
self.pushButton_save.setEnabled(True)
self.pushButton_add.setText(u"Cancel")
abanicon = QIcon()
abanicon.addFile(u":/icons/icons8-unavailable-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_add.setIcon(abanicon)
self.btnAction = False
def removeSelectedItem(self):
selected_item = self.listWidgetChunkDefs.currentItem().text()
confirm_remove = Metashape.app.getBool("Remove (" + selected_item + ")?")
if confirm_remove == True:
self.backupSettings()
autoftg_main.menuCfg.remove_section(selected_item)
with open(autoftg_main.menuCfgFilePath, 'w') as menuconfig:
autoftg_main.menuCfg.write(menuconfig)
self.lineEdit_name.clear
self.comboBox_icon.setCurrentIndex(0)
self.lineEdit_wfolder.clear
self.lineEdit_efolder.clear
self.lineEdit_pre.clear
self.lineEdit_suf.clear
self.pushButton_sedit.setEnabled(True)
self.pushButton_save.setDisabled(True)
self.pushButton_add.setEnabled(True)
self.lineEdit_name.setEnabled(True)
self.listWidgetChunkDefs.takeItem(self.listWidgetChunkDefs.currentRow())
print("Chunk definition removed from settings...\nRemoved: " + str(selected_item) + "\n")
def saveSelectedItem(self):
edit_section = self.lineEdit_name.text()
autoftg_main.menuCfg.set(edit_section, "menu_icon", self.comboBox_icon.currentText())
autoftg_main.menuCfg.set(edit_section, "chunk_name_format", self.selFormat)
autoftg_main.menuCfg.set(edit_section, "chunk_name_prefix", self.lineEdit_pre.text())
autoftg_main.menuCfg.set(edit_section, "chunk_name_suffix", self.lineEdit_suf.text())
autoftg_main.menuCfg.set(edit_section, "work_folder", self.lineEdit_wfolder.text())
autoftg_main.menuCfg.set(edit_section, "export_folder", self.lineEdit_efolder.text())
with open(autoftg_main.menuCfgFilePath, 'w') as menuconfig:
autoftg_main.menuCfg.write(menuconfig)
autoftg_main.chunksCfgLoad()
self.listWidgetChunkDefs.setEnabled(True)
self.lineEdit_name.setEnabled(True)
self.lineEdit_name.clear()
self.lineEdit_wfolder.clear()
self.lineEdit_efolder.clear()
self.lineEdit_pre.clear()
self.lineEdit_suf.clear()
self.comboBox_icon.setCurrentIndex(0)
self.pushButton_save.setDisabled(True)
self.pushButton_sedit.setEnabled(True)
self.pushButton_add.setEnabled(True)
self.pushButton_add.setText(u"Add New")
addicon = QIcon()
addicon.addFile(u":/icons/icons8-add-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_add.setIcon(addicon)
self.pushButton_add_action = False
self.btnAction = True
print("Chunk definition updated...\nUpdated: " + str(edit_section) + "\n")
self.selFormat = str("metashape")
self.selectChunkFormat()
self.listChunkDefs()
def addBtnAction(self):
if self.btnAction == True:
self.backupSettings()
new_section = self.lineEdit_name.text()
autoftg_main.menuCfg.add_section(new_section)
autoftg_main.menuCfg.set(new_section, "menu_icon", self.comboBox_icon.currentText())
autoftg_main.menuCfg.set(new_section, "chunk_name_format", self.selFormat)
autoftg_main.menuCfg.set(new_section, "chunk_name_prefix", self.lineEdit_pre.text())
autoftg_main.menuCfg.set(new_section, "chunk_name_suffix", self.lineEdit_suf.text())
autoftg_main.menuCfg.set(new_section, "work_folder", self.lineEdit_wfolder.text())
autoftg_main.menuCfg.set(new_section, "export_folder", self.lineEdit_efolder.text())
with open(autoftg_main.menuCfgFilePath, 'w') as menuconfig:
autoftg_main.menuCfg.write(menuconfig)
autoftg_main.chunksCfgLoad()
self.listWidgetChunkDefs.setEnabled(True)
self.lineEdit_name.clear()
self.lineEdit_wfolder.clear()
self.lineEdit_efolder.clear()
self.lineEdit_pre.clear()
self.lineEdit_suf.clear()
self.comboBox_icon.setCurrentIndex(0)
self.pushButton_save.setDisabled(True)
print("New chunk definition added...\nAdded: " + str(new_section) + "\n")
self.btnAction = True
self.selFormat = str("metashape")
self.selectChunkFormat()
self.listChunkDefs()
else:
self.listWidgetChunkDefs.setEnabled(True)
self.pushButton_sedit.setEnabled(True)
self.lineEdit_name.setEnabled(True)
self.pushButton_save.setEnabled(True)
self.pushButton_add.setText(u"Add New")
addicon = QIcon()
addicon.addFile(u":/icons/icons8-add-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_add.setIcon(addicon)
self.pushButton_add_action = False
self.lineEdit_name.clear()
self.lineEdit_wfolder.clear()
self.lineEdit_efolder.clear()
self.lineEdit_pre.clear()
self.lineEdit_suf.clear()
self.comboBox_icon.setCurrentIndex(0)
print("Aborted editing chunk definition...")
self.btnAction = True
self.selFormat = str("metashape")
self.selectChunkFormat()
self.listChunkDefs()
def backupSettings(self):
menuCfgFileBackup = "settings_newchunk.old"
menuCfgFileBackupPath = autoftg_main.menuCfgPath + "/" + menuCfgFileBackup
shutil.copy2(autoftg_main.menuCfgFilePath, menuCfgFileBackupPath)
print("Creating backup of chunk definitions...\nBackup file: " + str(menuCfgFileBackup) + "\n")
def selectWorkFolder(self):
if self.lineEdit_wfolder.text() == "" or self.lineEdit_wfolder.text() == None:
sel_folder = Metashape.app.getExistingDirectory("Choose Work Folder", autoftg_main.selected_data_folder)
else:
cur_folder = self.lineEdit_wfolder.text()
sel_folder = Metashape.app.getExistingDirectory("Choose Work Folder", cur_folder)
if sel_folder == "":
self.lineEdit_wfolder.setText(str(cur_folder))
print("Work folder not changed!")
else:
self.lineEdit_wfolder.setText(str(sel_folder))
print("Work folder location selected!")
def selectExportFolder(self):
if self.lineEdit_efolder.text() == "" or self.lineEdit_efolder.text() == None:
sel_folder = Metashape.app.getExistingDirectory("Choose Export Folder", autoftg_main.selected_data_folder)
else:
cur_folder = self.lineEdit_efolder.text()
sel_folder = Metashape.app.getExistingDirectory("Choose Export Folder", cur_folder)
if sel_folder == "":
self.lineEdit_efolder.setText(str(cur_folder))
print("Export folder not changed!")
else:
self.lineEdit_efolder.setText(str(sel_folder))
print("Export folder location selected!")

View File

@ -0,0 +1,161 @@
# Class for settings editing UI
import os
import shutil
import subprocess
import sys
import time
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
class Ui_settingsDialog(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"settingsDialog")
self.resize(300, 100)
self.setWindowTitle(u"AutoFTG Settings")
appIcon = QIcon()
appIcon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
self.setWindowIcon(appIcon)
icon = QIcon()
icon.addFile(u":/icons/icons8-opened-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon0 = QIcon()
icon0.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-panorama-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-video-stabilization-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-touchscreen-48.png", QSize(), QIcon.Normal, QIcon.Off)
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-quadcopter-50.png", QSize(), QIcon.Normal, QIcon.Off)
icon5a = QIcon()
icon5a.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
icoTripod = QIcon()
icoTripod.addFile(u":/icons/icons8-camera-on-tripod-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.label_2 = QtWidgets.QLabel()
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(10, 40, 80, 16))
self.label_2.setText("Data Folder:")
self.lineDataFolder = QtWidgets.QLineEdit()
self.lineDataFolder.setObjectName(u"lineDataFolder")
self.lineDataFolder.setGeometry(QRect(10, 40, 280, 24))
self.lineDataFolder.setText(str(autoftg_main.selected_data_folder))
self.lineDataFolder.setClearButtonEnabled(True)
self.btnDataFolder = QtWidgets.QPushButton()
self.btnDataFolder.setObjectName(u"btnDataFolder")
self.btnDataFolder.setGeometry(QRect(300, 40, 80, 24))
self.btnDataFolder.setText(u" Browse")
self.btnDataFolder.setIcon(icon)
self.btnDataFolder.setIconSize(QSize(21, 21))
self.label_3 = QtWidgets.QLabel()
self.label_3.setObjectName(u"label_3")
self.label_3.setGeometry(QRect(10, 70, 90, 16))
self.label_3.setText("Default Camera:")
self.comboBoxCamera = QtWidgets.QComboBox()
self.comboBoxCamera.setObjectName(u"comboBoxCamera")
self.comboBoxCamera.setGeometry(QRect(10, 70, 280, 24))
for cam in autoftg_main.cam_list:
icon_type = autoftg_main.camCfg.get(cam, "Type")
icon_subtype = autoftg_main.camCfg.get(cam, "SubType")
if icon_subtype == "SmartPhone":
self.comboBoxCamera.addItem(icon4, cam)
elif icon_subtype == "Drone":
self.comboBoxCamera.addItem(icon5, cam)
elif icon_subtype == "Special":
self.comboBoxCamera.addItem(icoTripod, cam)
else:
if icon_type == "Fisheye":
self.comboBoxCamera.addItem(icon1, cam)
elif icon_type == "Spherical":
self.comboBoxCamera.addItem(icon3, cam)
elif icon_type == "Cylindrical":
self.comboBoxCamera.addItem(icon2, cam)
elif icon_type == "RPC":
self.comboBoxCamera.addItem(icon5a, cam)
else:
self.comboBoxCamera.addItem(icon0, cam)
self.comboBoxCamera.setCurrentText(str(autoftg_main.selected_camera))
self.btnClose = QtWidgets.QPushButton()
self.btnClose.setObjectName(u"btnClose")
self.btnClose.setGeometry(QRect(220, 90, 75, 24))
self.btnClose.setText(u"Close")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.btnClose.setIcon(icon1)
self.btnSave = QtWidgets.QPushButton()
self.btnSave.setObjectName(u"btnSave")
self.btnSave.setGeometry(QRect(300, 90, 75, 24))
self.btnSave.setText(u" Save")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.btnSave.setIcon(icon2)
self.btnSave.setIconSize(QSize(12, 12))
layout = QtWidgets.QGridLayout() # creating layout
layout.setRowMinimumHeight(0, 24)
layout.setRowMinimumHeight(1, 24)
layout.setRowMinimumHeight(2, 24)
layout.setVerticalSpacing(1)
layout.setColumnMinimumWidth(1, 250) # minimum column width
layout.setColumnMinimumWidth(2, 80) # minimum column width
layout.addWidget(self.label_2, 0, 0)
layout.addWidget(self.lineDataFolder, 0, 1)
layout.addWidget(self.btnDataFolder, 0, 2)
layout.addWidget(self.label_3, 1, 0)
layout.addWidget(self.comboBoxCamera, 1, 1)
layout.addWidget(self.btnClose, 2, 2)
layout.addWidget(self.btnSave, 2, 1)
self.setLayout(layout)
QtCore.QObject.connect(self.btnDataFolder, QtCore.SIGNAL("clicked()"), self.dataFolderChange)
QtCore.QObject.connect(self.btnSave, QtCore.SIGNAL("clicked()"), self.saveSettingsDialog)
QtCore.QObject.connect(self.btnClose, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))
self.exec()
def dataFolderChange(self):
foldeData = Metashape.app.getExistingDirectory("Data folder")
self.lineDataFolder.setText(foldeData)
def saveSettingsDialog(self):
if autoftg_main.projectOpened == False:
# settings.folderProject = self.lineProjFolder.text()
autoftg_main.appCfg.set('APP SETTINGS', 'folder_data', self.lineDataFolder.text())
autoftg_main.appCfg.set('APP SETTINGS', 'default_camera', self.comboBoxCamera.currentText())
with open(autoftg_main.appCfgFilePath, 'w') as configfile:
autoftg_main.projCfg.write(configfile)
autoftg_main.appCfgLoad()
else:
autoftg_main.projCfg.set('PROJECT SETTINGS', 'folder_data', self.lineDataFolder.text())
autoftg_main.projCfg.set('PROJECT SETTINGS', 'default_camera', self.comboBoxCamera.currentText())
with open(autoftg_main.projCfgFilePath, 'w') as configfile:
autoftg_main.projCfg.write(configfile)
autoftg_main.projCfgLoad
print("New settings stored.")
self.close()

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<calibration>
<projection>frame</projection>
<width>8000</width>
<height>6000</height>
<f>5949.2577887575562</f>
<cx>-16.858586799645682</cx>
<cy>6.9297739623051955</cy>
<k1>0.06183156704068507</k1>
<k2>-0.052085977126058329</k2>
<k3>0.00093346222586235391</k3>
<p1>7.7841569871330032e-05</p1>
<p2>-1.3742978314915434e-05</p2>
<date>2022-12-14T22:33:20Z</date>
</calibration>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<calibration>
<projection>frame</projection>
<width>4864</width>
<height>3648</height>
<f>3642.4586569095004</f>
<cx>-26.20533187721805</cx>
<cy>22.509946934359323</cy>
<k1>0.0034303484641685961</k1>
<k2>-0.029528860312119098</k2>
<k3>0.031944195638341756</k3>
<p1>-0.00077758766885169554</p1>
<p2>0.0013154014373500393</p2>
<date>2022-12-11T03:59:30Z</date>
</calibration>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<calibration>
<projection>frame</projection>
<width>5472</width>
<height>3648</height>
<f>3648</f>
<cx>-25.918766710664446</cx>
<cy>23.405676347845692</cy>
<b1>-0.51312839315309644</b1>
<b2>0.25322447760187261</b2>
<k1>0.0065018308409430878</k1>
<k2>-0.047077548067024473</k2>
<k3>0.087046999385756788</k3>
<k4>-0.052720628316722043</k4>
<p1>-0.00070814442936357363</p1>
<p2>0.0013447081640380787</p2>
<date>2022-08-30T14:44:53Z</date>
</calibration>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<calibration>
<projection>fisheye</projection>
<width>5472</width>
<height>3648</height>
<f>2395.9049092644814</f>
<cx>28.306193808768743</cx>
<cy>16.276208632406714</cy>
<b1>0.23366816925064518</b1>
<b2>-0.062077141088196834</b2>
<k1>-0.032947598125546963</k1>
<k2>-0.0046102174449926042</k2>
<k3>-0.0019801718128141794</k3>
<k4>0.00036858601676320081</k4>
<p1>-4.1725187384440624e-05</p1>
<p2>-0.000380611425518336</p2>
<corrections type="fourier">
<coeffs>-6.3945686289750267e-02 3.5146027180516751e-02 -5.5226265704547035e-03 -9.1974359029452210e-02 -5.3052913509804445e-01 -1.9488079722362986e-01 -6.6112068428416354e-02 4.5716897386227313e-02 -1.5141693828049693e-03 -9.5944348230835641e-02 -6.9205527717949453e-02 -8.6773632067643131e-02 -7.0993461615531078e-02 -4.9604796051000337e-03 -8.7751656498662720e-02 1.4604457750904382e-01 3.1923767282629724e-02 1.2364161564810947e-02 -6.7266949470222177e-03 5.0377111726327990e-03 -7.9363711440254819e-03 3.9993787887379981e-03 4.3370912524256875e-03 -1.2900461525504416e-02 -6.3338800148866822e-03 4.6724751692046554e-02 1.5079432911852533e-02 2.6994360045272659e-02 -1.8073152090738774e-03 -1.3746939447026789e-03 1.8533058313818747e-02 -3.2732411262070091e-02 5.8452418835034372e-03 -7.6863559626421135e-02 -8.1829717388860346e-03 -1.7142512692114233e-02 -1.0803748077460439e-02 -2.1152191183603963e-02 -8.8287010835301147e-02 -5.3588376457133539e-02 -1.6947788143207432e-01 6.4545485450826614e-03 -7.8822228355761512e-02 2.9846630201566020e-02 -5.6231605842827273e-04 -1.7745632717892208e-02 -5.3358197410977278e-03 3.0764890662908044e-02 -9.3180529545109358e-03 2.6362202525090058e-03 -8.0617514962319980e-04 -8.0827201198657942e-03 1.1400731168998148e-03 -1.1392579013964552e-02 2.7995535763079117e-03 6.8643326658448583e-03 5.6427477168201649e-03 8.2628507219037288e-04 3.4034699387983820e-03 7.6028755504955600e-03 4.7270990455518681e-03 -1.6120335063307758e-02 -1.0168575858201327e-02 -1.2099688532744991e-02 -1.8402827313321918e-03 1.2017531946232295e-03 1.7608234177142479e-03 -9.2370297720835454e-03 4.1925952385714537e-03 -1.9503685471518369e-03 -7.6846982509282047e-03 5.1070153224798270e-03 4.8677898101625282e-03 7.8212097646356539e-05 -4.0088203177361809e-03 2.7189768721984819e-02 -1.5346404725761153e-03 2.7862663726475087e-03 -2.6384612649900879e-04 4.1111350836209159e-03 6.5738774213792922e-03 1.2657875061939576e-02 -1.6884518270627398e-03 -2.0099080862808860e-03 -3.8113862149921768e-02 -4.3269358271587110e-03 -1.6970969985882496e-03 9.9999988295849454e-03 1.3621598215652670e-02 -2.9380785598949132e-03 5.2831430929268629e-03 -1.1051471033296031e-02 -1.2957719199348028e-03 2.5371806835550043e-03 -2.9522836054896285e-03 -7.7666132465475587e-03</coeffs>
<extent>
<min>0 0</min>
<max>5.4720000000000000e+03 3.6480000000000000e+03</max>
</extent>
</corrections>
<date>2022-08-02T02:30:03Z</date>
</calibration>

View File

@ -0,0 +1,21 @@
[No Calibration - Frame (Default)]
description = Default Metashape camera settings for type FRAME. Calibration is calculated On-The-Fly.
type = Frame
subtype = Standard
resolution = 0
file = None
[No Calibration - Fisheye]
description = Default Metashape camera settings for type FISHEYE. Calibration is calculated On-The-Fly.
type = Fisheye
subtype = Standard
resolution = 0
file = None
[Nokia XR20 48MP]
description = Nokia XR20 smartphone camera by Boris B. (2022/12)
type = Frame
subtype = SmartPhone
resolution = 48
file = Nokia-XR20_48MP_2022-12.xml

14880
AutoFTG/doc/CHANGELOG.html Normal file

File diff suppressed because one or more lines are too long

402
AutoFTG/doc/CHANGELOG.ipynb Normal file
View File

@ -0,0 +1,402 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Release Notes\n",
"\n",
"Release notes for AutoFTG python script\n",
"\n",
"\n",
"---\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## `2.6.4`\n",
"\n",
"### 2023/03/03\n",
"\n",
"- Fixed camera selection bug that prevented to define new settings\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"---\n",
"\n",
"# Release Notes Archive\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## `2.6.3`\n",
"\n",
"### 2023/02/28\n",
"\n",
"- Reorganized functions to separate files for easier further development\n",
"- Added settings dialog for Point Cloud processing in Batch Chunk Creator\n",
"- Changed status icons in tree list for processing/processed items\n",
"- Added columt to display chunk name for existing items, or processing time for items processed\n",
"- Added total time of processing for processed queue\n",
"- Some minor bug-fixes and improvements\n",
"\n",
"### 2023/02/01\n",
"\n",
"## `2.6.2`\n",
"\n",
"- Created tabs for settings in Batch Chunk Creator\n",
"- Added dialog for Align Photos settings\n",
"- Added new options in chunk definitions settings file\n",
"- Minor bug-fixes\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"---\n",
"\n",
"### 2023/01/31\n",
"\n",
"## `2.6.1`\n",
"\n",
"- Changed batch process logging to use python.csv module for working with log files.\n",
"- Updated mesh settings dialog to include options for depth maps generation.\n",
"- Changed values for 'mesh_depthmaps' and 'mesh_face_count_custom'.\n",
"- Removed manual batch processing as it will be replaced with post-processing function.\n",
"- Updated icons for options in Model Settings dialog.\n",
"- Improved routines for batch processing.\n",
"- Moved progress bar text inside the pprogress bar.\n",
"- Fixed 'Process' button status text when processing is in progress.\n",
"- Added new folder 'gui_designs' that contains GUI designs for dialogs used in AutoFTG.\n",
"- Files cleanup.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"---\n",
"\n",
"### 2023/01/28\n",
"\n",
"## `2.6.0`\n",
"\n",
"- Implemented processing of mesh, textures, point cloud, and data export options in Batch Chunk Creator\n",
"- List in Batch Chunk Creator now also show status for mesh and point cloud process (only works if done with batch processing)\n",
"- Added 'export_folder' to chunk definition settings (each definition has it's own export location)\n",
"- Settings dialog to editing options for mesh/texture processing in Batch Chunk Creator\n",
"- Added some new icons used in Batch Chunk Creator\n",
"- Added option in Batch Chunk Creator to open currently selected folder in File Explorer\n",
"- Added save and reset buttons in Batch Chunk Creator to store or reset current settings\n",
"- Created placeholder checkbox to disable importing of new data (in case if doing batch processing of Align Photos, Mesh, Point Cloud separatley for already imported chunks)\n",
"- Minor bug-fixes and improvements\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/25\n",
"\n",
"## `2.5.6` ... `2.5.9`\n",
"\n",
"- Integrated option to align chunk when doing batch import\n",
"- Added column to see which chunks were aligned at import\n",
"- Added option 'set as default' to chunk definition and camera combo boxes in Batch Chunk Creator\n",
"- Implemented loading of project settings when starting Batch Chunk Creator\n",
"- Fixed column widths in Batch Chunk Creator folder list (now adjusts to contents)\n",
"- New menu/dialog for 'Chunk Definition Settings' to Add/Edit/Delete chunk definitions.\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/17\n",
"\n",
"## `2.5.5`\n",
"\n",
"- Added process log file for projects. (Logs imported chunks)\n",
"- New logo icon for AutoFTG\n",
"\n",
"\n",
"## `2.5.4`\n",
"\n",
"1. Cleanup\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/16\n",
"\n",
"## `2.5.3`\n",
"\n",
"- Updates and improvements for processing progres indicators.\n",
"- Added check for options:\n",
" - Automatic Processing\n",
" - Automatic Target Detection\n",
" - Import Marker Coordinates\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/14\n",
"\n",
"## `2.5.2`\n",
"\n",
"- Added processing progres indicators.\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/14\n",
"\n",
"## `2.5.1`\n",
"\n",
"- Added check for point file and image number in Batch Chunk Creator\n",
"- Fixed chunk prefix-suffix handling\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/13\n",
"\n",
"## `2.5.0`\n",
"\n",
"- Added new Batch Chunk Creator\n",
"- Minor bug-fixes and improvements\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/01\n",
"\n",
"## `2.4.6-RC`\n",
"\n",
"- Reworked settings storage for all settings files to use *.ini file strusture.\n",
"- Minor improvements for Camera Editer, Camera Add/Edit, and Edit Settings dialogs.\n",
"\n",
"\n",
"---\n",
"\n",
"### 2023/01/01\n",
"\n",
"## `2.4.5-RC`\n",
"\n",
"- Upgraded Add/Edit Camera dialog to use PySide2 module\n",
"- Added new options for camera Type/SubType in cameras settings (cam_settings.ini)\n",
"- Added 'Spherical', 'Cylindrical', and 'RPC' camera type options\n",
"- Added new icons for camera type/subtype\n",
"- Redone camera list refreshing in Camera Editor\n",
"- Added new settings for chunk creation (category, menu icon, chunk name prefix/suffix)\n",
"- Changed menu options for adding chunks<br>*Now opens a dialog window with drop-down menu containing a list of availabile settings for new chunk creation.*\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/31\n",
"\n",
"## `2.4.4-RC`\n",
"\n",
"- Fixed list in camera editor (not loading properly ofter adding/editing camera)\n",
"- Fixed dialogs for editing prefix/suffix for chunk name creation\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/30\n",
"\n",
"## `2.4.3-RC`\n",
"\n",
"- Fixed list in camera editor (not loading properly ofter adding/editing camera)\n",
"- Fixed camera Save/Edit functions in Camera Editor, so they are now saved with correct values\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/29\n",
"\n",
"## `2.4.2-RC`\n",
"\n",
"- Added option `SubType` and `Resolution` to camera settings configuration (__cam_settings.ini__)\n",
"- Replaced easygui dialogs for Qt PySide2 custom dialog:\n",
" - New Dialog Class: `class Ui_dialogChooseCamera()`\n",
"\n",
"- Function definitions using new camera selection dialog:\n",
" - Updated: `def cam_calibrationSettings()`\n",
" - Updated: `def cam_calibrationChunk()`\n",
" - Updated: `def newchunk_aero()`\n",
"\n",
"- Updated camera list in Camera Editor to use new icons\n",
"- Updated `def appAbout()` to use PySide2 message box dialog\n",
"\n",
"\n",
"## `2.4.1-beta`\n",
"\n",
"- Replaced icon resorces to a more consistent themeing\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/23\n",
"\n",
"## `2.4.0-beta`\n",
"\n",
"- Added more options to modify prefix/suffix for chunk names in New Chunk (2TIR)\n",
"- Fixed bug where script was in infinite loop when no project was present and user tried to load settings\n",
"- Reprogrammed default/current camera dialog to use PySide2 library instead of easygui\n",
"\n",
"\n",
"## `2.3.3-beta`\n",
"\n",
"- Added basic options to modify prefix/suffix for chunk names in New Chunk (2TIR)\n",
"- Settings for chunk name prefix/suffix are saved to settings file\n",
"\n",
"\n",
"## `2.3.2-beta`\n",
"\n",
"- Changed chunk naming format from prefix to suffix for following functions:\n",
" - *New Chunk (2TIR)/STOPNICA (IZKOP)*\n",
" - *New Chunk (2TIR)/STOPNICA (B.BET.)* \n",
"- Removed redundant 'Project File' value from settings.\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/18\n",
"\n",
"## `2.3.1-beta`\n",
"\n",
"- Updated resources\n",
"- Minor bux fix in menu icons\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/18\n",
"\n",
"## `2.3.0-beta`\n",
"\n",
"- New settings per project module added\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/11\n",
"\n",
"## `2.2.0-beta`\n",
"\n",
"- Major redesign for camera settings (no longer hard-coded)\n",
"- New camera settings configuration\n",
"- New 'Add Camera' function\n",
"- Better settings loading\n",
"- Improved settings reset code\n",
"- Bug fixes\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/12/04\n",
"\n",
"## `2.1.1-beta`\n",
"\n",
"- Minor bug fixes in new chunk creation routines\n",
"- Updated README.md to include installation instructions\n",
"- Some file reorganization\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/11/27\n",
"\n",
"## `2.1.0-beta`\n",
"\n",
"- New settings menu\n",
"- Settings loading process redesigned to be more consistent (still needs some polishing)\n",
"- Added new icons\n",
"- Added 'About AutoFTG' in menu\n",
"- Changed main 'New Chunk' method to give more options when creating chunk\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/11/06\n",
"\n",
"## `2.0.x-beta`\n",
"\n",
"- Added basic settings menus\n",
"- New icons for menu items\n",
"- Completley rewritten routines for settings initialization and loading\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/10/16\n",
"\n",
"## `1.7.6`\n",
"\n",
"- Reorder manus for default settings\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/10/09\n",
"\n",
"## `1.7.5`\n",
"\n",
"- Added options to change default settings for:\n",
" - Change default project folder\n",
" - Change default camera calibration\n",
" - Change default point filtering spacing\n",
" - Change default point sampling\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/09/25\n",
"\n",
"## `1.1`\n",
"\n",
"- Working version. First usable script.\n",
"\n",
"\n",
"---\n",
"\n",
"### 2022/09/11\n",
"\n",
"## `1.0`\n",
"\n",
"- Initial version of AutoFTG\n",
"- Create chunk script\n",
"\n",
"\n",
"---\n",
"\n"
]
}
],
"metadata": {
"language_info": {
"name": "python"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,253 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'diaAddNewChunkBatchSetAlign.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogAlignPhotos(object):
def setupUi(self, DialogAlignPhotos):
if not DialogAlignPhotos.objectName():
DialogAlignPhotos.setObjectName(u"DialogAlignPhotos")
DialogAlignPhotos.resize(290, 460)
DialogAlignPhotos.setWindowTitle(u"Align Photos Settings")
self.formLayoutWidget = QWidget(DialogAlignPhotos)
self.formLayoutWidget.setObjectName(u"formLayoutWidget")
self.formLayoutWidget.setGeometry(QRect(0, 0, 291, 461))
self.formLayout = QFormLayout(self.formLayoutWidget)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setContentsMargins(10, 10, 10, 10)
self.label_4 = QLabel(self.formLayoutWidget)
self.label_4.setObjectName(u"label_4")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
self.label_4.setSizePolicy(sizePolicy)
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setText(u"Align Photos Settings")
self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_4)
self.line = QFrame(self.formLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(1, QFormLayout.SpanningRole, self.line)
self.label = QLabel(self.formLayoutWidget)
self.label.setObjectName(u"label")
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
self.label.setFont(font1)
self.label.setText(u"Quality")
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label)
self.comboBox_quality = QComboBox(self.formLayoutWidget)
self.comboBox_quality.addItem(u"Highest")
self.comboBox_quality.addItem(u"High")
self.comboBox_quality.addItem(u"Medium")
self.comboBox_quality.addItem(u"Low")
self.comboBox_quality.addItem(u"Lowest")
self.comboBox_quality.setObjectName(u"comboBox_quality")
self.comboBox_quality.setCurrentText(u"Highest")
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_quality)
self.line_2 = QFrame(self.formLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.line_2)
self.label_2 = QLabel(self.formLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setFont(font1)
self.label_2.setText(u"Pre-selection")
self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_2)
self.checkBox_gen = QCheckBox(self.formLayoutWidget)
self.checkBox_gen.setObjectName(u"checkBox_gen")
self.checkBox_gen.setText(u"Generic")
self.formLayout.setWidget(4, QFormLayout.FieldRole, self.checkBox_gen)
self.checkBox_ref = QCheckBox(self.formLayoutWidget)
self.checkBox_ref.setObjectName(u"checkBox_ref")
self.checkBox_ref.setText(u"Reference")
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.checkBox_ref)
self.comboBox_ref = QComboBox(self.formLayoutWidget)
self.comboBox_ref.addItem(u"Source")
self.comboBox_ref.addItem(u"Estimated")
self.comboBox_ref.addItem(u"Sequential")
self.comboBox_ref.setObjectName(u"comboBox_ref")
self.comboBox_ref.setEnabled(False)
self.comboBox_ref.setCurrentText(u"Source")
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.comboBox_ref)
self.line_5 = QFrame(self.formLayoutWidget)
self.line_5.setObjectName(u"line_5")
self.line_5.setFrameShape(QFrame.HLine)
self.line_5.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(7, QFormLayout.SpanningRole, self.line_5)
self.label_3 = QLabel(self.formLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setFont(font1)
self.label_3.setText(u"Point Limit")
self.formLayout.setWidget(8, QFormLayout.LabelRole, self.label_3)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_6 = QLabel(self.formLayoutWidget)
self.label_6.setObjectName(u"label_6")
sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
self.label_6.setSizePolicy(sizePolicy)
self.label_6.setText(u"Key")
self.horizontalLayout_2.addWidget(self.label_6)
self.label_5 = QLabel(self.formLayoutWidget)
self.label_5.setObjectName(u"label_5")
sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy)
self.label_5.setText(u"Tie")
self.horizontalLayout_2.addWidget(self.label_5)
self.formLayout.setLayout(8, QFormLayout.FieldRole, self.horizontalLayout_2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.lineEdit_keypoints = QLineEdit(self.formLayoutWidget)
self.lineEdit_keypoints.setObjectName(u"lineEdit_keypoints")
self.lineEdit_keypoints.setPlaceholderText(u"40000")
self.horizontalLayout.addWidget(self.lineEdit_keypoints)
self.lineEdit_tiepoints = QLineEdit(self.formLayoutWidget)
self.lineEdit_tiepoints.setObjectName(u"lineEdit_tiepoints")
self.lineEdit_tiepoints.setPlaceholderText(u"10000")
self.horizontalLayout.addWidget(self.lineEdit_tiepoints)
self.formLayout.setLayout(9, QFormLayout.FieldRole, self.horizontalLayout)
self.line_4 = QFrame(self.formLayoutWidget)
self.line_4.setObjectName(u"line_4")
self.line_4.setFrameShape(QFrame.HLine)
self.line_4.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(10, QFormLayout.SpanningRole, self.line_4)
self.label_7 = QLabel(self.formLayoutWidget)
self.label_7.setObjectName(u"label_7")
self.label_7.setFont(font1)
self.label_7.setText(u"Other")
self.formLayout.setWidget(11, QFormLayout.LabelRole, self.label_7)
self.checkBox_filtmask = QCheckBox(self.formLayoutWidget)
self.checkBox_filtmask.setObjectName(u"checkBox_filtmask")
self.checkBox_filtmask.setText(u"Filter Masked")
self.formLayout.setWidget(11, QFormLayout.FieldRole, self.checkBox_filtmask)
self.checkBox_masktie = QCheckBox(self.formLayoutWidget)
self.checkBox_masktie.setObjectName(u"checkBox_masktie")
self.checkBox_masktie.setText(u"Mask Tie Points")
self.formLayout.setWidget(13, QFormLayout.FieldRole, self.checkBox_masktie)
self.checkBox_keepkey = QCheckBox(self.formLayoutWidget)
self.checkBox_keepkey.setObjectName(u"checkBox_keepkey")
self.checkBox_keepkey.setText(u"Keep Key Points")
self.formLayout.setWidget(14, QFormLayout.FieldRole, self.checkBox_keepkey)
self.checkBox_guided = QCheckBox(self.formLayoutWidget)
self.checkBox_guided.setObjectName(u"checkBox_guided")
self.checkBox_guided.setText(u"Guided Matching")
self.formLayout.setWidget(15, QFormLayout.FieldRole, self.checkBox_guided)
self.checkBox_reset = QCheckBox(self.formLayoutWidget)
self.checkBox_reset.setObjectName(u"checkBox_reset")
self.checkBox_reset.setText(u"Reset Alignement")
self.formLayout.setWidget(16, QFormLayout.FieldRole, self.checkBox_reset)
self.verticalSpacer = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(17, QFormLayout.FieldRole, self.verticalSpacer)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.pushButton_save = QPushButton(self.formLayoutWidget)
self.pushButton_save.setObjectName(u"pushButton_save")
self.pushButton_save.setText(u"Save")
icon = QIcon()
icon.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_save.setIcon(icon)
self.pushButton_save.setIconSize(QSize(20, 20))
self.horizontalLayout_3.addWidget(self.pushButton_save)
self.pushButton_cancel = QPushButton(self.formLayoutWidget)
self.pushButton_cancel.setObjectName(u"pushButton_cancel")
self.pushButton_cancel.setText(u"Cancel")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_cancel.setIcon(icon1)
self.pushButton_cancel.setIconSize(QSize(20, 20))
self.horizontalLayout_3.addWidget(self.pushButton_cancel)
self.formLayout.setLayout(18, QFormLayout.FieldRole, self.horizontalLayout_3)
self.checkBox_filtsta = QCheckBox(self.formLayoutWidget)
self.checkBox_filtsta.setObjectName(u"checkBox_filtsta")
self.checkBox_filtsta.setText(u"Filter Stationary Points")
self.formLayout.setWidget(12, QFormLayout.FieldRole, self.checkBox_filtsta)
self.retranslateUi(DialogAlignPhotos)
self.checkBox_ref.stateChanged.connect(self.comboBox_ref.setCurrentIndex)
QMetaObject.connectSlotsByName(DialogAlignPhotos)
# setupUi
def retranslateUi(self, DialogAlignPhotos):
pass
# retranslateUi

View File

@ -0,0 +1,375 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogAlignPhotos</class>
<widget class="QDialog" name="DialogAlignPhotos">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>290</width>
<height>460</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">Align Photos Settings</string>
</property>
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>291</width>
<height>461</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Align Photos Settings</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Quality</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBox_quality">
<property name="currentText">
<string notr="true">Highest</string>
</property>
<item>
<property name="text">
<string notr="true">Highest</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">High</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Medium</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Low</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Lowest</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Pre-selection</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="checkBox_gen">
<property name="text">
<string notr="true">Generic</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="checkBox_ref">
<property name="text">
<string notr="true">Reference</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="comboBox_ref">
<property name="enabled">
<bool>false</bool>
</property>
<property name="currentText">
<string notr="true">Source</string>
</property>
<item>
<property name="text">
<string notr="true">Source</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Estimated</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Sequential</string>
</property>
</item>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Point Limit</string>
</property>
</widget>
</item>
<item row="8" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Key</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Tie</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="9" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="lineEdit_keypoints">
<property name="placeholderText">
<string notr="true">40000</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_tiepoints">
<property name="placeholderText">
<string notr="true">10000</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="10" column="0" colspan="2">
<widget class="Line" name="line_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_7">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Other</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QCheckBox" name="checkBox_filtmask">
<property name="text">
<string notr="true">Filter Masked</string>
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QCheckBox" name="checkBox_masktie">
<property name="text">
<string notr="true">Mask Tie Points</string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QCheckBox" name="checkBox_keepkey">
<property name="text">
<string notr="true">Keep Key Points</string>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QCheckBox" name="checkBox_guided">
<property name="text">
<string notr="true">Guided Matching</string>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QCheckBox" name="checkBox_reset">
<property name="text">
<string notr="true">Reset Alignement</string>
</property>
</widget>
</item>
<item row="17" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item row="18" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="pushButton_save">
<property name="text">
<string notr="true">Save</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-save-as-50.png</normaloff>:/icons/icons8-save-as-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_cancel">
<property name="text">
<string notr="true">Cancel</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-close-window-50.png</normaloff>:/icons/icons8-close-window-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="12" column="1">
<widget class="QCheckBox" name="checkBox_filtsta">
<property name="text">
<string notr="true">Filter Stationary Points</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections>
<connection>
<sender>checkBox_ref</sender>
<signal>stateChanged(int)</signal>
<receiver>comboBox_ref</receiver>
<slot>setCurrentIndex(int)</slot>
<hints>
<hint type="sourcelabel">
<x>226</x>
<y>114</y>
</hint>
<hint type="destinationlabel">
<x>228</x>
<y>138</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,408 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'diaAddNewChunkBatchSetMesh.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogSettingsMesh(object):
def setupUi(self, DialogSettingsMesh):
if not DialogSettingsMesh.objectName():
DialogSettingsMesh.setObjectName(u"DialogSettingsMesh")
DialogSettingsMesh.resize(350, 510)
DialogSettingsMesh.setWindowTitle(u"Settings: Mesh & Textures")
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
DialogSettingsMesh.setWindowIcon(icon)
self.formLayoutWidget = QWidget(DialogSettingsMesh)
self.formLayoutWidget.setObjectName(u"formLayoutWidget")
self.formLayoutWidget.setGeometry(QRect(0, 0, 351, 511))
self.formLayout = QFormLayout(self.formLayoutWidget)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setContentsMargins(10, 5, 10, 10)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_11 = QLabel(self.formLayoutWidget)
self.label_11.setObjectName(u"label_11")
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_11.sizePolicy().hasHeightForWidth())
self.label_11.setSizePolicy(sizePolicy)
self.label_11.setMaximumSize(QSize(24, 24))
self.label_11.setFrameShape(QFrame.NoFrame)
self.label_11.setText(u"")
self.label_11.setPixmap(QPixmap(u":/icons/icons8-geodesic-dome-48.png"))
self.label_11.setScaledContents(True)
self.horizontalLayout_2.addWidget(self.label_11)
self.label = QLabel(self.formLayoutWidget)
self.label.setObjectName(u"label")
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setText(u"Depth Maps")
self.horizontalLayout_2.addWidget(self.label)
self.formLayout.setLayout(0, QFormLayout.SpanningRole, self.horizontalLayout_2)
self.label_8 = QLabel(self.formLayoutWidget)
self.label_8.setObjectName(u"label_8")
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_8)
self.comboBox_depthQuality = QComboBox(self.formLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-connection-status-on-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon1, u"Ultra High")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-signal-full-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon2, u"HIgh")
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-signal-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon3, u"Medium")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-low-connection-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon4, u"Low")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-no-connection-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon5, u"Lowest")
self.comboBox_depthQuality.setObjectName(u"comboBox_depthQuality")
self.comboBox_depthQuality.setMinimumSize(QSize(0, 26))
self.comboBox_depthQuality.setMaximumSize(QSize(16777215, 26))
self.comboBox_depthQuality.setCurrentText(u"Medium")
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.comboBox_depthQuality)
self.label_9 = QLabel(self.formLayoutWidget)
self.label_9.setObjectName(u"label_9")
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_9)
self.comboBox_depthFilter = QComboBox(self.formLayoutWidget)
self.comboBox_depthFilter.addItem(u"Mild")
self.comboBox_depthFilter.addItem(u"Moderate")
self.comboBox_depthFilter.addItem(u"Aggresive")
self.comboBox_depthFilter.setObjectName(u"comboBox_depthFilter")
self.comboBox_depthFilter.setMinimumSize(QSize(0, 26))
self.comboBox_depthFilter.setMaximumSize(QSize(16777215, 26))
self.comboBox_depthFilter.setCurrentText(u"Moderate")
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_depthFilter)
self.line_3 = QFrame(self.formLayoutWidget)
self.line_3.setObjectName(u"line_3")
self.line_3.setFrameShape(QFrame.HLine)
self.line_3.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.line_3)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.label_12 = QLabel(self.formLayoutWidget)
self.label_12.setObjectName(u"label_12")
sizePolicy.setHeightForWidth(self.label_12.sizePolicy().hasHeightForWidth())
self.label_12.setSizePolicy(sizePolicy)
self.label_12.setMaximumSize(QSize(24, 24))
self.label_12.setFrameShape(QFrame.NoFrame)
self.label_12.setText(u"")
self.label_12.setPixmap(QPixmap(u":/icons/icons8-mesh-48.png"))
self.label_12.setScaledContents(True)
self.horizontalLayout_4.addWidget(self.label_12)
self.label_10 = QLabel(self.formLayoutWidget)
self.label_10.setObjectName(u"label_10")
self.label_10.setFont(font)
self.label_10.setText(u"Mesh Options")
self.horizontalLayout_4.addWidget(self.label_10)
self.formLayout.setLayout(4, QFormLayout.SpanningRole, self.horizontalLayout_4)
self.label_2 = QLabel(self.formLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"Surface Type")
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_2)
self.cbMeshType = QComboBox(self.formLayoutWidget)
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-3d-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbMeshType.addItem(icon6, u"Arbitrary")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-national-park-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbMeshType.addItem(icon7, u"Height Field")
self.cbMeshType.setObjectName(u"cbMeshType")
self.cbMeshType.setMinimumSize(QSize(0, 26))
self.cbMeshType.setMaximumSize(QSize(16777215, 26))
#if QT_CONFIG(tooltip)
self.cbMeshType.setToolTip(u"Choose type of model reconstruction")
#endif // QT_CONFIG(tooltip)
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.cbMeshType)
self.label_3 = QLabel(self.formLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"Face Count")
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_3)
self.cbFaceCount = QComboBox(self.formLayoutWidget)
self.cbFaceCount.addItem(icon2, u"High")
self.cbFaceCount.addItem(icon3, u"Medium")
self.cbFaceCount.addItem(icon4, u"Low")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-rename-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbFaceCount.addItem(icon8, u"Custom")
self.cbFaceCount.setObjectName(u"cbFaceCount")
self.cbFaceCount.setMinimumSize(QSize(0, 26))
self.cbFaceCount.setMaximumSize(QSize(16777215, 26))
#if QT_CONFIG(tooltip)
self.cbFaceCount.setToolTip(u"Choose face count density")
#endif // QT_CONFIG(tooltip)
self.cbFaceCount.setCurrentText(u"Medium")
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.cbFaceCount)
self.lineEditFaceCount = QLineEdit(self.formLayoutWidget)
self.lineEditFaceCount.setObjectName(u"lineEditFaceCount")
self.lineEditFaceCount.setEnabled(False)
self.lineEditFaceCount.setPlaceholderText(u"Custom face count")
self.formLayout.setWidget(7, QFormLayout.FieldRole, self.lineEditFaceCount)
self.checkBox_inter = QCheckBox(self.formLayoutWidget)
self.checkBox_inter.setObjectName(u"checkBox_inter")
#if QT_CONFIG(tooltip)
self.checkBox_inter.setToolTip(u"Enable interpolation")
#endif // QT_CONFIG(tooltip)
self.checkBox_inter.setText(u"Interpolation")
self.formLayout.setWidget(8, QFormLayout.FieldRole, self.checkBox_inter)
self.checkBox_vcol = QCheckBox(self.formLayoutWidget)
self.checkBox_vcol.setObjectName(u"checkBox_vcol")
#if QT_CONFIG(tooltip)
self.checkBox_vcol.setToolTip(u"Calculate vertex colors")
#endif // QT_CONFIG(tooltip)
self.checkBox_vcol.setText(u"Vertex Colors")
self.checkBox_vcol.setChecked(True)
self.formLayout.setWidget(9, QFormLayout.FieldRole, self.checkBox_vcol)
self.checkBox_vcon = QCheckBox(self.formLayoutWidget)
self.checkBox_vcon.setObjectName(u"checkBox_vcon")
#if QT_CONFIG(tooltip)
self.checkBox_vcon.setToolTip(u"Calculate vertex confidence")
#endif // QT_CONFIG(tooltip)
self.checkBox_vcon.setText(u"Vertex Confidence")
self.formLayout.setWidget(10, QFormLayout.FieldRole, self.checkBox_vcon)
self.line = QFrame(self.formLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(11, QFormLayout.SpanningRole, self.line)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.label_13 = QLabel(self.formLayoutWidget)
self.label_13.setObjectName(u"label_13")
sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
self.label_13.setSizePolicy(sizePolicy)
self.label_13.setMaximumSize(QSize(24, 24))
self.label_13.setFrameShape(QFrame.NoFrame)
self.label_13.setText(u"")
self.label_13.setPixmap(QPixmap(u":/icons/icons8-video-wall-50.png"))
self.label_13.setScaledContents(True)
self.horizontalLayout_5.addWidget(self.label_13)
self.label_5 = QLabel(self.formLayoutWidget)
self.label_5.setObjectName(u"label_5")
self.label_5.setFont(font)
self.label_5.setText(u"Textures Options")
self.horizontalLayout_5.addWidget(self.label_5)
self.formLayout.setLayout(12, QFormLayout.SpanningRole, self.horizontalLayout_5)
self.groupBox_buildTex = QGroupBox(self.formLayoutWidget)
self.groupBox_buildTex.setObjectName(u"groupBox_buildTex")
self.groupBox_buildTex.setMinimumSize(QSize(0, 90))
self.groupBox_buildTex.setTitle(u"Build Textures")
self.groupBox_buildTex.setCheckable(True)
self.gridLayoutWidget = QWidget(self.groupBox_buildTex)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(10, 30, 311, 52))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"Size")
self.gridLayout.addWidget(self.label_4, 0, 2, 1, 1)
self.checkBox_texFillHoles = QCheckBox(self.gridLayoutWidget)
self.checkBox_texFillHoles.setObjectName(u"checkBox_texFillHoles")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.checkBox_texFillHoles.sizePolicy().hasHeightForWidth())
self.checkBox_texFillHoles.setSizePolicy(sizePolicy1)
self.checkBox_texFillHoles.setText(u"Fill Holes")
self.checkBox_texFillHoles.setChecked(True)
self.gridLayout.addWidget(self.checkBox_texFillHoles, 0, 0, 1, 1)
self.lineEdit_texSize = QLineEdit(self.gridLayoutWidget)
self.lineEdit_texSize.setObjectName(u"lineEdit_texSize")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.lineEdit_texSize.sizePolicy().hasHeightForWidth())
self.lineEdit_texSize.setSizePolicy(sizePolicy2)
self.lineEdit_texSize.setMaximumSize(QSize(60, 16777215))
self.lineEdit_texSize.setText(u"4096")
self.gridLayout.addWidget(self.lineEdit_texSize, 1, 2, 1, 1)
self.label_6 = QLabel(self.gridLayoutWidget)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"Levels")
self.gridLayout.addWidget(self.label_6, 0, 4, 1, 1)
self.checkBox_texGhostFilt = QCheckBox(self.gridLayoutWidget)
self.checkBox_texGhostFilt.setObjectName(u"checkBox_texGhostFilt")
sizePolicy1.setHeightForWidth(self.checkBox_texGhostFilt.sizePolicy().hasHeightForWidth())
self.checkBox_texGhostFilt.setSizePolicy(sizePolicy1)
self.checkBox_texGhostFilt.setText(u"Ghosting Filter")
self.checkBox_texGhostFilt.setChecked(True)
self.gridLayout.addWidget(self.checkBox_texGhostFilt, 1, 0, 1, 1)
self.lineEdit_texLevels = QLineEdit(self.gridLayoutWidget)
self.lineEdit_texLevels.setObjectName(u"lineEdit_texLevels")
sizePolicy2.setHeightForWidth(self.lineEdit_texLevels.sizePolicy().hasHeightForWidth())
self.lineEdit_texLevels.setSizePolicy(sizePolicy2)
self.lineEdit_texLevels.setMaximumSize(QSize(50, 16777215))
self.lineEdit_texLevels.setText(u"1")
self.lineEdit_texLevels.setMaxLength(2)
self.gridLayout.addWidget(self.lineEdit_texLevels, 1, 4, 1, 1)
self.label_7 = QLabel(self.gridLayoutWidget)
self.label_7.setObjectName(u"label_7")
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth())
self.label_7.setSizePolicy(sizePolicy3)
self.label_7.setText(u"x")
self.gridLayout.addWidget(self.label_7, 1, 3, 1, 1)
self.horizontalSpacer = QSpacerItem(20, 5, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.gridLayout.addItem(self.horizontalSpacer, 1, 1, 1, 1)
self.formLayout.setWidget(13, QFormLayout.SpanningRole, self.groupBox_buildTex)
self.line_2 = QFrame(self.formLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(15, QFormLayout.SpanningRole, self.line_2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton_Save = QPushButton(self.formLayoutWidget)
self.pushButton_Save.setObjectName(u"pushButton_Save")
self.pushButton_Save.setText(u"Save")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-save-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_Save.setIcon(icon9)
self.pushButton_Save.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_Save)
self.pushButton_Cancel = QPushButton(self.formLayoutWidget)
self.pushButton_Cancel.setObjectName(u"pushButton_Cancel")
self.pushButton_Cancel.setText(u"Cancel")
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_Cancel.setIcon(icon10)
self.pushButton_Cancel.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_Cancel)
self.formLayout.setLayout(16, QFormLayout.FieldRole, self.horizontalLayout)
self.verticalSpacer = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(14, QFormLayout.FieldRole, self.verticalSpacer)
QWidget.setTabOrder(self.comboBox_depthQuality, self.comboBox_depthFilter)
QWidget.setTabOrder(self.comboBox_depthFilter, self.cbMeshType)
QWidget.setTabOrder(self.cbMeshType, self.cbFaceCount)
QWidget.setTabOrder(self.cbFaceCount, self.lineEditFaceCount)
QWidget.setTabOrder(self.lineEditFaceCount, self.checkBox_inter)
QWidget.setTabOrder(self.checkBox_inter, self.checkBox_vcol)
QWidget.setTabOrder(self.checkBox_vcol, self.checkBox_vcon)
QWidget.setTabOrder(self.checkBox_vcon, self.groupBox_buildTex)
QWidget.setTabOrder(self.groupBox_buildTex, self.checkBox_texFillHoles)
QWidget.setTabOrder(self.checkBox_texFillHoles, self.checkBox_texGhostFilt)
QWidget.setTabOrder(self.checkBox_texGhostFilt, self.lineEdit_texSize)
QWidget.setTabOrder(self.lineEdit_texSize, self.lineEdit_texLevels)
QWidget.setTabOrder(self.lineEdit_texLevels, self.pushButton_Save)
QWidget.setTabOrder(self.pushButton_Save, self.pushButton_Cancel)
self.retranslateUi(DialogSettingsMesh)
self.pushButton_Cancel.clicked.connect(DialogSettingsMesh.reject)
self.pushButton_Save.clicked.connect(DialogSettingsMesh.accept)
self.cbFaceCount.highlighted.connect(self.lineEditFaceCount.setText)
self.comboBox_depthQuality.setCurrentIndex(2)
self.comboBox_depthFilter.setCurrentIndex(1)
self.cbFaceCount.setCurrentIndex(1)
self.pushButton_Save.setDefault(True)
QMetaObject.connectSlotsByName(DialogSettingsMesh)
# setupUi
def retranslateUi(self, DialogSettingsMesh):
self.label_8.setText(QCoreApplication.translate("DialogSettingsMesh", u"Depth Maps Quality", None))
self.label_9.setText(QCoreApplication.translate("DialogSettingsMesh", u"Depth Filtering", None))
pass
# retranslateUi

View File

@ -0,0 +1,745 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogSettingsMesh</class>
<widget class="QDialog" name="DialogSettingsMesh">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>350</width>
<height>510</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">Settings: Mesh &amp; Textures</string>
</property>
<property name="windowIcon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/AutoFTG-appicon.png</normaloff>:/icons/AutoFTG-appicon.png</iconset>
</property>
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>351</width>
<height>511</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_11">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="pixmap">
<pixmap resource="../qtresources.qrc">:/icons/icons8-geodesic-dome-48.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Depth Maps</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Depth Maps Quality</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_depthQuality">
<property name="minimumSize">
<size>
<width>0</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>26</height>
</size>
</property>
<property name="currentText">
<string notr="true">Medium</string>
</property>
<property name="currentIndex">
<number>2</number>
</property>
<item>
<property name="text">
<string notr="true">Ultra High</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-connection-status-on-48.png</normaloff>:/icons/icons8-connection-status-on-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">HIgh</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-signal-full-48.png</normaloff>:/icons/icons8-signal-full-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Medium</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-signal-48.png</normaloff>:/icons/icons8-signal-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Low</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-low-connection-48.png</normaloff>:/icons/icons8-low-connection-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Lowest</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-no-connection-48.png</normaloff>:/icons/icons8-no-connection-48.png</iconset>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Depth Filtering</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBox_depthFilter">
<property name="minimumSize">
<size>
<width>0</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>26</height>
</size>
</property>
<property name="currentText">
<string notr="true">Moderate</string>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<item>
<property name="text">
<string notr="true">Mild</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Moderate</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Aggresive</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_12">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="pixmap">
<pixmap resource="../qtresources.qrc">:/icons/icons8-mesh-48.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Mesh Options</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string notr="true">Surface Type</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="cbMeshType">
<property name="minimumSize">
<size>
<width>0</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>26</height>
</size>
</property>
<property name="toolTip">
<string notr="true">Choose type of model reconstruction</string>
</property>
<item>
<property name="text">
<string notr="true">Arbitrary</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-3d-48.png</normaloff>:/icons/icons8-3d-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Height Field</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-national-park-48.png</normaloff>:/icons/icons8-national-park-48.png</iconset>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string notr="true">Face Count</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="cbFaceCount">
<property name="minimumSize">
<size>
<width>0</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>26</height>
</size>
</property>
<property name="toolTip">
<string notr="true">Choose face count density</string>
</property>
<property name="currentText">
<string notr="true">Medium</string>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<item>
<property name="text">
<string notr="true">High</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-signal-full-48.png</normaloff>:/icons/icons8-signal-full-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Medium</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-signal-48.png</normaloff>:/icons/icons8-signal-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Low</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-low-connection-48.png</normaloff>:/icons/icons8-low-connection-48.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Custom</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-rename-50.png</normaloff>:/icons/icons8-rename-50.png</iconset>
</property>
</item>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="lineEditFaceCount">
<property name="enabled">
<bool>false</bool>
</property>
<property name="placeholderText">
<string notr="true">Custom face count</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QCheckBox" name="checkBox_inter">
<property name="toolTip">
<string notr="true">Enable interpolation</string>
</property>
<property name="text">
<string notr="true">Interpolation</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QCheckBox" name="checkBox_vcol">
<property name="toolTip">
<string notr="true">Calculate vertex colors</string>
</property>
<property name="text">
<string notr="true">Vertex Colors</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QCheckBox" name="checkBox_vcon">
<property name="toolTip">
<string notr="true">Calculate vertex confidence</string>
</property>
<property name="text">
<string notr="true">Vertex Confidence</string>
</property>
</widget>
</item>
<item row="11" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="12" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="pixmap">
<pixmap resource="../qtresources.qrc">:/icons/icons8-video-wall-50.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Textures Options</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="13" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_buildTex">
<property name="minimumSize">
<size>
<width>0</width>
<height>90</height>
</size>
</property>
<property name="title">
<string notr="true">Build Textures</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>311</width>
<height>52</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string notr="true">Size</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_texFillHoles">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Fill Holes</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="lineEdit_texSize">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string notr="true">4096</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QLabel" name="label_6">
<property name="text">
<string notr="true">Levels</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_texGhostFilt">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Ghosting Filter</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLineEdit" name="lineEdit_texLevels">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string notr="true">1</string>
</property>
<property name="maxLength">
<number>2</number>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">x</string>
</property>
</widget>
</item>
<item row="1" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item row="15" column="0" colspan="2">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="16" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_Save">
<property name="text">
<string notr="true">Save</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-save-close-50.png</normaloff>:/icons/icons8-save-close-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_Cancel">
<property name="text">
<string notr="true">Cancel</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-close-window-50.png</normaloff>:/icons/icons8-close-window-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="14" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<tabstops>
<tabstop>comboBox_depthQuality</tabstop>
<tabstop>comboBox_depthFilter</tabstop>
<tabstop>cbMeshType</tabstop>
<tabstop>cbFaceCount</tabstop>
<tabstop>lineEditFaceCount</tabstop>
<tabstop>checkBox_inter</tabstop>
<tabstop>checkBox_vcol</tabstop>
<tabstop>checkBox_vcon</tabstop>
<tabstop>groupBox_buildTex</tabstop>
<tabstop>checkBox_texFillHoles</tabstop>
<tabstop>checkBox_texGhostFilt</tabstop>
<tabstop>lineEdit_texSize</tabstop>
<tabstop>lineEdit_texLevels</tabstop>
<tabstop>pushButton_Save</tabstop>
<tabstop>pushButton_Cancel</tabstop>
</tabstops>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections>
<connection>
<sender>pushButton_Cancel</sender>
<signal>clicked()</signal>
<receiver>DialogSettingsMesh</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>237</x>
<y>395</y>
</hint>
<hint type="destinationlabel">
<x>297</x>
<y>417</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButton_Save</sender>
<signal>clicked()</signal>
<receiver>DialogSettingsMesh</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>122</x>
<y>396</y>
</hint>
<hint type="destinationlabel">
<x>105</x>
<y>415</y>
</hint>
</hints>
</connection>
<connection>
<sender>cbFaceCount</sender>
<signal>highlighted(QString)</signal>
<receiver>lineEditFaceCount</receiver>
<slot>setText(QString)</slot>
<hints>
<hint type="sourcelabel">
<x>249</x>
<y>77</y>
</hint>
<hint type="destinationlabel">
<x>230</x>
<y>106</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,163 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'diaAddNewChunkBatchSetPoint.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_Dialog(object):
def setupUi(self, Dialog):
if not Dialog.objectName():
Dialog.setObjectName(u"Dialog")
Dialog.resize(320, 240)
self.actionSetPointSampling = QAction(Dialog)
self.actionSetPointSampling.setObjectName(u"actionSetPointSampling")
icon = QIcon()
icon.addFile(u":/icons/icons8-live-photos-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionSetPointSampling.setIcon(icon)
self.gridLayoutWidget = QWidget(Dialog)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(0, 0, 321, 243))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setHorizontalSpacing(10)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.checkBox_2 = QCheckBox(self.gridLayoutWidget)
self.checkBox_2.setObjectName(u"checkBox_2")
self.checkBox_2.setLayoutDirection(Qt.RightToLeft)
self.checkBox_2.setText(u"Calculate Confidence")
self.gridLayout.addWidget(self.checkBox_2, 3, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 1, 0, 1, 2)
self.label_3 = QLabel(self.gridLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"Regular")
self.gridLayout.addWidget(self.label_3, 4, 1, 1, 1)
self.lineEdit = QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setPlaceholderText(u"0.05")
self.lineEdit.setClearButtonEnabled(True)
self.gridLayout.addWidget(self.lineEdit, 5, 1, 1, 1)
self.checkBox_3 = QCheckBox(self.gridLayoutWidget)
self.checkBox_3.setObjectName(u"checkBox_3")
self.checkBox_3.setLayoutDirection(Qt.RightToLeft)
self.checkBox_3.setText(u"Point Sampling")
self.gridLayout.addWidget(self.checkBox_3, 4, 0, 1, 1)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
self.label.setText(u"Enabled")
self.gridLayout.addWidget(self.label, 2, 1, 1, 1)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"Point spacing (m)")
self.label_4.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"Disabled")
self.gridLayout.addWidget(self.label_2, 3, 1, 1, 1)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.gridLayout.addItem(self.verticalSpacer, 6, 1, 1, 1)
self.checkBox = QCheckBox(self.gridLayoutWidget)
self.checkBox.setObjectName(u"checkBox")
self.checkBox.setLayoutDirection(Qt.RightToLeft)
self.checkBox.setText(u"Calculate Colors")
self.checkBox.setChecked(True)
self.gridLayout.addWidget(self.checkBox, 2, 0, 1, 1)
self.label_5 = QLabel(self.gridLayoutWidget)
self.label_5.setObjectName(u"label_5")
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(14)
self.label_5.setFont(font)
self.label_5.setText(u"Point Cloud Settings")
self.gridLayout.addWidget(self.label_5, 0, 0, 1, 2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setText(u"Cancel")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon1)
self.pushButton.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy)
self.pushButton_2.setText(u"Save")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon2)
self.pushButton_2.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_2)
self.gridLayout.addLayout(self.horizontalLayout, 7, 0, 1, 2)
#if QT_CONFIG(shortcut)
self.label_4.setBuddy(self.lineEdit)
#endif // QT_CONFIG(shortcut)
QWidget.setTabOrder(self.checkBox, self.checkBox_2)
QWidget.setTabOrder(self.checkBox_2, self.checkBox_3)
QWidget.setTabOrder(self.checkBox_3, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.pushButton_2)
QWidget.setTabOrder(self.pushButton_2, self.pushButton)
self.retranslateUi(Dialog)
self.pushButton_2.clicked.connect(Dialog.accept)
self.pushButton.clicked.connect(Dialog.reject)
self.checkBox_3.toggled.connect(self.actionSetPointSampling.setVisible)
# setupUi
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
self.actionSetPointSampling.setText(QCoreApplication.translate("Dialog", u"Enabled", None))
# retranslateUi

View File

@ -0,0 +1,293 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" connectslotsbyname="false">
<author>Boris Bilc</author>
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>320</width>
<height>240</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>321</width>
<height>243</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<property name="horizontalSpacing">
<number>10</number>
</property>
<item row="3" column="0">
<widget class="QCheckBox" name="checkBox_2">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string notr="true">Calculate Confidence</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_3">
<property name="text">
<string notr="true">Regular</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit">
<property name="placeholderText">
<string notr="true">0.05</string>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBox_3">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string notr="true">Point Sampling</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string notr="true">Enabled</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string notr="true">Point spacing (m)</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>lineEdit</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_2">
<property name="text">
<string notr="true">Disabled</string>
</property>
</widget>
</item>
<item row="6" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="checkBox">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string notr="true">Calculate Colors</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_5">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Point Cloud Settings</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Cancel</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-close-window-50.png</normaloff>:/icons/icons8-close-window-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Save</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-save-as-50.png</normaloff>:/icons/icons8-save-as-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<action name="actionSetPointSampling">
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-live-photos-96.png</normaloff>:/icons/icons8-live-photos-96.png</iconset>
</property>
<property name="text">
<string>Enabled</string>
</property>
</action>
</widget>
<layoutdefault spacing="5" margin="10"/>
<tabstops>
<tabstop>checkBox</tabstop>
<tabstop>checkBox_2</tabstop>
<tabstop>checkBox_3</tabstop>
<tabstop>lineEdit</tabstop>
<tabstop>pushButton_2</tabstop>
<tabstop>pushButton</tabstop>
</tabstops>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections>
<connection>
<sender>pushButton_2</sender>
<signal>clicked()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>217</x>
<y>215</y>
</hint>
<hint type="destinationlabel">
<x>314</x>
<y>226</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButton</sender>
<signal>clicked()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>96</x>
<y>219</y>
</hint>
<hint type="destinationlabel">
<x>102</x>
<y>238</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_3</sender>
<signal>toggled(bool)</signal>
<receiver>actionSetPointSampling</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>81</x>
<y>114</y>
</hint>
<hint type="destinationlabel">
<x>-1</x>
<y>-1</y>
</hint>
</hints>
</connection>
</connections>
<designerdata>
<property name="gridDeltaX">
<number>10</number>
</property>
<property name="gridDeltaY">
<number>10</number>
</property>
<property name="gridSnapX">
<bool>true</bool>
</property>
<property name="gridSnapY">
<bool>true</bool>
</property>
<property name="gridVisible">
<bool>true</bool>
</property>
</designerdata>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,688 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'diaChunkSettingsEditor.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogChunkSettings(object):
def setupUi(self, DialogChunkSettings):
if not DialogChunkSettings.objectName():
DialogChunkSettings.setObjectName(u"DialogChunkSettings")
DialogChunkSettings.resize(720, 480)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(DialogChunkSettings.sizePolicy().hasHeightForWidth())
DialogChunkSettings.setSizePolicy(sizePolicy)
DialogChunkSettings.setMinimumSize(QSize(720, 180))
DialogChunkSettings.setMaximumSize(QSize(720, 480))
DialogChunkSettings.setWindowTitle(u"Chunk Settings Editor")
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
DialogChunkSettings.setWindowIcon(icon)
self.gridLayoutWidget = QWidget(DialogChunkSettings)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(9, 10, 701, 461))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.label_menuSet_2 = QLabel(self.gridLayoutWidget)
self.label_menuSet_2.setObjectName(u"label_menuSet_2")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.label_menuSet_2.sizePolicy().hasHeightForWidth())
self.label_menuSet_2.setSizePolicy(sizePolicy1)
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_menuSet_2.setFont(font)
self.label_menuSet_2.setFrameShape(QFrame.StyledPanel)
self.label_menuSet_2.setText(u"Chunk Definitions List")
self.gridLayout.addWidget(self.label_menuSet_2, 0, 0, 1, 1)
self.listWidgetChunkDefs = QListWidget(self.gridLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-add-tab-50.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem.setText(u"Default");
__qlistwidgetitem.setIcon(icon1);
icon2 = QIcon()
icon2.addFile(u":/icons/template_kalota-zelena.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem1 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem1.setText(u"T8 GC - KALOTA");
__qlistwidgetitem1.setIcon(icon2);
icon3 = QIcon()
icon3.addFile(u":/icons/template_stopnica-zelena.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem2 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem2.setText(u"T8 GC - STOPNICA - IZKOP");
__qlistwidgetitem2.setIcon(icon3);
icon4 = QIcon()
icon4.addFile(u":/icons/template_kalota-oranzna.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem3 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem3.setText(u"T8 PRECNIK-4");
__qlistwidgetitem3.setIcon(icon4);
icon5 = QIcon()
icon5.addFile(u":/icons/template_kalota-modra.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem4 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem4.setText(u"T8 SC - KALOTA");
__qlistwidgetitem4.setIcon(icon5);
icon6 = QIcon()
icon6.addFile(u":/icons/template_stopnica-modra.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem5 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem5.setText(u"T8 SC - STOPNICA - IZKOP");
__qlistwidgetitem5.setIcon(icon6);
self.listWidgetChunkDefs.setObjectName(u"listWidgetChunkDefs")
sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.listWidgetChunkDefs.sizePolicy().hasHeightForWidth())
self.listWidgetChunkDefs.setSizePolicy(sizePolicy2)
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
self.listWidgetChunkDefs.setFont(font1)
self.listWidgetChunkDefs.setAutoScrollMargin(20)
self.listWidgetChunkDefs.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.listWidgetChunkDefs.setProperty("showDropIndicator", False)
self.listWidgetChunkDefs.setSelectionBehavior(QAbstractItemView.SelectItems)
self.listWidgetChunkDefs.setIconSize(QSize(24, 24))
self.listWidgetChunkDefs.setViewMode(QListView.ListMode)
self.listWidgetChunkDefs.setUniformItemSizes(True)
self.listWidgetChunkDefs.setSelectionRectVisible(True)
self.listWidgetChunkDefs.setSortingEnabled(False)
self.gridLayout.addWidget(self.listWidgetChunkDefs, 1, 0, 1, 1)
self.horizontalLayout_6 = QHBoxLayout()
self.horizontalLayout_6.setSpacing(5)
self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
self.pushButton_sremove = QPushButton(self.gridLayoutWidget)
self.pushButton_sremove.setObjectName(u"pushButton_sremove")
self.pushButton_sremove.setEnabled(True)
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.pushButton_sremove.sizePolicy().hasHeightForWidth())
self.pushButton_sremove.setSizePolicy(sizePolicy3)
self.pushButton_sremove.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_sremove.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Remove<br/></span>Remove selected definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_sremove.setText(u"Remove")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-full-recycle-bin-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_sremove.setIcon(icon7)
self.pushButton_sremove.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_sremove.setShortcut(u"R")
#endif // QT_CONFIG(shortcut)
self.pushButton_sremove.setAutoDefault(False)
self.horizontalLayout_6.addWidget(self.pushButton_sremove)
self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_6.addItem(self.horizontalSpacer_3)
self.pushButton_sedit = QPushButton(self.gridLayoutWidget)
self.pushButton_sedit.setObjectName(u"pushButton_sedit")
self.pushButton_sedit.setEnabled(True)
sizePolicy3.setHeightForWidth(self.pushButton_sedit.sizePolicy().hasHeightForWidth())
self.pushButton_sedit.setSizePolicy(sizePolicy3)
self.pushButton_sedit.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_sedit.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Edit</span><br/>Edit selected chunk definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_sedit.setLayoutDirection(Qt.RightToLeft)
self.pushButton_sedit.setText(u"Edit")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-design-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_sedit.setIcon(icon8)
self.pushButton_sedit.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_sedit.setShortcut(u"E")
#endif // QT_CONFIG(shortcut)
self.pushButton_sedit.setAutoDefault(False)
self.horizontalLayout_6.addWidget(self.pushButton_sedit)
self.gridLayout.addLayout(self.horizontalLayout_6, 2, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 3, 0, 1, 2)
self.formLayout = QFormLayout()
self.formLayout.setSpacing(5)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setHorizontalSpacing(5)
self.formLayout.setVerticalSpacing(5)
self.label_menuSet = QLabel(self.gridLayoutWidget)
self.label_menuSet.setObjectName(u"label_menuSet")
sizePolicy1.setHeightForWidth(self.label_menuSet.sizePolicy().hasHeightForWidth())
self.label_menuSet.setSizePolicy(sizePolicy1)
self.label_menuSet.setFont(font)
self.label_menuSet.setFrameShape(QFrame.StyledPanel)
self.label_menuSet.setText(u"Menu Settings")
self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_menuSet)
self.label_nameicon = QLabel(self.gridLayoutWidget)
self.label_nameicon.setObjectName(u"label_nameicon")
self.label_nameicon.setMinimumSize(QSize(80, 0))
self.label_nameicon.setMaximumSize(QSize(80, 16777215))
self.label_nameicon.setText(u"Name")
self.label_nameicon.setIndent(5)
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_nameicon)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setSpacing(5)
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.lineEdit_name = QLineEdit(self.gridLayoutWidget)
self.lineEdit_name.setObjectName(u"lineEdit_name")
sizePolicy4 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.lineEdit_name.sizePolicy().hasHeightForWidth())
self.lineEdit_name.setSizePolicy(sizePolicy4)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(12)
self.lineEdit_name.setFont(font2)
self.lineEdit_name.setPlaceholderText(u"Name shown in list...")
self.horizontalLayout_4.addWidget(self.lineEdit_name)
self.formLayout.setLayout(1, QFormLayout.FieldRole, self.horizontalLayout_4)
self.label_nameicon_2 = QLabel(self.gridLayoutWidget)
self.label_nameicon_2.setObjectName(u"label_nameicon_2")
sizePolicy5 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
sizePolicy5.setHorizontalStretch(0)
sizePolicy5.setVerticalStretch(0)
sizePolicy5.setHeightForWidth(self.label_nameicon_2.sizePolicy().hasHeightForWidth())
self.label_nameicon_2.setSizePolicy(sizePolicy5)
font3 = QFont()
font3.setFamily(u"Segoe UI")
font3.setPointSize(9)
self.label_nameicon_2.setFont(font3)
self.label_nameicon_2.setText(u"Icon")
self.label_nameicon_2.setIndent(5)
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_nameicon_2)
self.comboBox_icon = QComboBox(self.gridLayoutWidget)
self.comboBox_icon.setObjectName(u"comboBox_icon")
sizePolicy6 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy6.setHorizontalStretch(0)
sizePolicy6.setVerticalStretch(0)
sizePolicy6.setHeightForWidth(self.comboBox_icon.sizePolicy().hasHeightForWidth())
self.comboBox_icon.setSizePolicy(sizePolicy6)
self.comboBox_icon.setMaximumSize(QSize(100, 16777215))
#if QT_CONFIG(tooltip)
self.comboBox_icon.setToolTip(u"Choose icon to be used in list...")
#endif // QT_CONFIG(tooltip)
self.comboBox_icon.setIconSize(QSize(24, 24))
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_icon)
self.label_chunkSet = QLabel(self.gridLayoutWidget)
self.label_chunkSet.setObjectName(u"label_chunkSet")
sizePolicy1.setHeightForWidth(self.label_chunkSet.sizePolicy().hasHeightForWidth())
self.label_chunkSet.setSizePolicy(sizePolicy1)
self.label_chunkSet.setFont(font)
self.label_chunkSet.setFrameShape(QFrame.StyledPanel)
self.label_chunkSet.setText(u"Chunk Settings")
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.label_chunkSet)
self.horizontalLayout_7 = QHBoxLayout()
self.horizontalLayout_7.setSpacing(5)
self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
self.groupBoxChunkName = QGroupBox(self.gridLayoutWidget)
self.groupBoxChunkName.setObjectName(u"groupBoxChunkName")
sizePolicy7 = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Preferred)
sizePolicy7.setHorizontalStretch(0)
sizePolicy7.setVerticalStretch(0)
sizePolicy7.setHeightForWidth(self.groupBoxChunkName.sizePolicy().hasHeightForWidth())
self.groupBoxChunkName.setSizePolicy(sizePolicy7)
self.groupBoxChunkName.setMinimumSize(QSize(0, 130))
font4 = QFont()
font4.setFamily(u"Segoe UI")
font4.setPointSize(9)
font4.setBold(True)
font4.setWeight(75)
self.groupBoxChunkName.setFont(font4)
self.groupBoxChunkName.setTitle(u"Chunk Name Format")
self.gridLayoutWidget_2 = QWidget(self.groupBoxChunkName)
self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2")
self.gridLayoutWidget_2.setGeometry(QRect(12, 25, 411, 100))
self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setSpacing(5)
self.gridLayout_2.setContentsMargins(10, 10, 10, 10)
self.gridLayout_2.setObjectName(u"gridLayout_2")
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.radioButton_5 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_5.setObjectName(u"radioButton_5")
sizePolicy8 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy8.setHorizontalStretch(0)
sizePolicy8.setVerticalStretch(0)
sizePolicy8.setHeightForWidth(self.radioButton_5.sizePolicy().hasHeightForWidth())
self.radioButton_5.setSizePolicy(sizePolicy8)
font5 = QFont()
font5.setFamily(u"Segoe UI")
font5.setPointSize(9)
font5.setBold(False)
font5.setWeight(50)
self.radioButton_5.setFont(font5)
self.radioButton_5.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_5.setToolTip(u"<html><head/><body><p>Use date and time found in first image file that is imported from work folder.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_5.setText(u"Image date-time")
self.gridLayout_2.addWidget(self.radioButton_5, 1, 1, 1, 1)
self.radioButton_3 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_3.setObjectName(u"radioButton_3")
sizePolicy8.setHeightForWidth(self.radioButton_3.sizePolicy().hasHeightForWidth())
self.radioButton_3.setSizePolicy(sizePolicy8)
self.radioButton_3.setFont(font5)
self.radioButton_3.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_3.setToolTip(u"<html><head/><body><p>Use metadata string from point file that must be located in imported data folder, and must also have the same name as data folder..</p><p><span style=\" font-weight:600;\">Info:</span> String must be in metadata format at the beginnig of point file, as described in help.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_3.setText(u"Point File Metadata")
self.gridLayout_2.addWidget(self.radioButton_3, 2, 0, 1, 1)
self.radioButton_6 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_6.setObjectName(u"radioButton_6")
sizePolicy8.setHeightForWidth(self.radioButton_6.sizePolicy().hasHeightForWidth())
self.radioButton_6.setSizePolicy(sizePolicy8)
self.radioButton_6.setFont(font5)
self.radioButton_6.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_6.setToolTip(u"<html><head/><body><p>Use date and time at which chunk is created in custom provided format.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_6.setText(u"Custom date-time")
self.gridLayout_2.addWidget(self.radioButton_6, 2, 1, 1, 1)
self.radioButton_2 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_2.setObjectName(u"radioButton_2")
sizePolicy8.setHeightForWidth(self.radioButton_2.sizePolicy().hasHeightForWidth())
self.radioButton_2.setSizePolicy(sizePolicy8)
self.radioButton_2.setFont(font5)
self.radioButton_2.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_2.setToolTip(u"<html><head/><body><p>Uses the name of folder from which data is beeing imported from.</p><p>* Recommended naming format.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_2.setText(u"Data Folder Name")
self.gridLayout_2.addWidget(self.radioButton_2, 1, 0, 1, 1)
self.radioButton_1 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_1.setObjectName(u"radioButton_1")
sizePolicy8.setHeightForWidth(self.radioButton_1.sizePolicy().hasHeightForWidth())
self.radioButton_1.setSizePolicy(sizePolicy8)
self.radioButton_1.setFont(font5)
self.radioButton_1.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_1.setToolTip(u"<html><head/><body><p>Use default naming format provided by Metashape.</p><p>Example: Chunk 1, Chunk 2,...</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_1.setText(u"Metashape Default")
self.gridLayout_2.addWidget(self.radioButton_1, 0, 0, 1, 1)
self.radioButton_4 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_4.setObjectName(u"radioButton_4")
sizePolicy8.setHeightForWidth(self.radioButton_4.sizePolicy().hasHeightForWidth())
self.radioButton_4.setSizePolicy(sizePolicy8)
self.radioButton_4.setFont(font5)
self.radioButton_4.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_4.setToolTip(u"<html><head/><body><p>Use date and time at which chunk is created.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_4.setText(u"Creation date-time")
self.gridLayout_2.addWidget(self.radioButton_4, 0, 1, 1, 1)
self.horizontalLayout_8 = QHBoxLayout()
self.horizontalLayout_8.setSpacing(5)
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
self.horizontalSpacer_4 = QSpacerItem(225, 0, QSizePolicy.Fixed, QSizePolicy.Minimum)
self.horizontalLayout_8.addItem(self.horizontalSpacer_4)
self.lineEdit = QLineEdit(self.gridLayoutWidget_2)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setEnabled(False)
sizePolicy8.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
self.lineEdit.setSizePolicy(sizePolicy8)
self.lineEdit.setMinimumSize(QSize(140, 0))
self.lineEdit.setFont(font5)
#if QT_CONFIG(tooltip)
self.lineEdit.setToolTip(u"<html><head/><body><p>Enter format string in python format.</p><p>*For details please check help first.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.lineEdit.setPlaceholderText(u"%Y%m%d-%H%M%S")
self.horizontalLayout_8.addWidget(self.lineEdit)
self.horizontalSpacer_5 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_8.addItem(self.horizontalSpacer_5)
self.gridLayout_2.addLayout(self.horizontalLayout_8, 3, 0, 1, 2)
self.horizontalLayout_7.addWidget(self.groupBoxChunkName)
self.formLayout.setLayout(4, QFormLayout.SpanningRole, self.horizontalLayout_7)
self.label_wfolder_2 = QLabel(self.gridLayoutWidget)
self.label_wfolder_2.setObjectName(u"label_wfolder_2")
self.label_wfolder_2.setFont(font3)
self.label_wfolder_2.setText(u"Prefix/Suffix")
self.label_wfolder_2.setIndent(5)
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_wfolder_2)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setSpacing(5)
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.lineEdit_pre = QLineEdit(self.gridLayoutWidget)
self.lineEdit_pre.setObjectName(u"lineEdit_pre")
self.lineEdit_pre.setEnabled(False)
sizePolicy4.setHeightForWidth(self.lineEdit_pre.sizePolicy().hasHeightForWidth())
self.lineEdit_pre.setSizePolicy(sizePolicy4)
#if QT_CONFIG(tooltip)
self.lineEdit_pre.setToolTip(u"Leave empty to disable prefix.")
#endif // QT_CONFIG(tooltip)
self.lineEdit_pre.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.lineEdit_pre.setPlaceholderText(u"PREFIX_")
self.horizontalLayout_5.addWidget(self.lineEdit_pre)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
self.label.setStyleSheet(u"color: rgb(157, 158, 149);")
self.label.setText(u"<chunk name>")
self.label.setAlignment(Qt.AlignCenter)
self.horizontalLayout_5.addWidget(self.label)
self.lineEdit_suf = QLineEdit(self.gridLayoutWidget)
self.lineEdit_suf.setObjectName(u"lineEdit_suf")
self.lineEdit_suf.setEnabled(False)
sizePolicy4.setHeightForWidth(self.lineEdit_suf.sizePolicy().hasHeightForWidth())
self.lineEdit_suf.setSizePolicy(sizePolicy4)
#if QT_CONFIG(tooltip)
self.lineEdit_suf.setToolTip(u"Leave empty to disable suffix.")
#endif // QT_CONFIG(tooltip)
self.lineEdit_suf.setPlaceholderText(u"_SUFFIX")
self.horizontalLayout_5.addWidget(self.lineEdit_suf)
self.formLayout.setLayout(5, QFormLayout.FieldRole, self.horizontalLayout_5)
self.label_wfolder = QLabel(self.gridLayoutWidget)
self.label_wfolder.setObjectName(u"label_wfolder")
self.label_wfolder.setFont(font3)
self.label_wfolder.setText(u"Data Folder")
self.label_wfolder.setIndent(5)
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_wfolder)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.lineEdit_wfolder = QLineEdit(self.gridLayoutWidget)
self.lineEdit_wfolder.setObjectName(u"lineEdit_wfolder")
self.lineEdit_wfolder.setPlaceholderText(u"Path to folder with data...")
self.horizontalLayout.addWidget(self.lineEdit_wfolder)
self.pushButton_browsewf = QPushButton(self.gridLayoutWidget)
self.pushButton_browsewf.setObjectName(u"pushButton_browsewf")
sizePolicy3.setHeightForWidth(self.pushButton_browsewf.sizePolicy().hasHeightForWidth())
self.pushButton_browsewf.setSizePolicy(sizePolicy3)
#if QT_CONFIG(tooltip)
self.pushButton_browsewf.setToolTip(u"<html><head/><body><p>Select location with working data for this definition.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_browsewf.setText(u"")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-opened-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_browsewf.setIcon(icon9)
self.pushButton_browsewf.setIconSize(QSize(20, 20))
self.pushButton_browsewf.setAutoDefault(False)
self.horizontalLayout.addWidget(self.pushButton_browsewf)
self.formLayout.setLayout(6, QFormLayout.FieldRole, self.horizontalLayout)
self.label_efolder = QLabel(self.gridLayoutWidget)
self.label_efolder.setObjectName(u"label_efolder")
self.label_efolder.setFont(font3)
self.label_efolder.setText(u"Export Folder")
self.label_efolder.setIndent(5)
self.formLayout.setWidget(7, QFormLayout.LabelRole, self.label_efolder)
self.horizontalLayout_10 = QHBoxLayout()
self.horizontalLayout_10.setSpacing(5)
self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
self.lineEdit_efolder = QLineEdit(self.gridLayoutWidget)
self.lineEdit_efolder.setObjectName(u"lineEdit_efolder")
self.lineEdit_efolder.setPlaceholderText(u"Path to folder for exporting...")
self.horizontalLayout_10.addWidget(self.lineEdit_efolder)
self.pushButton_browseef = QPushButton(self.gridLayoutWidget)
self.pushButton_browseef.setObjectName(u"pushButton_browseef")
sizePolicy3.setHeightForWidth(self.pushButton_browseef.sizePolicy().hasHeightForWidth())
self.pushButton_browseef.setSizePolicy(sizePolicy3)
#if QT_CONFIG(tooltip)
self.pushButton_browseef.setToolTip(u"<html><head/><body><p>Select location with working data for this definition.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_browseef.setText(u"")
self.pushButton_browseef.setIcon(icon9)
self.pushButton_browseef.setIconSize(QSize(20, 20))
self.pushButton_browseef.setAutoDefault(False)
self.horizontalLayout_10.addWidget(self.pushButton_browseef)
self.formLayout.setLayout(7, QFormLayout.FieldRole, self.horizontalLayout_10)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setSpacing(5)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
self.pushButton_save = QPushButton(self.gridLayoutWidget)
self.pushButton_save.setObjectName(u"pushButton_save")
self.pushButton_save.setEnabled(False)
sizePolicy3.setHeightForWidth(self.pushButton_save.sizePolicy().hasHeightForWidth())
self.pushButton_save.setSizePolicy(sizePolicy3)
self.pushButton_save.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_save.setToolTip(u"<html><head/><body><p>Save currently selected chunk definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_save.setText(u"Save")
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_save.setIcon(icon10)
self.pushButton_save.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_save.setShortcut(u"S")
#endif // QT_CONFIG(shortcut)
self.pushButton_save.setAutoDefault(False)
self.horizontalLayout_2.addWidget(self.pushButton_save)
self.pushButton_add = QPushButton(self.gridLayoutWidget)
self.pushButton_add.setObjectName(u"pushButton_add")
sizePolicy3.setHeightForWidth(self.pushButton_add.sizePolicy().hasHeightForWidth())
self.pushButton_add.setSizePolicy(sizePolicy3)
self.pushButton_add.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_add.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Add new</span><br/>Add new chunk settings definition</p><p>*Crates new chunk definition with current options.<br/>**Definition Name must be unique.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_add.setText(u"Add New")
icon11 = QIcon()
icon11.addFile(u":/icons/icons8-add-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_add.setIcon(icon11)
self.pushButton_add.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_add.setShortcut(u"A")
#endif // QT_CONFIG(shortcut)
self.pushButton_add.setAutoDefault(True)
self.horizontalLayout_2.addWidget(self.pushButton_add)
self.formLayout.setLayout(9, QFormLayout.FieldRole, self.horizontalLayout_2)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(10, QFormLayout.LabelRole, self.verticalSpacer)
self.line_2 = QFrame(self.gridLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(8, QFormLayout.SpanningRole, self.line_2)
self.gridLayout.addLayout(self.formLayout, 0, 1, 3, 1)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setSpacing(5)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
font6 = QFont()
font6.setFamily(u"Segoe UI")
font6.setPointSize(8)
self.label_2.setFont(font6)
self.label_2.setText(u"<html><head/><body><p><span style=\" font-weight:600; font-style:italic;\">Shortcuts</span>: [A] Add New / [E] Edit / [R] Remove / [S] Save / [C] Close</p></body></html>")
self.horizontalLayout_3.addWidget(self.label_2)
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer)
self.pushButton_close = QPushButton(self.gridLayoutWidget)
self.pushButton_close.setObjectName(u"pushButton_close")
sizePolicy3.setHeightForWidth(self.pushButton_close.sizePolicy().hasHeightForWidth())
self.pushButton_close.setSizePolicy(sizePolicy3)
self.pushButton_close.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_close.setToolTip(u"Close Chunk Settings Editor")
#endif // QT_CONFIG(tooltip)
self.pushButton_close.setText(u"Close")
icon12 = QIcon()
icon12.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_close.setIcon(icon12)
self.pushButton_close.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_close.setShortcut(u"C")
#endif // QT_CONFIG(shortcut)
self.horizontalLayout_3.addWidget(self.pushButton_close)
self.gridLayout.addLayout(self.horizontalLayout_3, 4, 0, 1, 2)
QWidget.setTabOrder(self.listWidgetChunkDefs, self.pushButton_sremove)
QWidget.setTabOrder(self.pushButton_sremove, self.pushButton_sedit)
QWidget.setTabOrder(self.pushButton_sedit, self.lineEdit_name)
QWidget.setTabOrder(self.lineEdit_name, self.comboBox_icon)
QWidget.setTabOrder(self.comboBox_icon, self.radioButton_1)
QWidget.setTabOrder(self.radioButton_1, self.radioButton_2)
QWidget.setTabOrder(self.radioButton_2, self.radioButton_3)
QWidget.setTabOrder(self.radioButton_3, self.radioButton_4)
QWidget.setTabOrder(self.radioButton_4, self.radioButton_5)
QWidget.setTabOrder(self.radioButton_5, self.radioButton_6)
QWidget.setTabOrder(self.radioButton_6, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.lineEdit_pre)
QWidget.setTabOrder(self.lineEdit_pre, self.lineEdit_suf)
QWidget.setTabOrder(self.lineEdit_suf, self.lineEdit_wfolder)
QWidget.setTabOrder(self.lineEdit_wfolder, self.pushButton_browsewf)
QWidget.setTabOrder(self.pushButton_browsewf, self.lineEdit_efolder)
QWidget.setTabOrder(self.lineEdit_efolder, self.pushButton_browseef)
QWidget.setTabOrder(self.pushButton_browseef, self.pushButton_save)
QWidget.setTabOrder(self.pushButton_save, self.pushButton_add)
QWidget.setTabOrder(self.pushButton_add, self.pushButton_close)
self.retranslateUi(DialogChunkSettings)
self.pushButton_sremove.clicked.connect(self.lineEdit_name.clear)
self.pushButton_sremove.clicked.connect(self.lineEdit_wfolder.clear)
self.pushButton_sremove.clicked.connect(self.lineEdit_pre.clear)
self.pushButton_sremove.clicked.connect(self.lineEdit_suf.clear)
self.pushButton_sremove.clicked.connect(self.pushButton_save.toggle)
self.pushButton_close.clicked.connect(DialogChunkSettings.reject)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_add.toggle)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_sedit.toggle)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_sremove.toggle)
self.listWidgetChunkDefs.itemDoubleClicked.connect(self.pushButton_sedit.click)
self.pushButton_sedit.clicked.connect(self.pushButton_save.toggle)
self.pushButton_sedit.clicked.connect(self.pushButton_add.toggle)
self.radioButton_6.toggled.connect(self.lineEdit.setEnabled)
self.radioButton_1.toggled.connect(self.lineEdit_pre.setDisabled)
self.radioButton_1.toggled.connect(self.lineEdit_suf.setDisabled)
self.radioButton_2.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_2.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_3.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_3.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_4.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_4.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_5.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_5.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit_suf.setEnabled)
self.pushButton_close.setDefault(True)
# setupUi
def retranslateUi(self, DialogChunkSettings):
__sortingEnabled = self.listWidgetChunkDefs.isSortingEnabled()
self.listWidgetChunkDefs.setSortingEnabled(False)
self.listWidgetChunkDefs.setSortingEnabled(__sortingEnabled)
pass
# retranslateUi

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,546 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" connectslotsbyname="false">
<class>DialogAddEditCam</class>
<widget class="QDialog" name="DialogAddEditCam">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>270</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>480</width>
<height>270</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>480</width>
<height>270</height>
</size>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string notr="true">Add/Edit Camera</string>
</property>
<property name="windowIcon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/AutoFTG-appicon.png</normaloff>:/icons/AutoFTG-appicon.png</iconset>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>461</width>
<height>251</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="3" column="1">
<widget class="QComboBox" name="comboBox_2">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<item>
<property name="text">
<string notr="true">Standard</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-camera-50.png</normaloff>:/icons/icons8-camera-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">DSLR</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-slr-small-lens-96.png</normaloff>:/icons/icons8-slr-small-lens-96.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Special</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-camera-on-tripod-96.png</normaloff>:/icons/icons8-camera-on-tripod-96.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Drone</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-quadcopter-50.png</normaloff>:/icons/icons8-quadcopter-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">SmartPhone</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-touchscreen-96.png</normaloff>:/icons/icons8-touchscreen-96.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">SportCam</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-gopro-96.png</normaloff>:/icons/icons8-gopro-96.png</iconset>
</property>
</item>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_2">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="placeholderText">
<string notr="true">Camera name</string>
</property>
</widget>
</item>
<item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="lineEdit_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>28</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>28</height>
</size>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>8</pointsize>
</font>
</property>
<property name="placeholderText">
<string notr="true">Choose calibration XML file...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>8</pointsize>
</font>
</property>
<property name="toolTip">
<string notr="true">Choose XML calibration file...</string>
</property>
<property name="text">
<string notr="true">Browse</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-images-folder-50.png</normaloff>:/icons/icons8-images-folder-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Camera Name</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>90</width>
<height>30</height>
</size>
</property>
<property name="text">
<string notr="true">Cancel</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-close-50.png</normaloff>:/icons/icons8-close-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>90</width>
<height>30</height>
</size>
</property>
<property name="text">
<string notr="true">Save</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-save-all-50.png</normaloff>:/icons/icons8-save-all-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Type</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Resolution</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Description</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBox">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<item>
<property name="text">
<string notr="true">Frame</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-full-page-view-50.png</normaloff>:/icons/icons8-full-page-view-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Fisheye</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-video-wall-50.png</normaloff>:/icons/icons8-video-wall-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Spherical</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-live-photos-96.png</normaloff>:/icons/icons8-live-photos-96.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Cylindical</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-aperture-50.png</normaloff>:/icons/icons8-aperture-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">RPC</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-ios-application-placeholder-50.png</normaloff>:/icons/icons8-ios-application-placeholder-50.png</iconset>
</property>
</item>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Callibration</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Sub-Type</string>
</property>
</widget>
</item>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string notr="true">0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string notr="true">MP</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_4">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="placeholderText">
<string notr="true">Description of camera (optional)</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<layoutdefault spacing="5" margin="10"/>
<tabstops>
<tabstop>lineEdit_2</tabstop>
<tabstop>lineEdit_4</tabstop>
<tabstop>comboBox</tabstop>
<tabstop>comboBox_2</tabstop>
<tabstop>lineEdit</tabstop>
<tabstop>lineEdit_3</tabstop>
<tabstop>pushButton_3</tabstop>
<tabstop>pushButton_2</tabstop>
<tabstop>pushButton</tabstop>
</tabstops>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections>
<connection>
<sender>pushButton</sender>
<signal>clicked(bool)</signal>
<receiver>DialogAddEditCam</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>144</x>
<y>210</y>
</hint>
<hint type="destinationlabel">
<x>239</x>
<y>119</y>
</hint>
</hints>
</connection>
</connections>
<designerdata>
<property name="gridDeltaX">
<number>10</number>
</property>
<property name="gridDeltaY">
<number>10</number>
</property>
<property name="gridSnapX">
<bool>true</bool>
</property>
<property name="gridSnapY">
<bool>true</bool>
</property>
<property name="gridVisible">
<bool>true</bool>
</property>
</designerdata>
</ui>

View File

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" connectslotsbyname="false">
<class>DialogAddChunkQuick</class>
<widget class="QDialog" name="DialogAddChunkQuick">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>310</width>
<height>155</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>310</width>
<height>155</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>310</width>
<height>155</height>
</size>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="windowTitle">
<string notr="true">Create New Chunk</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>9</x>
<y>9</y>
<width>295</width>
<height>141</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="labelQuickAdd">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Create New Chunk</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Select chunk creation settings:</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cbChunkSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>11</pointsize>
</font>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="statusTip">
<string notr="true">Choose settings used for chunk creation...</string>
</property>
<property name="currentText">
<string notr="true">New Chunk (Default)</string>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<item>
<property name="text">
<string notr="true">New Chunk (Default)</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-add-tab-50.png</normaloff>:/icons/icons8-add-tab-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">KALOTA-1</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_kalota-modra.png</normaloff>:/icons/template_kalota-modra.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>KALOTA-2</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_kalota-oranzna.png</normaloff>:/icons/template_kalota-oranzna.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>KALOTA-3</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_kalota-rdeca.png</normaloff>:/icons/template_kalota-rdeca.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>KALOTA-4</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_kalota-vijola.png</normaloff>:/icons/template_kalota-vijola.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>KALOTA-5</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_kalota-zelena.png</normaloff>:/icons/template_kalota-zelena.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">STOPNICA-1</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_stopnica-modra.png</normaloff>:/icons/template_stopnica-modra.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">STOPNICA-2</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_stopnica-oranzna.png</normaloff>:/icons/template_stopnica-oranzna.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>STOPNICA-3</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_stopnica-rdeca.png</normaloff>:/icons/template_stopnica-rdeca.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>STOPNICA-4</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_stopnica-vijola.png</normaloff>:/icons/template_stopnica-vijola.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>STOPNICA-5</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/template_stopnica-zelena.png</normaloff>:/icons/template_stopnica-zelena.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>PREDOR-VLAK</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-subway-50.png</normaloff>:/icons/icons8-subway-50.png</iconset>
</property>
</item>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btnCreate">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Create</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-add-tab-50.png</normaloff>:/icons/icons8-add-tab-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBoxAutoProc">
<property name="text">
<string notr="true">Auto Processing</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-in-progress-96.png</normaloff>:/icons/icons8-in-progress-96.png</iconset>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnCancel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Close</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-enter-50.png</normaloff>:/icons/icons8-enter-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<layoutdefault spacing="5" margin="10"/>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections>
<connection>
<sender>btnCancel</sender>
<signal>clicked()</signal>
<receiver>DialogAddChunkQuick</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>53</x>
<y>195</y>
</hint>
<hint type="destinationlabel">
<x>8</x>
<y>216</y>
</hint>
</hints>
</connection>
</connections>
<designerdata>
<property name="gridDeltaX">
<number>10</number>
</property>
<property name="gridDeltaY">
<number>10</number>
</property>
<property name="gridSnapX">
<bool>true</bool>
</property>
<property name="gridSnapY">
<bool>true</bool>
</property>
<property name="gridVisible">
<bool>true</bool>
</property>
</designerdata>
</ui>

View File

@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" connectslotsbyname="false">
<class>dialogDefCam</class>
<widget class="QDialog" name="dialogDefCam">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>280</width>
<height>280</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>280</width>
<height>280</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>280</width>
<height>280</height>
</size>
</property>
<property name="windowTitle">
<string notr="true">Choose Camera</string>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="accessibleName">
<string notr="true"/>
</property>
<property name="accessibleDescription">
<string notr="true"/>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>261</width>
<height>261</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>5</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="accessibleName">
<string notr="true"/>
</property>
<property name="accessibleDescription">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">Choose default camera</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="listWidget">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="accessibleName">
<string notr="true"/>
</property>
<property name="accessibleDescription">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="defaultDropAction">
<enum>Qt::IgnoreAction</enum>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="currentRow">
<number>-1</number>
</property>
<item>
<property name="text">
<string notr="true">Item 1</string>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/AutoFTG/resources/CamImages.png</normaloff>:/AutoFTG/resources/CamImages.png</iconset>
</property>
<property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set>
</property>
</item>
<item>
<property name="text">
<string notr="true">Item 2</string>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/AutoFTG/resources/CamImages.png</normaloff>:/AutoFTG/resources/CamImages.png</iconset>
</property>
<property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set>
</property>
</item>
<item>
<property name="text">
<string notr="true">Item 3</string>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="background">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>253</red>
<green>255</green>
<blue>211</blue>
</color>
</brush>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/AutoFTG/resources/Pictures.png</normaloff>:/AutoFTG/resources/Pictures.png</iconset>
</property>
<property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set>
</property>
</item>
<item>
<property name="text">
<string notr="true">Item 4</string>
</property>
<property name="toolTip">
<string notr="true"/>
</property>
<property name="statusTip">
<string notr="true"/>
</property>
<property name="whatsThis">
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/AutoFTG/resources/CamImages.png</normaloff>:/AutoFTG/resources/CamImages.png</iconset>
</property>
<property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set>
</property>
</item>
</widget>
</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>
</layout>
</widget>
</widget>
<layoutdefault spacing="5" margin="10"/>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>dialogDefCam</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>dialogDefCam</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
<designerdata>
<property name="gridDeltaX">
<number>10</number>
</property>
<property name="gridDeltaY">
<number>10</number>
</property>
<property name="gridSnapX">
<bool>true</bool>
</property>
<property name="gridSnapY">
<bool>true</bool>
</property>
<property name="gridVisible">
<bool>true</bool>
</property>
</designerdata>
</ui>

View File

@ -0,0 +1,301 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" connectslotsbyname="false">
<class>DialogEditSettings</class>
<widget class="QDialog" name="DialogEditSettings">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>420</width>
<height>170</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>420</width>
<height>170</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>420</width>
<height>170</height>
</size>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="windowTitle">
<string notr="true">Data Folder</string>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>401</width>
<height>151</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>28</height>
</size>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>7</pointsize>
</font>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Default Camera</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="comboBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentText">
<string notr="true">Frame</string>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<item>
<property name="text">
<string notr="true">Frame</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-full-page-view-50.png</normaloff>:/icons/icons8-full-page-view-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Fisheye</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-video-wall-50.png</normaloff>:/icons/icons8-video-wall-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Spherical</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-live-photos-96.png</normaloff>:/icons/icons8-live-photos-96.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">Cylindical</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-aperture-50.png</normaloff>:/icons/icons8-aperture-50.png</iconset>
</property>
</item>
<item>
<property name="text">
<string notr="true">RPC</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-ios-application-placeholder-50.png</normaloff>:/icons/icons8-ios-application-placeholder-50.png</iconset>
</property>
</item>
</widget>
</item>
<item row="4" column="0" colspan="3">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Cancel</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-close-50.png</normaloff>:/icons/icons8-close-50.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Ok</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-done-50.png</normaloff>:/icons/icons8-done-50.png</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string notr="true">Data Folder</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Edit Settings</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Browse</string>
</property>
<property name="icon">
<iconset resource="../qtresources.qrc">
<normaloff>:/icons/icons8-opened-folder-50.png</normaloff>:/icons/icons8-opened-folder-50.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<layoutdefault spacing="10" margin="10"/>
<resources>
<include location="../qtresources.qrc"/>
</resources>
<connections/>
<designerdata>
<property name="gridDeltaX">
<number>10</number>
</property>
<property name="gridDeltaY">
<number>10</number>
</property>
<property name="gridSnapX">
<bool>true</bool>
</property>
<property name="gridSnapY">
<bool>true</bool>
</property>
<property name="gridVisible">
<bool>true</bool>
</property>
</designerdata>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,408 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'diaAddNewChunkBatchSetMesh.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogSettingsMesh(object):
def setupUi(self, DialogSettingsMesh):
if not DialogSettingsMesh.objectName():
DialogSettingsMesh.setObjectName(u"DialogSettingsMesh")
DialogSettingsMesh.resize(350, 510)
DialogSettingsMesh.setWindowTitle(u"Settings: Mesh & Textures")
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
DialogSettingsMesh.setWindowIcon(icon)
self.formLayoutWidget = QWidget(DialogSettingsMesh)
self.formLayoutWidget.setObjectName(u"formLayoutWidget")
self.formLayoutWidget.setGeometry(QRect(0, 0, 351, 511))
self.formLayout = QFormLayout(self.formLayoutWidget)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setContentsMargins(10, 5, 10, 10)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_11 = QLabel(self.formLayoutWidget)
self.label_11.setObjectName(u"label_11")
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_11.sizePolicy().hasHeightForWidth())
self.label_11.setSizePolicy(sizePolicy)
self.label_11.setMaximumSize(QSize(24, 24))
self.label_11.setFrameShape(QFrame.NoFrame)
self.label_11.setText(u"")
self.label_11.setPixmap(QPixmap(u":/icons/icons8-geodesic-dome-48.png"))
self.label_11.setScaledContents(True)
self.horizontalLayout_2.addWidget(self.label_11)
self.label = QLabel(self.formLayoutWidget)
self.label.setObjectName(u"label")
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setText(u"Depth Maps")
self.horizontalLayout_2.addWidget(self.label)
self.formLayout.setLayout(0, QFormLayout.SpanningRole, self.horizontalLayout_2)
self.label_8 = QLabel(self.formLayoutWidget)
self.label_8.setObjectName(u"label_8")
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_8)
self.comboBox_depthQuality = QComboBox(self.formLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-connection-status-on-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon1, u"Ultra High")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-signal-full-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon2, u"HIgh")
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-signal-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon3, u"Medium")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-low-connection-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon4, u"Low")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-no-connection-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_depthQuality.addItem(icon5, u"Lowest")
self.comboBox_depthQuality.setObjectName(u"comboBox_depthQuality")
self.comboBox_depthQuality.setMinimumSize(QSize(0, 26))
self.comboBox_depthQuality.setMaximumSize(QSize(16777215, 26))
self.comboBox_depthQuality.setCurrentText(u"Medium")
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.comboBox_depthQuality)
self.label_9 = QLabel(self.formLayoutWidget)
self.label_9.setObjectName(u"label_9")
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_9)
self.comboBox_depthFilter = QComboBox(self.formLayoutWidget)
self.comboBox_depthFilter.addItem(u"Mild")
self.comboBox_depthFilter.addItem(u"Moderate")
self.comboBox_depthFilter.addItem(u"Aggresive")
self.comboBox_depthFilter.setObjectName(u"comboBox_depthFilter")
self.comboBox_depthFilter.setMinimumSize(QSize(0, 26))
self.comboBox_depthFilter.setMaximumSize(QSize(16777215, 26))
self.comboBox_depthFilter.setCurrentText(u"Moderate")
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_depthFilter)
self.line_3 = QFrame(self.formLayoutWidget)
self.line_3.setObjectName(u"line_3")
self.line_3.setFrameShape(QFrame.HLine)
self.line_3.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.line_3)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.label_12 = QLabel(self.formLayoutWidget)
self.label_12.setObjectName(u"label_12")
sizePolicy.setHeightForWidth(self.label_12.sizePolicy().hasHeightForWidth())
self.label_12.setSizePolicy(sizePolicy)
self.label_12.setMaximumSize(QSize(24, 24))
self.label_12.setFrameShape(QFrame.NoFrame)
self.label_12.setText(u"")
self.label_12.setPixmap(QPixmap(u":/icons/icons8-mesh-48.png"))
self.label_12.setScaledContents(True)
self.horizontalLayout_4.addWidget(self.label_12)
self.label_10 = QLabel(self.formLayoutWidget)
self.label_10.setObjectName(u"label_10")
self.label_10.setFont(font)
self.label_10.setText(u"Mesh Options")
self.horizontalLayout_4.addWidget(self.label_10)
self.formLayout.setLayout(4, QFormLayout.SpanningRole, self.horizontalLayout_4)
self.label_2 = QLabel(self.formLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"Surface Type")
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_2)
self.cbMeshType = QComboBox(self.formLayoutWidget)
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-3d-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbMeshType.addItem(icon6, u"Arbitrary")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-national-park-48.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbMeshType.addItem(icon7, u"Height Field")
self.cbMeshType.setObjectName(u"cbMeshType")
self.cbMeshType.setMinimumSize(QSize(0, 26))
self.cbMeshType.setMaximumSize(QSize(16777215, 26))
#if QT_CONFIG(tooltip)
self.cbMeshType.setToolTip(u"Choose type of model reconstruction")
#endif // QT_CONFIG(tooltip)
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.cbMeshType)
self.label_3 = QLabel(self.formLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"Face Count")
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_3)
self.cbFaceCount = QComboBox(self.formLayoutWidget)
self.cbFaceCount.addItem(icon2, u"High")
self.cbFaceCount.addItem(icon3, u"Medium")
self.cbFaceCount.addItem(icon4, u"Low")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-rename-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbFaceCount.addItem(icon8, u"Custom")
self.cbFaceCount.setObjectName(u"cbFaceCount")
self.cbFaceCount.setMinimumSize(QSize(0, 26))
self.cbFaceCount.setMaximumSize(QSize(16777215, 26))
#if QT_CONFIG(tooltip)
self.cbFaceCount.setToolTip(u"Choose face count density")
#endif // QT_CONFIG(tooltip)
self.cbFaceCount.setCurrentText(u"Medium")
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.cbFaceCount)
self.lineEditFaceCount = QLineEdit(self.formLayoutWidget)
self.lineEditFaceCount.setObjectName(u"lineEditFaceCount")
self.lineEditFaceCount.setEnabled(False)
self.lineEditFaceCount.setPlaceholderText(u"Custom face count")
self.formLayout.setWidget(7, QFormLayout.FieldRole, self.lineEditFaceCount)
self.checkBox_inter = QCheckBox(self.formLayoutWidget)
self.checkBox_inter.setObjectName(u"checkBox_inter")
#if QT_CONFIG(tooltip)
self.checkBox_inter.setToolTip(u"Enable interpolation")
#endif // QT_CONFIG(tooltip)
self.checkBox_inter.setText(u"Interpolation")
self.formLayout.setWidget(8, QFormLayout.FieldRole, self.checkBox_inter)
self.checkBox_vcol = QCheckBox(self.formLayoutWidget)
self.checkBox_vcol.setObjectName(u"checkBox_vcol")
#if QT_CONFIG(tooltip)
self.checkBox_vcol.setToolTip(u"Calculate vertex colors")
#endif // QT_CONFIG(tooltip)
self.checkBox_vcol.setText(u"Vertex Colors")
self.checkBox_vcol.setChecked(True)
self.formLayout.setWidget(9, QFormLayout.FieldRole, self.checkBox_vcol)
self.checkBox_vcon = QCheckBox(self.formLayoutWidget)
self.checkBox_vcon.setObjectName(u"checkBox_vcon")
#if QT_CONFIG(tooltip)
self.checkBox_vcon.setToolTip(u"Calculate vertex confidence")
#endif // QT_CONFIG(tooltip)
self.checkBox_vcon.setText(u"Vertex Confidence")
self.formLayout.setWidget(10, QFormLayout.FieldRole, self.checkBox_vcon)
self.line = QFrame(self.formLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(11, QFormLayout.SpanningRole, self.line)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.label_13 = QLabel(self.formLayoutWidget)
self.label_13.setObjectName(u"label_13")
sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
self.label_13.setSizePolicy(sizePolicy)
self.label_13.setMaximumSize(QSize(24, 24))
self.label_13.setFrameShape(QFrame.NoFrame)
self.label_13.setText(u"")
self.label_13.setPixmap(QPixmap(u":/icons/icons8-video-wall-50.png"))
self.label_13.setScaledContents(True)
self.horizontalLayout_5.addWidget(self.label_13)
self.label_5 = QLabel(self.formLayoutWidget)
self.label_5.setObjectName(u"label_5")
self.label_5.setFont(font)
self.label_5.setText(u"Textures Options")
self.horizontalLayout_5.addWidget(self.label_5)
self.formLayout.setLayout(12, QFormLayout.SpanningRole, self.horizontalLayout_5)
self.groupBox_buildTex = QGroupBox(self.formLayoutWidget)
self.groupBox_buildTex.setObjectName(u"groupBox_buildTex")
self.groupBox_buildTex.setMinimumSize(QSize(0, 90))
self.groupBox_buildTex.setTitle(u"Build Textures")
self.groupBox_buildTex.setCheckable(True)
self.gridLayoutWidget = QWidget(self.groupBox_buildTex)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(10, 30, 311, 52))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"Size")
self.gridLayout.addWidget(self.label_4, 0, 2, 1, 1)
self.checkBox_texFillHoles = QCheckBox(self.gridLayoutWidget)
self.checkBox_texFillHoles.setObjectName(u"checkBox_texFillHoles")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.checkBox_texFillHoles.sizePolicy().hasHeightForWidth())
self.checkBox_texFillHoles.setSizePolicy(sizePolicy1)
self.checkBox_texFillHoles.setText(u"Fill Holes")
self.checkBox_texFillHoles.setChecked(True)
self.gridLayout.addWidget(self.checkBox_texFillHoles, 0, 0, 1, 1)
self.lineEdit_texSize = QLineEdit(self.gridLayoutWidget)
self.lineEdit_texSize.setObjectName(u"lineEdit_texSize")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.lineEdit_texSize.sizePolicy().hasHeightForWidth())
self.lineEdit_texSize.setSizePolicy(sizePolicy2)
self.lineEdit_texSize.setMaximumSize(QSize(60, 16777215))
self.lineEdit_texSize.setText(u"4096")
self.gridLayout.addWidget(self.lineEdit_texSize, 1, 2, 1, 1)
self.label_6 = QLabel(self.gridLayoutWidget)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"Levels")
self.gridLayout.addWidget(self.label_6, 0, 4, 1, 1)
self.checkBox_texGhostFilt = QCheckBox(self.gridLayoutWidget)
self.checkBox_texGhostFilt.setObjectName(u"checkBox_texGhostFilt")
sizePolicy1.setHeightForWidth(self.checkBox_texGhostFilt.sizePolicy().hasHeightForWidth())
self.checkBox_texGhostFilt.setSizePolicy(sizePolicy1)
self.checkBox_texGhostFilt.setText(u"Ghosting Filter")
self.checkBox_texGhostFilt.setChecked(True)
self.gridLayout.addWidget(self.checkBox_texGhostFilt, 1, 0, 1, 1)
self.lineEdit_texLevels = QLineEdit(self.gridLayoutWidget)
self.lineEdit_texLevels.setObjectName(u"lineEdit_texLevels")
sizePolicy2.setHeightForWidth(self.lineEdit_texLevels.sizePolicy().hasHeightForWidth())
self.lineEdit_texLevels.setSizePolicy(sizePolicy2)
self.lineEdit_texLevels.setMaximumSize(QSize(50, 16777215))
self.lineEdit_texLevels.setText(u"1")
self.lineEdit_texLevels.setMaxLength(2)
self.gridLayout.addWidget(self.lineEdit_texLevels, 1, 4, 1, 1)
self.label_7 = QLabel(self.gridLayoutWidget)
self.label_7.setObjectName(u"label_7")
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth())
self.label_7.setSizePolicy(sizePolicy3)
self.label_7.setText(u"x")
self.gridLayout.addWidget(self.label_7, 1, 3, 1, 1)
self.horizontalSpacer = QSpacerItem(20, 5, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.gridLayout.addItem(self.horizontalSpacer, 1, 1, 1, 1)
self.formLayout.setWidget(13, QFormLayout.SpanningRole, self.groupBox_buildTex)
self.line_2 = QFrame(self.formLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(15, QFormLayout.SpanningRole, self.line_2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton_Save = QPushButton(self.formLayoutWidget)
self.pushButton_Save.setObjectName(u"pushButton_Save")
self.pushButton_Save.setText(u"Save")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-save-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_Save.setIcon(icon9)
self.pushButton_Save.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_Save)
self.pushButton_Cancel = QPushButton(self.formLayoutWidget)
self.pushButton_Cancel.setObjectName(u"pushButton_Cancel")
self.pushButton_Cancel.setText(u"Cancel")
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_Cancel.setIcon(icon10)
self.pushButton_Cancel.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_Cancel)
self.formLayout.setLayout(16, QFormLayout.FieldRole, self.horizontalLayout)
self.verticalSpacer = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(14, QFormLayout.FieldRole, self.verticalSpacer)
QWidget.setTabOrder(self.comboBox_depthQuality, self.comboBox_depthFilter)
QWidget.setTabOrder(self.comboBox_depthFilter, self.cbMeshType)
QWidget.setTabOrder(self.cbMeshType, self.cbFaceCount)
QWidget.setTabOrder(self.cbFaceCount, self.lineEditFaceCount)
QWidget.setTabOrder(self.lineEditFaceCount, self.checkBox_inter)
QWidget.setTabOrder(self.checkBox_inter, self.checkBox_vcol)
QWidget.setTabOrder(self.checkBox_vcol, self.checkBox_vcon)
QWidget.setTabOrder(self.checkBox_vcon, self.groupBox_buildTex)
QWidget.setTabOrder(self.groupBox_buildTex, self.checkBox_texFillHoles)
QWidget.setTabOrder(self.checkBox_texFillHoles, self.checkBox_texGhostFilt)
QWidget.setTabOrder(self.checkBox_texGhostFilt, self.lineEdit_texSize)
QWidget.setTabOrder(self.lineEdit_texSize, self.lineEdit_texLevels)
QWidget.setTabOrder(self.lineEdit_texLevels, self.pushButton_Save)
QWidget.setTabOrder(self.pushButton_Save, self.pushButton_Cancel)
self.retranslateUi(DialogSettingsMesh)
self.pushButton_Cancel.clicked.connect(DialogSettingsMesh.reject)
self.pushButton_Save.clicked.connect(DialogSettingsMesh.accept)
self.cbFaceCount.highlighted.connect(self.lineEditFaceCount.setText)
self.comboBox_depthQuality.setCurrentIndex(2)
self.comboBox_depthFilter.setCurrentIndex(1)
self.cbFaceCount.setCurrentIndex(1)
self.pushButton_Save.setDefault(True)
QMetaObject.connectSlotsByName(DialogSettingsMesh)
# setupUi
def retranslateUi(self, DialogSettingsMesh):
self.label_8.setText(QCoreApplication.translate("DialogSettingsMesh", u"Depth Maps Quality", None))
self.label_9.setText(QCoreApplication.translate("DialogSettingsMesh", u"Depth Filtering", None))
pass
# retranslateUi

View File

@ -0,0 +1,688 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'diaChunkSettingsEditor.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogChunkSettings(object):
def setupUi(self, DialogChunkSettings):
if not DialogChunkSettings.objectName():
DialogChunkSettings.setObjectName(u"DialogChunkSettings")
DialogChunkSettings.resize(720, 480)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(DialogChunkSettings.sizePolicy().hasHeightForWidth())
DialogChunkSettings.setSizePolicy(sizePolicy)
DialogChunkSettings.setMinimumSize(QSize(720, 180))
DialogChunkSettings.setMaximumSize(QSize(720, 480))
DialogChunkSettings.setWindowTitle(u"Chunk Settings Editor")
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
DialogChunkSettings.setWindowIcon(icon)
self.gridLayoutWidget = QWidget(DialogChunkSettings)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(9, 10, 701, 461))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.label_menuSet_2 = QLabel(self.gridLayoutWidget)
self.label_menuSet_2.setObjectName(u"label_menuSet_2")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.label_menuSet_2.sizePolicy().hasHeightForWidth())
self.label_menuSet_2.setSizePolicy(sizePolicy1)
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_menuSet_2.setFont(font)
self.label_menuSet_2.setFrameShape(QFrame.StyledPanel)
self.label_menuSet_2.setText(u"Chunk Definitions List")
self.gridLayout.addWidget(self.label_menuSet_2, 0, 0, 1, 1)
self.listWidgetChunkDefs = QListWidget(self.gridLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-add-tab-50.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem.setText(u"Default");
__qlistwidgetitem.setIcon(icon1);
icon2 = QIcon()
icon2.addFile(u":/icons/template_kalota-zelena.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem1 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem1.setText(u"T8 GC - KALOTA");
__qlistwidgetitem1.setIcon(icon2);
icon3 = QIcon()
icon3.addFile(u":/icons/template_stopnica-zelena.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem2 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem2.setText(u"T8 GC - STOPNICA - IZKOP");
__qlistwidgetitem2.setIcon(icon3);
icon4 = QIcon()
icon4.addFile(u":/icons/template_kalota-oranzna.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem3 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem3.setText(u"T8 PRECNIK-4");
__qlistwidgetitem3.setIcon(icon4);
icon5 = QIcon()
icon5.addFile(u":/icons/template_kalota-modra.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem4 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem4.setText(u"T8 SC - KALOTA");
__qlistwidgetitem4.setIcon(icon5);
icon6 = QIcon()
icon6.addFile(u":/icons/template_stopnica-modra.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem5 = QListWidgetItem(self.listWidgetChunkDefs)
__qlistwidgetitem5.setText(u"T8 SC - STOPNICA - IZKOP");
__qlistwidgetitem5.setIcon(icon6);
self.listWidgetChunkDefs.setObjectName(u"listWidgetChunkDefs")
sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.listWidgetChunkDefs.sizePolicy().hasHeightForWidth())
self.listWidgetChunkDefs.setSizePolicy(sizePolicy2)
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
self.listWidgetChunkDefs.setFont(font1)
self.listWidgetChunkDefs.setAutoScrollMargin(20)
self.listWidgetChunkDefs.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.listWidgetChunkDefs.setProperty("showDropIndicator", False)
self.listWidgetChunkDefs.setSelectionBehavior(QAbstractItemView.SelectItems)
self.listWidgetChunkDefs.setIconSize(QSize(24, 24))
self.listWidgetChunkDefs.setViewMode(QListView.ListMode)
self.listWidgetChunkDefs.setUniformItemSizes(True)
self.listWidgetChunkDefs.setSelectionRectVisible(True)
self.listWidgetChunkDefs.setSortingEnabled(False)
self.gridLayout.addWidget(self.listWidgetChunkDefs, 1, 0, 1, 1)
self.horizontalLayout_6 = QHBoxLayout()
self.horizontalLayout_6.setSpacing(5)
self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
self.pushButton_sremove = QPushButton(self.gridLayoutWidget)
self.pushButton_sremove.setObjectName(u"pushButton_sremove")
self.pushButton_sremove.setEnabled(True)
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.pushButton_sremove.sizePolicy().hasHeightForWidth())
self.pushButton_sremove.setSizePolicy(sizePolicy3)
self.pushButton_sremove.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_sremove.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Remove<br/></span>Remove selected definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_sremove.setText(u"Remove")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-full-recycle-bin-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_sremove.setIcon(icon7)
self.pushButton_sremove.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_sremove.setShortcut(u"R")
#endif // QT_CONFIG(shortcut)
self.pushButton_sremove.setAutoDefault(False)
self.horizontalLayout_6.addWidget(self.pushButton_sremove)
self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_6.addItem(self.horizontalSpacer_3)
self.pushButton_sedit = QPushButton(self.gridLayoutWidget)
self.pushButton_sedit.setObjectName(u"pushButton_sedit")
self.pushButton_sedit.setEnabled(True)
sizePolicy3.setHeightForWidth(self.pushButton_sedit.sizePolicy().hasHeightForWidth())
self.pushButton_sedit.setSizePolicy(sizePolicy3)
self.pushButton_sedit.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_sedit.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Edit</span><br/>Edit selected chunk definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_sedit.setLayoutDirection(Qt.RightToLeft)
self.pushButton_sedit.setText(u"Edit")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-design-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_sedit.setIcon(icon8)
self.pushButton_sedit.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_sedit.setShortcut(u"E")
#endif // QT_CONFIG(shortcut)
self.pushButton_sedit.setAutoDefault(False)
self.horizontalLayout_6.addWidget(self.pushButton_sedit)
self.gridLayout.addLayout(self.horizontalLayout_6, 2, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 3, 0, 1, 2)
self.formLayout = QFormLayout()
self.formLayout.setSpacing(5)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setHorizontalSpacing(5)
self.formLayout.setVerticalSpacing(5)
self.label_menuSet = QLabel(self.gridLayoutWidget)
self.label_menuSet.setObjectName(u"label_menuSet")
sizePolicy1.setHeightForWidth(self.label_menuSet.sizePolicy().hasHeightForWidth())
self.label_menuSet.setSizePolicy(sizePolicy1)
self.label_menuSet.setFont(font)
self.label_menuSet.setFrameShape(QFrame.StyledPanel)
self.label_menuSet.setText(u"Menu Settings")
self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_menuSet)
self.label_nameicon = QLabel(self.gridLayoutWidget)
self.label_nameicon.setObjectName(u"label_nameicon")
self.label_nameicon.setMinimumSize(QSize(80, 0))
self.label_nameicon.setMaximumSize(QSize(80, 16777215))
self.label_nameicon.setText(u"Name")
self.label_nameicon.setIndent(5)
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_nameicon)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setSpacing(5)
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.lineEdit_name = QLineEdit(self.gridLayoutWidget)
self.lineEdit_name.setObjectName(u"lineEdit_name")
sizePolicy4 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.lineEdit_name.sizePolicy().hasHeightForWidth())
self.lineEdit_name.setSizePolicy(sizePolicy4)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(12)
self.lineEdit_name.setFont(font2)
self.lineEdit_name.setPlaceholderText(u"Name shown in list...")
self.horizontalLayout_4.addWidget(self.lineEdit_name)
self.formLayout.setLayout(1, QFormLayout.FieldRole, self.horizontalLayout_4)
self.label_nameicon_2 = QLabel(self.gridLayoutWidget)
self.label_nameicon_2.setObjectName(u"label_nameicon_2")
sizePolicy5 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
sizePolicy5.setHorizontalStretch(0)
sizePolicy5.setVerticalStretch(0)
sizePolicy5.setHeightForWidth(self.label_nameicon_2.sizePolicy().hasHeightForWidth())
self.label_nameicon_2.setSizePolicy(sizePolicy5)
font3 = QFont()
font3.setFamily(u"Segoe UI")
font3.setPointSize(9)
self.label_nameicon_2.setFont(font3)
self.label_nameicon_2.setText(u"Icon")
self.label_nameicon_2.setIndent(5)
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_nameicon_2)
self.comboBox_icon = QComboBox(self.gridLayoutWidget)
self.comboBox_icon.setObjectName(u"comboBox_icon")
sizePolicy6 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy6.setHorizontalStretch(0)
sizePolicy6.setVerticalStretch(0)
sizePolicy6.setHeightForWidth(self.comboBox_icon.sizePolicy().hasHeightForWidth())
self.comboBox_icon.setSizePolicy(sizePolicy6)
self.comboBox_icon.setMaximumSize(QSize(100, 16777215))
#if QT_CONFIG(tooltip)
self.comboBox_icon.setToolTip(u"Choose icon to be used in list...")
#endif // QT_CONFIG(tooltip)
self.comboBox_icon.setIconSize(QSize(24, 24))
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_icon)
self.label_chunkSet = QLabel(self.gridLayoutWidget)
self.label_chunkSet.setObjectName(u"label_chunkSet")
sizePolicy1.setHeightForWidth(self.label_chunkSet.sizePolicy().hasHeightForWidth())
self.label_chunkSet.setSizePolicy(sizePolicy1)
self.label_chunkSet.setFont(font)
self.label_chunkSet.setFrameShape(QFrame.StyledPanel)
self.label_chunkSet.setText(u"Chunk Settings")
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.label_chunkSet)
self.horizontalLayout_7 = QHBoxLayout()
self.horizontalLayout_7.setSpacing(5)
self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
self.groupBoxChunkName = QGroupBox(self.gridLayoutWidget)
self.groupBoxChunkName.setObjectName(u"groupBoxChunkName")
sizePolicy7 = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Preferred)
sizePolicy7.setHorizontalStretch(0)
sizePolicy7.setVerticalStretch(0)
sizePolicy7.setHeightForWidth(self.groupBoxChunkName.sizePolicy().hasHeightForWidth())
self.groupBoxChunkName.setSizePolicy(sizePolicy7)
self.groupBoxChunkName.setMinimumSize(QSize(0, 130))
font4 = QFont()
font4.setFamily(u"Segoe UI")
font4.setPointSize(9)
font4.setBold(True)
font4.setWeight(75)
self.groupBoxChunkName.setFont(font4)
self.groupBoxChunkName.setTitle(u"Chunk Name Format")
self.gridLayoutWidget_2 = QWidget(self.groupBoxChunkName)
self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2")
self.gridLayoutWidget_2.setGeometry(QRect(12, 25, 411, 100))
self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setSpacing(5)
self.gridLayout_2.setContentsMargins(10, 10, 10, 10)
self.gridLayout_2.setObjectName(u"gridLayout_2")
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.radioButton_5 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_5.setObjectName(u"radioButton_5")
sizePolicy8 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy8.setHorizontalStretch(0)
sizePolicy8.setVerticalStretch(0)
sizePolicy8.setHeightForWidth(self.radioButton_5.sizePolicy().hasHeightForWidth())
self.radioButton_5.setSizePolicy(sizePolicy8)
font5 = QFont()
font5.setFamily(u"Segoe UI")
font5.setPointSize(9)
font5.setBold(False)
font5.setWeight(50)
self.radioButton_5.setFont(font5)
self.radioButton_5.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_5.setToolTip(u"<html><head/><body><p>Use date and time found in first image file that is imported from work folder.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_5.setText(u"Image date-time")
self.gridLayout_2.addWidget(self.radioButton_5, 1, 1, 1, 1)
self.radioButton_3 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_3.setObjectName(u"radioButton_3")
sizePolicy8.setHeightForWidth(self.radioButton_3.sizePolicy().hasHeightForWidth())
self.radioButton_3.setSizePolicy(sizePolicy8)
self.radioButton_3.setFont(font5)
self.radioButton_3.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_3.setToolTip(u"<html><head/><body><p>Use metadata string from point file that must be located in imported data folder, and must also have the same name as data folder..</p><p><span style=\" font-weight:600;\">Info:</span> String must be in metadata format at the beginnig of point file, as described in help.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_3.setText(u"Point File Metadata")
self.gridLayout_2.addWidget(self.radioButton_3, 2, 0, 1, 1)
self.radioButton_6 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_6.setObjectName(u"radioButton_6")
sizePolicy8.setHeightForWidth(self.radioButton_6.sizePolicy().hasHeightForWidth())
self.radioButton_6.setSizePolicy(sizePolicy8)
self.radioButton_6.setFont(font5)
self.radioButton_6.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_6.setToolTip(u"<html><head/><body><p>Use date and time at which chunk is created in custom provided format.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_6.setText(u"Custom date-time")
self.gridLayout_2.addWidget(self.radioButton_6, 2, 1, 1, 1)
self.radioButton_2 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_2.setObjectName(u"radioButton_2")
sizePolicy8.setHeightForWidth(self.radioButton_2.sizePolicy().hasHeightForWidth())
self.radioButton_2.setSizePolicy(sizePolicy8)
self.radioButton_2.setFont(font5)
self.radioButton_2.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_2.setToolTip(u"<html><head/><body><p>Uses the name of folder from which data is beeing imported from.</p><p>* Recommended naming format.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_2.setText(u"Data Folder Name")
self.gridLayout_2.addWidget(self.radioButton_2, 1, 0, 1, 1)
self.radioButton_1 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_1.setObjectName(u"radioButton_1")
sizePolicy8.setHeightForWidth(self.radioButton_1.sizePolicy().hasHeightForWidth())
self.radioButton_1.setSizePolicy(sizePolicy8)
self.radioButton_1.setFont(font5)
self.radioButton_1.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_1.setToolTip(u"<html><head/><body><p>Use default naming format provided by Metashape.</p><p>Example: Chunk 1, Chunk 2,...</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_1.setText(u"Metashape Default")
self.gridLayout_2.addWidget(self.radioButton_1, 0, 0, 1, 1)
self.radioButton_4 = QRadioButton(self.gridLayoutWidget_2)
self.radioButton_4.setObjectName(u"radioButton_4")
sizePolicy8.setHeightForWidth(self.radioButton_4.sizePolicy().hasHeightForWidth())
self.radioButton_4.setSizePolicy(sizePolicy8)
self.radioButton_4.setFont(font5)
self.radioButton_4.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(tooltip)
self.radioButton_4.setToolTip(u"<html><head/><body><p>Use date and time at which chunk is created.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.radioButton_4.setText(u"Creation date-time")
self.gridLayout_2.addWidget(self.radioButton_4, 0, 1, 1, 1)
self.horizontalLayout_8 = QHBoxLayout()
self.horizontalLayout_8.setSpacing(5)
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
self.horizontalSpacer_4 = QSpacerItem(225, 0, QSizePolicy.Fixed, QSizePolicy.Minimum)
self.horizontalLayout_8.addItem(self.horizontalSpacer_4)
self.lineEdit = QLineEdit(self.gridLayoutWidget_2)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setEnabled(False)
sizePolicy8.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
self.lineEdit.setSizePolicy(sizePolicy8)
self.lineEdit.setMinimumSize(QSize(140, 0))
self.lineEdit.setFont(font5)
#if QT_CONFIG(tooltip)
self.lineEdit.setToolTip(u"<html><head/><body><p>Enter format string in python format.</p><p>*For details please check help first.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.lineEdit.setPlaceholderText(u"%Y%m%d-%H%M%S")
self.horizontalLayout_8.addWidget(self.lineEdit)
self.horizontalSpacer_5 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_8.addItem(self.horizontalSpacer_5)
self.gridLayout_2.addLayout(self.horizontalLayout_8, 3, 0, 1, 2)
self.horizontalLayout_7.addWidget(self.groupBoxChunkName)
self.formLayout.setLayout(4, QFormLayout.SpanningRole, self.horizontalLayout_7)
self.label_wfolder_2 = QLabel(self.gridLayoutWidget)
self.label_wfolder_2.setObjectName(u"label_wfolder_2")
self.label_wfolder_2.setFont(font3)
self.label_wfolder_2.setText(u"Prefix/Suffix")
self.label_wfolder_2.setIndent(5)
self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_wfolder_2)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setSpacing(5)
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.lineEdit_pre = QLineEdit(self.gridLayoutWidget)
self.lineEdit_pre.setObjectName(u"lineEdit_pre")
self.lineEdit_pre.setEnabled(False)
sizePolicy4.setHeightForWidth(self.lineEdit_pre.sizePolicy().hasHeightForWidth())
self.lineEdit_pre.setSizePolicy(sizePolicy4)
#if QT_CONFIG(tooltip)
self.lineEdit_pre.setToolTip(u"Leave empty to disable prefix.")
#endif // QT_CONFIG(tooltip)
self.lineEdit_pre.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.lineEdit_pre.setPlaceholderText(u"PREFIX_")
self.horizontalLayout_5.addWidget(self.lineEdit_pre)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
self.label.setStyleSheet(u"color: rgb(157, 158, 149);")
self.label.setText(u"<chunk name>")
self.label.setAlignment(Qt.AlignCenter)
self.horizontalLayout_5.addWidget(self.label)
self.lineEdit_suf = QLineEdit(self.gridLayoutWidget)
self.lineEdit_suf.setObjectName(u"lineEdit_suf")
self.lineEdit_suf.setEnabled(False)
sizePolicy4.setHeightForWidth(self.lineEdit_suf.sizePolicy().hasHeightForWidth())
self.lineEdit_suf.setSizePolicy(sizePolicy4)
#if QT_CONFIG(tooltip)
self.lineEdit_suf.setToolTip(u"Leave empty to disable suffix.")
#endif // QT_CONFIG(tooltip)
self.lineEdit_suf.setPlaceholderText(u"_SUFFIX")
self.horizontalLayout_5.addWidget(self.lineEdit_suf)
self.formLayout.setLayout(5, QFormLayout.FieldRole, self.horizontalLayout_5)
self.label_wfolder = QLabel(self.gridLayoutWidget)
self.label_wfolder.setObjectName(u"label_wfolder")
self.label_wfolder.setFont(font3)
self.label_wfolder.setText(u"Data Folder")
self.label_wfolder.setIndent(5)
self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_wfolder)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.lineEdit_wfolder = QLineEdit(self.gridLayoutWidget)
self.lineEdit_wfolder.setObjectName(u"lineEdit_wfolder")
self.lineEdit_wfolder.setPlaceholderText(u"Path to folder with data...")
self.horizontalLayout.addWidget(self.lineEdit_wfolder)
self.pushButton_browsewf = QPushButton(self.gridLayoutWidget)
self.pushButton_browsewf.setObjectName(u"pushButton_browsewf")
sizePolicy3.setHeightForWidth(self.pushButton_browsewf.sizePolicy().hasHeightForWidth())
self.pushButton_browsewf.setSizePolicy(sizePolicy3)
#if QT_CONFIG(tooltip)
self.pushButton_browsewf.setToolTip(u"<html><head/><body><p>Select location with working data for this definition.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_browsewf.setText(u"")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-opened-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_browsewf.setIcon(icon9)
self.pushButton_browsewf.setIconSize(QSize(20, 20))
self.pushButton_browsewf.setAutoDefault(False)
self.horizontalLayout.addWidget(self.pushButton_browsewf)
self.formLayout.setLayout(6, QFormLayout.FieldRole, self.horizontalLayout)
self.label_efolder = QLabel(self.gridLayoutWidget)
self.label_efolder.setObjectName(u"label_efolder")
self.label_efolder.setFont(font3)
self.label_efolder.setText(u"Export Folder")
self.label_efolder.setIndent(5)
self.formLayout.setWidget(7, QFormLayout.LabelRole, self.label_efolder)
self.horizontalLayout_10 = QHBoxLayout()
self.horizontalLayout_10.setSpacing(5)
self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
self.lineEdit_efolder = QLineEdit(self.gridLayoutWidget)
self.lineEdit_efolder.setObjectName(u"lineEdit_efolder")
self.lineEdit_efolder.setPlaceholderText(u"Path to folder for exporting...")
self.horizontalLayout_10.addWidget(self.lineEdit_efolder)
self.pushButton_browseef = QPushButton(self.gridLayoutWidget)
self.pushButton_browseef.setObjectName(u"pushButton_browseef")
sizePolicy3.setHeightForWidth(self.pushButton_browseef.sizePolicy().hasHeightForWidth())
self.pushButton_browseef.setSizePolicy(sizePolicy3)
#if QT_CONFIG(tooltip)
self.pushButton_browseef.setToolTip(u"<html><head/><body><p>Select location with working data for this definition.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_browseef.setText(u"")
self.pushButton_browseef.setIcon(icon9)
self.pushButton_browseef.setIconSize(QSize(20, 20))
self.pushButton_browseef.setAutoDefault(False)
self.horizontalLayout_10.addWidget(self.pushButton_browseef)
self.formLayout.setLayout(7, QFormLayout.FieldRole, self.horizontalLayout_10)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setSpacing(5)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
self.pushButton_save = QPushButton(self.gridLayoutWidget)
self.pushButton_save.setObjectName(u"pushButton_save")
self.pushButton_save.setEnabled(False)
sizePolicy3.setHeightForWidth(self.pushButton_save.sizePolicy().hasHeightForWidth())
self.pushButton_save.setSizePolicy(sizePolicy3)
self.pushButton_save.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_save.setToolTip(u"<html><head/><body><p>Save currently selected chunk definition</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_save.setText(u"Save")
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_save.setIcon(icon10)
self.pushButton_save.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_save.setShortcut(u"S")
#endif // QT_CONFIG(shortcut)
self.pushButton_save.setAutoDefault(False)
self.horizontalLayout_2.addWidget(self.pushButton_save)
self.pushButton_add = QPushButton(self.gridLayoutWidget)
self.pushButton_add.setObjectName(u"pushButton_add")
sizePolicy3.setHeightForWidth(self.pushButton_add.sizePolicy().hasHeightForWidth())
self.pushButton_add.setSizePolicy(sizePolicy3)
self.pushButton_add.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_add.setToolTip(u"<html><head/><body><p><span style=\" font-weight:600;\">Add new</span><br/>Add new chunk settings definition</p><p>*Crates new chunk definition with current options.<br/>**Definition Name must be unique.</p></body></html>")
#endif // QT_CONFIG(tooltip)
self.pushButton_add.setText(u"Add New")
icon11 = QIcon()
icon11.addFile(u":/icons/icons8-add-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_add.setIcon(icon11)
self.pushButton_add.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_add.setShortcut(u"A")
#endif // QT_CONFIG(shortcut)
self.pushButton_add.setAutoDefault(True)
self.horizontalLayout_2.addWidget(self.pushButton_add)
self.formLayout.setLayout(9, QFormLayout.FieldRole, self.horizontalLayout_2)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(10, QFormLayout.LabelRole, self.verticalSpacer)
self.line_2 = QFrame(self.gridLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(8, QFormLayout.SpanningRole, self.line_2)
self.gridLayout.addLayout(self.formLayout, 0, 1, 3, 1)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setSpacing(5)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
font6 = QFont()
font6.setFamily(u"Segoe UI")
font6.setPointSize(8)
self.label_2.setFont(font6)
self.label_2.setText(u"<html><head/><body><p><span style=\" font-weight:600; font-style:italic;\">Shortcuts</span>: [A] Add New / [E] Edit / [R] Remove / [S] Save / [C] Close</p></body></html>")
self.horizontalLayout_3.addWidget(self.label_2)
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer)
self.pushButton_close = QPushButton(self.gridLayoutWidget)
self.pushButton_close.setObjectName(u"pushButton_close")
sizePolicy3.setHeightForWidth(self.pushButton_close.sizePolicy().hasHeightForWidth())
self.pushButton_close.setSizePolicy(sizePolicy3)
self.pushButton_close.setMinimumSize(QSize(0, 30))
#if QT_CONFIG(tooltip)
self.pushButton_close.setToolTip(u"Close Chunk Settings Editor")
#endif // QT_CONFIG(tooltip)
self.pushButton_close.setText(u"Close")
icon12 = QIcon()
icon12.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_close.setIcon(icon12)
self.pushButton_close.setIconSize(QSize(20, 20))
#if QT_CONFIG(shortcut)
self.pushButton_close.setShortcut(u"C")
#endif // QT_CONFIG(shortcut)
self.horizontalLayout_3.addWidget(self.pushButton_close)
self.gridLayout.addLayout(self.horizontalLayout_3, 4, 0, 1, 2)
QWidget.setTabOrder(self.listWidgetChunkDefs, self.pushButton_sremove)
QWidget.setTabOrder(self.pushButton_sremove, self.pushButton_sedit)
QWidget.setTabOrder(self.pushButton_sedit, self.lineEdit_name)
QWidget.setTabOrder(self.lineEdit_name, self.comboBox_icon)
QWidget.setTabOrder(self.comboBox_icon, self.radioButton_1)
QWidget.setTabOrder(self.radioButton_1, self.radioButton_2)
QWidget.setTabOrder(self.radioButton_2, self.radioButton_3)
QWidget.setTabOrder(self.radioButton_3, self.radioButton_4)
QWidget.setTabOrder(self.radioButton_4, self.radioButton_5)
QWidget.setTabOrder(self.radioButton_5, self.radioButton_6)
QWidget.setTabOrder(self.radioButton_6, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.lineEdit_pre)
QWidget.setTabOrder(self.lineEdit_pre, self.lineEdit_suf)
QWidget.setTabOrder(self.lineEdit_suf, self.lineEdit_wfolder)
QWidget.setTabOrder(self.lineEdit_wfolder, self.pushButton_browsewf)
QWidget.setTabOrder(self.pushButton_browsewf, self.lineEdit_efolder)
QWidget.setTabOrder(self.lineEdit_efolder, self.pushButton_browseef)
QWidget.setTabOrder(self.pushButton_browseef, self.pushButton_save)
QWidget.setTabOrder(self.pushButton_save, self.pushButton_add)
QWidget.setTabOrder(self.pushButton_add, self.pushButton_close)
self.retranslateUi(DialogChunkSettings)
self.pushButton_sremove.clicked.connect(self.lineEdit_name.clear)
self.pushButton_sremove.clicked.connect(self.lineEdit_wfolder.clear)
self.pushButton_sremove.clicked.connect(self.lineEdit_pre.clear)
self.pushButton_sremove.clicked.connect(self.lineEdit_suf.clear)
self.pushButton_sremove.clicked.connect(self.pushButton_save.toggle)
self.pushButton_close.clicked.connect(DialogChunkSettings.reject)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_add.toggle)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_sedit.toggle)
self.listWidgetChunkDefs.currentItemChanged.connect(self.pushButton_sremove.toggle)
self.listWidgetChunkDefs.itemDoubleClicked.connect(self.pushButton_sedit.click)
self.pushButton_sedit.clicked.connect(self.pushButton_save.toggle)
self.pushButton_sedit.clicked.connect(self.pushButton_add.toggle)
self.radioButton_6.toggled.connect(self.lineEdit.setEnabled)
self.radioButton_1.toggled.connect(self.lineEdit_pre.setDisabled)
self.radioButton_1.toggled.connect(self.lineEdit_suf.setDisabled)
self.radioButton_2.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_2.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_3.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_3.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_4.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_4.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_5.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_5.toggled.connect(self.lineEdit_suf.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit_pre.setEnabled)
self.radioButton_6.toggled.connect(self.lineEdit_suf.setEnabled)
self.pushButton_close.setDefault(True)
# setupUi
def retranslateUi(self, DialogChunkSettings):
__sortingEnabled = self.listWidgetChunkDefs.isSortingEnabled()
self.listWidgetChunkDefs.setSortingEnabled(False)
self.listWidgetChunkDefs.setSortingEnabled(__sortingEnabled)
pass
# retranslateUi

View File

@ -0,0 +1,289 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'uiAddEditCam.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogAddEditCam(object):
def setupUi(self, DialogAddEditCam):
if not DialogAddEditCam.objectName():
DialogAddEditCam.setObjectName(u"DialogAddEditCam")
DialogAddEditCam.resize(480, 270)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(DialogAddEditCam.sizePolicy().hasHeightForWidth())
DialogAddEditCam.setSizePolicy(sizePolicy)
DialogAddEditCam.setMinimumSize(QSize(480, 270))
DialogAddEditCam.setMaximumSize(QSize(480, 270))
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(10)
DialogAddEditCam.setFont(font)
DialogAddEditCam.setWindowTitle(u"Add/Edit Camera")
icon = QIcon()
icon.addFile(u":/icons/AutoFTG-appicon.png", QSize(), QIcon.Normal, QIcon.Off)
DialogAddEditCam.setWindowIcon(icon)
self.gridLayoutWidget = QWidget(DialogAddEditCam)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(10, 10, 461, 251))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.comboBox_2 = QComboBox(self.gridLayoutWidget)
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-camera-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon1, u"Standard")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-slr-small-lens-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon2, u"DSLR")
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-camera-on-tripod-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon3, u"Special")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-quadcopter-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon4, u"Drone")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-touchscreen-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon5, u"SmartPhone")
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-gopro-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon6, u"SportCam")
self.comboBox_2.setObjectName(u"comboBox_2")
self.comboBox_2.setFont(font)
self.comboBox_2.setIconSize(QSize(24, 24))
self.gridLayout.addWidget(self.comboBox_2, 3, 1, 1, 1)
self.lineEdit_2 = QLineEdit(self.gridLayoutWidget)
self.lineEdit_2.setObjectName(u"lineEdit_2")
self.lineEdit_2.setFont(font)
self.lineEdit_2.setPlaceholderText(u"Camera name")
self.gridLayout.addWidget(self.lineEdit_2, 0, 1, 1, 1)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setSpacing(5)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.lineEdit_3 = QLineEdit(self.gridLayoutWidget)
self.lineEdit_3.setObjectName(u"lineEdit_3")
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.lineEdit_3.sizePolicy().hasHeightForWidth())
self.lineEdit_3.setSizePolicy(sizePolicy1)
self.lineEdit_3.setMinimumSize(QSize(0, 28))
self.lineEdit_3.setMaximumSize(QSize(16777215, 28))
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(8)
self.lineEdit_3.setFont(font1)
self.lineEdit_3.setPlaceholderText(u"Choose calibration XML file...")
self.horizontalLayout_2.addWidget(self.lineEdit_3)
self.pushButton_3 = QPushButton(self.gridLayoutWidget)
self.pushButton_3.setObjectName(u"pushButton_3")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.pushButton_3.sizePolicy().hasHeightForWidth())
self.pushButton_3.setSizePolicy(sizePolicy2)
self.pushButton_3.setFont(font1)
#if QT_CONFIG(tooltip)
self.pushButton_3.setToolTip(u"Choose XML calibration file...")
#endif // QT_CONFIG(tooltip)
self.pushButton_3.setText(u"Browse")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-images-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_3.setIcon(icon7)
self.pushButton_3.setIconSize(QSize(24, 24))
self.horizontalLayout_2.addWidget(self.pushButton_3)
self.gridLayout.addLayout(self.horizontalLayout_2, 5, 1, 1, 1)
self.label_3 = QLabel(self.gridLayoutWidget)
self.label_3.setObjectName(u"label_3")
sizePolicy3 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy3)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(10)
font2.setBold(True)
font2.setWeight(75)
self.label_3.setFont(font2)
self.label_3.setText(u"Camera Name")
self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setMinimumSize(QSize(0, 0))
self.pushButton.setMaximumSize(QSize(90, 30))
self.pushButton.setText(u"Cancel")
icon8 = QIcon()
icon8.addFile(u":/icons/icons8-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon8)
self.pushButton.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy)
self.pushButton_2.setMinimumSize(QSize(0, 0))
self.pushButton_2.setMaximumSize(QSize(90, 30))
self.pushButton_2.setText(u"Save")
icon9 = QIcon()
icon9.addFile(u":/icons/icons8-save-all-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon9)
self.pushButton_2.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_2)
self.gridLayout.addLayout(self.horizontalLayout, 7, 0, 1, 2)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
sizePolicy3.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy3)
self.label.setFont(font)
self.label.setText(u"Type")
self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
sizePolicy3.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
self.label_4.setSizePolicy(sizePolicy3)
font3 = QFont()
font3.setFamily(u"Segoe UI")
font3.setPointSize(9)
self.label_4.setFont(font3)
self.label_4.setText(u"Resolution")
self.gridLayout.addWidget(self.label_4, 4, 0, 1, 1)
self.label_7 = QLabel(self.gridLayoutWidget)
self.label_7.setObjectName(u"label_7")
self.label_7.setFont(font3)
self.label_7.setText(u"Description")
self.gridLayout.addWidget(self.label_7, 1, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 6, 0, 1, 2)
self.comboBox = QComboBox(self.gridLayoutWidget)
icon10 = QIcon()
icon10.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon10, u"Frame")
icon11 = QIcon()
icon11.addFile(u":/icons/icons8-video-wall-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon11, u"Fisheye")
icon12 = QIcon()
icon12.addFile(u":/icons/icons8-live-photos-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon12, u"Spherical")
icon13 = QIcon()
icon13.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon13, u"Cylindical")
icon14 = QIcon()
icon14.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox.addItem(icon14, u"RPC")
self.comboBox.setObjectName(u"comboBox")
self.comboBox.setFont(font)
self.comboBox.setIconSize(QSize(24, 24))
self.gridLayout.addWidget(self.comboBox, 2, 1, 1, 1)
self.label_5 = QLabel(self.gridLayoutWidget)
self.label_5.setObjectName(u"label_5")
sizePolicy3.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy3)
self.label_5.setText(u"Callibration")
self.gridLayout.addWidget(self.label_5, 5, 0, 1, 1)
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
sizePolicy3.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy3)
self.label_2.setFont(font3)
self.label_2.setText(u"Sub-Type")
self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setSpacing(5)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.lineEdit = QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setMaximumSize(QSize(50, 16777215))
self.lineEdit.setFont(font)
self.lineEdit.setText(u"0")
self.horizontalLayout_3.addWidget(self.lineEdit)
self.label_6 = QLabel(self.gridLayoutWidget)
self.label_6.setObjectName(u"label_6")
self.label_6.setText(u"MP")
self.horizontalLayout_3.addWidget(self.label_6)
self.gridLayout.addLayout(self.horizontalLayout_3, 4, 1, 1, 1)
self.lineEdit_4 = QLineEdit(self.gridLayoutWidget)
self.lineEdit_4.setObjectName(u"lineEdit_4")
self.lineEdit_4.setFont(font)
self.lineEdit_4.setPlaceholderText(u"Description of camera (optional)")
self.gridLayout.addWidget(self.lineEdit_4, 1, 1, 1, 1)
QWidget.setTabOrder(self.lineEdit_2, self.lineEdit_4)
QWidget.setTabOrder(self.lineEdit_4, self.comboBox)
QWidget.setTabOrder(self.comboBox, self.comboBox_2)
QWidget.setTabOrder(self.comboBox_2, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.lineEdit_3)
QWidget.setTabOrder(self.lineEdit_3, self.pushButton_3)
QWidget.setTabOrder(self.pushButton_3, self.pushButton_2)
QWidget.setTabOrder(self.pushButton_2, self.pushButton)
self.retranslateUi(DialogAddEditCam)
self.pushButton.clicked.connect(DialogAddEditCam.close)
# setupUi
def retranslateUi(self, DialogAddEditCam):
pass
# retranslateUi

View File

@ -0,0 +1,193 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'uiAddNewChunkQuick.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogAddChunkQuick(object):
def setupUi(self, DialogAddChunkQuick):
if not DialogAddChunkQuick.objectName():
DialogAddChunkQuick.setObjectName(u"DialogAddChunkQuick")
DialogAddChunkQuick.resize(310, 155)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(DialogAddChunkQuick.sizePolicy().hasHeightForWidth())
DialogAddChunkQuick.setSizePolicy(sizePolicy)
DialogAddChunkQuick.setMinimumSize(QSize(310, 155))
DialogAddChunkQuick.setMaximumSize(QSize(310, 155))
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(9)
DialogAddChunkQuick.setFont(font)
DialogAddChunkQuick.setWindowTitle(u"Create New Chunk")
self.verticalLayoutWidget = QWidget(DialogAddChunkQuick)
self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
self.verticalLayoutWidget.setGeometry(QRect(9, 9, 295, 141))
self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setSpacing(5)
self.verticalLayout.setContentsMargins(10, 10, 10, 10)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.labelQuickAdd = QLabel(self.verticalLayoutWidget)
self.labelQuickAdd.setObjectName(u"labelQuickAdd")
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.labelQuickAdd.sizePolicy().hasHeightForWidth())
self.labelQuickAdd.setSizePolicy(sizePolicy1)
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
font1.setBold(True)
font1.setWeight(75)
self.labelQuickAdd.setFont(font1)
self.labelQuickAdd.setText(u"Create New Chunk")
self.verticalLayout.addWidget(self.labelQuickAdd)
self.line_2 = QFrame(self.verticalLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.verticalLayout.addWidget(self.line_2)
self.label = QLabel(self.verticalLayoutWidget)
self.label.setObjectName(u"label")
sizePolicy1.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy1)
self.label.setText(u"Select chunk creation settings:")
self.label.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
self.verticalLayout.addWidget(self.label)
self.cbChunkSettings = QComboBox(self.verticalLayoutWidget)
icon = QIcon()
icon.addFile(u":/icons/icons8-add-tab-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon, u"New Chunk (Default)")
icon1 = QIcon()
icon1.addFile(u":/icons/template_kalota-modra.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon1, u"KALOTA-1")
icon2 = QIcon()
icon2.addFile(u":/icons/template_kalota-oranzna.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon2, "")
icon3 = QIcon()
icon3.addFile(u":/icons/template_kalota-rdeca.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon3, "")
icon4 = QIcon()
icon4.addFile(u":/icons/template_kalota-vijola.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon4, "")
icon5 = QIcon()
icon5.addFile(u":/icons/template_kalota-zelena.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon5, "")
icon6 = QIcon()
icon6.addFile(u":/icons/template_stopnica-modra.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon6, u"STOPNICA-1")
icon7 = QIcon()
icon7.addFile(u":/icons/template_stopnica-oranzna.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon7, u"STOPNICA-2")
icon8 = QIcon()
icon8.addFile(u":/icons/template_stopnica-rdeca.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon8, "")
icon9 = QIcon()
icon9.addFile(u":/icons/template_stopnica-vijola.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon9, "")
icon10 = QIcon()
icon10.addFile(u":/icons/template_stopnica-zelena.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon10, "")
icon11 = QIcon()
icon11.addFile(u":/icons/icons8-subway-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.cbChunkSettings.addItem(icon11, "")
self.cbChunkSettings.setObjectName(u"cbChunkSettings")
sizePolicy1.setHeightForWidth(self.cbChunkSettings.sizePolicy().hasHeightForWidth())
self.cbChunkSettings.setSizePolicy(sizePolicy1)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(11)
self.cbChunkSettings.setFont(font2)
self.cbChunkSettings.setCursor(QCursor(Qt.PointingHandCursor))
#if QT_CONFIG(statustip)
self.cbChunkSettings.setStatusTip(u"Choose settings used for chunk creation...")
#endif // QT_CONFIG(statustip)
self.cbChunkSettings.setCurrentText(u"New Chunk (Default)")
self.cbChunkSettings.setIconSize(QSize(20, 20))
self.verticalLayout.addWidget(self.cbChunkSettings)
self.line = QFrame(self.verticalLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.verticalLayout.addWidget(self.line)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.btnCreate = QPushButton(self.verticalLayoutWidget)
self.btnCreate.setObjectName(u"btnCreate")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.btnCreate.sizePolicy().hasHeightForWidth())
self.btnCreate.setSizePolicy(sizePolicy2)
self.btnCreate.setText(u"Create")
self.btnCreate.setIcon(icon)
self.btnCreate.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.btnCreate)
self.checkBoxAutoProc = QCheckBox(self.verticalLayoutWidget)
self.checkBoxAutoProc.setObjectName(u"checkBoxAutoProc")
self.checkBoxAutoProc.setText(u"Auto Processing")
icon12 = QIcon()
icon12.addFile(u":/icons/icons8-in-progress-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.checkBoxAutoProc.setIcon(icon12)
self.checkBoxAutoProc.setChecked(True)
self.horizontalLayout.addWidget(self.checkBoxAutoProc)
self.btnCancel = QPushButton(self.verticalLayoutWidget)
self.btnCancel.setObjectName(u"btnCancel")
sizePolicy2.setHeightForWidth(self.btnCancel.sizePolicy().hasHeightForWidth())
self.btnCancel.setSizePolicy(sizePolicy2)
self.btnCancel.setText(u"Close")
icon13 = QIcon()
icon13.addFile(u":/icons/icons8-enter-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.btnCancel.setIcon(icon13)
self.btnCancel.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.btnCancel)
self.verticalLayout.addLayout(self.horizontalLayout)
self.retranslateUi(DialogAddChunkQuick)
self.btnCancel.clicked.connect(DialogAddChunkQuick.reject)
# setupUi
def retranslateUi(self, DialogAddChunkQuick):
self.cbChunkSettings.setItemText(2, QCoreApplication.translate("DialogAddChunkQuick", u"KALOTA-2", None))
self.cbChunkSettings.setItemText(3, QCoreApplication.translate("DialogAddChunkQuick", u"KALOTA-3", None))
self.cbChunkSettings.setItemText(4, QCoreApplication.translate("DialogAddChunkQuick", u"KALOTA-4", None))
self.cbChunkSettings.setItemText(5, QCoreApplication.translate("DialogAddChunkQuick", u"KALOTA-5", None))
self.cbChunkSettings.setItemText(8, QCoreApplication.translate("DialogAddChunkQuick", u"STOPNICA-3", None))
self.cbChunkSettings.setItemText(9, QCoreApplication.translate("DialogAddChunkQuick", u"STOPNICA-4", None))
self.cbChunkSettings.setItemText(10, QCoreApplication.translate("DialogAddChunkQuick", u"STOPNICA-5", None))
self.cbChunkSettings.setItemText(11, QCoreApplication.translate("DialogAddChunkQuick", u"PREDOR-VLAK", None))
pass
# retranslateUi

View File

@ -0,0 +1,157 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'uiDefaulCamera.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_dialogDefCam(object):
def setupUi(self, dialogDefCam):
if not dialogDefCam.objectName():
dialogDefCam.setObjectName(u"dialogDefCam")
dialogDefCam.resize(280, 280)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(dialogDefCam.sizePolicy().hasHeightForWidth())
dialogDefCam.setSizePolicy(sizePolicy)
dialogDefCam.setMinimumSize(QSize(280, 280))
dialogDefCam.setMaximumSize(QSize(280, 280))
dialogDefCam.setWindowTitle(u"Choose Camera")
#if QT_CONFIG(tooltip)
dialogDefCam.setToolTip(u"")
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
dialogDefCam.setStatusTip(u"")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
dialogDefCam.setWhatsThis(u"")
#endif // QT_CONFIG(whatsthis)
#if QT_CONFIG(accessibility)
dialogDefCam.setAccessibleName(u"")
#endif // QT_CONFIG(accessibility)
#if QT_CONFIG(accessibility)
dialogDefCam.setAccessibleDescription(u"")
#endif // QT_CONFIG(accessibility)
self.verticalLayoutWidget = QWidget(dialogDefCam)
self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
self.verticalLayoutWidget.setGeometry(QRect(10, 10, 261, 261))
self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setSpacing(5)
self.verticalLayout.setContentsMargins(10, 10, 10, 10)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.label = QLabel(self.verticalLayoutWidget)
self.label.setObjectName(u"label")
font = QFont()
font.setPointSize(11)
self.label.setFont(font)
#if QT_CONFIG(tooltip)
self.label.setToolTip(u"")
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
self.label.setStatusTip(u"")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
self.label.setWhatsThis(u"")
#endif // QT_CONFIG(whatsthis)
#if QT_CONFIG(accessibility)
self.label.setAccessibleName(u"")
#endif // QT_CONFIG(accessibility)
#if QT_CONFIG(accessibility)
self.label.setAccessibleDescription(u"")
#endif // QT_CONFIG(accessibility)
self.label.setText(u"Choose default camera")
self.verticalLayout.addWidget(self.label)
self.listWidget = QListWidget(self.verticalLayoutWidget)
icon = QIcon()
icon.addFile(u":/AutoFTG/resources/CamImages.png", QSize(), QIcon.Normal, QIcon.Off)
__qlistwidgetitem = QListWidgetItem(self.listWidget)
__qlistwidgetitem.setText(u"Item 1");
__qlistwidgetitem.setIcon(icon);
__qlistwidgetitem.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled);
__qlistwidgetitem1 = QListWidgetItem(self.listWidget)
__qlistwidgetitem1.setText(u"Item 2");
__qlistwidgetitem1.setIcon(icon);
__qlistwidgetitem1.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled);
icon1 = QIcon()
icon1.addFile(u":/AutoFTG/resources/Pictures.png", QSize(), QIcon.Normal, QIcon.Off)
brush = QBrush(QColor(253, 255, 211, 255))
brush.setStyle(Qt.SolidPattern)
font1 = QFont()
font1.setBold(True)
font1.setWeight(75)
__qlistwidgetitem2 = QListWidgetItem(self.listWidget)
__qlistwidgetitem2.setText(u"Item 3");
__qlistwidgetitem2.setFont(font1);
__qlistwidgetitem2.setBackground(brush);
__qlistwidgetitem2.setIcon(icon1);
__qlistwidgetitem2.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled);
__qlistwidgetitem3 = QListWidgetItem(self.listWidget)
__qlistwidgetitem3.setText(u"Item 4");
__qlistwidgetitem3.setIcon(icon);
__qlistwidgetitem3.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled);
self.listWidget.setObjectName(u"listWidget")
font2 = QFont()
font2.setPointSize(10)
self.listWidget.setFont(font2)
#if QT_CONFIG(tooltip)
self.listWidget.setToolTip(u"")
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
self.listWidget.setStatusTip(u"")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
self.listWidget.setWhatsThis(u"")
#endif // QT_CONFIG(whatsthis)
#if QT_CONFIG(accessibility)
self.listWidget.setAccessibleName(u"")
#endif // QT_CONFIG(accessibility)
#if QT_CONFIG(accessibility)
self.listWidget.setAccessibleDescription(u"")
#endif // QT_CONFIG(accessibility)
self.listWidget.setFrameShape(QFrame.StyledPanel)
self.listWidget.setFrameShadow(QFrame.Plain)
self.listWidget.setDefaultDropAction(Qt.IgnoreAction)
self.listWidget.setAlternatingRowColors(True)
self.listWidget.setIconSize(QSize(20, 20))
self.verticalLayout.addWidget(self.listWidget)
self.buttonBox = QDialogButtonBox(self.verticalLayoutWidget)
self.buttonBox.setObjectName(u"buttonBox")
self.buttonBox.setOrientation(Qt.Horizontal)
self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(dialogDefCam)
self.buttonBox.accepted.connect(dialogDefCam.accept)
self.buttonBox.rejected.connect(dialogDefCam.reject)
self.listWidget.setCurrentRow(-1)
# setupUi
def retranslateUi(self, dialogDefCam):
__sortingEnabled = self.listWidget.isSortingEnabled()
self.listWidget.setSortingEnabled(False)
self.listWidget.setSortingEnabled(__sortingEnabled)
pass
# retranslateUi

View File

@ -0,0 +1,189 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'uiEditSetings.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import qtresources_rc
class Ui_DialogEditSettings(object):
def setupUi(self, DialogEditSettings):
if not DialogEditSettings.objectName():
DialogEditSettings.setObjectName(u"DialogEditSettings")
DialogEditSettings.resize(420, 170)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(DialogEditSettings.sizePolicy().hasHeightForWidth())
DialogEditSettings.setSizePolicy(sizePolicy)
DialogEditSettings.setMinimumSize(QSize(420, 170))
DialogEditSettings.setMaximumSize(QSize(420, 170))
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(9)
DialogEditSettings.setFont(font)
DialogEditSettings.setWindowTitle(u"Data Folder")
self.gridLayoutWidget = QWidget(DialogEditSettings)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(10, 10, 401, 151))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(10)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.lineEdit = QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(u"lineEdit")
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
self.lineEdit.setSizePolicy(sizePolicy1)
self.lineEdit.setMinimumSize(QSize(0, 28))
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(7)
self.lineEdit.setFont(font1)
self.gridLayout.addWidget(self.lineEdit, 2, 1, 1, 1)
self.label_3 = QLabel(self.gridLayoutWidget)
self.label_3.setObjectName(u"label_3")
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy2)
font2 = QFont()
font2.setFamily(u"Segoe UI")
font2.setPointSize(10)
self.label_3.setFont(font2)
self.label_3.setText(u"Default Camera")
self.label_3.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1)
self.comboBox_2 = QComboBox(self.gridLayoutWidget)
icon = QIcon()
icon.addFile(u":/icons/icons8-full-page-view-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon, u"Frame")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-video-wall-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon1, u"Fisheye")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-live-photos-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon2, u"Spherical")
icon3 = QIcon()
icon3.addFile(u":/icons/icons8-aperture-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon3, u"Cylindical")
icon4 = QIcon()
icon4.addFile(u":/icons/icons8-ios-application-placeholder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.comboBox_2.addItem(icon4, u"RPC")
self.comboBox_2.setObjectName(u"comboBox_2")
sizePolicy3 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.comboBox_2.sizePolicy().hasHeightForWidth())
self.comboBox_2.setSizePolicy(sizePolicy3)
self.comboBox_2.setCurrentText(u"Frame")
self.comboBox_2.setIconSize(QSize(24, 24))
self.gridLayout.addWidget(self.comboBox_2, 3, 1, 1, 1)
self.line_2 = QFrame(self.gridLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line_2, 4, 0, 1, 3)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(10)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton_3 = QPushButton(self.gridLayoutWidget)
self.pushButton_3.setObjectName(u"pushButton_3")
sizePolicy3.setHeightForWidth(self.pushButton_3.sizePolicy().hasHeightForWidth())
self.pushButton_3.setSizePolicy(sizePolicy3)
self.pushButton_3.setText(u"Cancel")
icon5 = QIcon()
icon5.addFile(u":/icons/icons8-close-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_3.setIcon(icon5)
self.horizontalLayout.addWidget(self.pushButton_3)
self.pushButton_2 = QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
sizePolicy3.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy3)
self.pushButton_2.setText(u"Ok")
icon6 = QIcon()
icon6.addFile(u":/icons/icons8-done-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon6)
self.horizontalLayout.addWidget(self.pushButton_2)
self.gridLayout.addLayout(self.horizontalLayout, 5, 0, 1, 3)
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
sizePolicy4 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy4)
self.label_2.setFont(font2)
self.label_2.setText(u"Data Folder")
self.label_2.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 1, 0, 1, 3)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
sizePolicy4.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy4)
font3 = QFont()
font3.setFamily(u"Segoe UI")
font3.setPointSize(12)
font3.setBold(True)
font3.setWeight(75)
self.label.setFont(font3)
self.label.setText(u"Edit Settings")
self.gridLayout.addWidget(self.label, 0, 0, 1, 2)
self.pushButton = QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
sizePolicy3.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy3)
self.pushButton.setText(u"Browse")
icon7 = QIcon()
icon7.addFile(u":/icons/icons8-opened-folder-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon7)
self.pushButton.setIconSize(QSize(20, 20))
self.gridLayout.addWidget(self.pushButton, 2, 2, 1, 1)
self.retranslateUi(DialogEditSettings)
# setupUi
def retranslateUi(self, DialogEditSettings):
pass
# retranslateUi

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Some files were not shown because too many files have changed in this diff Show More