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()
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