Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
parent
b1e6dcde8e
commit
8cb536b448
131
src/SimNDT/gui/materialLibraryController.py
Normal file
131
src/SimNDT/gui/materialLibraryController.py
Normal file
|
@ -0,0 +1,131 @@
|
|||
__author__ = 'Miguel Molero'
|
||||
|
||||
import os, sys
|
||||
from PySide.QtCore import *
|
||||
from PySide.QtGui import *
|
||||
|
||||
from SimNDT.gui.ui_materiallibrary import Ui_materialLibraryDialog
|
||||
from SimNDT.gui.constants import *
|
||||
from SimNDT.core.materialLibrary import getMaterialLibrary, CC
|
||||
|
||||
|
||||
class MaterialLibrary(QDialog, Ui_materialLibraryDialog):
|
||||
def __init__(self, filename=None, parent=None):
|
||||
super(MaterialLibrary, self).__init__(parent)
|
||||
self.setupUi(self)
|
||||
self.connectionSetup()
|
||||
|
||||
self.filename = filename
|
||||
self.Library = getMaterialLibrary()
|
||||
self.materialListWidget.addItems(list(self.Library.keys()))
|
||||
|
||||
def connectionSetup(self):
|
||||
|
||||
self.connect(self.materialListWidget, SIGNAL("itemSelectionChanged()"), self.selectedMaterial)
|
||||
self.connect(self.materialListWidget, SIGNAL("itemDoubleClicked(QListWidgetItem *)"), self.accept)
|
||||
self.createTemplatePushButton.pressed.connect(self.createTemplate)
|
||||
self.createLibraryPushButton.pressed.connect(self.createLibrary)
|
||||
|
||||
self.okPushButton.pressed.connect(self.accept)
|
||||
self.cancelPushButton.pressed.connect(self.reject)
|
||||
|
||||
def selectedMaterial(self):
|
||||
|
||||
self.key = self.materialListWidget.currentItem().text()
|
||||
self.values = self.Library[self.key]
|
||||
|
||||
self.materialNameLineEdit.setText(self.key)
|
||||
|
||||
text = """ %s = %0.2f
|
||||
<p> %s = %0.2f
|
||||
<p> %s = %0.2f
|
||||
<p> %s = %0.2f
|
||||
<p> %s = %0.2f
|
||||
""" % (RHO_LABEL, self.values[0],
|
||||
LAMBDA_LABEL, self.values[1] * 1e-9,
|
||||
MU_LABEL, self.values[2] * 1e-9,
|
||||
VL_LABEL, self.values[3],
|
||||
VT_LABEL, self.values[4])
|
||||
|
||||
self.infoLabel.setText(text)
|
||||
|
||||
def getValues(self):
|
||||
return self.key, self.values
|
||||
|
||||
def createTemplate(self):
|
||||
|
||||
fname = self.filename if self.filename is not None else "."
|
||||
formats = ["*.%s" % "txt"]
|
||||
fname, filters = QFileDialog.getSaveFileName(None, "Create Template Material Library (.txt)", fname,
|
||||
"sim Files (%s)" % " ".join(formats))
|
||||
|
||||
if fname:
|
||||
with open(fname, 'w') as f:
|
||||
f.write("#Do not edit this section\n")
|
||||
f.write("#\n")
|
||||
f.write("#Define Materials in each row using the following format:\n")
|
||||
f.write("#\n")
|
||||
f.write("#Name, Rho VL, VT\n")
|
||||
f.write("#\n")
|
||||
f.write("#where Rho=Density, VL= longitudinal Velocity, VT=Shear Velocity\n")
|
||||
f.write("#\n")
|
||||
f.write("#example:\n")
|
||||
f.write("#\n")
|
||||
f.write("#Water, 1000, 1480, 0.0\n")
|
||||
f.write("#\n")
|
||||
f.write("#\n")
|
||||
f.write("#Change the below examples with your own materials\n")
|
||||
f.write("#\n")
|
||||
f.write("#\n")
|
||||
f.write("#\n")
|
||||
f.write("Material 1, 1000, 1480, 0\n")
|
||||
f.write("artificial, 2000, 1400, 800\n")
|
||||
|
||||
def createLibrary(self):
|
||||
|
||||
dir = os.path.dirname(self.filename) if self.filename is not None else "."
|
||||
formats = ["*.%s" % "txt"]
|
||||
fname, filters = QFileDialog.getOpenFileName(None, "Open Custom Material Library (.txt)", dir,
|
||||
"txt Files (%s)" % " ".join(formats))
|
||||
|
||||
if fname:
|
||||
|
||||
newMaterials = []
|
||||
|
||||
with open(fname, 'r') as f:
|
||||
for line in f:
|
||||
|
||||
if line.startswith("#"):
|
||||
pass
|
||||
|
||||
elif len(line) <= 3:
|
||||
pass
|
||||
|
||||
elif len(line.strip().split(',')) == 4:
|
||||
elem = line.strip().split(',')
|
||||
if len(elem) == 4:
|
||||
newMaterials.append(CC([elem[0], (float(elem[1]), float(elem[2]), float(elem[3]))]))
|
||||
|
||||
if len(newMaterials) != 0:
|
||||
|
||||
count = len(self.Library)
|
||||
newCount = len(newMaterials)
|
||||
|
||||
for item in newMaterials:
|
||||
self.Library[item[0]] = item[1]
|
||||
self.materialListWidget.clear()
|
||||
self.materialListWidget.addItems(list(self.Library.keys()))
|
||||
|
||||
for i in range(count, count + newCount):
|
||||
self.materialListWidget.item(i).setForeground(Qt.red)
|
||||
|
||||
def accept(self):
|
||||
self.selectedMaterial()
|
||||
QDialog.accept(self)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
win = MaterialLibrary()
|
||||
win.show()
|
||||
app.exec_()
|
Loading…
Reference in New Issue
Block a user