def __init__(self, input_data=None, output_path=None, json_file=".azimint.json", context=None): qt.QWidget.__init__(self) filename = get_ui_file("integration-dialog.ui") qt.loadUi(filename, self) pyfaiIcon = icons.getQIcon("pyfai:gui/images/icon") self.setWindowIcon(pyfaiIcon) self.__context = context if context is not None: context.restoreWindowLocationSettings("main-window", self) self.__workerConfigurator = WorkerConfigurator(self._holder) layout = qt.QVBoxLayout(self._holder) layout.addWidget(self.__workerConfigurator) layout.setContentsMargins(0, 0, 0, 0) self._holder.setLayout(layout) self.input_data = input_data self.output_path = output_path self.json_file = json_file self.batch_processing.clicked.connect(self.__fireBatchProcess) self.save_json_button.clicked.connect(self.save_config) self.quit_button.clicked.connect(self.die) self.progressBar.setVisible(False) self.progressBar.setValue(0) if self.json_file is not None: self.restore(self.json_file)
def __init__(self, input_data=None, output_path=None, json_file=".azimint.json", context=None): qt.QWidget.__init__(self) filename = get_ui_file("integration-dialog.ui") qt.loadUi(filename, self) pyfaiIcon = icons.getQIcon("pyfai:gui/images/icon") self.setWindowIcon(pyfaiIcon) self.__context = context if context is not None: context.restoreWindowLocationSettings("main-window", self) self.__workerConfigurator = WorkerConfigurator(self._holder) self.__content = qt.QWidget(self) layout = qt.QVBoxLayout(self.__content) layout.addWidget(self.__workerConfigurator) self._holder.setWidget(self.__content) self._holder.minimumSizeHint = self.__minimumScrollbarSizeHint size = self.__content.minimumSizeHint() self._holder.setMaximumHeight(size.height() + 2) size = self.minimumSizeHint() - self._holder.minimumSizeHint() + size self.setMaximumHeight(size.height() + 2) self.input_data = input_data self.output_path = output_path self.json_file = json_file self.batch_processing.clicked.connect(self.__fireBatchProcess) self.save_json_button.clicked.connect(self.save_config) self.quit_button.clicked.connect(self.die) if self.json_file is not None: self.restore(self.json_file)
def _initGui(self): qt.loadUi(pyFAI.utils.get_ui_file("calibration-experiment.ui"), self) icon = icons.getQIcon("pyfai:gui/icons/task-settings") self.setWindowIcon(icon) self.initNextStep() self._imageLoader.clicked.connect(self.loadImage) self._maskLoader.clicked.connect(self.loadMask) self._darkLoader.clicked.connect(self.loadDark) self._customDetector.clicked.connect(self.__customDetector) self.__plot = self.__createPlot(parent=self._imageHolder) self.__plot.setObjectName("plot-experiment") self.__plotBackground = SynchronizePlotBackground(self.__plot) layout = qt.QVBoxLayout(self._imageHolder) layout.addWidget(self.__plot) layout.setContentsMargins(1, 1, 1, 1) self._imageHolder.setLayout(layout) self._detectorFileDescription.setElideMode(qt.Qt.ElideMiddle) self._calibrant.setFileLoadable(True) self._calibrant.sigLoadFileRequested.connect(self.loadCalibrant) self.__synchronizeRawView = SynchronizeRawView() self.__synchronizeRawView.registerTask(self) self.__synchronizeRawView.registerPlot(self.__plot)
def __init__(self, parent=None): """ :param parent: Parent QWidget """ super(ArrayStackPlot, self).__init__(parent) self.__signal = None self.__signal_name = None # the Z, Y, X axes apply to the last three dimensions of the signal # (in that order) self.__z_axis = None self.__z_axis_name = None self.__y_axis = None self.__y_axis_name = None self.__x_axis = None self.__x_axis_name = None self._stack_view = StackView(self) self._hline = qt.QFrame(self) self._hline.setFrameStyle(qt.QFrame.HLine) self._hline.setFrameShadow(qt.QFrame.Sunken) self._legend = qt.QLabel(self) self._selector = NumpyAxesSelector(self) self._selector.setNamedAxesSelectorVisibility(False) self.__selector_is_connected = False layout = qt.QVBoxLayout() layout.addWidget(self._stack_view) layout.addWidget(self._hline) layout.addWidget(self._legend) layout.addWidget(self._selector) self.setLayout(layout)
def __createLayout(self): layout = qt.QVBoxLayout(self) layout.setContentsMargins(24, 15, 24, 20) layout.setSpacing(8) self.__label = qt.QLabel(self) self.__label.setWordWrap(True) flags = self.__label.textInteractionFlags() flags = flags | qt.Qt.TextSelectableByKeyboard flags = flags | qt.Qt.TextSelectableByMouse self.__label.setTextInteractionFlags(flags) self.__label.setOpenExternalLinks(True) self.__label.setSizePolicy(qt.QSizePolicy.Minimum, qt.QSizePolicy.Preferred) licenseButton = qt.QPushButton(self) licenseButton.setText("License...") licenseButton.clicked.connect(self.__displayLicense) licenseButton.setAutoDefault(False) self.__options = qt.QDialogButtonBox() self.__options.addButton(licenseButton, qt.QDialogButtonBox.ActionRole) okButton = self.__options.addButton(qt.QDialogButtonBox.Ok) okButton.setDefault(True) okButton.clicked.connect(self.accept) layout.addWidget(self.__label) layout.addWidget(self.__options) layout.setStretch(0, 100) layout.setStretch(1, 0)
def __init__(self, file_names=None): qt.QWidget.__init__(self) self.__treeview = silx.gui.hdf5.Hdf5TreeView(self) self.__text = qt.QTextEdit(self) self.__dataViewer = DataViewerFrame(self) vSplitter = qt.QSplitter(qt.Qt.Vertical) vSplitter.addWidget(self.__dataViewer) vSplitter.addWidget(self.__text) vSplitter.setSizes([10, 0]) splitter = qt.QSplitter(self) splitter.addWidget(self.__treeview) splitter.addWidget(vSplitter) splitter.setStretchFactor(1, 1) layout = qt.QVBoxLayout() layout.addWidget(splitter) layout.setStretchFactor(splitter, 1) self.setLayout(layout) # append all files to the tree if not file_names is None: for file_name in file_names: self.__treeview.findHdf5TreeModel().appendFile(file_name) self.__treeview.activated.connect(self.displayData)
def __init__(self): super(PeakPickingTask, self).__init__() qt.loadUi(pyFAI.utils.get_ui_file("calibration-peakpicking.ui"), self) self.initNextStep() self.__dialogState = None layout = qt.QVBoxLayout(self._imageHolder) self.__plot = _PeakPickingPlot(parent=self._imageHolder) toolBar = self.__createPlotToolBar(self.__plot) self.__plot.addToolBar(toolBar) statusBar = self.__createPlotStatusBar(self.__plot) self.__plot.setStatusBar(statusBar) layout.addWidget(self.__plot) layout.setContentsMargins(1, 1, 1, 1) self._imageHolder.setLayout(layout) self._ringSelectionMode.setIcon(icons.getQIcon("pyfai:gui/icons/search-ring")) self._peakSelectionMode.setIcon(icons.getQIcon("pyfai:gui/icons/search-peak")) self.__peakSelectionView = None self.__plot.sigPlotSignal.connect(self.__onPlotEvent) self.__undoStack = qt.QUndoStack(self) self._undoButton.setDefaultAction(self.__undoStack.createUndoAction(self, "Undo")) self._redoButton.setDefaultAction(self.__undoStack.createRedoAction(self, "Redo")) self.__mode = qt.QButtonGroup() self.__mode.setExclusive(True) self.__mode.addButton(self._peakSelectionMode) self.__mode.addButton(self._ringSelectionMode) self._ringSelectionMode.setChecked(True) self._extract.clicked.connect(self.__autoExtractRings)
def makeSplitterButton(self, name, splitter, indHandle, indSizes): handle = splitter.handle(indHandle) if handle is None: return isVerical = splitter.orientation() == qt.Qt.Horizontal if name == 'transform' and self.node.transformIn is not None: nameBut = name + ': ' + self.node.transformIn.name else: nameBut = name button = QSplitterButton(nameBut, handle, isVerical) button.setText(button.rawText) splitter.setHandleWidth(SPLITTER_WIDTH) po = qt.QSizePolicy(qt.QSizePolicy.Preferred, qt.QSizePolicy.Preferred) button.setSizePolicy(po) button.clicked.connect( partial(self.handleSplitterButton, button, indSizes)) if isVerical: sLayout = qt.QVBoxLayout() else: sLayout = qt.QHBoxLayout() sLayout.setContentsMargins(0, 0, 0, 0) sLayout.addStretch(1) sLayout.addWidget(button, 0) sLayout.addStretch(1) handle.setLayout(sLayout) self.splitterButtons[name] = button
def __init__(self, plot, parent=None): assert isinstance( plot, RixsPlot2D), "'plot' should be an instance of RixsPlot2D" _title = f"Plot {plot._index} : cursors infos" super(RixsROIDockWidget, self).__init__(_title, parent=parent) self._roiManager = RixsROIManager(plot) #: Create the table widget displaying infos self._roiTable = RegionOfInterestTableWidget() self._roiTable.setRegionOfInterestManager(self._roiManager) #: Create a toolbar containing buttons for all ROI 'drawing' modes self._roiToolbar = qt.QToolBar() self._roiToolbar.setIconSize(qt.QSize(16, 16)) for roiClass in self._roiManager.getSupportedRoiClasses(): # Create a tool button and associate it with the QAction of each # mode action = self._roiManager.getInteractionModeAction(roiClass) self._roiToolbar.addAction(action) # Add the region of interest table and the buttons to a dock widget self._widget = qt.QWidget() self._layout = qt.QVBoxLayout() self._widget.setLayout(self._layout) self._layout.addWidget(self._roiToolbar) self._layout.addWidget(self._roiTable) self.setWidget(self._widget) self.visibilityChanged.connect(self.roiDockVisibilityChanged)
def fillSplitterFiles(self): splitterInner = qt.QWidget(self.splitterFiles) labelFilter = qt.QLabel('file filter') self.editFileFilter = qt.QLineEdit() self.editFileFilter.returnPressed.connect(self.setFileFilter) if hasattr(self.node, 'fileNameFilters'): self.editFileFilter.setText(', '.join(self.node.fileNameFilters)) self.files = FileTreeView(self.node) # self.files.doubleClicked.connect(self.loadFiles) self.files.model().directoryLoaded.connect(self._directoryIsLoaded) self.filesAutoAddCB = qt.QCheckBox("auto append fresh file TODO", self) fileFilterLayout = qt.QHBoxLayout() fileFilterLayout.addWidget(labelFilter) fileFilterLayout.addWidget(self.editFileFilter, 1) layout = qt.QVBoxLayout() layout.setContentsMargins(2, 0, 0, 0) layout.addLayout(fileFilterLayout) layout.addWidget(self.files) layout.addWidget(self.filesAutoAddCB) splitterInner.setLayout(layout) self.columnFormat = ColumnFormatWidget(self.splitterFiles, self.node) self.splitterFiles.setStretchFactor(0, 1) # don't remove self.splitterFiles.setStretchFactor(1, 0)
def fillSplitterData(self): splitterInner = qt.QWidget(self.splitterData) self.pickWidget = qt.QWidget(splitterInner) labelPick = qt.QLabel('Pick data') cancelPick = qt.QPushButton('Cancel') cancelPick.setStyleSheet("QPushButton {background-color: tomato;}") cancelPick.clicked.connect(self.cancelPropsToPickedData) applyPick = qt.QPushButton('Apply') applyPick.setStyleSheet("QPushButton {background-color: lightgreen;}") applyPick.clicked.connect(self.applyPropsToPickedData) pickLayout = qt.QHBoxLayout() pickLayout.setContentsMargins(0, 0, 0, 0) pickLayout.addWidget(labelPick) pickLayout.addWidget(cancelPick, 0.5) pickLayout.addWidget(applyPick, 0.5) self.pickWidget.setLayout(pickLayout) self.pickWidget.setVisible(False) self.tree = DataTreeView(self.node, splitterInner) self.tree.model().needReplot.connect(self.replot) self.tree.selectionModel().selectionChanged.connect(self.selChanged) layout = qt.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.pickWidget) layout.addWidget(self.tree) splitterInner.setLayout(layout) self.combiner = CombineSpectraWidget(self.splitterData, self.node) self.splitterData.setStretchFactor(0, 1) # don't remove self.splitterData.setStretchFactor(1, 0) self.splitterData.setSizes([1, 0])
def addWidgets(widgets, leftMargin=0, Type='h', align=None, spacing=None): # create a mother widget to make sure both qLabel & qLineEdit will # always be displayed side by side widget = qt.QWidget() if Type == 'h': widget.setLayout(qt.QHBoxLayout()) else: widget.setLayout(qt.QVBoxLayout()) if align == 'center': widget.layout().setAlignment(qt.Qt.AlignCenter) if align == 'bottom' or align == 'right': widget.layout().addStretch() widget.layout().setContentsMargins(0, 0, 0, 0) widget.layout().addSpacing(leftMargin) for wg in widgets: widget.layout().addWidget(wg) if align == 'uniform': if wg != widgets[-1]: widget.layout().addStretch() if align == 'top' or align == 'left': widget.layout().addStretch() return widget
def __init__(self, parent): super(AboutDialog, self).__init__(parent) self.setWindowTitle("About") self.setWindowIcon(qt.QIcon(ICONPATHR)) self.parseq_pypi_version = self.check_pypi_version( ) # pypi_ver, cur_ver # noqa self.tabBar = qt.QTabBar(parent=self) self.tabBar.setIconSize(qt.QSize(32, 32)) self.tabBar.setStyleSheet("QTabBar {font: bold 10pt;}") # "QTabBar::tab { height: 100px; width: 400px; }") self.tabNames = ['ParSeq', csi.pipelineName] self.iconPaths = [ICONPATHP, csi.appIconPath] for tabName, iconPath in zip(self.tabNames, self.iconPaths): icon = qt.QIcon(iconPath) if iconPath else qt.QIcon() self.tabBar.addTab(icon, tabName) self.tabBar.currentChanged.connect(self.changePage) self.makeWebView() # self.webView.page().mainFrame().setScrollBarPolicy( # qt.Qt.Vertical, qt.Qt.ScrollBarAlwaysOff) # self.webView.page().mainFrame().setScrollBarPolicy( # qt.Qt.Horizontal, qt.Qt.ScrollBarAlwaysOff) layout = qt.QVBoxLayout() layout.addWidget(self.tabBar) layout.setSpacing(0) layout.addWidget(self.webView) self.setLayout(layout) self.resize(0, 0)
def __init__(self, parent=None, title="Set constraints"): super(ConstraintsPage, self).__init__(parent) self.setTitle(title) self.setToolTip("Disable 'Set constraints' to remove all " + "constraints on all fit parameters") self.setCheckable(True) layout = qt.QVBoxLayout(self) self.setLayout(layout) self.positiveHeightCB = qt.QCheckBox("Force positive height/area", self) self.positiveHeightCB.setToolTip("Fit must find positive peaks") layout.addWidget(self.positiveHeightCB) self.positionInIntervalCB = qt.QCheckBox("Force position in interval", self) self.positionInIntervalCB.setToolTip( "Fit must position peak within X limits") layout.addWidget(self.positionInIntervalCB) self.positiveFwhmCB = qt.QCheckBox("Force positive FWHM", self) self.positiveFwhmCB.setToolTip("Fit must find a positive FWHM") layout.addWidget(self.positiveFwhmCB) self.sameFwhmCB = qt.QCheckBox("Force same FWHM for all peaks", self) self.sameFwhmCB.setToolTip("Fit must find same FWHM for all peaks") layout.addWidget(self.sameFwhmCB) self.quotedEtaCB = qt.QCheckBox("Force Eta between 0 and 1", self) self.quotedEtaCB.setToolTip( "Fit must find Eta between 0 and 1 for pseudo-Voigt function") layout.addWidget(self.quotedEtaCB) layout.addStretch() self.setDefault()
def __init__(self, parent=None, dataCollection=None, formatStr='{0}'): super(CalibrateEnergyWidget, self).__init__(parent) layout = qt.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layoutB = qt.QHBoxLayout() self.autoSetButton = qt.QPushButton('auto set references') # self.autoSetButton.setMinimumWidth(120) layoutB.addWidget(self.autoSetButton) self.clearButton = qt.QPushButton('clear') self.clearButton.setMinimumWidth(36) self.clearButton.clicked.connect(self.clear) layoutB.addWidget(self.clearButton) self.acceptButton = qt.QPushButton('accept') self.acceptButton.setMinimumWidth(46) layoutB.addWidget(self.acceptButton) layoutB.addStretch() layout.addLayout(layoutB) header = ['reference data', 'energy', 'DCM', 'FWHM'] self.calibrationModel = CalibrationModel(dataCollection, header, formatStr) self.table = CalibrateTableView(self, self.calibrationModel) layout.addWidget(self.table) self.setLayout(layout)
def __init__(self, parent=None, node=None): super(ColumnFormatWidget, self).__init__(parent, node) self.shouldRemoveNonesFromProps = True self.tabWidget = qt.QTabWidget(self) self.tabWidget.setStyleSheet( # "QTabBar::tab:selected {background: palette(window);}" "QTabWidget>QWidget>QWidget{background: palette(window);}") self.headerTab = self.makeHeaderTab() self.tabWidget.addTab(self.headerTab, 'header') self.dataLocationTab = self.makeDataLocationTab() ind = self.tabWidget.addTab(self.dataLocationTab, 'arrays') self.tabWidget.setTabToolTip( ind, "for HDF5/SPEC datasets: use context menu on data arrays\n" "for column files: use expressions of variables `Col1`, `Col2`, …" "\nor give a zero-based int column index") self.conversionTab = self.makeConversionTab() ind = self.tabWidget.addTab(self.conversionTab, 'conversion') self.tabWidget.setTabToolTip( ind, "give either a float factor,\n" "a new str unit (not for abscissa) or\n" "leave empty (no conversion)") layout = qt.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.tabWidget) layout.addStretch() self.setLayout(layout) self.tabWidget.setCurrentIndex(1) self.registerPropGroup( self, [self.headerTab, self.dataLocationTab], 'data format')
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("Set print size preferences") layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.configurationWidget = PrintGeometryWidget(self) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) self.okButton = qt.QPushButton(hbox) self.okButton.setText("Accept") self.okButton.setAutoDefault(False) self.rejectButton = qt.QPushButton(hbox) self.rejectButton.setText("Dismiss") self.rejectButton.setAutoDefault(False) self.okButton.clicked.connect(self.accept) self.rejectButton.clicked.connect(self.reject) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(2) # hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(self.rejectButton) # hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) layout.addWidget(self.configurationWidget) layout.addWidget(hbox)
def setupUi(self): # form layout for grid scan inputs layout = qt.QFormLayout() self.noChangeBox = qt.QRadioButton() layout.addRow(qt.QLabel("Export flat list of points:"), self.noChangeBox) self.reshapeBox = qt.QRadioButton() self.reshapeBox.setChecked(True) layout.addRow(qt.QLabel("Try reshaping the data:"), self.reshapeBox) self.shapeBox = qt.QLineEdit('auto') layout.addRow(qt.QLabel(" shape:"), self.shapeBox) self.resampleBox = qt.QRadioButton() layout.addRow(qt.QLabel("Resample the data on a grid:"), self.resampleBox) self.oversamplingBox = qt.QSpinBox() self.oversamplingBox.setValue(1) layout.addRow(qt.QLabel(" oversampling relative to typical step size:"), self.oversamplingBox) self.equalBox = qt.QCheckBox() self.equalBox.setChecked(True) layout.addRow(qt.QLabel(" equal horizontal and vertical steps"), self.equalBox) self.formGroupBox = qt.QGroupBox("PyMCA needs data layed out on a regular grid.") self.formGroupBox.setLayout(layout) # ok/cancel buttons buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) # put everything together mainLayout = qt.QVBoxLayout() mainLayout.addWidget(self.formGroupBox) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Export for PyMCA...")
def __init__(self): """Constructor""" qt.QMainWindow.__init__(self) self.setWindowTitle("Silx simple widget example") main_panel = qt.QWidget(self) main_panel.setLayout(qt.QVBoxLayout()) layout = main_panel.layout() layout.addWidget(qt.QLabel("WaitingPushButton")) layout.addWidget(self.createWaitingPushButton()) layout.addWidget(self.createWaitingPushButton2()) layout.addWidget(qt.QLabel("ThreadPoolPushButton")) layout.addWidget(self.createThreadPoolPushButton()) layout.addWidget(qt.QLabel("RangeSlider")) layout.addWidget(self.createRangeSlider()) layout.addWidget(self.createRangeSliderWithBackground()) panel = self.createLegendIconPanel(self) layout.addWidget(qt.QLabel("LegendIconWidget")) layout.addWidget(panel) panel = self.createElidedLabelPanel(self) layout.addWidget(qt.QLabel("ElidedLabel")) layout.addWidget(panel) self.setCentralWidget(main_panel)
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.tabWidget = qt.QTabWidget(self) layout = qt.QVBoxLayout(self) layout.addWidget(self.tabWidget) layout2 = qt.QHBoxLayout(None) # self.buttonHelp = qt.QPushButton(self) # self.buttonHelp.setText("Help") # layout2.addWidget(self.buttonHelp) self.buttonDefault = qt.QPushButton(self) self.buttonDefault.setText("Undo changes") layout2.addWidget(self.buttonDefault) spacer = qt.QSpacerItem(20, 20, qt.QSizePolicy.Expanding, qt.QSizePolicy.Minimum) layout2.addItem(spacer) self.buttonOk = qt.QPushButton(self) self.buttonOk.setText("OK") layout2.addWidget(self.buttonOk) self.buttonCancel = qt.QPushButton(self) self.buttonCancel.setText("Cancel") layout2.addWidget(self.buttonCancel) layout.addLayout(layout2) self.buttonOk.clicked.connect(self.accept) self.buttonCancel.clicked.connect(self.reject)
def __init__(self, parent=None): """ :param parent: Parent QWidget """ super(ArrayCurvePlot, self).__init__(parent) self.__signals = None self.__signals_names = None self.__signal_errors = None self.__axis = None self.__axis_name = None self.__x_axis_errors = None self.__values = None self._plot = Plot1D(self) self._selector = NumpyAxesSelector(self) self._selector.setNamedAxesSelectorVisibility(False) self.__selector_is_connected = False self._plot.sigActiveCurveChanged.connect( self._setYLabelFromActiveLegend) layout = qt.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._plot) layout.addWidget(self._selector) self.setLayout(layout)
def __init__(self): super(ExperimentTask, self).__init__() qt.loadUi(pyFAI.utils.get_ui_file("calibration-experiment.ui"), self) self.initNextStep() self.__dialogState = None self._imageLoader.clicked.connect(self.loadImage) self._maskLoader.clicked.connect(self.loadMask) self._darkLoader.clicked.connect(self.loadDark) self._splineLoader.clicked.connect(self.loadSpline) self.__plot2D = silx.gui.plot.Plot2D(parent=self._imageHolder) self.__plot2D.setKeepDataAspectRatio(True) self.__plot2D.getMaskAction().setVisible(False) self.__plot2D.getProfileToolbar().setVisible(False) self.__plot2D.setDataMargins(0.1, 0.1, 0.1, 0.1) self.__plot2D.setGraphXLabel("Y") self.__plot2D.setGraphYLabel("X") colormap = { 'name': "inferno", 'normalization': 'log', 'autoscale': True, } self.__plot2D.setDefaultColormap(colormap) layout = qt.QVBoxLayout(self._imageHolder) layout.addWidget(self.__plot2D) layout.setContentsMargins(1, 1, 1, 1) self._imageHolder.setLayout(layout)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('Histogram') self.__itemRef = None # weakref on the item to track layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) # Plot # Lazy import to avoid circular dependencies from silx.gui.plot.PlotWindow import Plot1D self.__plot = Plot1D(self) layout.addWidget(self.__plot) self.__plot.setDataMargins(0.1, 0.1, 0.1, 0.1) self.__plot.getXAxis().setLabel("Value") self.__plot.getYAxis().setLabel("Count") posInfo = self.__plot.getPositionInfoWidget() posInfo.setSnappingMode(posInfo.SNAPPING_CURVE) # Stats display statsWidget = qt.QWidget(self) layout.addWidget(statsWidget) statsLayout = qt.QHBoxLayout(statsWidget) statsLayout.setContentsMargins(4, 4, 4, 4) self.__statsWidgets = dict( (name, _StatWidget(parent=statsWidget, name=name)) for name in ("min", "max", "mean", "std", "sum")) for widget in self.__statsWidgets.values(): statsLayout.addWidget(widget) statsLayout.addStretch(1)
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("Strip and Snip Configuration Window") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) self.parametersWidget = BackgroundWidget(self) self.mainLayout.addWidget(self.parametersWidget) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(2) self.okButton = qt.QPushButton(hbox) self.okButton.setText("OK") self.okButton.setAutoDefault(False) self.dismissButton = qt.QPushButton(hbox) self.dismissButton.setText("Cancel") self.dismissButton.setAutoDefault(False) hboxLayout.addWidget(HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(self.dismissButton) self.mainLayout.addWidget(hbox) self.dismissButton.clicked.connect(self.reject) self.okButton.clicked.connect(self.accept) self.output = {} """Configuration dictionary containing following fields:
def __init__(self, parent=None): super(NewProjectPage, self).__init__(parent) layout = Qt.QVBoxLayout(self) self.setTitle('X-Socs') self.setSubTitle('New project : select a project directory.') icon = XsocsIcons.getQPixmap('xsocs') self.setPixmap(Qt.QWizard.WatermarkPixmap, icon) icon = XsocsIcons.getQPixmap('logo') self.setPixmap(Qt.QWizard.LogoPixmap, icon) self.__nextId = XsocsWizard.SelectDataId self.__isComplete = False self.__selectedPath = None group = GroupBox('Create new project into...') layout.addWidget(group) grpLayout = Qt.QHBoxLayout(group) filePicker = FileChooser(fileMode=Qt.QFileDialog.Directory, appendPath=os.path.sep + 'xsocs.prj', options=Qt.QFileDialog.ShowDirsOnly) filePicker.sigSelectionChanged.connect(self.__filePicked) grpLayout.addWidget(filePicker)
def __init__(self, parent=None, plot=None, rois=None): qt.QDialog.__init__(self, parent=parent) assert plot is not None assert rois is not None self._plot = plot self._rois = rois self.setLayout(qt.QVBoxLayout()) # define the selection widget self._selection_widget = qt.QWidget() self._selection_widget.setLayout(qt.QHBoxLayout()) self._kindCB = qt.QComboBox(parent=self) self._selection_widget.layout().addWidget(self._kindCB) self._itemCB = qt.QComboBox(parent=self) self._selection_widget.layout().addWidget(self._itemCB) self._roiCB = qt.QComboBox(parent=self) self._selection_widget.layout().addWidget(self._roiCB) self.layout().addWidget(self._selection_widget) # define modal buttons types = qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel self._buttonsModal = qt.QDialogButtonBox(parent=self) self._buttonsModal.setStandardButtons(types) self.layout().addWidget(self._buttonsModal) self._buttonsModal.accepted.connect(self.accept) self._buttonsModal.rejected.connect(self.reject) # connect signal / slot self._kindCB.currentIndexChanged.connect(self._updateValidItemAndRoi)
def __customDetector(self): settings = self.model().experimentSettingsModel() detector = settings.detectorModel().detector() popup = DetectorSelectorDrop(self) popupParent = self._customDetector pos = popupParent.mapToGlobal(popupParent.rect().bottomRight()) pos = pos + popup.rect().topLeft() - popup.rect().topRight() popup.move(pos) popup.show() dialog = qt.QDialog(self) dialog.setWindowTitle("Detector selection") layout = qt.QVBoxLayout(dialog) layout.addWidget(popup) buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(dialog.accept) buttonBox.rejected.connect(dialog.reject) layout.addWidget(buttonBox) # It have to be here to set the focus on the right widget popup.setDetector(detector) result = dialog.exec_() if result: newDetector = popup.detector() settings.detectorModel().setDetector(newDetector)
def __init__(self, parent=None): """ :param parent: parent QWidget :param labels: list of labels for each dimension of the array """ qt.QWidget.__init__(self, parent) self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) self.browserContainer = qt.QWidget(self) self.browserLayout = qt.QGridLayout(self.browserContainer) self.browserLayout.setContentsMargins(0, 0, 0, 0) self.browserLayout.setSpacing(0) self._dimensionLabelsText = [] """List of text labels sorted in the increasing order of the dimension they apply to.""" self._browserLabels = [] """List of QLabel widgets.""" self._browserWidgets = [] """List of HorizontalSliderWithBrowser widgets.""" self.axesSelector = AxesSelector(self) self.view = TableView(self) self.mainLayout.addWidget(self.browserContainer) self.mainLayout.addWidget(self.axesSelector) self.mainLayout.addWidget(self.view) self.model = ArrayTableModel(self) self.view.setModel(self.model)
def __init__(self, parent=None): super(MaskScatterWidget, self).__init__(parent=parent) self._activeScatterLegend = "active scatter" self._bgImageLegend = "background image" # widgets centralWidget = qt.QWidget(self) self._plot = PlotWidget(parent=centralWidget) self._maskToolsWidget = ScatterMaskToolsWidget.ScatterMaskToolsWidget( plot=self._plot, parent=centralWidget) self._alphaSlider = NamedScatterAlphaSlider(parent=self, plot=self._plot) self._alphaSlider.setOrientation(qt.Qt.Horizontal) self._alphaSlider.setToolTip("Adjust scatter opacity") # layout layout = qt.QVBoxLayout(centralWidget) layout.addWidget(self._plot) layout.addWidget(self._alphaSlider) layout.addWidget(self._maskToolsWidget) centralWidget.setLayout(layout) self.setCentralWidget(centralWidget)
def _initGui(self): qt.loadUi(pyFAI.utils.get_ui_file("calibration-mask.ui"), self) icon = silx.gui.icons.getQIcon("pyfai:gui/icons/task-mask") self.setWindowIcon(icon) self.initNextStep() self.__plot = self.__createPlot(self._imageHolder) markerModel = CalibrationContext.instance().getCalibrationModel( ).markerModel() self.__markerManager = MarkerManager(self.__plot, markerModel, pixelBasedPlot=True) handle = self.__plot.getWidgetHandle() handle.setContextMenuPolicy(qt.Qt.CustomContextMenu) handle.customContextMenuRequested.connect(self.__plotContextMenu) self.__maskPanel = _MaskToolsWidget(parent=self._toolHolder, plot=self.__plot) self.__maskPanel.setDirection(qt.QBoxLayout.TopToBottom) self.__maskPanel.setMultipleMasks("single") layout = self.__maskPanel.layout() layout.setContentsMargins(0, 0, 0, 0) layout = qt.QVBoxLayout(self._toolHolder) layout.addWidget(self.__maskPanel) layout.setContentsMargins(0, 0, 0, 0) self._toolHolder.setLayout(layout) layout = qt.QVBoxLayout(self._imageHolder) layout.addWidget(self.__plot) layout.setContentsMargins(1, 1, 1, 1) self._imageHolder.setLayout(layout) # FIXME ask for a stable API self.__maskPanel._mask.sigChanged.connect(self.__maskFromPlotChanged) self.widgetShow.connect(self.__widgetShow) self.widgetHide.connect(self.__widgetHide) self.__plotMaskChanged = False self.__modelMaskChanged = False self.__synchronizeRawView = SynchronizeRawView() self.__synchronizeRawView.registerTask(self) self.__synchronizeRawView.registerPlot(self.__plot)