Example #1
0
    def __init__(self, sim_manager, controller):
        """ Sets up frame. Creates controller panel, GTK window,
        layout canvas, GTK timer and event boxes.
        """
        self.sim_manager = sim_manager
        self.controller = controller

        self.vbox = gtk.VBox(False, 0)
        self.playing = False
        self.press = None
        self.resize = False
        self.resize_info = None

        self.resize_boxes = {}

        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_default_size(settings.VISUALIZER_WIDTH,
                                     settings.VISUALIZER_HEIGHT)
        self.window.set_title(settings.MAIN_FRAME_TITLE)
        self.window.connect("delete_event", self.on_quit)

        self.input_panel = Input_Panel(self)
        self.controller_panel = Controller_Panel(self)
        self.menu_bar = Menu_Bar(self, controller)

        self.layout_event_box = gtk.EventBox()
        self.canvas_layout = gtk.Layout()
        self.layout_event_box.modify_bg(gtk.STATE_NORMAL,
                                        gtk.gdk.color_parse("#ffffff"))
        self.layout_event_box.connect("button_release_event",
                                      controller.on_layout_button_release)

        # Used to control frame rate for redrawing graph components
        # rate at which we call sim.step()
        self.sim_rate = settings.SIMULATOR_DEFAULT_SIM_RATE
        self.framerate = settings.SIMULATOR_FRAME_RATE
        self.next_gcomponent_redraw = 0

        # set up timer
        self.timer = TimerGTK3(interval=settings.VISUALIZER_TIMER_INTERVAL)
        self.timer.add_callback(self.step)
        self.timer.single_shot = True

        self.vbox.pack_start(self.menu_bar, False, False, 0)
        self.vbox.pack_start(self.controller_panel, False, False, 0)

        self.layout_event_box.add(self.canvas_layout)

        self.vbox.pack_start(self.layout_event_box, True, True, 0)

        self.window.add(self.vbox)

        self.window.show_all()

        self.controller_panel.toggle_play(False)