Changeset 393 for cafu/trunk
- Timestamp:
- 09/23/11 11:24:21 (8 months ago)
- Location:
- cafu/trunk/CaWE/ModelEditor
- Files:
-
- 2 removed
- 4 modified
-
ChildFrame.cpp (modified) (2 diffs)
-
ChildFrame.hpp (modified) (2 diffs)
-
ElementsList.cpp (modified) (14 diffs)
-
ElementsList.hpp (modified) (3 diffs)
-
SkinsList.cpp (deleted)
-
SkinsList.hpp (deleted)
Legend:
- Unmodified
- Added
- Removed
-
cafu/trunk/CaWE/ModelEditor/ChildFrame.cpp
r392 r393 31 31 #include "SceneView3D.hpp" 32 32 #include "ScenePropGrid.hpp" 33 #include "SkinsList.hpp"34 33 #include "SubmodelsList.hpp" 35 34 #include "TransformDialog.hpp" … … 245 244 Right().Position(1)); 246 245 247 m_SkinsList=new SkinsPanelT(this, wxSize(230, 150), SKIN);246 m_SkinsList=new ElementsPanelT(this, wxSize(230, 150), SKIN); 248 247 m_AUIManager.AddPane(m_SkinsList, wxAuiPaneInfo(). 249 248 Name("SkinsList").Caption("Skins List"). -
cafu/trunk/CaWE/ModelEditor/ChildFrame.hpp
r383 r393 44 44 class ScenePropGridT; 45 45 class SceneView3DT; 46 class SkinsPanelT;47 46 class SubmodelsPanelT; 48 47 class TransformDialogT; … … 110 109 ElementsPanelT* m_AnimsList; 111 110 AnimInspectorT* m_AnimInspector; 112 SkinsPanelT*m_SkinsList;111 ElementsPanelT* m_SkinsList; 113 112 ElementsPanelT* m_GuiFixturesList; 114 113 GuiFixInspectorT* m_GuiFixtureInspector; -
cafu/trunk/CaWE/ModelEditor/ElementsList.cpp
r392 r393 50 50 : wxListView(Parent, wxID_ANY, wxDefaultPosition, Size, wxLC_REPORT | wxLC_EDIT_LABELS), 51 51 m_TYPE(Type), 52 m_NUM_DEFAULT_ITEMS(m_TYPE==SKIN ? 1 : 0), 52 53 m_ModelDoc(MainFrame->GetModelDoc()), 53 54 m_MainFrame(MainFrame), 54 55 m_IsRecursiveSelfNotify(false) 55 56 { 56 wxASSERT(m_TYPE== ANIM || m_TYPE==MESH || m_TYPE==GFIX);57 wxASSERT(m_TYPE==MESH || m_TYPE==SKIN || m_TYPE==GFIX || m_TYPE==ANIM); 57 58 58 59 // TODO: Make it up to the caller code to call this? … … 76 77 77 78 79 bool ElementsListT::AreDefaultItemsSelected() const 80 { 81 for (int ItemNr=0; ItemNr<m_NUM_DEFAULT_ITEMS; ItemNr++) 82 if (IsSelected(ItemNr)) 83 return true; 84 85 return false; 86 } 87 88 78 89 void ElementsListT::Notify_SelectionChanged(SubjectT* Subject, ModelElementTypeT Type, const ArrayT<unsigned int>& OldSel, const ArrayT<unsigned int>& NewSel) 79 90 { … … 89 100 90 101 for (unsigned long SelNr=0; SelNr<NewSel.Size(); SelNr++) 91 Select(NewSel[SelNr]); 102 Select(NewSel[SelNr] + m_NUM_DEFAULT_ITEMS); 103 104 if (NewSel.Size()==0 && m_NUM_DEFAULT_ITEMS>0) 105 Select(0); 92 106 93 107 Thaw(); … … 138 152 // Update the list of meshes also when a skin changed, as with each 139 153 // mesh we display the used material in the currently selected skin. 140 if (m_TYPE!= MESH) return;154 if (m_TYPE!=SKIN && m_TYPE!=MESH) return; 141 155 142 156 InitListItems(); … … 208 222 209 223 case SKIN: 210 wxASSERT(false); 224 InsertItem(0, "default"); 225 SetItem(0, 1, "-1"); 226 if (Sel.Size()==0) Select(0); 227 228 for (unsigned long ElemNr=0; ElemNr<m_ModelDoc->GetModel()->GetSkins().Size(); ElemNr++) 229 { 230 InsertItem(ElemNr+1, m_ModelDoc->GetModel()->GetSkins()[ElemNr].Name); 231 SetItem(ElemNr+1, 1, wxString::Format("%lu", ElemNr)); 232 233 if (Sel.Find(ElemNr)!=-1) Select(ElemNr+1); 234 } 211 235 break; 212 236 … … 251 275 wxMenu Menu; 252 276 253 Menu.Append(ID_MENU_INSPECT_EDIT, "Inspect / Edit\tEnter"); 254 Menu.Append(ID_MENU_RENAME, "Rename\tF2"); 255 277 if (m_TYPE!=SKIN) Menu.Append(ID_MENU_INSPECT_EDIT, "Inspect / Edit\tEnter"); 278 Menu.Append(ID_MENU_RENAME, "Rename\tF2"); 256 279 if (m_TYPE==GFIX) Menu.Append(ID_MENU_ADD_NEW, "Add/create new"); 257 280 … … 273 296 const long SelNr=GetFirstSelected(); 274 297 275 if (SelNr!=-1) EditLabel(SelNr); 298 // Only relabel custom elements (not the "default" ones). 299 if (SelNr>=m_NUM_DEFAULT_ITEMS) EditLabel(SelNr); 276 300 break; 277 301 } … … 279 303 case ID_MENU_ADD_NEW: 280 304 { 281 if (m_TYPE==GFIX) 305 if (m_TYPE==SKIN) 306 { 307 CafuModelT::SkinT Skin; 308 309 Skin.Name="New Skin"; 310 while (Skin.Materials.Size() < m_ModelDoc->GetModel()->GetMeshes().Size()) Skin.Materials.PushBack(NULL); 311 while (Skin.RenderMaterials.Size() < m_ModelDoc->GetModel()->GetMeshes().Size()) Skin.RenderMaterials.PushBack(NULL); 312 313 m_MainFrame->SubmitCommand(new CommandAddT(m_ModelDoc, Skin)); 314 } 315 else if (m_TYPE==GFIX) 282 316 { 283 317 ArrayT<CafuModelT::GuiFixtureT> GuiFixtures; … … 302 336 const long SelNr=LE.GetIndex(); 303 337 304 if (SelNr!=-1) EditLabel(SelNr); 338 // Only relabel custom elements (not the "default" ones). 339 if (SelNr>=m_NUM_DEFAULT_ITEMS) EditLabel(SelNr); 305 340 break; 306 341 } … … 334 369 335 370 for (long SelNr=GetFirstSelected(); SelNr!=-1; SelNr=GetNextSelected(SelNr)) 336 NewSel.PushBack(SelNr); 371 if (SelNr>=m_NUM_DEFAULT_ITEMS) // Skip the "default" elements. 372 NewSel.PushBack(SelNr - m_NUM_DEFAULT_ITEMS); 337 373 338 374 m_MainFrame->SubmitCommand(CommandSelectT::Set(m_ModelDoc, m_TYPE, NewSel)); … … 344 380 void ElementsListT::OnEndLabelEdit(wxListEvent& LE) 345 381 { 346 const unsigned intIndex=LE.GetIndex();382 const long Index=LE.GetIndex(); 347 383 348 384 if (LE.IsEditCancelled()) return; 385 if (Index < m_NUM_DEFAULT_ITEMS) { LE.Veto(); return; } // Cannot relabel the "default" elements. 349 386 350 387 m_IsRecursiveSelfNotify=true; 351 m_MainFrame->SubmitCommand(new CommandRenameT(m_ModelDoc, m_TYPE, Index , LE.GetLabel()));388 m_MainFrame->SubmitCommand(new CommandRenameT(m_ModelDoc, m_TYPE, Index - m_NUM_DEFAULT_ITEMS, LE.GetLabel())); 352 389 m_IsRecursiveSelfNotify=false; 353 390 } … … 409 446 case ID_BUTTON_ADD: 410 447 { 411 if (m_TYPE==GFIX) 448 if (m_TYPE==SKIN) 449 { 450 CafuModelT::SkinT Skin; 451 452 Skin.Name="New Skin"; 453 while (Skin.Materials.Size() < m_ModelDoc->GetModel()->GetMeshes().Size()) Skin.Materials.PushBack(NULL); 454 while (Skin.RenderMaterials.Size() < m_ModelDoc->GetModel()->GetMeshes().Size()) Skin.RenderMaterials.PushBack(NULL); 455 456 m_MainFrame->SubmitCommand(new CommandAddT(m_ModelDoc, Skin)); 457 } 458 else if (m_TYPE==GFIX) 412 459 { 413 460 ArrayT<CafuModelT::GuiFixtureT> GuiFixtures; … … 440 487 case ID_BUTTON_ADD: 441 488 { 442 UE.Enable(m_TYPE== GFIX);489 UE.Enable(m_TYPE==SKIN || m_TYPE==GFIX); 443 490 break; 444 491 } … … 458 505 case ID_BUTTON_DELETE: 459 506 { 460 UE.Enable(m_ModelDoc->GetSelection(m_TYPE).Size()>0); 507 // Are some elements but not the "default" elements selected? 508 UE.Enable(m_ModelDoc->GetSelection(m_TYPE).Size()>0 && !m_List->AreDefaultItemsSelected()); 461 509 break; 462 510 } -
cafu/trunk/CaWE/ModelEditor/ElementsList.hpp
r383 r393 34 34 35 35 36 /// A control for displaying a list of the elements (meshes or animations)of the model.36 /// A control for displaying a list of the elements of the model. 37 37 class ElementsListT : public wxListView, public ObserverT 38 38 { … … 44 44 /// The destructor. 45 45 ~ElementsListT(); 46 47 /// Returns whether one or more "default" elements are selected in the list. 48 bool AreDefaultItemsSelected() const; 46 49 47 50 // ObserverT implementation. … … 70 73 71 74 const ModelElementTypeT m_TYPE; 75 const int m_NUM_DEFAULT_ITEMS; 72 76 ModelDocumentT* m_ModelDoc; 73 77 ChildFrameT* m_MainFrame;
