Exemplo n.º 1
0
    def __init__(self, app, simulation):
        gtk.VBox.__init__(self)
        self.app = app
        self.simulation = simulation

        self.pack_start(self._toolbar(), False, False)
        self.netview = NetView(app, None, other_tabs=(("History", self._history()),))
        self.config = SimCanvasConfig(self.netview)
        self.config.simulation = simulation
        self.config.simview = self
        self.netview.set_config(self.config)
        self.pack_start(self.netview, True, True)

        self.netview.set_runinstance(self.simulation.runinstance)
        simulation.set_callback("changed", self._simulation_changed)

        self.button_run_phase12.set_active(True)
        self.button_auto_receive.set_active(True)
        self.show_all()
Exemplo n.º 2
0
class SimView(gtk.VBox):

    def __init__(self, app, simulation):
        gtk.VBox.__init__(self)
        self.app = app
        self.simulation = simulation

        self.pack_start(self._toolbar(), False, False)
        self.netview = NetView(app, None, other_tabs=(("History", self._history()),))
        self.config = SimCanvasConfig(self.netview)
        self.config.simulation = simulation
        self.config.simview = self
        self.netview.set_config(self.config)
        self.pack_start(self.netview, True, True)

        self.netview.set_runinstance(self.simulation.runinstance)
        simulation.set_callback("changed", self._simulation_changed)

        self.button_run_phase12.set_active(True)
        self.button_auto_receive.set_active(True)
        self.show_all()

    def get_fire_phases(self):
        if self.button_run_phase1.get_active():
            return 1
        else:
            return 2

    def save_as_svg(self, filename):
        self.netview.save_as_svg(filename)

    def on_cursor_changed(self):
        path = self.sequence_view.get_selection_path()
        if path is None:
            return
        self.simulation.set_runinstance_from_history(path[0])

    def _history(self):
        box = gtk.VBox()

        self.sequence_view = controlseq.SequenceView()
        self.sequence_view.set_size_request(130, 100)
        self.simulation.sequence.view = self.sequence_view
        self.sequence_view.connect_view("cursor-changed",
                                        lambda w: self.on_cursor_changed())
        box.pack_start(self.sequence_view, True, True)

        button = gtk.Button("Show current")
        button.connect("clicked",
                       lambda w: self.simulation.set_runinstance_from_history(-1))
        self.show_current_button = button

        box.pack_start(button, False, False)
        button = gtk.Button("Save sequence")
        button.connect("clicked",
                       lambda w: self.app.save_sequence_into_project(
                            self.simulation.sequence.copy()))
        box.pack_start(button, False, False)
        return box

    def _simulation_changed(self, new_state):
        self.show_current_button.set_sensitive(not self.simulation.is_last_instance_active())
        if new_state:
            self.sequence_view.unselect_all()
        self.netview.set_runinstance(self.simulation.runinstance)

    def _toolbar(self):
        toolbar = gtk.Toolbar()

        button = gtk.RadioToolButton(None)
        button.set_tooltip_text("Start transition")
        button.set_stock_id(gtk.STOCK_GO_FORWARD)
        toolbar.add(button)
        self.button_run_phase1 = button

        button = gtk.RadioToolButton(self.button_run_phase1, None)
        button.set_tooltip_text("Start & finish transition")
        button.set_stock_id(gtk.STOCK_GOTO_LAST)
        toolbar.add(button)
        self.button_run_phase12 = button

        toolbar.add(gtk.SeparatorToolItem())

        button = gtk.ToolButton(None)
        button.set_tooltip_text("Receive all packets")
        button.set_stock_id(gtk.STOCK_GOTO_BOTTOM)
        button.connect("clicked",
                        lambda w: self.simulation.receive_all(
                            self.netview.get_perspective().get_process_ids()))
        toolbar.add(button)

        button = gtk.ToggleToolButton(None)
        button.set_tooltip_text(
            "Automatically call 'Receive all packets' after any transition action")
        button.set_stock_id(gtk.STOCK_EXECUTE)
        toolbar.add(button)
        self.button_auto_receive = button
        return toolbar