class ExampleDialog(ImageDialog): def __init__( self, wintitle=_("Example dialog box"), icon="guidata.svg", options=dict(show_contrast=True), edit=False, ): self.filter_gbox = None self.data = None self.item = None super(ExampleDialog, self).__init__( wintitle=wintitle, icon=icon, toolbar=True, edit=edit, options=options ) self.resize(600, 600) def register_tools(self): opentool = self.add_tool(OpenImageTool) opentool.SIG_OPEN_FILE.connect(self.open_image) self.register_all_image_tools() self.activate_default_tool() def create_plot(self, options): self.filter_gbox = DataSetEditGroupBox(_("Filter parameters"), FilterParam) self.filter_gbox.setEnabled(False) self.filter_gbox.SIG_APPLY_BUTTON_CLICKED.connect(self.apply_filter) self.plot_layout.addWidget(self.filter_gbox, 0, 0) self.param_gbox = DataSetShowGroupBox(_("Image parameters"), ImageParam) self.plot_layout.addWidget(self.param_gbox, 0, 1) options = dict(title=_("Image title"), zlabel=_("z-axis scale label")) ImageDialog.create_plot(self, options, 1, 0, 1, 0) def open_image(self, filename): """Opening image *filename*""" self.data = io.imread(filename, to_grayscale=True) self.show_data(self.data) param = ImageParam() param.title = filename param.height, param.width = self.data.shape update_dataset(self.param_gbox.dataset, param) self.param_gbox.get() self.filter_gbox.setEnabled(True) def show_data(self, data): plot = self.get_plot() if self.item is not None: self.item.set_data(data) else: self.item = make.image(data, colormap="gray") plot.add_item(self.item, z=0) plot.set_active_item(self.item) plot.replot() def apply_filter(self): param = self.filter_gbox.dataset filterfunc = getattr(scipy.ndimage, param.name) data = filterfunc(self.data, param.size) self.show_data(data)
class ImageListWithProperties(QSplitter): def __init__(self, parent): QSplitter.__init__(self, parent) self.imagelist = QListWidget(self) self.addWidget(self.imagelist) self.properties = DataSetEditGroupBox(_("Properties"), ImageParam) self.properties.setEnabled(False) self.addWidget(self.properties)
class ImageListWithProperties(QSplitter): def __init__(self, parent): QSplitter.__init__(self, parent) self.imagelist = QListWidget(self) self.addWidget(self.imagelist) self.properties = DataSetEditGroupBox(_("Properties"), ImageParam) self.properties.setEnabled(False) self.addWidget(self.properties)
class DAQParamsProperties(QSplitter): def __init__(self, parent): QSplitter.__init__(self, parent) # self.lineList = QListWidget(self) # self.addWidget(self.lineList) self.properties = DataSetEditGroupBox(_("Properties"), DAQParam) self.properties.setEnabled(True) self.addWidget(self.properties)
class ExampleDialog(ImageDialog): def __init__(self, wintitle=_("Example dialog box"), icon="guidata.svg", options=dict(show_contrast=True), edit=False): self.filter_gbox = None self.data = None self.item = None super(ExampleDialog, self).__init__(wintitle=wintitle, icon=icon, toolbar=True, edit=edit, options=options) self.resize(600, 600) def register_tools(self): opentool = self.add_tool(OpenImageTool) self.connect(opentool, SIGNAL("openfile(QString*)"), self.open_image) self.register_all_image_tools() self.activate_default_tool() def create_plot(self, options): self.filter_gbox = DataSetEditGroupBox(_("Filter parameters"), FilterParam) self.filter_gbox.setEnabled(False) self.connect(self.filter_gbox, SIGNAL("apply_button_clicked()"), self.apply_filter) self.plot_layout.addWidget(self.filter_gbox, 0, 0) self.param_gbox = DataSetShowGroupBox(_("Image parameters"), ImageParam) self.plot_layout.addWidget(self.param_gbox, 0, 1) options = dict(title=_("Image title"), zlabel=_("z-axis scale label")) ImageDialog.create_plot(self, options, 1, 0, 1, 0) def open_image(self, filename): """Opening image *filename*""" self.data = io.imread(filename, to_grayscale=True) self.show_data(self.data) param = ImageParam() param.title = filename param.height, param.width = self.data.shape update_dataset(self.param_gbox.dataset, param) self.param_gbox.get() self.filter_gbox.setEnabled(True) def show_data(self, data): plot = self.get_plot() if self.item is not None: self.item.set_data(data) else: self.item = make.image(data, colormap="gray") plot.add_item(self.item, z=0) plot.set_active_item(self.item) plot.replot() def apply_filter(self): param = self.filter_gbox.dataset filterfunc = getattr(scipy.ndimage, param.name) data = filterfunc(self.data, param.size) self.show_data(data)
class ImageListWithProperties(QSplitter): # Define View的部分 def __init__(self, parent): QSplitter.__init__(self, parent) # List Widget self.csvlist = QListWidget(self) self.csvlist.setContextMenuPolicy(Qt.ActionsContextMenu) plotCSV = QAction(self) plotCSV.setText("Plot") plotCSV.triggered.connect(self.plotCSV) delete = QAction(self) delete.setText("Remove") delete.triggered.connect(self.removeItem) extractCSV = QAction(self) extractCSV.setText("Extract to Arrays") extractCSV.triggered.connect(self.extractArray) self.csvlist.addAction(plotCSV) self.csvlist.addAction(extractCSV) self.csvlist.addAction(delete) self.addWidget(self.csvlist) # Properties widget self.properties = DataSetEditGroupBox(_("參數(Properties)"), CsvParam) self.properties.setEnabled(False) self.addWidget(self.properties) def plotCSV(self): self.emit(SIGNAL("PLOT")) def removeItem(self): self.emit(SIGNAL("REMOVE")) def extractArray(self): self.emit(SIGNAL("EXTRACT_ARRAY"))
class ArrayListWithProperties(QSplitter): # Define View的部分 def __init__(self, parent): QSplitter.__init__(self, parent) # List Widget self.arraylist = QListWidget(self) self.arraylist.setContextMenuPolicy(Qt.ActionsContextMenu) newArray = QAction(self) newArray.setText("Paste Array (no header name)") newArray.triggered.connect(self.pasteArray) newArrayWithName = QAction(self) newArrayWithName.setText("Paste Array (with header name)") newArrayWithName.triggered.connect(self.pasteArrayWithName) plotArray = QAction(self) plotArray.setText("Plot Array") plotArray.triggered.connect(self.plotArray) modifyArray = QAction(self) modifyArray.setText("Modify Array(Calibration)") modifyArray.triggered.connect(self.modifyArray) plotScatter = QAction(self) plotScatter.setText("Plot Scatter") plotScatter.triggered.connect(self.plotScatter) plotHist = QAction(self) plotHist.setText("Plot Histogram") plotHist.triggered.connect(self.plotHist) delete = QAction(self) delete.setText("Remove") delete.triggered.connect(self.removeItem) curveDialog = QAction(self) curveDialog.setText("Open Curve Dialog") curveDialog.triggered.connect(self.openCurveDialog) self.arraylist.addAction(newArray) self.arraylist.addAction(newArrayWithName) self.arraylist.addAction(plotArray) self.arraylist.addAction(plotScatter) self.arraylist.addAction(plotHist) self.arraylist.addAction(modifyArray) self.arraylist.addAction(curveDialog) self.arraylist.addAction(delete) self.addWidget(self.arraylist) # Properties widget self.properties = DataSetEditGroupBox(_("參數(Properties)"), CsvParam) self.properties.setEnabled(False) self.addWidget(self.properties) def pasteArray(self): self.emit(SIGNAL("PASTE_NO_NAME")) def pasteArrayWithName(self): self.emit(SIGNAL("PASTE_WITH_NAME")) def plotHist(self): self.emit(SIGNAL("PLOT_HISTOGRAM")) def plotArray(self): self.emit(SIGNAL("PLOT")) def modifyArray(self): self.emit(SIGNAL("MODIFY_ARRAY")) def plotScatter(self): self.emit(SIGNAL("PLOT_SCATTER")) def removeItem(self): self.emit(SIGNAL("REMOVE")) def openCurveDialog(self): self.emit(SIGNAL("OPEN_CURVEDIALOG"))