def setHeaderObj(self): h = evalInNs(self, self.runHeader) if hasattr(h, "metadata"): self.model.run = h else: self.model.run = get_catalog()[-1] self.model.run.metadata = h
def main(): print(__doc__) with gui_qt("Example Application"): tree = RunTree(title="Example Application") # You can set your own catalog/run here or use this synthetic data. run = get_catalog()[-1] tree.run = run
def __init__(self, *, show=True, title=""): super().__init__() self.title = title # You can set your own catalog/run here or use this synthetic data. self._run = get_catalog()[-1] widget = QtTreeView(self, self._run) self.window = Window(widget, show=show)
def __init__(self, *, show=True, title=""): super().__init__() self.title = title widget = SearchesWidget(self) self.window = Window(widget, show=show) # Initialize with a two search tabs: one with some generated example data... self.append(Search(get_catalog(), columns=columns)) # ...and one listing any and all catalogs discovered on the system. from databroker import catalog self.append(Search(catalog, columns=columns))
def __init__(self, *, show=True, title="Example App"): super().__init__() self.title = title self.searches = SearchListWithButton() self.viewer = AutoLines(max_runs=3) self.model = SearchAndView(self.searches, self.viewer) widget = QtSearchAndView(self.model) self._window = Window(widget, show=show) # Initialize with a two search tabs: one with some generated example data... self.searches.append(Search(get_catalog(), columns=columns)) # ...and one listing any and all catalogs discovered on the system. from databroker import catalog self.model.searches.append(Search(catalog, columns=columns))
import napari from bluesky_widgets.components.search.searches import SearchList from bluesky_widgets.qt.searches import QtSearches from bluesky_widgets.examples.utils.add_search_mixin import AddSearchMixin from bluesky_widgets.examples.utils.generate_msgpack_data import get_catalog class Viewer(napari.Viewer, AddSearchMixin): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.searches = SearchList() with napari.gui_qt(): viewer = Viewer() viewer.grid_view() # Place images side by side, not stacked. viewer.window.add_dock_widget(QtSearches(viewer.searches), area="right") # Initialize with a two search tabs: one with some generated example data... viewer.add_search(get_catalog()) # ...and one listing any and all catalogs discovered on the system. from databroker import catalog viewer.add_search(catalog)
from bluesky.plans import scan from ophyd.sim import motor, det from bluesky_widgets.utils.streaming import stream_documents_into_runs from bluesky_widgets.models.auto_plot_builders import AutoLines from bluesky_widgets.headless.figures import HeadlessFigures from bluesky_widgets.examples.utils.generate_msgpack_data import get_catalog model = AutoLines(max_runs=3) view = HeadlessFigures(model.figures) RE = RunEngine() RE.subscribe(stream_documents_into_runs(model.add_run)) catalog = get_catalog() scans = catalog.search({"plan_name": "scan"}) model.add_run(scans[-1], pinned=True) def plan(): for i in range(1, 5): yield from scan([det], motor, -1, 1, 1 + 2 * i) RE(plan()) directory = tempfile.mkdtemp() filenames = view.export_all(directory) print("\n".join(f'"{filename}"' for filename in filenames))
def main(): # It have to be done before loading Qt # --help must also work without Qt options = parse_options() if options.debug: logging.root.setLevel(logging.DEBUG) # Then we can load Qt import silx from silx.gui import qt if options.opengl: silx.config.DEFAULT_PLOT_BACKEND = "opengl" # Make sure matplotlib is loaded first by silx import silx.gui.plot.matplotlib from pyFAI.gui.CalibrationWindow import CalibrationWindow from pyFAI.gui.CalibrationContext import CalibrationContext sys.excepthook = logUncaughtExceptions if options.qtargs is None: qtArgs = [] else: qtArgs = options.qtargs.split() app = qt.QApplication(qtArgs) pyFAI.resources.silx_integration() settings = qt.QSettings( qt.QSettings.IniFormat, qt.QSettings.UserScope, "pyfai", "pyfai-calib2", None ) context = CalibrationContext(settings) context.restoreSettings() setup_model(context.getCalibrationModel(), options) window = CalibrationWindow(context) # Begin modifications for bluesky_widgets from qtpy.QtWidgets import QDialog from bluesky_widgets.components.search.searches import Search from bluesky_widgets.qt.searches import QtSearch from bluesky_widgets.examples.utils.generate_msgpack_data import get_catalog from bluesky_widgets.examples.utils.add_search_mixin import columns from qtpy.QtWidgets import QAction, QHBoxLayout, QPushButton, QVBoxLayout, QWidget example_catalog = get_catalog() class SearchDialog(QDialog): """ Combine the QtSearches widget with a button that processes selected Runs. """ def __init__(self, model, *args, **kwargs): super().__init__(*args, **kwargs) layout = QVBoxLayout() self.setLayout(layout) self.setModal(True) layout.addWidget(QtSearch(model)) accept = QPushButton("Open") reject = QPushButton("Cancel") # We'll just slip this into an existing widget --- not great form, but # this is just a silly example. accept.clicked.connect(self.accept) reject.clicked.connect(self.reject) buttons_widget = QWidget() buttons_layout = QHBoxLayout() buttons_widget.setLayout(buttons_layout) buttons_layout.addWidget(accept) buttons_layout.addWidget(reject) layout.addWidget(buttons_widget) def launch_dialog(): model = Search(example_catalog, columns=columns) dialog = SearchDialog(model) def open_catalog(): catalog = model.selection_as_catalog # TODO Extract the data from this. print(f"Open {len(catalog)} runs") dialog.accepted.connect(open_catalog) dialog.exec() menu = window.menuBar().addMenu("&Data Broker") launch_dialog_action = QAction("&Search") menu.addAction(launch_dialog_action) launch_dialog_action.triggered.connect(launch_dialog) # End modifications for bluesky_widgets window.setVisible(True) window.setAttribute(qt.Qt.WA_DeleteOnClose, True) result = app.exec_() context.saveSettings() # remove ending warnings relative to QTimer app.deleteLater() return result