diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2014-09-18 21:36:17 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2014-09-19 10:58:33 +0200 |
commit | 970c2482dd22a84a5973b73621d0dd06e6f45a25 (patch) | |
tree | 3131c033b3f3e385eceed7beb16e8b143ff0caf1 | |
parent | dbb59291e745c7cc640a35fc40faa083648793bf (diff) | |
download | rockbox-970c2482dd22a84a5973b73621d0dd06e6f45a25.tar.gz rockbox-970c2482dd22a84a5973b73621d0dd06e6f45a25.zip |
qeditor: rework modified indicator, register tab names depend on content
Because Qt doesn't support QObject multiple inherance, it is a bit tricky
to have a base class which interact with the UI. The register tab name
now display:
- file dump name (for dumps)
- hwstub device path (for hwstub)
And the register editor display the filename
Change-Id: If2579992098c02627c67d560c824f1668e73bc45
Reviewed-on: http://gerrit.rockbox.org/979
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
-rw-r--r-- | utils/regtools/qeditor/backend.h | 2 | ||||
-rw-r--r-- | utils/regtools/qeditor/mainwindow.cpp | 53 | ||||
-rw-r--r-- | utils/regtools/qeditor/mainwindow.h | 16 | ||||
-rw-r--r-- | utils/regtools/qeditor/regedit.cpp | 64 | ||||
-rw-r--r-- | utils/regtools/qeditor/regedit.h | 5 | ||||
-rw-r--r-- | utils/regtools/qeditor/regtab.cpp | 32 | ||||
-rw-r--r-- | utils/regtools/qeditor/regtab.h | 5 |
7 files changed, 129 insertions, 48 deletions
diff --git a/utils/regtools/qeditor/backend.h b/utils/regtools/qeditor/backend.h index e876e9d286..de450143f1 100644 --- a/utils/regtools/qeditor/backend.h +++ b/utils/regtools/qeditor/backend.h | |||
@@ -99,6 +99,7 @@ public: | |||
99 | { Q_UNUSED(addr); Q_UNUSED(value); Q_UNUSED(mode); return false; } | 99 | { Q_UNUSED(addr); Q_UNUSED(value); Q_UNUSED(mode); return false; } |
100 | virtual bool IsDirty() { return m_dirty; } | 100 | virtual bool IsDirty() { return m_dirty; } |
101 | virtual bool Commit(); | 101 | virtual bool Commit(); |
102 | QString GetFileName() { return m_filename; } | ||
102 | 103 | ||
103 | protected: | 104 | protected: |
104 | QString m_filename; | 105 | QString m_filename; |
@@ -164,6 +165,7 @@ public: | |||
164 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode); | 165 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode); |
165 | virtual bool IsDirty() { return false; } | 166 | virtual bool IsDirty() { return false; } |
166 | virtual bool Commit() { return true; } | 167 | virtual bool Commit() { return true; } |
168 | HWStubDevice *GetDevice() { return m_dev; } | ||
167 | 169 | ||
168 | protected: | 170 | protected: |
169 | QString m_soc; | 171 | QString m_soc; |
diff --git a/utils/regtools/qeditor/mainwindow.cpp b/utils/regtools/qeditor/mainwindow.cpp index 1a88ebb47e..58f9766761 100644 --- a/utils/regtools/qeditor/mainwindow.cpp +++ b/utils/regtools/qeditor/mainwindow.cpp | |||
@@ -14,6 +14,25 @@ | |||
14 | #include "regtab.h" | 14 | #include "regtab.h" |
15 | #include "regedit.h" | 15 | #include "regedit.h" |
16 | 16 | ||
17 | /** | ||
18 | * DocumentTab | ||
19 | */ | ||
20 | void DocumentTab::OnModified(bool modified) | ||
21 | { | ||
22 | if(m_tab) | ||
23 | m_tab->SetTabModified(this, modified); | ||
24 | } | ||
25 | |||
26 | void DocumentTab::SetTabName(const QString& name) | ||
27 | { | ||
28 | if(m_tab) | ||
29 | m_tab->SetTabName(this, name); | ||
30 | } | ||
31 | |||
32 | /** | ||
33 | * MyTabWidget | ||
34 | */ | ||
35 | |||
17 | MyTabWidget::MyTabWidget() | 36 | MyTabWidget::MyTabWidget() |
18 | { | 37 | { |
19 | setMovable(true); | 38 | setMovable(true); |
@@ -21,6 +40,20 @@ MyTabWidget::MyTabWidget() | |||
21 | connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(OnCloseTab(int))); | 40 | connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(OnCloseTab(int))); |
22 | } | 41 | } |
23 | 42 | ||
43 | void MyTabWidget::SetTabModified(DocumentTab *doc, bool modified) | ||
44 | { | ||
45 | int index = indexOf(doc->GetWidget()); | ||
46 | if(modified) | ||
47 | setTabIcon(index, QIcon::fromTheme("document-save")); | ||
48 | else | ||
49 | setTabIcon(index, QIcon()); | ||
50 | } | ||
51 | |||
52 | void MyTabWidget::SetTabName(DocumentTab *doc, const QString& name) | ||
53 | { | ||
54 | setTabText(indexOf(doc->GetWidget()), name); | ||
55 | } | ||
56 | |||
24 | bool MyTabWidget::CloseTab(int index) | 57 | bool MyTabWidget::CloseTab(int index) |
25 | { | 58 | { |
26 | QWidget *w = this->widget(index); | 59 | QWidget *w = this->widget(index); |
@@ -40,6 +73,10 @@ void MyTabWidget::OnCloseTab(int index) | |||
40 | CloseTab(index); | 73 | CloseTab(index); |
41 | } | 74 | } |
42 | 75 | ||
76 | /** | ||
77 | * MainWindow | ||
78 | */ | ||
79 | |||
43 | MainWindow::MainWindow(Backend *backend) | 80 | MainWindow::MainWindow(Backend *backend) |
44 | :m_backend(backend) | 81 | :m_backend(backend) |
45 | { | 82 | { |
@@ -144,20 +181,10 @@ void MainWindow::OnLoadDesc() | |||
144 | } | 181 | } |
145 | } | 182 | } |
146 | 183 | ||
147 | void MainWindow::OnTabModified(bool modified) | 184 | void MainWindow::AddTab(DocumentTab *doc, const QString& title) |
148 | { | ||
149 | QWidget *sender = qobject_cast< QWidget* >(QObject::sender()); | ||
150 | int index = m_tab->indexOf(sender); | ||
151 | if(modified) | ||
152 | m_tab->setTabIcon(index, QIcon::fromTheme("document-save")); | ||
153 | else | ||
154 | m_tab->setTabIcon(index, QIcon()); | ||
155 | } | ||
156 | |||
157 | void MainWindow::AddTab(QWidget *tab, const QString& title) | ||
158 | { | 185 | { |
159 | connect(tab, SIGNAL(OnModified(bool)), this, SLOT(OnTabModified(bool))); | 186 | m_tab->setCurrentIndex(m_tab->addTab(doc->GetWidget(), title)); |
160 | m_tab->setCurrentIndex(m_tab->addTab(tab, title)); | 187 | doc->SetTabWidget(m_tab); |
161 | } | 188 | } |
162 | 189 | ||
163 | void MainWindow::OnNewRegTab() | 190 | void MainWindow::OnNewRegTab() |
diff --git a/utils/regtools/qeditor/mainwindow.h b/utils/regtools/qeditor/mainwindow.h index b32b0647f5..47cfa6796d 100644 --- a/utils/regtools/qeditor/mainwindow.h +++ b/utils/regtools/qeditor/mainwindow.h | |||
@@ -7,11 +7,20 @@ | |||
7 | #include "backend.h" | 7 | #include "backend.h" |
8 | #include "settings.h" | 8 | #include "settings.h" |
9 | 9 | ||
10 | class MyTabWidget; | ||
11 | |||
10 | class DocumentTab | 12 | class DocumentTab |
11 | { | 13 | { |
12 | public: | 14 | public: |
15 | DocumentTab() { m_tab = 0; } | ||
13 | virtual bool Quit() = 0; | 16 | virtual bool Quit() = 0; |
14 | virtual void OnModified(bool modified) = 0; | 17 | virtual QWidget *GetWidget() = 0; |
18 | void SetTabWidget(MyTabWidget *tab) { m_tab = tab; } | ||
19 | |||
20 | protected: | ||
21 | void OnModified(bool modified); | ||
22 | void SetTabName(const QString& name); | ||
23 | MyTabWidget *m_tab; | ||
15 | }; | 24 | }; |
16 | 25 | ||
17 | class MyTabWidget : public QTabWidget | 26 | class MyTabWidget : public QTabWidget |
@@ -20,6 +29,8 @@ class MyTabWidget : public QTabWidget | |||
20 | public: | 29 | public: |
21 | MyTabWidget(); | 30 | MyTabWidget(); |
22 | bool CloseTab(int index); | 31 | bool CloseTab(int index); |
32 | void SetTabModified(DocumentTab *tab, bool mod); | ||
33 | void SetTabName(DocumentTab *tab, const QString& name); | ||
23 | 34 | ||
24 | private slots: | 35 | private slots: |
25 | void OnCloseTab(int index); | 36 | void OnCloseTab(int index); |
@@ -39,7 +50,7 @@ private: | |||
39 | void closeEvent(QCloseEvent *event); | 50 | void closeEvent(QCloseEvent *event); |
40 | 51 | ||
41 | protected: | 52 | protected: |
42 | void AddTab(QWidget *tab, const QString& title); | 53 | void AddTab(DocumentTab *tab, const QString& title); |
43 | bool Quit(); | 54 | bool Quit(); |
44 | 55 | ||
45 | private slots: | 56 | private slots: |
@@ -49,7 +60,6 @@ private slots: | |||
49 | void OnLoadDesc(); | 60 | void OnLoadDesc(); |
50 | void OnNewRegTab(); | 61 | void OnNewRegTab(); |
51 | void OnNewRegEdit(); | 62 | void OnNewRegEdit(); |
52 | void OnTabModified(bool modified); | ||
53 | 63 | ||
54 | private: | 64 | private: |
55 | MyTabWidget *m_tab; | 65 | MyTabWidget *m_tab; |
diff --git a/utils/regtools/qeditor/regedit.cpp b/utils/regtools/qeditor/regedit.cpp index bb1abc0825..316b5b0dc9 100644 --- a/utils/regtools/qeditor/regedit.cpp +++ b/utils/regtools/qeditor/regedit.cpp | |||
@@ -47,13 +47,13 @@ SocEditPanel::SocEditPanel(SocRef ref, QWidget *parent) | |||
47 | void SocEditPanel::OnNameEdited(const QString& text) | 47 | void SocEditPanel::OnNameEdited(const QString& text) |
48 | { | 48 | { |
49 | m_ref.GetSoc().name = text.toStdString(); | 49 | m_ref.GetSoc().name = text.toStdString(); |
50 | emit OnModified(m_name_edit->isModified()); | 50 | OnModified(m_name_edit->isModified()); |
51 | } | 51 | } |
52 | 52 | ||
53 | void SocEditPanel::OnTextEdited() | 53 | void SocEditPanel::OnTextEdited() |
54 | { | 54 | { |
55 | m_ref.GetSoc().desc = m_desc_edit->GetTextHtml().toStdString(); | 55 | m_ref.GetSoc().desc = m_desc_edit->GetTextHtml().toStdString(); |
56 | emit OnModified(m_desc_edit->IsModified()); | 56 | OnModified(m_desc_edit->IsModified()); |
57 | } | 57 | } |
58 | 58 | ||
59 | /** | 59 | /** |
@@ -143,25 +143,25 @@ DevEditPanel::DevEditPanel(SocDevRef ref, QWidget *parent) | |||
143 | void DevEditPanel::OnNameEdited(const QString& text) | 143 | void DevEditPanel::OnNameEdited(const QString& text) |
144 | { | 144 | { |
145 | m_ref.GetDev().name = text.toStdString(); | 145 | m_ref.GetDev().name = text.toStdString(); |
146 | emit OnModified(m_name_edit->isModified()); | 146 | OnModified(m_name_edit->isModified()); |
147 | } | 147 | } |
148 | 148 | ||
149 | void DevEditPanel::OnLongNameEdited(const QString& text) | 149 | void DevEditPanel::OnLongNameEdited(const QString& text) |
150 | { | 150 | { |
151 | m_ref.GetDev().long_name = text.toStdString(); | 151 | m_ref.GetDev().long_name = text.toStdString(); |
152 | emit OnModified(m_long_name_edit->isModified()); | 152 | OnModified(m_long_name_edit->isModified()); |
153 | } | 153 | } |
154 | 154 | ||
155 | void DevEditPanel::OnVersionEdited(const QString& text) | 155 | void DevEditPanel::OnVersionEdited(const QString& text) |
156 | { | 156 | { |
157 | m_ref.GetDev().version = text.toStdString(); | 157 | m_ref.GetDev().version = text.toStdString(); |
158 | emit OnModified(m_version_edit->isModified()); | 158 | OnModified(m_version_edit->isModified()); |
159 | } | 159 | } |
160 | 160 | ||
161 | void DevEditPanel::OnDescEdited() | 161 | void DevEditPanel::OnDescEdited() |
162 | { | 162 | { |
163 | m_ref.GetDev().desc = m_desc_edit->GetTextHtml().toStdString(); | 163 | m_ref.GetDev().desc = m_desc_edit->GetTextHtml().toStdString(); |
164 | emit OnModified(m_desc_edit->IsModified()); | 164 | OnModified(m_desc_edit->IsModified()); |
165 | } | 165 | } |
166 | 166 | ||
167 | void DevEditPanel::CreateNewRow(int row) | 167 | void DevEditPanel::CreateNewRow(int row) |
@@ -206,7 +206,7 @@ void DevEditPanel::OnInstActivated(int row, int column) | |||
206 | { | 206 | { |
207 | m_ref.GetDev().addr.erase(m_ref.GetDev().addr.begin() + row); | 207 | m_ref.GetDev().addr.erase(m_ref.GetDev().addr.begin() + row); |
208 | m_instances_table->removeRow(row); | 208 | m_instances_table->removeRow(row); |
209 | emit OnModified(true); | 209 | OnModified(true); |
210 | } | 210 | } |
211 | else if(type == DevInstNewType) | 211 | else if(type == DevInstNewType) |
212 | { | 212 | { |
@@ -228,12 +228,12 @@ void DevEditPanel::OnInstChanged(int row, int column) | |||
228 | if(column == DevInstNameColumn) | 228 | if(column == DevInstNameColumn) |
229 | { | 229 | { |
230 | m_ref.GetDev().addr[row].name = item->text().toStdString(); | 230 | m_ref.GetDev().addr[row].name = item->text().toStdString(); |
231 | emit OnModified(true); | 231 | OnModified(true); |
232 | } | 232 | } |
233 | else if(column == DevInstAddrColumn) | 233 | else if(column == DevInstAddrColumn) |
234 | { | 234 | { |
235 | m_ref.GetDev().addr[row].addr = item->data(Qt::DisplayRole).toUInt(); | 235 | m_ref.GetDev().addr[row].addr = item->data(Qt::DisplayRole).toUInt(); |
236 | emit OnModified(true); | 236 | OnModified(true); |
237 | } | 237 | } |
238 | } | 238 | } |
239 | 239 | ||
@@ -389,7 +389,7 @@ void RegEditPanel::UpdateWarning(int row) | |||
389 | void RegEditPanel::OnFormulaStringChanged(const QString& text) | 389 | void RegEditPanel::OnFormulaStringChanged(const QString& text) |
390 | { | 390 | { |
391 | m_ref.GetReg().formula.string = text.toStdString(); | 391 | m_ref.GetReg().formula.string = text.toStdString(); |
392 | emit OnModified(true); | 392 | OnModified(true); |
393 | } | 393 | } |
394 | 394 | ||
395 | void RegEditPanel::OnFormulaGenerate(bool checked) | 395 | void RegEditPanel::OnFormulaGenerate(bool checked) |
@@ -445,7 +445,7 @@ void RegEditPanel::OnFormulaChanged(int index) | |||
445 | return; | 445 | return; |
446 | m_ref.GetReg().formula.type = static_cast< soc_reg_formula_type_t >(m_formula_combo->itemData(index).toInt()); | 446 | m_ref.GetReg().formula.type = static_cast< soc_reg_formula_type_t >(m_formula_combo->itemData(index).toInt()); |
447 | UpdateFormula(); | 447 | UpdateFormula(); |
448 | emit OnModified(true); | 448 | OnModified(true); |
449 | } | 449 | } |
450 | 450 | ||
451 | void RegEditPanel::UpdateFormula() | 451 | void RegEditPanel::UpdateFormula() |
@@ -470,7 +470,7 @@ void RegEditPanel::OnSctEdited(int state) | |||
470 | m_ref.GetReg().flags |= REG_HAS_SCT; | 470 | m_ref.GetReg().flags |= REG_HAS_SCT; |
471 | else | 471 | else |
472 | m_ref.GetReg().flags &= ~REG_HAS_SCT; | 472 | m_ref.GetReg().flags &= ~REG_HAS_SCT; |
473 | emit OnModified(true); | 473 | OnModified(true); |
474 | } | 474 | } |
475 | 475 | ||
476 | void RegEditPanel::FillRow(int row, const soc_reg_addr_t& addr) | 476 | void RegEditPanel::FillRow(int row, const soc_reg_addr_t& addr) |
@@ -509,13 +509,13 @@ void RegEditPanel::CreateNewAddrRow(int row) | |||
509 | void RegEditPanel::OnNameEdited(const QString& text) | 509 | void RegEditPanel::OnNameEdited(const QString& text) |
510 | { | 510 | { |
511 | m_ref.GetReg().name = text.toStdString(); | 511 | m_ref.GetReg().name = text.toStdString(); |
512 | emit OnModified(m_name_edit->isModified()); | 512 | OnModified(m_name_edit->isModified()); |
513 | } | 513 | } |
514 | 514 | ||
515 | void RegEditPanel::OnDescEdited() | 515 | void RegEditPanel::OnDescEdited() |
516 | { | 516 | { |
517 | m_ref.GetReg().desc = m_desc_edit->GetTextHtml().toStdString(); | 517 | m_ref.GetReg().desc = m_desc_edit->GetTextHtml().toStdString(); |
518 | emit OnModified(m_desc_edit->IsModified()); | 518 | OnModified(m_desc_edit->IsModified()); |
519 | } | 519 | } |
520 | 520 | ||
521 | void RegEditPanel::OnInstActivated(int row, int column) | 521 | void RegEditPanel::OnInstActivated(int row, int column) |
@@ -527,7 +527,7 @@ void RegEditPanel::OnInstActivated(int row, int column) | |||
527 | { | 527 | { |
528 | m_ref.GetReg().addr.erase(m_ref.GetReg().addr.begin() + row); | 528 | m_ref.GetReg().addr.erase(m_ref.GetReg().addr.begin() + row); |
529 | m_instances_table->removeRow(row); | 529 | m_instances_table->removeRow(row); |
530 | emit OnModified(true); | 530 | OnModified(true); |
531 | } | 531 | } |
532 | else if(type == RegInstNewType) | 532 | else if(type == RegInstNewType) |
533 | { | 533 | { |
@@ -549,12 +549,12 @@ void RegEditPanel::OnInstChanged(int row, int column) | |||
549 | if(column == RegInstNameColumn) | 549 | if(column == RegInstNameColumn) |
550 | { | 550 | { |
551 | m_ref.GetReg().addr[row].name = item->text().toStdString(); | 551 | m_ref.GetReg().addr[row].name = item->text().toStdString(); |
552 | emit OnModified(true); | 552 | OnModified(true); |
553 | } | 553 | } |
554 | else if(column == RegInstAddrColumn) | 554 | else if(column == RegInstAddrColumn) |
555 | { | 555 | { |
556 | m_ref.GetReg().addr[row].addr = item->data(Qt::DisplayRole).toUInt(); | 556 | m_ref.GetReg().addr[row].addr = item->data(Qt::DisplayRole).toUInt(); |
557 | emit OnModified(true); | 557 | OnModified(true); |
558 | } | 558 | } |
559 | } | 559 | } |
560 | 560 | ||
@@ -707,19 +707,19 @@ void FieldEditPanel::OnBitRangeEdited(const QString& input) | |||
707 | UpdateWarning(row); | 707 | UpdateWarning(row); |
708 | // also updates delegates because they now have the wrong view of the field | 708 | // also updates delegates because they now have the wrong view of the field |
709 | UpdateDelegates(); | 709 | UpdateDelegates(); |
710 | emit OnModified(true); | 710 | OnModified(true); |
711 | } | 711 | } |
712 | 712 | ||
713 | void FieldEditPanel::OnNameEdited(const QString& text) | 713 | void FieldEditPanel::OnNameEdited(const QString& text) |
714 | { | 714 | { |
715 | m_ref.GetField().name = text.toStdString(); | 715 | m_ref.GetField().name = text.toStdString(); |
716 | emit OnModified(m_name_edit->isModified()); | 716 | OnModified(m_name_edit->isModified()); |
717 | } | 717 | } |
718 | 718 | ||
719 | void FieldEditPanel::OnDescEdited() | 719 | void FieldEditPanel::OnDescEdited() |
720 | { | 720 | { |
721 | m_ref.GetField().desc = m_desc_edit->GetTextHtml().toStdString(); | 721 | m_ref.GetField().desc = m_desc_edit->GetTextHtml().toStdString(); |
722 | emit OnModified(m_desc_edit->IsModified()); | 722 | OnModified(m_desc_edit->IsModified()); |
723 | } | 723 | } |
724 | 724 | ||
725 | void FieldEditPanel::OnValueActivated(int row, int column) | 725 | void FieldEditPanel::OnValueActivated(int row, int column) |
@@ -731,7 +731,7 @@ void FieldEditPanel::OnValueActivated(int row, int column) | |||
731 | { | 731 | { |
732 | m_ref.GetField().value.erase(m_ref.GetField().value.begin() + row); | 732 | m_ref.GetField().value.erase(m_ref.GetField().value.begin() + row); |
733 | m_value_table->removeRow(row); | 733 | m_value_table->removeRow(row); |
734 | emit OnModified(true); | 734 | OnModified(true); |
735 | } | 735 | } |
736 | else if(type == FieldValueNewType) | 736 | else if(type == FieldValueNewType) |
737 | { | 737 | { |
@@ -766,7 +766,7 @@ void FieldEditPanel::OnValueChanged(int row, int column) | |||
766 | } | 766 | } |
767 | else if(column == FieldValueDescColumn) | 767 | else if(column == FieldValueDescColumn) |
768 | m_ref.GetField().value[row].desc = item->text().toStdString(); | 768 | m_ref.GetField().value[row].desc = item->text().toStdString(); |
769 | emit OnModified(true); | 769 | OnModified(true); |
770 | } | 770 | } |
771 | 771 | ||
772 | namespace | 772 | namespace |
@@ -952,6 +952,11 @@ RegEdit::RegEdit(Backend *backend, QWidget *parent) | |||
952 | this, SLOT(OnSocItemActivated(QTreeWidgetItem*, int))); | 952 | this, SLOT(OnSocItemActivated(QTreeWidgetItem*, int))); |
953 | } | 953 | } |
954 | 954 | ||
955 | QWidget *RegEdit::GetWidget() | ||
956 | { | ||
957 | return this; | ||
958 | } | ||
959 | |||
955 | RegEdit::~RegEdit() | 960 | RegEdit::~RegEdit() |
956 | { | 961 | { |
957 | } | 962 | } |
@@ -1052,6 +1057,12 @@ bool RegEdit::SaveSocFile(const QString& filename) | |||
1052 | return true; | 1057 | return true; |
1053 | } | 1058 | } |
1054 | 1059 | ||
1060 | void RegEdit::UpdateTabName() | ||
1061 | { | ||
1062 | QFileInfo info(m_cur_socfile.GetFilename()); | ||
1063 | SetTabName(info.fileName()); | ||
1064 | } | ||
1065 | |||
1055 | void RegEdit::LoadSocFile(const QString& filename) | 1066 | void RegEdit::LoadSocFile(const QString& filename) |
1056 | { | 1067 | { |
1057 | m_cur_socfile = SocFile(filename); | 1068 | m_cur_socfile = SocFile(filename); |
@@ -1064,6 +1075,7 @@ void RegEdit::LoadSocFile(const QString& filename) | |||
1064 | m_file_edit->setText(filename); | 1075 | m_file_edit->setText(filename); |
1065 | SetModified(false, false); | 1076 | SetModified(false, false); |
1066 | UpdateSocFile(); | 1077 | UpdateSocFile(); |
1078 | UpdateTabName(); | ||
1067 | } | 1079 | } |
1068 | 1080 | ||
1069 | void RegEdit::CreateNewFieldItem(QTreeWidgetItem *_parent) | 1081 | void RegEdit::CreateNewFieldItem(QTreeWidgetItem *_parent) |
@@ -1192,7 +1204,7 @@ void RegEdit::SetPanel(QWidget *panel) | |||
1192 | void RegEdit::SetModified(bool add, bool mod) | 1204 | void RegEdit::SetModified(bool add, bool mod) |
1193 | { | 1205 | { |
1194 | m_modified = add ? (m_modified || mod) : mod; | 1206 | m_modified = add ? (m_modified || mod) : mod; |
1195 | emit OnModified(mod); | 1207 | OnModified(mod); |
1196 | } | 1208 | } |
1197 | 1209 | ||
1198 | namespace | 1210 | namespace |
@@ -1360,7 +1372,7 @@ void RegEdit::AddDevice(QTreeWidgetItem *_item) | |||
1360 | item->parent()->insertChild(item->parent()->indexOfChild(item), dev_item); | 1372 | item->parent()->insertChild(item->parent()->indexOfChild(item), dev_item); |
1361 | CreateNewRegisterItem(dev_item); | 1373 | CreateNewRegisterItem(dev_item); |
1362 | m_soc_tree->setCurrentItem(dev_item); | 1374 | m_soc_tree->setCurrentItem(dev_item); |
1363 | emit OnModified(true); | 1375 | OnModified(true); |
1364 | } | 1376 | } |
1365 | 1377 | ||
1366 | void RegEdit::AddRegister(QTreeWidgetItem *_item) | 1378 | void RegEdit::AddRegister(QTreeWidgetItem *_item) |
@@ -1373,7 +1385,7 @@ void RegEdit::AddRegister(QTreeWidgetItem *_item) | |||
1373 | item->parent()->insertChild(item->parent()->indexOfChild(item), reg_item); | 1385 | item->parent()->insertChild(item->parent()->indexOfChild(item), reg_item); |
1374 | CreateNewFieldItem(reg_item); | 1386 | CreateNewFieldItem(reg_item); |
1375 | m_soc_tree->setCurrentItem(reg_item); | 1387 | m_soc_tree->setCurrentItem(reg_item); |
1376 | emit OnModified(true); | 1388 | OnModified(true); |
1377 | } | 1389 | } |
1378 | 1390 | ||
1379 | void RegEdit::AddField(QTreeWidgetItem *_item) | 1391 | void RegEdit::AddField(QTreeWidgetItem *_item) |
@@ -1385,7 +1397,7 @@ void RegEdit::AddField(QTreeWidgetItem *_item) | |||
1385 | FixupEmptyItem(field_item); | 1397 | FixupEmptyItem(field_item); |
1386 | item->parent()->insertChild(item->parent()->indexOfChild(item), field_item); | 1398 | item->parent()->insertChild(item->parent()->indexOfChild(item), field_item); |
1387 | m_soc_tree->setCurrentItem(field_item); | 1399 | m_soc_tree->setCurrentItem(field_item); |
1388 | emit OnModified(true); | 1400 | OnModified(true); |
1389 | } | 1401 | } |
1390 | 1402 | ||
1391 | bool RegEdit::Quit() | 1403 | bool RegEdit::Quit() |
diff --git a/utils/regtools/qeditor/regedit.h b/utils/regtools/qeditor/regedit.h index cec92d7c03..049da4ee16 100644 --- a/utils/regtools/qeditor/regedit.h +++ b/utils/regtools/qeditor/regedit.h | |||
@@ -226,9 +226,7 @@ public: | |||
226 | RegEdit(Backend *backend, QWidget *parent = 0); | 226 | RegEdit(Backend *backend, QWidget *parent = 0); |
227 | ~RegEdit(); | 227 | ~RegEdit(); |
228 | virtual bool Quit(); | 228 | virtual bool Quit(); |
229 | 229 | virtual QWidget *GetWidget(); | |
230 | signals: | ||
231 | void OnModified(bool mod); | ||
232 | 230 | ||
233 | protected slots: | 231 | protected slots: |
234 | void OnSocItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); | 232 | void OnSocItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); |
@@ -267,6 +265,7 @@ protected: | |||
267 | void CreateNewDeviceItem(QTreeWidgetItem *parent); | 265 | void CreateNewDeviceItem(QTreeWidgetItem *parent); |
268 | void CreateNewRegisterItem(QTreeWidgetItem *parent); | 266 | void CreateNewRegisterItem(QTreeWidgetItem *parent); |
269 | void CreateNewFieldItem(QTreeWidgetItem *parent); | 267 | void CreateNewFieldItem(QTreeWidgetItem *parent); |
268 | void UpdateTabName(); | ||
270 | 269 | ||
271 | QGroupBox *m_file_group; | 270 | QGroupBox *m_file_group; |
272 | QToolButton *m_file_open; | 271 | QToolButton *m_file_open; |
diff --git a/utils/regtools/qeditor/regtab.cpp b/utils/regtools/qeditor/regtab.cpp index 132308e8ff..f6a726746f 100644 --- a/utils/regtools/qeditor/regtab.cpp +++ b/utils/regtools/qeditor/regtab.cpp | |||
@@ -160,6 +160,11 @@ RegTab::RegTab(Backend *backend, QWidget *parent) | |||
160 | SetDataSocName(""); | 160 | SetDataSocName(""); |
161 | } | 161 | } |
162 | 162 | ||
163 | QWidget *RegTab::GetWidget() | ||
164 | { | ||
165 | return this; | ||
166 | } | ||
167 | |||
163 | RegTab::~RegTab() | 168 | RegTab::~RegTab() |
164 | { | 169 | { |
165 | /* backend will be deleted by backend selector */ | 170 | /* backend will be deleted by backend selector */ |
@@ -192,6 +197,32 @@ void RegTab::OnDataSocActivated(const QString& str) | |||
192 | m_soc_selector->setCurrentIndex(index); | 197 | m_soc_selector->setCurrentIndex(index); |
193 | } | 198 | } |
194 | 199 | ||
200 | void RegTab::UpdateTabName() | ||
201 | { | ||
202 | /* do it the ugly way: try to cast to the different possible backends */ | ||
203 | FileIoBackend *file = dynamic_cast< FileIoBackend* >(m_io_backend); | ||
204 | #ifdef HAVE_HWSTUB | ||
205 | HWStubIoBackend *hwstub = dynamic_cast< HWStubIoBackend* >(m_io_backend); | ||
206 | #endif | ||
207 | if(file) | ||
208 | { | ||
209 | QFileInfo info(file->GetFileName()); | ||
210 | SetTabName(info.fileName()); | ||
211 | } | ||
212 | #ifdef HAVE_HWSTUB | ||
213 | else if(hwstub) | ||
214 | { | ||
215 | HWStubDevice *dev = hwstub->GetDevice(); | ||
216 | SetTabName(QString("HWStub %1.%2").arg(dev->GetBusNumber()) | ||
217 | .arg(dev->GetDevAddress())); | ||
218 | } | ||
219 | #endif | ||
220 | else | ||
221 | { | ||
222 | SetTabName("Register Tab"); | ||
223 | } | ||
224 | } | ||
225 | |||
195 | void RegTab::OnBackendSelect(IoBackend *backend) | 226 | void RegTab::OnBackendSelect(IoBackend *backend) |
196 | { | 227 | { |
197 | m_io_backend = backend; | 228 | m_io_backend = backend; |
@@ -199,6 +230,7 @@ void RegTab::OnBackendSelect(IoBackend *backend) | |||
199 | SetDataSocName(m_io_backend->GetSocName()); | 230 | SetDataSocName(m_io_backend->GetSocName()); |
200 | OnDataSocActivated(m_io_backend->GetSocName()); | 231 | OnDataSocActivated(m_io_backend->GetSocName()); |
201 | OnDataChanged(); | 232 | OnDataChanged(); |
233 | UpdateTabName(); | ||
202 | } | 234 | } |
203 | 235 | ||
204 | void RegTab::SetReadOnlyIndicator() | 236 | void RegTab::SetReadOnlyIndicator() |
diff --git a/utils/regtools/qeditor/regtab.h b/utils/regtools/qeditor/regtab.h index f48b72e683..1936ca1f4d 100644 --- a/utils/regtools/qeditor/regtab.h +++ b/utils/regtools/qeditor/regtab.h | |||
@@ -43,9 +43,7 @@ public: | |||
43 | RegTab(Backend *backend, QWidget *parent = 0); | 43 | RegTab(Backend *backend, QWidget *parent = 0); |
44 | ~RegTab(); | 44 | ~RegTab(); |
45 | virtual bool Quit(); | 45 | virtual bool Quit(); |
46 | 46 | virtual QWidget *GetWidget(); | |
47 | signals: | ||
48 | void OnModified(bool modified); | ||
49 | 47 | ||
50 | protected: | 48 | protected: |
51 | void FillDevSubTree(QTreeWidgetItem *item); | 49 | void FillDevSubTree(QTreeWidgetItem *item); |
@@ -59,6 +57,7 @@ protected: | |||
59 | void SetDataSocName(const QString& socname); | 57 | void SetDataSocName(const QString& socname); |
60 | void SetPanel(RegTabPanel *panel); | 58 | void SetPanel(RegTabPanel *panel); |
61 | void UpdateSocFilename(); | 59 | void UpdateSocFilename(); |
60 | void UpdateTabName(); | ||
62 | 61 | ||
63 | QComboBox *m_soc_selector; | 62 | QComboBox *m_soc_selector; |
64 | BackendSelector *m_backend_selector; | 63 | BackendSelector *m_backend_selector; |