diff --git a/fossils.py b/fossils.py index dce01c1a56e5f84f5bb530360369840173b2b073..6091edc220cc1e532fd3727410e2cf2fd6241aea 100644 --- a/fossils.py +++ b/fossils.py @@ -29,6 +29,7 @@ class Window(QWidget, Ui_Form): settings = QSettings() # self.restoreGeometry(settings.value("Geometry", self.saveGeometry())) self.inpFileLineEdit.setText(settings.value("inpFile", "")) + self.wrkspLineEdit.setText(settings.value("workspace", "")) self.action = 'cancelled' @@ -48,18 +49,24 @@ class Window(QWidget, Ui_Form): def on_inpFilePushButton_pressed(self): # print("inpFilePushButton...") fname = QFileDialog.getOpenFileName( - None, 'Select input file', '', filter='Python File (*.py)') - # print(fname) + None, 'Select input file', '', filter='Python File (*.py)') pyfile = fname[0] if pyfile: self.inpFileLineEdit.setText(QDir.toNativeSeparators(pyfile)) + def on_wrkspPushButton_pressed(self): + dir = QFileDialog.getExistingDirectory( + self, "Select output folder", self.wrkspLineEdit.text()) + if dir: + self.wrkspLineEdit.setText(QDir.toNativeSeparators(dir)) + def closeEvent(self, event): """save settings to registry and quit """ settings = QSettings() # settings.setValue("Geometry", QVariant(self.saveGeometry())) settings.setValue("inpfile", QVariant(self.inpFileLineEdit.text())) + settings.setValue("workspace", QVariant(self.wrkspLineEdit.text())) event.accept() @@ -108,7 +115,7 @@ if __name__ == "__main__": print(f"OMP_NUM_THREADS=[not set]") - # ask for a file if not given + # ask for a file if not given => starts the GUI if not args.file: # QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) app = QApplication(sys.argv) @@ -118,23 +125,33 @@ if __name__ == "__main__": win.setWindowTitle("Fossils") win.show() app.lastWindowClosed.connect(app.quit) - app.exec_() + app.exec_() + workspace = win.wrkspLineEdit.text() action = win.action testname = win.inpFileLineEdit.text() else: + workspace = None action = 'run' testname = os.path.abspath(args.file) + + # run the simulation print(f'action={action}') if action=='run' or action=='post': testname = os.path.normcase(testname) # F:/ => f:/ on Windows print(f'testname = {testname}') # create workspace - common = os.path.commonprefix((testname, thisdir + os.sep)) - resdir = testname[len(common):].replace(os.sep, "_") - resdir, ext = os.path.splitext(resdir) - wdir = os.path.join('workspace', resdir) + if workspace: + common = os.path.basename(testname) + resdir = common.replace(os.sep, "_") + resdir, ext = os.path.splitext(resdir) + wdir = os.path.join(workspace, resdir) + else: + common = os.path.commonprefix((testname, thisdir + os.sep)) + resdir = testname[len(common):].replace(os.sep, "_") + resdir, ext = os.path.splitext(resdir) + wdir = os.path.join('workspace', resdir) print('workspace=', wdir) if not os.path.isdir(wdir): diff --git a/fossils.ui b/fossils.ui index 6d8ab5a32d04d868f8165d5ced92cf30079ea717..34123a86a37f16f8723ba00dca570f21e5705f8e 100644 --- a/fossils.ui +++ b/fossils.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>546</width> - <height>104</height> + <width>827</width> + <height>124</height> </rect> </property> <property name="windowTitle"> @@ -15,24 +15,41 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> <widget class="QLabel" name="inpFilelabel"> <property name="text"> <string>input file</string> </property> </widget> </item> - <item> + <item row="0" column="1"> <widget class="QLineEdit" name="inpFileLineEdit"/> </item> - <item> + <item row="0" column="2"> <widget class="QPushButton" name="inpFilePushButton"> <property name="text"> <string>...</string> </property> </widget> </item> + <item row="1" column="0"> + <widget class="QLabel" name="wrksplabel"> + <property name="text"> + <string>workspace</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="wrkspLineEdit"/> + </item> + <item row="1" column="2"> + <widget class="QPushButton" name="wrkspPushButton"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> </layout> </item> <item> diff --git a/ui_fossils.py b/ui_fossils.py index 8df8ef6f161ca5e693d5f3deb47829fc719f13d7..9debdc697a394bc674e9818c58f0030adfac451c 100644 --- a/ui_fossils.py +++ b/ui_fossils.py @@ -14,21 +14,30 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") - Form.resize(546, 104) + Form.resize(827, 124) self.verticalLayout = QtWidgets.QVBoxLayout(Form) self.verticalLayout.setObjectName("verticalLayout") - self.horizontalLayout = QtWidgets.QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") self.inpFilelabel = QtWidgets.QLabel(Form) self.inpFilelabel.setObjectName("inpFilelabel") - self.horizontalLayout.addWidget(self.inpFilelabel) + self.gridLayout.addWidget(self.inpFilelabel, 0, 0, 1, 1) self.inpFileLineEdit = QtWidgets.QLineEdit(Form) self.inpFileLineEdit.setObjectName("inpFileLineEdit") - self.horizontalLayout.addWidget(self.inpFileLineEdit) + self.gridLayout.addWidget(self.inpFileLineEdit, 0, 1, 1, 1) self.inpFilePushButton = QtWidgets.QPushButton(Form) self.inpFilePushButton.setObjectName("inpFilePushButton") - self.horizontalLayout.addWidget(self.inpFilePushButton) - self.verticalLayout.addLayout(self.horizontalLayout) + self.gridLayout.addWidget(self.inpFilePushButton, 0, 2, 1, 1) + self.wrksplabel = QtWidgets.QLabel(Form) + self.wrksplabel.setObjectName("wrksplabel") + self.gridLayout.addWidget(self.wrksplabel, 1, 0, 1, 1) + self.wrkspLineEdit = QtWidgets.QLineEdit(Form) + self.wrkspLineEdit.setObjectName("wrkspLineEdit") + self.gridLayout.addWidget(self.wrkspLineEdit, 1, 1, 1, 1) + self.wrkspPushButton = QtWidgets.QPushButton(Form) + self.wrkspPushButton.setObjectName("wrkspPushButton") + self.gridLayout.addWidget(self.wrkspPushButton, 1, 2, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) @@ -51,5 +60,7 @@ class Ui_Form(object): Form.setWindowTitle(_translate("Form", "Form")) self.inpFilelabel.setText(_translate("Form", "input file")) self.inpFilePushButton.setText(_translate("Form", "...")) + self.wrksplabel.setText(_translate("Form", "workspace")) + self.wrkspPushButton.setText(_translate("Form", "...")) self.runPushButton.setText(_translate("Form", "Run")) self.viewPushButton.setText(_translate("Form", "View"))