diff options
Diffstat (limited to 'utils/regtools/qeditor/regtab.cpp')
-rw-r--r-- | utils/regtools/qeditor/regtab.cpp | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/utils/regtools/qeditor/regtab.cpp b/utils/regtools/qeditor/regtab.cpp index a335475e48..9fba9e9cb9 100644 --- a/utils/regtools/qeditor/regtab.cpp +++ b/utils/regtools/qeditor/regtab.cpp | |||
@@ -16,7 +16,19 @@ namespace | |||
16 | enum | 16 | enum |
17 | { | 17 | { |
18 | RegTreeDevType = QTreeWidgetItem::UserType, | 18 | RegTreeDevType = QTreeWidgetItem::UserType, |
19 | RegTreeRegType | 19 | RegTreeRegType, |
20 | RegTreeSocType | ||
21 | }; | ||
22 | |||
23 | class SocTreeItem : public QTreeWidgetItem | ||
24 | { | ||
25 | public: | ||
26 | SocTreeItem(const QString& string, const SocRef& ref) | ||
27 | :QTreeWidgetItem(QStringList(string), RegTreeSocType), m_ref(ref) {} | ||
28 | |||
29 | const SocRef& GetRef() { return m_ref; } | ||
30 | private: | ||
31 | SocRef m_ref; | ||
20 | }; | 32 | }; |
21 | 33 | ||
22 | class DevTreeItem : public QTreeWidgetItem | 34 | class DevTreeItem : public QTreeWidgetItem |
@@ -293,6 +305,11 @@ void RegTab::OnRegItemClicked(QTreeWidgetItem *current, int col) | |||
293 | Q_UNUSED(col); | 305 | Q_UNUSED(col); |
294 | if(current == 0) | 306 | if(current == 0) |
295 | return; | 307 | return; |
308 | if(current->type() == RegTreeSocType) | ||
309 | { | ||
310 | SocTreeItem *item = dynamic_cast< SocTreeItem * >(current); | ||
311 | DisplaySoc(item->GetRef()); | ||
312 | } | ||
296 | if(current->type() == RegTreeRegType) | 313 | if(current->type() == RegTreeRegType) |
297 | { | 314 | { |
298 | RegTreeItem *item = dynamic_cast< RegTreeItem * >(current); | 315 | RegTreeItem *item = dynamic_cast< RegTreeItem * >(current); |
@@ -329,6 +346,11 @@ void RegTab::DisplayDevice(const SocDevRef& ref) | |||
329 | SetPanel(new DevDisplayPanel(this, ref)); | 346 | SetPanel(new DevDisplayPanel(this, ref)); |
330 | } | 347 | } |
331 | 348 | ||
349 | void RegTab::DisplaySoc(const SocRef& ref) | ||
350 | { | ||
351 | SetPanel(new SocDisplayPanel(this, ref)); | ||
352 | } | ||
353 | |||
332 | void RegTab::SetPanel(RegTabPanel *panel) | 354 | void RegTab::SetPanel(RegTabPanel *panel) |
333 | { | 355 | { |
334 | delete m_right_content; | 356 | delete m_right_content; |
@@ -410,21 +432,32 @@ void RegTab::FillDevSubTree(QTreeWidgetItem *_item) | |||
410 | } | 432 | } |
411 | } | 433 | } |
412 | 434 | ||
413 | void RegTab::FillRegTree() | 435 | void RegTab::FillSocSubTree(QTreeWidgetItem *_item) |
414 | { | 436 | { |
415 | for(size_t i = 0; i < m_cur_soc.GetSoc().dev.size(); i++) | 437 | SocTreeItem *item = dynamic_cast< SocTreeItem* >(_item); |
438 | const soc_t& soc = item->GetRef().GetSoc(); | ||
439 | for(size_t i = 0; i < soc.dev.size(); i++) | ||
416 | { | 440 | { |
417 | const soc_dev_t& dev = m_cur_soc.GetSoc().dev[i]; | 441 | const soc_dev_t& dev = soc.dev[i]; |
418 | for(size_t j = 0; j < dev.addr.size(); j++) | 442 | for(size_t j = 0; j < dev.addr.size(); j++) |
419 | { | 443 | { |
420 | DevTreeItem *dev_item = new DevTreeItem(dev.addr[j].name.c_str(), | 444 | DevTreeItem *dev_item = new DevTreeItem(dev.addr[j].name.c_str(), |
421 | SocDevRef(m_cur_soc, i, j)); | 445 | SocDevRef(m_cur_soc, i, j)); |
422 | FillDevSubTree(dev_item); | 446 | FillDevSubTree(dev_item); |
423 | m_reg_tree->addTopLevelItem(dev_item); | 447 | item->addChild(dev_item); |
424 | } | 448 | } |
425 | } | 449 | } |
426 | } | 450 | } |
427 | 451 | ||
452 | void RegTab::FillRegTree() | ||
453 | { | ||
454 | SocTreeItem *soc_item = new SocTreeItem(m_cur_soc.GetSoc().name.c_str(), | ||
455 | m_cur_soc); | ||
456 | FillSocSubTree(soc_item); | ||
457 | m_reg_tree->addTopLevelItem(soc_item); | ||
458 | m_reg_tree->expandItem(soc_item); | ||
459 | } | ||
460 | |||
428 | void RegTab::FillAnalyserList() | 461 | void RegTab::FillAnalyserList() |
429 | { | 462 | { |
430 | m_analysers_list->clear(); | 463 | m_analysers_list->clear(); |