def initUI(self): cw = QWidget() self.setCentralWidget(cw) grid = QGridLayout() grid.setSpacing(15) # status bar self.statusBar().showMessage('Ready') font_label = QFont() font_label.setBold(True) ################ dicom reader rstart = 0 text_dcm = QLabel('DICOM reader') text_dcm.setFont(font_label) self.text_dcm_dir = QLabel('DICOM dir:') self.text_dcm_data = QLabel('DICOM data:') self.text_dcm_out = QLabel('output file:') grid.addWidget(text_dcm, rstart + 0, 1, 1, 4) grid.addWidget(self.text_dcm_dir, rstart + 1, 1, 1, 4) grid.addWidget(self.text_dcm_data, rstart + 2, 1, 1, 4) grid.addWidget(self.text_dcm_out, rstart + 3, 1, 1, 4) btn_dcmdir = QPushButton("Load DICOM", self) btn_dcmdir.clicked.connect(self.loadDcmDir) btn_dcmred = QPushButton("Reduce", self) btn_dcmred.clicked.connect(self.reduceDcm) btn_dcmcrop = QPushButton("Crop", self) btn_dcmcrop.clicked.connect(self.cropDcm) btn_dcmsave = QPushButton("Save DCM", self) btn_dcmsave.clicked.connect(self.saveDcm) grid.addWidget(btn_dcmdir, rstart + 4, 1) grid.addWidget(btn_dcmred, rstart + 4, 2) grid.addWidget(btn_dcmcrop, rstart + 4, 3) grid.addWidget(btn_dcmsave, rstart + 4, 4) hr = QFrame() hr.setFrameShape(QFrame.HLine) grid.addWidget(hr, rstart + 5, 0, 1, 6) ################ segmentation rstart = 6 text_seg = QLabel('Segmentation') text_seg.setFont(font_label) self.text_seg_in = QLabel('input data:') self.text_seg_data = QLabel('segment. data:') self.text_seg_out = QLabel('output file:') grid.addWidget(text_seg, rstart + 0, 1) grid.addWidget(self.text_seg_in, rstart + 1, 1, 1, 4) grid.addWidget(self.text_seg_data, rstart + 2, 1, 1, 4) grid.addWidget(self.text_seg_out, rstart + 3, 1, 1, 4) btn_segload = QPushButton("Load DCM", self) btn_segload.clicked.connect(self.loadDcm) btn_segauto = QPushButton("Automatic seg.", self) btn_segauto.clicked.connect(self.autoSeg) btn_segman = QPushButton("Manual seg.", self) btn_segman.clicked.connect(self.manualSeg) btn_segsave = QPushButton("Save SEG", self) btn_segsave.clicked.connect(self.saveSeg) grid.addWidget(btn_segload, rstart + 4, 1) grid.addWidget(btn_segauto, rstart + 4, 2) grid.addWidget(btn_segman, rstart + 4, 3) grid.addWidget(btn_segsave, rstart + 4, 4) hr = QFrame() hr.setFrameShape(QFrame.HLine) grid.addWidget(hr, rstart + 5, 0, 1, 6) ################ mesh gen. rstart = 12 text_mesh = QLabel('Mesh generation') text_mesh.setFont(font_label) self.text_mesh_in = QLabel('input data:') self.text_mesh_data = QLabel('mesh data:') self.text_mesh_out = QLabel('output file:') grid.addWidget(text_mesh, rstart + 0, 1) grid.addWidget(self.text_mesh_in, rstart + 1, 1, 1, 4) grid.addWidget(self.text_mesh_data, rstart + 2, 1, 1, 4) grid.addWidget(self.text_mesh_out, rstart + 3, 1, 1, 4) btn_meshload = QPushButton("Load SEG", self) btn_meshload.clicked.connect(self.loadSeg) btn_meshsave = QPushButton("Save MESH", self) btn_meshsave.clicked.connect(self.saveMesh) btn_meshgener = QPushButton("Generate", self) btn_meshgener.clicked.connect(self.generMesh) btn_meshsmooth = QPushButton("Smooth", self) btn_meshsmooth.clicked.connect(self.smoothMesh) btn_meshview = QPushButton("View", self) btn_meshview.clicked.connect(self.viewMesh) grid.addWidget(btn_meshload, rstart + 4, 1) grid.addWidget(btn_meshgener, rstart + 4, 2) grid.addWidget(btn_meshsmooth, rstart + 4, 3) grid.addWidget(btn_meshsave, rstart + 4, 4) grid.addWidget(btn_meshview, rstart + 8, 3, 1, 2) text_mesh_mesh = QLabel('mesh:') text_mesh_elements = QLabel('elements:') text_mesh_smooth = QLabel('smooth method:') text_mesh_output = QLabel('output format:') grid.addWidget(text_mesh_mesh, rstart + 6, 1) grid.addWidget(text_mesh_elements, rstart + 6, 2) grid.addWidget(text_mesh_smooth, rstart + 6, 3) grid.addWidget(text_mesh_output, rstart + 6, 4) rbtn_mesh_mesh_surf = QRadioButton('surface') rbtn_mesh_mesh_vol = QRadioButton('volume') grid.addWidget(rbtn_mesh_mesh_surf, rstart + 7, 1) grid.addWidget(rbtn_mesh_mesh_vol, rstart + 8, 1) self.rbtng_mesh_mesh = QButtonGroup(self) self.rbtng_mesh_mesh.addButton(rbtn_mesh_mesh_surf, 1) self.rbtng_mesh_mesh.addButton(rbtn_mesh_mesh_vol, 2) rbtn_mesh_mesh_vol.setChecked(True) rbtn_mesh_elements_3 = QRadioButton('tri/tetra') rbtn_mesh_elements_4 = QRadioButton('quad/hexa') grid.addWidget(rbtn_mesh_elements_3, rstart + 7, 2) grid.addWidget(rbtn_mesh_elements_4, rstart + 8, 2) self.rbtng_mesh_elements = QButtonGroup(self) self.rbtng_mesh_elements.addButton(rbtn_mesh_elements_3, 1) self.rbtng_mesh_elements.addButton(rbtn_mesh_elements_4, 2) rbtn_mesh_elements_4.setChecked(True) combo = QComboBox(self) combo.activated[str].connect(self.changeOut) supp_write = [] for k, v in supported_capabilities.iteritems(): if 'w' in v: supp_write.append(k) combo.addItems(supp_write) combo.setCurrentIndex(supp_write.index('vtk')) grid.addWidget(combo, rstart + 7, 4) combo2 = QComboBox(self) combo2.activated[str].connect(self.changeSmoothMethod) combo2.addItems(smooth_methods) combo2.setCurrentIndex(smooth_methods.index(self.mesh_smooth_method)) grid.addWidget(combo2, rstart + 7, 3) hr = QFrame() hr.setFrameShape(QFrame.HLine) grid.addWidget(hr, rstart + 9, 0, 1, 6) # quit btn_quit = QPushButton("Quit", self) btn_quit.clicked.connect(self.quit) grid.addWidget(btn_quit, 24, 2, 1, 2) cw.setLayout(grid) self.setWindowTitle('DICOM2FEM') self.show()
def init_MeshGenTab(self): vbox = QVBoxLayout() vbox.setSpacing(10) self.text_mesh_in = QLabel('input data:') self.text_mesh_data = QLabel('mesh data:') vbox.addWidget(QLabel()) vbox.addWidget(self.text_mesh_in) vbox.addWidget(self.text_mesh_data) hr = QFrame() hr.setFrameShape(QFrame.HLine) vbox.addWidget(hr) self.text_mesh_grid = QLabel('grid:') vbox.addWidget(self.text_mesh_grid) btn_meshrescale = QPushButton("Rescale", self) btn_meshrescale.clicked.connect(self.rescaleSeg) hbox0 = QHBoxLayout() hbox0.addStretch(1) hbox0.addWidget(btn_meshrescale) hbox0.addStretch(1) vbox.addLayout(hbox0) hr = QFrame() hr.setFrameShape(QFrame.HLine) vbox.addWidget(hr) vbox1 = QVBoxLayout() btn_meshload = QPushButton("Load SEG", self) btn_meshload.clicked.connect(self.loadSeg) btn_meshsave = QPushButton("Save MESH", self) btn_meshsave.clicked.connect(self.saveMesh) text_mesh_output = QLabel('format:') combo_sm = QComboBox(self) combo_sm.activated[str].connect(self.changeOut) supp_write = [] for k, v in supported_capabilities.iteritems(): if 'w' in v: supp_write.append(k) combo_sm.addItems(supp_write) combo_sm.setCurrentIndex(supp_write.index('vtk')) vbox1.addWidget(btn_meshload) vbox1.addWidget(btn_meshsave) hbox1 = QHBoxLayout() hbox1.addWidget(text_mesh_output) hbox1.addWidget(combo_sm) vbox1.addLayout(hbox1) vbox1.addStretch(1) vbox2 = QVBoxLayout() btn_meshgener = QPushButton("Generate", self) btn_meshgener.clicked.connect(self.generMesh) text_mesh_mesh = QLabel('generator:') combo_mg = QComboBox(self) combo_mg.activated[str].connect(self.changeMesh) self.mesh_generator = 'marching cubes' keys = mesh_generators.keys() keys.sort() combo_mg.addItems(keys) combo_mg.setCurrentIndex(keys.index(self.mesh_generator)) vbox2.addWidget(btn_meshgener) hbox1 = QHBoxLayout() hbox1.addWidget(text_mesh_mesh) hbox1.addWidget(combo_mg) vbox2.addLayout(hbox1) #vbox2.addStretch(1) vbox2.addWidget(QLabel()) btn_meshsmooth = QPushButton("Smooth", self) btn_meshsmooth.clicked.connect(self.smoothMesh) text_mesh_smooth = QLabel('method:') combo_out = QComboBox(self) combo_out.activated[str].connect(self.changeSmoothMethod) keys = smooth_methods.keys() combo_out.addItems(keys) combo_out.setCurrentIndex(keys.index('taubin')) vbox2.addWidget(btn_meshsmooth) hbox1 = QHBoxLayout() hbox1.addWidget(text_mesh_smooth) hbox1.addWidget(combo_out) vbox2.addLayout(hbox1) vbox2.addStretch(1) vbox3 = QVBoxLayout() btn_meshview = QPushButton("Mesh preview", self) btn_meshview.clicked.connect(self.viewMesh) vbox3.addWidget(btn_meshview) vbox3.addStretch(1) hbox = QHBoxLayout() hbox.addStretch(1) hbox.addLayout(vbox1) hbox.addStretch(1) hbox.addLayout(vbox2) hbox.addStretch(1) hbox.addLayout(vbox3) hbox.addStretch(1) vbox.addStretch(1) vbox.addLayout(hbox) vbox.addStretch(1) return vbox
def init_MeshGenTab(self): vbox = QVBoxLayout() vbox.setSpacing(10) self.text_mesh_in = QLabel('input data:') self.text_mesh_data = QLabel('mesh data:') vbox.addWidget(QLabel()) vbox.addWidget(self.text_mesh_in) vbox.addWidget(self.text_mesh_data) hr = QFrame() hr.setFrameShape(QFrame.HLine) vbox.addWidget(hr) vbox1 = QVBoxLayout() btn_meshload = QPushButton("Load SEG", self) btn_meshload.clicked.connect(self.loadSeg) btn_meshsave = QPushButton("Save MESH", self) btn_meshsave.clicked.connect(self.saveMesh) text_mesh_output = QLabel('format:') combo_sm = QComboBox(self) combo_sm.activated[str].connect(self.changeOut) supp_write = [] for k, v in supported_capabilities.iteritems(): if 'w' in v: supp_write.append(k) combo_sm.addItems(supp_write) combo_sm.setCurrentIndex(supp_write.index('vtk')) vbox1.addWidget(btn_meshload) vbox1.addWidget(btn_meshsave) hbox1 = QHBoxLayout() hbox1.addWidget(text_mesh_output) hbox1.addWidget(combo_sm) vbox1.addLayout(hbox1) vbox1.addStretch(1) vbox2 = QVBoxLayout() btn_meshgener = QPushButton("Generate", self) btn_meshgener.clicked.connect(self.generMesh) text_mesh_mesh = QLabel('generator:') combo_mg = QComboBox(self) combo_mg.activated[str].connect(self.changeMesh) self.mesh_generator = 'marching cubes' keys = mesh_generators.keys() keys.sort() combo_mg.addItems(keys) combo_mg.setCurrentIndex(keys.index(self.mesh_generator)) vbox2.addWidget(btn_meshgener) hbox1 = QHBoxLayout() hbox1.addWidget(text_mesh_mesh) hbox1.addWidget(combo_mg) vbox2.addLayout(hbox1) #vbox2.addStretch(1) vbox2.addWidget(QLabel()) btn_meshsmooth = QPushButton("Smooth", self) btn_meshsmooth.clicked.connect(self.smoothMesh) text_mesh_smooth = QLabel('method:') combo_out = QComboBox(self) combo_out.activated[str].connect(self.changeSmoothMethod) keys = smooth_methods.keys() combo_out.addItems(keys) combo_out.setCurrentIndex(keys.index('taubin')) vbox2.addWidget(btn_meshsmooth) hbox1 = QHBoxLayout() hbox1.addWidget(text_mesh_smooth) hbox1.addWidget(combo_out) vbox2.addLayout(hbox1) vbox2.addStretch(1) vbox3 = QVBoxLayout() btn_meshview = QPushButton("Mesh preview", self) btn_meshview.clicked.connect(self.viewMesh) vbox3.addWidget(btn_meshview) vbox3.addStretch(1) hbox = QHBoxLayout() hbox.addStretch(1) hbox.addLayout(vbox1) hbox.addStretch(1) hbox.addLayout(vbox2) hbox.addStretch(1) hbox.addLayout(vbox3) hbox.addStretch(1) vbox.addStretch(1) vbox.addLayout(hbox) vbox.addStretch(1) return vbox