Amaury Pouly | fe1fed8 | 2014-09-26 10:46:48 +0200 | [diff] [blame] | 1 | /*************************************************************************** |
| 2 | * __________ __ ___. |
| 3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| 4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| 7 | * \/ \/ \/ \/ \/ |
| 8 | * $Id$ |
| 9 | * |
| 10 | * Copyright (C) 2014 by Amaury Pouly |
| 11 | * |
| 12 | * This program is free software; you can redistribute it and/or |
| 13 | * modify it under the terms of the GNU General Public License |
| 14 | * as published by the Free Software Foundation; either version 2 |
| 15 | * of the License, or (at your option) any later version. |
| 16 | * |
| 17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| 18 | * KIND, either express or implied. |
| 19 | * |
| 20 | ****************************************************************************/ |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 21 | #ifndef REGTAB_H |
| 22 | #define REGTAB_H |
| 23 | |
| 24 | #include <QComboBox> |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 25 | #include <QTreeWidget> |
| 26 | #include <QVBoxLayout> |
| 27 | #include <QTabWidget> |
| 28 | #include <QSplitter> |
| 29 | #include <QLineEdit> |
| 30 | #include <QPushButton> |
| 31 | #include <QLabel> |
| 32 | #include <QListWidget> |
Amaury Pouly | 04fc97b | 2014-02-10 23:10:55 +0100 | [diff] [blame] | 33 | #include <QGroupBox> |
| 34 | #include <QToolButton> |
| 35 | #include <QMenu> |
| 36 | #include <QCheckBox> |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 37 | #include "backend.h" |
| 38 | #include "settings.h" |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 39 | #include "mainwindow.h" |
Amaury Pouly | a01bf8d | 2014-09-18 19:02:54 +0200 | [diff] [blame] | 40 | #include "utils.h" |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 41 | |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 42 | class RegTabPanel |
Amaury Pouly | 3d07706 | 2014-02-09 02:13:53 +0100 | [diff] [blame] | 43 | { |
| 44 | public: |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 45 | RegTabPanel() {} |
| 46 | virtual ~RegTabPanel() {} |
| 47 | virtual void AllowWrite(bool en) = 0; |
| 48 | virtual QWidget *GetWidget() = 0; |
Amaury Pouly | 3d07706 | 2014-02-09 02:13:53 +0100 | [diff] [blame] | 49 | }; |
| 50 | |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 51 | class EmptyRegTabPanel : public QWidget, public RegTabPanel |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 52 | { |
| 53 | public: |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 54 | EmptyRegTabPanel(QWidget *parent = 0); |
Amaury Pouly | 04fc97b | 2014-02-10 23:10:55 +0100 | [diff] [blame] | 55 | void AllowWrite(bool en); |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 56 | QWidget *GetWidget(); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 57 | }; |
| 58 | |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 59 | class RegTab : public QSplitter, public DocumentTab |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 60 | { |
| 61 | Q_OBJECT |
| 62 | public: |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 63 | RegTab(Backend *backend, QWidget *parent = 0); |
Amaury Pouly | b8bad84 | 2014-02-09 02:17:14 +0100 | [diff] [blame] | 64 | ~RegTab(); |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 65 | virtual bool Quit(); |
Amaury Pouly | 970c248 | 2014-09-18 21:36:17 +0200 | [diff] [blame] | 66 | virtual QWidget *GetWidget(); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 67 | |
| 68 | protected: |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 69 | void FillDevSubTree(QTreeWidgetItem *item); |
Amaury Pouly | ef0299c | 2014-08-09 18:39:45 +0200 | [diff] [blame] | 70 | void FillSocSubTree(QTreeWidgetItem *item); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 71 | void FillRegTree(); |
| 72 | void FillAnalyserList(); |
| 73 | void UpdateSocList(); |
Amaury Pouly | 3d07706 | 2014-02-09 02:13:53 +0100 | [diff] [blame] | 74 | void DisplayRegister(const SocRegRef& ref); |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 75 | void DisplayDevice(const SocDevRef& ref); |
Amaury Pouly | ef0299c | 2014-08-09 18:39:45 +0200 | [diff] [blame] | 76 | void DisplaySoc(const SocRef& ref); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 77 | void SetDataSocName(const QString& socname); |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 78 | void SetPanel(RegTabPanel *panel); |
| 79 | void UpdateSocFilename(); |
Amaury Pouly | 970c248 | 2014-09-18 21:36:17 +0200 | [diff] [blame] | 80 | void UpdateTabName(); |
Amaury Pouly | 7749c4d | 2014-10-07 14:30:24 +0200 | [diff] [blame] | 81 | int SetMessage(MessageWidget::MessageType type, const QString& msg); |
| 82 | void HideMessage(int id); |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 83 | |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 84 | QComboBox *m_soc_selector; |
Amaury Pouly | a01bf8d | 2014-09-18 19:02:54 +0200 | [diff] [blame] | 85 | BackendSelector *m_backend_selector; |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 86 | Backend *m_backend; |
| 87 | QTreeWidget *m_reg_tree; |
Amaury Pouly | 3d07706 | 2014-02-09 02:13:53 +0100 | [diff] [blame] | 88 | SocRef m_cur_soc; |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 89 | QVBoxLayout *m_right_panel; |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 90 | RegTabPanel *m_right_content; |
Amaury Pouly | 04fc97b | 2014-02-10 23:10:55 +0100 | [diff] [blame] | 91 | QCheckBox *m_readonly_check; |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 92 | QLabel *m_data_soc_label; |
| 93 | QPushButton *m_data_sel_reload; |
Amaury Pouly | 7b590a9 | 2014-05-11 19:51:55 +0200 | [diff] [blame] | 94 | QPushButton *m_dump; |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 95 | IoBackend *m_io_backend; |
| 96 | QTabWidget *m_type_selector; |
| 97 | QListWidget *m_analysers_list; |
Amaury Pouly | b08620d | 2014-09-27 13:29:44 +0200 | [diff] [blame] | 98 | MessageWidget *m_msg; |
Amaury Pouly | 7749c4d | 2014-10-07 14:30:24 +0200 | [diff] [blame] | 99 | int m_msg_select_id; |
| 100 | int m_msg_error_id; |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 101 | |
| 102 | private slots: |
Amaury Pouly | a66a5af | 2014-02-09 02:16:43 +0100 | [diff] [blame] | 103 | void SetReadOnlyIndicator(); |
Amaury Pouly | 4356666 | 2014-04-07 11:28:04 +0200 | [diff] [blame] | 104 | void OnSocChanged(int index); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 105 | void OnSocListChanged(); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 106 | void OnRegItemClicked(QTreeWidgetItem *clicked, int col); |
Amaury Pouly | a01bf8d | 2014-09-18 19:02:54 +0200 | [diff] [blame] | 107 | void OnBackendSelect(IoBackend *backend); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 108 | void OnDataChanged(); |
| 109 | void OnDataSocActivated(const QString&); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 110 | void OnAnalyserClicked(QListWidgetItem *clicked); |
Amaury Pouly | 04fc97b | 2014-02-10 23:10:55 +0100 | [diff] [blame] | 111 | void OnReadOnlyClicked(bool); |
Amaury Pouly | 7b590a9 | 2014-05-11 19:51:55 +0200 | [diff] [blame] | 112 | void OnDumpRegs(bool); |
Amaury Pouly | 0c633db | 2014-09-18 19:03:25 +0200 | [diff] [blame] | 113 | void OnBackendReload(bool); |
| 114 | void OnTypeChanged(int index); |
Amaury Pouly | c323381 | 2013-08-21 20:16:26 +0200 | [diff] [blame] | 115 | }; |
| 116 | |
| 117 | #endif /* REGTAB_H */ |