summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2014-09-18 21:36:17 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2014-09-19 10:58:33 +0200
commit970c2482dd22a84a5973b73621d0dd06e6f45a25 (patch)
tree3131c033b3f3e385eceed7beb16e8b143ff0caf1
parentdbb59291e745c7cc640a35fc40faa083648793bf (diff)
downloadrockbox-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.h2
-rw-r--r--utils/regtools/qeditor/mainwindow.cpp53
-rw-r--r--utils/regtools/qeditor/mainwindow.h16
-rw-r--r--utils/regtools/qeditor/regedit.cpp64
-rw-r--r--utils/regtools/qeditor/regedit.h5
-rw-r--r--utils/regtools/qeditor/regtab.cpp32
-rw-r--r--utils/regtools/qeditor/regtab.h5
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
103protected: 104protected:
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
168protected: 170protected:
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 */
20void DocumentTab::OnModified(bool modified)
21{
22 if(m_tab)
23 m_tab->SetTabModified(this, modified);
24}
25
26void DocumentTab::SetTabName(const QString& name)
27{
28 if(m_tab)
29 m_tab->SetTabName(this, name);
30}
31
32/**
33 * MyTabWidget
34 */
35
17MyTabWidget::MyTabWidget() 36MyTabWidget::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
43void 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
52void MyTabWidget::SetTabName(DocumentTab *doc, const QString& name)
53{
54 setTabText(indexOf(doc->GetWidget()), name);
55}
56
24bool MyTabWidget::CloseTab(int index) 57bool 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
43MainWindow::MainWindow(Backend *backend) 80MainWindow::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
147void MainWindow::OnTabModified(bool modified) 184void 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
157void 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
163void MainWindow::OnNewRegTab() 190void 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
10class MyTabWidget;
11
10class DocumentTab 12class DocumentTab
11{ 13{
12public: 14public:
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
20protected:
21 void OnModified(bool modified);
22 void SetTabName(const QString& name);
23 MyTabWidget *m_tab;
15}; 24};
16 25
17class MyTabWidget : public QTabWidget 26class MyTabWidget : public QTabWidget
@@ -20,6 +29,8 @@ class MyTabWidget : public QTabWidget
20public: 29public:
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
24private slots: 35private 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
41protected: 52protected:
42 void AddTab(QWidget *tab, const QString& title); 53 void AddTab(DocumentTab *tab, const QString& title);
43 bool Quit(); 54 bool Quit();
44 55
45private slots: 56private 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
54private: 64private:
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)
47void SocEditPanel::OnNameEdited(const QString& text) 47void 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
53void SocEditPanel::OnTextEdited() 53void 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)
143void DevEditPanel::OnNameEdited(const QString& text) 143void 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
149void DevEditPanel::OnLongNameEdited(const QString& text) 149void 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
155void DevEditPanel::OnVersionEdited(const QString& text) 155void 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
161void DevEditPanel::OnDescEdited() 161void 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
167void DevEditPanel::CreateNewRow(int row) 167void 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)
389void RegEditPanel::OnFormulaStringChanged(const QString& text) 389void 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
395void RegEditPanel::OnFormulaGenerate(bool checked) 395void 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
451void RegEditPanel::UpdateFormula() 451void 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
476void RegEditPanel::FillRow(int row, const soc_reg_addr_t& addr) 476void RegEditPanel::FillRow(int row, const soc_reg_addr_t& addr)
@@ -509,13 +509,13 @@ void RegEditPanel::CreateNewAddrRow(int row)
509void RegEditPanel::OnNameEdited(const QString& text) 509void 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
515void RegEditPanel::OnDescEdited() 515void 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
521void RegEditPanel::OnInstActivated(int row, int column) 521void 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
713void FieldEditPanel::OnNameEdited(const QString& text) 713void 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
719void FieldEditPanel::OnDescEdited() 719void 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
725void FieldEditPanel::OnValueActivated(int row, int column) 725void 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
772namespace 772namespace
@@ -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
955QWidget *RegEdit::GetWidget()
956{
957 return this;
958}
959
955RegEdit::~RegEdit() 960RegEdit::~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
1060void RegEdit::UpdateTabName()
1061{
1062 QFileInfo info(m_cur_socfile.GetFilename());
1063 SetTabName(info.fileName());
1064}
1065
1055void RegEdit::LoadSocFile(const QString& filename) 1066void 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
1069void RegEdit::CreateNewFieldItem(QTreeWidgetItem *_parent) 1081void RegEdit::CreateNewFieldItem(QTreeWidgetItem *_parent)
@@ -1192,7 +1204,7 @@ void RegEdit::SetPanel(QWidget *panel)
1192void RegEdit::SetModified(bool add, bool mod) 1204void 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
1198namespace 1210namespace
@@ -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
1366void RegEdit::AddRegister(QTreeWidgetItem *_item) 1378void 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
1379void RegEdit::AddField(QTreeWidgetItem *_item) 1391void 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
1391bool RegEdit::Quit() 1403bool 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();
230signals:
231 void OnModified(bool mod);
232 230
233protected slots: 231protected 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
163QWidget *RegTab::GetWidget()
164{
165 return this;
166}
167
163RegTab::~RegTab() 168RegTab::~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
200void 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
195void RegTab::OnBackendSelect(IoBackend *backend) 226void 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
204void RegTab::SetReadOnlyIndicator() 236void 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();
47signals:
48 void OnModified(bool modified);
49 47
50protected: 48protected:
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;