| 205 | } |
| 206 | |
| 207 | void ChildFrame::RedrawTreeList() { |
| 208 | |
| 209 | left_->DeleteAllItems(); |
| 210 | |
| 211 | auto* doc = wxDynamicCast(GetDocument(), MdfDocument); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast) |
| 212 | if (doc == nullptr) { |
| 213 | return; |
| 214 | } |
| 215 | const auto* reader = doc->GetReader(); |
| 216 | if (reader == nullptr) { |
| 217 | return; |
| 218 | } |
| 219 | |
| 220 | left_->AddRoot(reader->ShortName(), TREE_ROOT, TREE_ROOT); |
| 221 | |
| 222 | const auto* file = doc->GetFile(); |
| 223 | if (file == nullptr) { |
| 224 | return; |
| 225 | } |
| 226 | |
| 227 | const auto* file3 = dynamic_cast<const mdf::detail::Mdf3File*>(file); |
| 228 | const auto* file4 = dynamic_cast<const mdf::detail::Mdf4File*>(file); |
| 229 | |
| 230 | if (file4 != nullptr) { |
| 231 | RedrawMdf4Blocks(file4); |
| 232 | } else if (file3 != nullptr) { |
| 233 | RedrawMdf3Blocks(file3); |
| 234 | } |
| 235 | |
| 236 | auto selected_id = doc->GetSelectedBlockId(); |
| 237 | auto found = FindId(left_, left_->GetRootItem(), selected_id); |
| 238 | if (found.IsOk()) { |
| 239 | left_->SelectItem(found); |
| 240 | left_->EnsureVisible(found); |
| 241 | } |
| 242 | } |
| 243 | |
| 244 | void ChildFrame::RedrawMdf3Blocks(const mdf::detail::Mdf3File *file) { |
| 245 | if (file == nullptr) { |