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)