4 * Created on: 27 févr. 2009
11 #include <wx/notebook.h>
15 #include "common__tools.h"
16 #include "common__modalsFrames.h"
17 #include "common__prListBox.h"
18 #include "common__ob_controls.h"
19 #include "common__object_stage.h"
20 #include "common__wxFrameImage.h"
22 //-----------------------------------------------------------------
23 class Panel_StageView
;
25 //-----------------------------------------------------------------
27 bool FileLevels_Reload( wxWindow
* _parent
);
28 //-----------------------------------------------------------------
32 LF_SETTINGS_TAGS
= 0x0001,
35 //-----------------------------------------------------------------
36 //-----------------------------------------------------------------
37 class LevelEditorFrame
: public wxFrame
40 LevelEditorFrame(wxWindow
*_parent
, const wxString
& title
);
43 void OnAbout(wxCommandEvent
& event
);
45 void Evt_Quit( wxCommandEvent
& evt
);
46 void EvtResize( wxSizeEvent
& event
);
47 void EvtClose( wxCloseEvent
& event
);
48 void EvtActivate( wxActivateEvent
& );
49 void EvtMenu(wxCommandEvent
& event
);
50 void EvtCharPress(wxKeyEvent
& event
);
52 void Evt_STAGE__Reload( wxCommandEvent
& evt_menu
);
53 void Evt_STAGE__Save( wxCommandEvent
& evt_menu
);
54 void Evt_SAVE_LevelsTxt( wxCommandEvent
& evt_menu
);
55 void Evt_ReloadAll( wxCommandEvent
& evt
);
56 void Evt_SaveAll( wxCommandEvent
& evt
);
58 void Evt_SET__Select( wxCommandEvent
& evt_menu
);
59 void Evt_SET__Edit_Settings( wxCommandEvent
& evt_menu
);
60 void Evt_SET__Edit_ExtendedSettings( wxCommandEvent
& evt_menu
);
62 void Evt_STAGE__Edit_Declare_Settings( wxCommandEvent
& evt_menu
);
63 void Evt_STAGE__Edit_Settings( wxCommandEvent
& evt_menu
);
64 void Evt_STAGE__Edit_ExtendedSettings( wxCommandEvent
& evt_menu
);
65 void Evt_STAGE__Select( wxCommandEvent
& evt_menu
);
67 void Evt_SET__New( wxCommandEvent
& evt_menu
);
68 void Evt_STAGE__New( wxCommandEvent
& evt_menu
);
70 void Evt_LoadedEntities( wxCommandEvent
& evt_menu
);
71 void Evt_OpenLevelsInEditor( wxCommandEvent
& evt_menu
);
72 void Evt_OpenStageInEditor( wxCommandEvent
& evt_menu
);
74 void Evt_BACKGROUND_Click(wxCommandEvent
& evt_menu
);
75 void Evt_BGLayer_Add( wxCommandEvent
& evt_menu
);
76 void Evt_BGLayer_Click( wxCommandEvent
& evt_menu
);
77 void Evt_BGLayer_Order( wxCommandEvent
& evt_menu
);
78 void Evt_BGTest( wxCommandEvent
& evt_menu
);
80 void Evt_Panel_Add( wxCommandEvent
& evt_menu
);
81 void Evt_Panel_Order( wxCommandEvent
& evt_menu
);
82 void Evt_Panel_Click( wxCommandEvent
& evt_menu
);
84 void Evt_FrontPanels_Edit( wxCommandEvent
& evt_menu
);
85 void Evt_FrontPanel_Click( wxCommandEvent
& evt_menu
);
87 void Evt_OBJECT__Edit_Settings( wxCommandEvent
& evt_menu
);
88 void Evt_OBJECT__Edit_ExtendedSettings( wxCommandEvent
& evt_menu
);
90 void Evt_EntitiesListTypeChg( wxCommandEvent
& evt_menu
);
91 void Evt_EntitiesListTxtChg( wxKeyEvent
& evt
);
92 void Evt_EntitySelChg( wxCommandEvent
& evt
);
93 void Evt_EntitiesListRightClik( wxMouseEvent
& evt
);
94 void Evt_EntitiesAddOne(wxCommandEvent
& evt
);
96 void Evt_SuperType_Selection_Change( wxCommandEvent
& evt_menu
);
97 void Evt_SuperType_DblClick( wxMouseEvent
& evt
);
98 void Evt_Type_Selection_Change( wxCommandEvent
& evt_menu
);
99 void Evt_Type_DblClick( wxMouseEvent
& evt
);
100 void Evt_TYPEListRightClik( wxMouseEvent
& evt
);
101 void Evt_TYPEListAddOne( wxCommandEvent
& evt_menu
);
102 void Evt_ObjectList_Selection_Change( wxCommandEvent
& evt_menu
);
104 void Evt_ObjectDuplicate(wxCommandEvent
& evt
);
105 void Evt_ObjectDelete(wxCommandEvent
& evt
);
106 void Evt_ObjectProps(wxCommandEvent
& evt
);
107 void Evt_Object_SortAT(wxCommandEvent
& evt
);
109 void EvtRedo(wxCommandEvent
&);
110 void EvtUndo(wxCommandEvent
&);
112 void Evt_Help(wxCommandEvent
& evt_menu
);
117 obFileEntity
* Entity__Get( const wxString
& item_name
);
119 // Disable Elts : Menu, etc...
120 void Disable( const wxString
& what_to_disable
);
122 wxString
GetModifsDone();
124 void ReloadAll( bool b_quiet
, bool b_save_states
= true );
127 bool SET__Select( const wxString
& _name
, bool b_no_choose_stage
= false );
129 void SET__Edit_ExtendedSettings();
130 void SET__Edit_Settings();
131 void SET__Save_LastSession( const wxString
& _name
);
132 void SET__Select_LastSession();
133 void SET__ClearMenu_List();
134 void SET__Load_List( bool b_quiet
= false);
136 bool STAGE__Save( obFileStage
* _fStage
);
137 bool STAGE__Reload( bool b_quiet
= false );
138 bool STAGE__Select( const wxString
& _name
, bool b_no_saves
= false );
140 void STAGE__Edit_Declare_Settings();
141 void STAGE__Edit_Settings();
142 void STAGE__Edit_ExtendedSettings();
143 void STAGE__Save_LastSession( const wxString
& _name
);
144 void STAGE__Select_LastSession();
145 void STAGE__Clear_List();
146 void STAGE__Load_List( bool b_quiet
= false );
148 void BG_ResetMenuList();
149 void BG_AddToMenu( const wxString
& _name
, int ind
= -1, bool b_quiet
= false);
153 bool BG_Configure( ob_BG_Layer
* _obj
, bool b_background
= false );
156 void Panel_ResetMenuList();
157 void Panel_AddToMenu( const wxString
& _name
, int ind
= -1, bool b_quiet
= false);
161 void Panel_Edit( int ind_panel
, bool b_quiet
= false);
163 void FrontPanel_ResetMenuList();
164 void FrontPanel_AddToMenu( const wxString
& _name
,int ind
= -1, bool b_quiet
= false );
165 void FrontPanel_Reload();
166 void FrontPanel_Edit_a_panel( int ind_panel
, bool b_quiet
= false);
167 void FrontPanel_Edit_All();
169 ///////////////////////////////////////////////////////////////////////
170 void ENTITIES__Load();
171 void ENTITIES__UnLoad();
172 void ENTITIES__FILTER__Apply();
174 ///////////////////////////////////////////////////////////////////////
175 void NOTEBOOK__Init();
176 void NOTEBOOK__UnInit();
177 void NOTEBOOK__ClearPages();
178 void NOTEBOOK__Save_Current_TypePage();
180 void NOTEBOOK__SetPage_StaticVal( const wxString
& wxW_name
, const wxString
& val
);
181 void NOTEBOOK__Evt_pspawn( wxCommandEvent
& evt
);
182 void NOTEBOOK__Evt_Item_pitem( wxCommandEvent
& evt
);
183 void NOTEBOOK__Evt_ItemName_Change( wxCommandEvent
& evt
);
184 void NOTEBOOK__Evt_ItemName_Valid( wxCommandEvent
& evt
);
185 void NOTEBOOK__Evt_ObjVisualChange(wxCommandEvent
& evt
);
186 void NOTEBOOK__Evt_AT_Change(wxCommandEvent
& evt
);
188 void NOTEBOOK__Set_MultiSelection();
189 void NOTEBOOK__Set_NoSelection(bool b_init
= false);
190 void NOTEBOOK__Set_With( ob_stage_object
* obj
);
191 void NOTEBOOK__Update_Vals();
193 ///////////////////////////////////////////////////////////////////////
194 void OBJECT__Edit_ExtendedSettings();
195 void OBJECT__Edit_Settings();
197 ///////////////////////////////////////////////////////////////////////
198 // Objects Selections bidules
199 ///////////////////////////////////////////////////////////////////////
200 int OBJECT__Get_SelectionState( ob_stage_object
* obj
);
202 // Objects Selected machins
203 void OBJECT__ListSelected__Set( ob_stage_object
* obj
);
204 void OBJECT__ListSelected__Add( ob_stage_object
* obj
);
205 void OBJECT__ListSelected__Rm( ob_stage_object
* obj
);
206 void OBJECT__ListSelected__UpdateNoteBook();
207 void OBJECT__ListSelected__Clear();
208 bool OBJECT__ListSelected__IsIn( ob_stage_object
* obj
);
209 void OBJECT__ListSelected__Delete();
210 void OBJECT__ListSelected__Duplicate();
211 void OBJECT__ListSelected__Props(Ob_GAtom
* obAtom
= NULL
);
213 // Objects Show States things
214 void OBJECT__ShowStates__Clear();
215 void OBJECT__ShowStates__Toggle_SuperType( int _st
);
216 void OBJECT__ShowStates__Add_SuperType(int _st
);
217 void OBJECT__ShowStates__Remove_SuperType( int _st
);
218 void OBJECT__ShowStates__Toggle_TYPE( int _t
);
219 void OBJECT__ShowStates__Add_TYPE(int _t
);
220 void OBJECT__ShowStates__Remove_TYPE( int _t
);
222 // Objects Highlighted Stuffs
223 void OBJECT__Visibilities_Update();
224 void OBJECT__Visibilities_Clear();
225 void OBJECT__Visibilities_SaveState();
226 void OBJECT__Visibilities_LoadState();
228 void SuperType__Select( int _sst
);
229 void TYPE__Select( int _type
, bool b_force
= false );
230 void TYPE__Reselect();
231 int TYPE__Get_Current_Selected();
232 void OBJECT__CtrlList_Selection_Change();
233 void OBJECT__CtrlList_Clear();
235 // Objects Adding Stuffs
236 void OBJECT__Add_Entity( obFileEntity
* ent
);
237 void OBJECT__Add_Default_of_Type( int _TYPE
);
239 ///////////////////////////////////////////////////////////////////////
240 void Menu_DoRedos__Update_Labels(std::_List_iterator
<History_Group
*>);
241 void Register_ControlsState_inHistory();
242 void Set_ControlsState_In(void*);
243 void Restore_ControlsState(void*);
245 ///////////////////////////////////////////////////////////////////////
246 void VIEW__Update( bool b_quiet
= false );
251 void Disable_MenuItems( const wxString
& what_to_disable
);
252 void Menu_ResetListItem( int id_submenMenu_ResetListItemu
, int id_startlist
);
253 bool Menu_AddListItem( int id_submenu
, int id_startlist
254 , const wxString
& name
, bool b_unique
= false
255 , int ind_insert
=-1 );
259 // GENERAL PURPOSE FLAG
262 Panel_StageView
* stageView
;
263 wxArrayString modificationList
;
266 wxBoxSizer
*sizer_bottom
;
267 WndFromText
* helpWin
;
269 // Entities View and filters
270 wxTextCtrl
*entities_filter
;
271 wxComboBox
*cbbox_entities_type
;
272 prListBox
*entities_list
;
273 MyImageCtrl
* entity_img
;
275 // NoteBook related stuffs
277 GridOb_ObjectProperties
* more_props
;
278 std::map
<int,wxWindow
*> map_pages
;
279 std::map
<int,wxString
*> map_pages_names
;
280 std::map
<wxString
,wxWindow
*> map_idPg_page
;
281 std::map
<int,std::list
<wxString
> > map_pages_elts
;
282 std::map
<int,int> map_type_last_active_pg
;
284 ob_stage_object
* curr_associated_obj
;
286 std::map
<int,std::list
<int> > map_type_l_pgs
;
287 std::map
<int,std::list
<wxString
> > map_type_l_disable
;
288 std::map
<int,std::list
<wxString
> > map_type_l_enable
;
300 wxMenu
*menuAdd
; // Just add item
302 // Tree like List of Type Super Type and atoms
303 prListBox
*object_SuperType_list
;
304 prListBox
*object_Type_list
;
305 prListBox
*objects_List
;
311 wxString last_txt_filter
;
315 // For highlighted objects
316 int TYPE__curr_selected
;
317 std::set
<ob_stage_object
*> aSet_Highlighted
;
318 std::set
<ob_stage_object
*> aSet_Selected
;
320 // For Show/Hide states
321 std::set
<int> aSet_Hide_SuperType
;
322 std::set
<int> aSet_Hide_TYPE
;
324 // Entities of the mod
325 size_t arr_entities__size
;
326 obFileEntity
** arr_entities
;
328 DECLARE_EVENT_TABLE()
331 //****************************************************************
332 //****************************************************************
335 std::set
<ob_stage_object
*> selected
;
336 }editor_level_states
;
339 std::list
<History_Group
*>::iterator it_group
343 std::list
<History_Group
*>::iterator it_group
346 void level__onNoMoreUndo(bool b_state
);
347 void level__onNoMoreDo(bool b_state
);
349 std::list
<History_Group
*>::iterator it_group
352 void level__onDeleteHistory_data(void*& _elt_datas
);
353 void level__onAfterEltAdded();
356 #endif /* LE_CLASSES_H_ */