-/* selection modes */
-enum SelectionMode { CURSOR, SQUARE, NONE };
-
-// variables
-/* leveleditor internals */
-string_list_type level_subsets;
-bool le_level_changed; /* if changes, ask for saving, when quiting*/
-bool show_minimap;
-bool show_selections;
-bool le_help_shown;
-int pos_x, pos_y, cursor_x, cursor_y;
-int le_levelnb;
-Level* le_level;
-LevelSubset* le_level_subset;
-int le_show_grid;
-int le_frame;
-Surface* le_selection;
-int done;
-TileOrObject le_current;
-bool le_mouse_pressed[2];
-bool le_mouse_clicked[2];
-Button* le_save_level_bt;
-Button* le_exit_bt;
-Button* le_test_level_bt;
-Button* le_next_level_bt;
-Button* le_previous_level_bt;
-Button* le_move_right_bt;
-Button* le_move_left_bt;
-Button* le_move_up_bt;
-Button* le_move_down_bt;
-Button* le_rubber_bt;
-Button* le_select_mode_one_bt;
-Button* le_select_mode_two_bt;
-Button* le_settings_bt;
-Button* le_tilegroup_bt;
-Button* le_objects_bt;
-Button* le_object_select_bt;
-Button* le_object_properties_bt;
-ButtonPanel* le_tilemap_panel;
-int active_tm;
-Menu* leveleditor_menu;
-Menu* subset_load_menu;
-Menu* subset_new_menu;
-Menu* subset_settings_menu;
-Menu* level_settings_menu;
-Menu* select_tilegroup_menu;
-Menu* select_objects_menu;
-Timer select_tilegroup_menu_effect;
-Timer select_objects_menu_effect;
-Timer display_level_info;
-typedef std::map<std::string, ButtonPanel*> ButtonPanelMap;
-ButtonPanelMap tilegroups_map;
-ButtonPanelMap objects_map;
-std::string cur_tilegroup;
-std::string cur_objects;
-MouseCursor* mouse_select_object;
-MovingObject* selected_game_object;
-
-square selection;
-SelectionMode le_selection_mode;
-SDL_Event event;
+ Menu* main_menu;
+ Menu* subset_menu;
+ Menu* create_subset_menu;
+ Menu* settings_menu;
+
+ bool left_button, middle_button, mouse_moved;
+ int mouse_x, mouse_y;
+ bool done;
+ bool show_grid;
+
+ Vector scroll;
+ float zoom;
+
+ Timer2 level_name_timer;
+
+ Surface *img_background_bt, *img_foreground_bt, *img_interactive_bt;
+ Surface *img_save_level_bt, *img_setup_level_bt, *img_test_level_bt;
+ Surface *img_rubber_bt;
+ Surface *img_previous_level_bt, *img_next_level_bt, *img_previous_sector_bt, *img_next_sector_bt;
+
+ ButtonGroup *tiles_board, *tiles_layer, *level_options;
+ int gameobjs_first_id, cur_layer;
+
+ std::vector <std::vector <int> > selection;
+ Vector selection_ini, selection_end;
+
+ bool level_changed;
+
+private:
+ Sector* create_sector(const std::string& name, size_t width, size_t height);