def _show_sync_dialog(self, widget, apply): from madgui.online.dialogs import SyncParamItem from madgui.widget.dialog import Dialog model, live = self.model(), self.backend widget.data = [ SyncParamItem(info, live.read_param(name), model.read_param(name)) for name, info in self.get_knobs().items() ] widget.data_key = 'acs_parameters' dialog = Dialog(self.session.window()) dialog.setExportWidget(widget, self.session.folder) dialog.serious.updateButtons() dialog.accepted.connect(apply) dialog.show() return dialog
def calibrate_offsets(self): from .offcal import OffsetCalibrationWidget from madgui.widget.dialog import Dialog return Dialog( self, OffsetCalibrationWidget( self, [m.name for m in self.readouts if self.selected(m)]))
def create_info_box(self, el_id): model = self.model() config = self.mainwindow.config info = ElementInfoBox(model, el_id, config.summary_attrs) info.changed_element.connect(partial(self._changed_box_element, info)) dock = Dialog(self.mainwindow) dock.setSimpleExportWidget(info, None) dock.installEventFilter(self.event_filter) dock.present() return info
def model_params_dialog(model, parent=None, folder='.'): """Create a dialog to edit parameters of a given Model.""" from madgui.widget.elementinfo import EllipseWidget from madgui.widget.dialog import Dialog widget = TabParamTables([ ('Twiss', ParamTable(model.fetch_twiss, model.update_twiss_args, data_key='twiss')), ('Beam', ParamTable(model.fetch_beam, model.update_beam, data_key='beam')), ('Globals', GlobalsEdit(model, data_key='globals')), ('Ellipse', EllipseWidget(model)), ]) widget.update() # NOTE: Ideally, we'd like to update after changing initial conditions # (rather than after twiss), but changing initial conditions usually # implies also updating twiss, so this is a good enough approximation # for now: model.updated.connect(widget.update) dialog = Dialog(parent) dialog.setSimpleExportWidget(widget, folder) dialog.setWindowTitle("Initial conditions") return dialog
def _show_sync_dialog(self, widget, apply): from madgui.online.dialogs import SyncParamItem from madgui.widget.dialog import Dialog model, live = self.model(), self.backend widget.data = [ SyncParamItem(info, live.read_param(name), model.read_param(name)) for name, info in self.get_knobs().items() ] widget.data_key = 'acs_parameters' dialog = Dialog(self.session.window()) dialog.setExportWidget(widget, self.session.folder) dialog.serious.addCustomButton('Sync Model', self.on_sync_model(self, dialog)) dialog.serious.updateButtons() dialog.accepted.connect(apply) dialog.show() return dialog
def from_session(cls, session, name): model = session.model() config = session.config # NOTE: using the plot_windows list as a stack with its top at 0: settings = (config.plot_windows and config.plot_windows.pop(0) or {}) # indicators require retrieving data for all elements which can be too # time consuming for large lattices: show_indicators = len(model.elements) < 500 parent = session.window() widget = cls( session, model, name=name, show_indicators=show_indicators, settings=settings) dialog = Dialog(parent, widget) dialog.layout().setMenuBar(QMenuBar()) widget.create_menu(dialog.layout().menuBar()) size = settings.get('size') pos = settings.get('pos') if not size: size = (parent.size().width(), dialog.sizeHint().height()) dialog.resize(*size) if pos: dialog.move(*pos) dialog.show() widget.update_window_title() session.model.changed_singleshot(dialog.close) return widget
def from_session(cls, session, name): model = session.model() config = session.config # NOTE: using the plot_windows list as a stack with its top at 0: settings = (config.plot_windows and config.plot_windows.pop(0) or {}) # indicators require retrieving data for all elements which can be too # time consuming for large lattices: show_indicators = len(model.elements) < 500 parent = session.window() widget = cls(session, model, name=name, show_indicators=show_indicators, settings=settings) dialog = Dialog(parent, widget) dialog.layout().setMenuBar(QMenuBar()) widget.create_menu(dialog.layout().menuBar()) size = settings.get('size') pos = settings.get('pos') if not size: size = (parent.size().width(), dialog.sizeHint().height()) dialog.resize(*size) if pos: dialog.move(*pos) dialog.show() widget.update_window_title() session.model.changed_singleshot(dialog.close) return widget
def _curveManager(self): from madgui.widget.curvemanager import CurveManager return Dialog(self.plot.window(), CurveManager(self))
def on_correct_measured_response_method(self): from madgui.widget.correct.mor_dialog import CorrectorWidget from madgui.widget.dialog import Dialog self.read_all() widget = CorrectorWidget(self.session) return Dialog(self.session.window(), widget)
def on_correct_optic_variation_method(self): from madgui.widget.correct.optic_variation import CorrectorWidget from madgui.widget.dialog import Dialog self.read_all() widget = CorrectorWidget(self.session) return Dialog(self.session.window(), widget)
def on_correct_multi_grid_method(self): from madgui.widget.correct.multi_grid import CorrectorWidget from madgui.widget.dialog import Dialog self.read_all() widget = CorrectorWidget(self.session) return Dialog(self.session.window(), widget)
def orm_measure_widget(self): """Measure ORM for later analysis.""" from madgui.widget.dialog import Dialog from madgui.online.orm_measure import MeasureWidget widget = MeasureWidget(self.session) return Dialog(self.session.window(), widget)
def measure_orm(self): from .orm_measure import MeasureWidget widget = MeasureWidget(self.corrector) dialog = Dialog(widget=widget, parent=self.window()) if dialog.exec_(): self.saved_orms.push(widget.final_orm)