| 66 | } |
| 67 | |
| 68 | void ModuleSaveDataPanel::ReloadSaveData() |
| 69 | { |
| 70 | for (auto iter = mSaveDataControls.begin(); iter != mSaveDataControls.end(); ++iter) |
| 71 | { |
| 72 | RemoveUIControl(*iter); |
| 73 | (*iter)->Delete(); |
| 74 | } |
| 75 | mSaveDataControls.clear(); |
| 76 | mLabels.clear(); |
| 77 | mStringDropdowns.clear(); |
| 78 | |
| 79 | if (mSaveModule == nullptr || mSaveModule->IsSaveable() == false) |
| 80 | return; |
| 81 | |
| 82 | UpdateTarget(mSaveModule); |
| 83 | |
| 84 | int maxWidth = 40; |
| 85 | std::list<ModuleSaveData::SaveVal*> values = mSaveModule->GetSaveData().GetSavedValues(); |
| 86 | for (auto iter = values.begin(); iter != values.end(); ++iter) |
| 87 | mLabels.push_back((*iter)->mProperty); |
| 88 | for (int i = 0; i < mSaveModule->GetChildren().size(); ++i) |
| 89 | { |
| 90 | IDrawableModule* child = mSaveModule->GetChildren()[i]; |
| 91 | std::list<ModuleSaveData::SaveVal*>& childValues = child->GetSaveData().GetSavedValues(); |
| 92 | for (auto iter = childValues.begin(); iter != childValues.end(); ++iter) |
| 93 | { |
| 94 | values.push_back(*iter); |
| 95 | mLabels.push_back(std::string(child->Name()) + "." + (*iter)->mProperty); |
| 96 | } |
| 97 | } |
| 98 | for (auto iter = mLabels.begin(); iter != mLabels.end(); ++iter) |
| 99 | maxWidth = MAX(maxWidth, GetStringWidth(*iter)); |
| 100 | |
| 101 | mAlignmentX = 10 + maxWidth; |
| 102 | float x = mAlignmentX; |
| 103 | float y = 5 + kItemSpacing; |
| 104 | |
| 105 | mNameEntry = new TextEntry(this, "", x, y, 27, mSaveModule->NameMutable()); |
| 106 | mNameEntry->SetNoHover(true); |
| 107 | mSaveDataControls.push_back(mNameEntry); |
| 108 | y += kItemSpacing; |
| 109 | |
| 110 | mPresetFileSelector = new DropdownList(this, "preset", x, y, &mPresetFileIndex, 150); |
| 111 | mPresetFileSelector->SetNoHover(true); |
| 112 | mPresetFileSelector->SetUnknownItemString("[none]"); |
| 113 | mSaveDataControls.push_back(mPresetFileSelector); |
| 114 | mSavePresetAsButton = new ClickButton(this, "save as", mPresetFileSelector, kAnchor_Right); |
| 115 | mSavePresetAsButton->SetNoHover(true); |
| 116 | mSaveDataControls.push_back(mSavePresetAsButton); |
| 117 | y += kItemSpacing; |
| 118 | |
| 119 | TextEntry* prevTextEntry = mNameEntry; |
| 120 | |
| 121 | for (auto iter = values.begin(); iter != values.end(); ++iter) |
| 122 | { |
| 123 | ModuleSaveData::SaveVal* save = *iter; |
| 124 | |
| 125 | IUIControl* control = nullptr; |
nothing calls this directly
no test coverage detected