MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / OnUpdateShowGroupData

Method OnUpdateShowGroupData

lib/mdflib/mdfviewer/src/mdfdocument.cpp:328–381  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

326}
327
328void MdfDocument::OnUpdateShowGroupData(wxUpdateUIEvent &event) {
329 event.Enable(false);
330 if (!reader_) {
331 return;
332 }
333
334 const auto selected_id = GetSelectedBlockId();
335 const auto selected_block = GetBlock(selected_id);
336 if (selected_block == nullptr) {
337 return;
338 }
339
340 if (selected_block->BlockType() == "DG") {
341 const auto* dg = dynamic_cast<const IDataGroup*>(selected_block);
342 if (dg == nullptr) {
343 return;
344 }
345 auto cg_list = dg->ChannelGroups();
346 bool enable = cg_list.size() == 1;
347 event.Enable(cg_list.size() == 1);
348 } else if (selected_block->BlockType() == "CG") {
349 const auto* cg_block = dynamic_cast<const IChannelGroup*>(selected_block);
350 if (cg_block == nullptr) {
351 return;
352 }
353 bool enable = !cg_block->Channels().empty(); // No channels == VLSD CG block
354 const auto channel_list = cg_block->Channels();
355 for (const auto* channel : channel_list) {
356 const auto* cn4 = dynamic_cast<const detail::Cn4Block*>(channel);
357 if (cn4 == nullptr || cn4->DataLink() == 0) {
358 continue;
359 }
360 const auto* block = GetBlock(cn4->DataLink());
361 if ( const auto* data_block_list = dynamic_cast<const detail::DataListBlock*>(block);
362 data_block_list != nullptr && data_block_list->DataSize() > 100'000'000) {
363 enable = false;
364 break;
365 }
366 if (const auto* data_block = dynamic_cast<const detail::DataBlock*>(block);
367 data_block != nullptr && data_block->DataSize() > 100'000'000) {
368 enable = false;
369 break;
370 }
371 if (const auto* vlsd_block = dynamic_cast<const detail::Cg4Block*>(block);
372 vlsd_block != nullptr && vlsd_block->NofDataBytes() > 100'000'000) {
373 enable = false;
374 break;
375 }
376 }
377
378 event.Enable(enable);
379 }
380
381}
382
383void MdfDocument::OnShowChannelData(wxCommandEvent &) {
384 if (!reader_) {

Callers

nothing calls this directly

Calls 8

emptyMethod · 0.80
DataLinkMethod · 0.80
NofDataBytesMethod · 0.80
BlockTypeMethod · 0.45
ChannelGroupsMethod · 0.45
sizeMethod · 0.45
ChannelsMethod · 0.45
DataSizeMethod · 0.45

Tested by

no test coverage detected