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"
Remove
Remove selected definition
Edit
Edit selected chunk definition
Use date and time found in first image file that is imported from work folder.
") #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"Use metadata string from point file that must be located in imported data folder, and must also have the same name as data folder..
Info: String must be in metadata format at the beginnig of point file, as described in help.
") #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"Use date and time at which chunk is created in custom provided format.
") #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"Uses the name of folder from which data is beeing imported from.
* Recommended naming format.
") #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"Use default naming format provided by Metashape.
Example: Chunk 1, Chunk 2,...
") #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"Use date and time at which chunk is created.
") #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"Enter format string in python format.
*For details please check help first.
") #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"Select location with working data for this definition.
") #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"Select location with working data for this definition.
") #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"Save currently selected chunk definition
") #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"Add new
Add new chunk settings definition
*Crates new chunk definition with current options.
**Definition Name must be unique.
Shortcuts: [A] Add New / [E] Edit / [R] Remove / [S] Save / [C] Close
") 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!")