def __init__(self): super(LevelEditor, self).__init__(gtk.WINDOW_TOPLEVEL) self.zoom_level = 0.5 self.set_title('The Cure - Level Editor') self.set_border_width(0) self.set_resizable(True) self.set_size_request(1024, 768) self.connect('delete_event', gtk.main_quit) self.connect('key-press-event', self._on_key_press) hpaned = gtk.HPaned() hpaned.show() self.add(hpaned) hpaned.set_position(self.get_size_request()[0] - 300) # Sidebar self.sidebar = gtk.VBox(False, 6) self.sidebar.show() self.sidebar.set_border_width(6) hpaned.pack2(self.sidebar) # Level selector hbox = gtk.HBox(False, 6) hbox.show() self.sidebar.pack_start(hbox, False, False, 0) self.level_combo = gtk.combo_box_new_text() self.level_combo.show() hbox.pack_start(self.level_combo, True, True, 0) save_button = gtk.Button("Save") save_button.show() hbox.pack_start(save_button, False, False, 0) save_button.connect('clicked', lambda w: self.save()) for level in get_levels(): self.level_combo.append_text(level.name) self.level_combo.connect('changed', lambda w: self.load_level()) # Level Size hbox = gtk.HBox(False, 6) hbox.show() self.sidebar.pack_start(hbox, False, False, 0) label = gtk.Label("Size:") label.show() hbox.pack_start(label, False, False, 0) self.width_entry = gtk.Entry() self.width_entry.show() hbox.pack_start(self.width_entry, False, False, 0) self.width_entry.set_width_chars(4) self.width_entry.connect('focus-out-event', self._on_width_focus_out) label = gtk.Label("x") label.show() hbox.pack_start(label, False, False, 0) self.height_entry = gtk.Entry() self.height_entry.show() hbox.pack_start(self.height_entry, False, False, 0) self.height_entry.set_width_chars(4) self.height_entry.connect('focus-out-event', self._on_height_focus_out) # Layer selector self.layer_combo = gtk.combo_box_new_text() self.layer_combo.show() self.sidebar.pack_start(self.layer_combo, False, False, 0) for name in LAYER_NAMES: self.layer_combo.append_text(name) self.layer_combo.connect('changed', lambda w: self._on_layer_changed()) self.show_only = gtk.CheckButton('Show only this layer') self.show_only.show() self.sidebar.pack_start(self.show_only, False, False, 0) self.show_only.connect('toggled', self._on_show_active_layer_only_toggled) self.show_all = gtk.CheckButton('Always show all layers') self.show_all.show() self.sidebar.pack_start(self.show_all, False, False, 0) self.show_all.connect('toggled', self._on_show_all_layers_toggled) # Sprite pane self.sprite_pane = SpritePane(self) #self.sprite_pane.show() self.sidebar.pack_start(self.sprite_pane, True, True, 0) # Event box pane self.eventbox_pane = EventBoxPane(self) self.eventbox_pane.show() self.sidebar.pack_start(self.eventbox_pane, True, True, 0) # Coordinates status hbox = gtk.HBox(False, 0) hbox.show() self.sidebar.pack_start(hbox, False, False, 0) label = gtk.Label("Tile: ") label.show() hbox.pack_start(label, False, False, 0) self.tile_coord_label = gtk.Label() self.tile_coord_label.show() hbox.pack_start(self.tile_coord_label, False, False, 0) label = gtk.Label("; Pixels: ") label.show() hbox.pack_start(label, False, False, 0) self.pixels_coord_label = gtk.Label() self.pixels_coord_label.show() hbox.pack_start(self.pixels_coord_label, False, False, 0) # Level grid swin = gtk.ScrolledWindow() swin.show() hpaned.pack1(swin) swin.set_shadow_type(gtk.SHADOW_IN) swin.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS) self.level_grid = LevelGrid(self, self.sprite_pane.tile_list) self.level_grid.show() swin.add(self.level_grid) self.level_combo.set_active(0) self.layer_combo.set_active(DEFAULT_LAYER)