Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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)]))
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
 def _curveManager(self):
     from madgui.widget.curvemanager import CurveManager
     return Dialog(self.plot.window(), CurveManager(self))
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
 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)