summaryrefslogtreecommitdiffstats
path: root/utils/regtools/qeditor/regedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor/regedit.h')
-rw-r--r--utils/regtools/qeditor/regedit.h276
1 files changed, 139 insertions, 137 deletions
diff --git a/utils/regtools/qeditor/regedit.h b/utils/regtools/qeditor/regedit.h
index c56f0d9026..2540500f29 100644
--- a/utils/regtools/qeditor/regedit.h
+++ b/utils/regtools/qeditor/regedit.h
@@ -38,6 +38,8 @@
#include <QButtonGroup>
#include <QDebug>
#include <QScrollArea>
+#include <QSpinBox>
+#include <QFormLayout>
#include "backend.h"
#include "settings.h"
#include "mainwindow.h"
@@ -48,7 +50,7 @@ class AbstractRegEditPanel
public:
AbstractRegEditPanel() {}
virtual ~AbstractRegEditPanel() {}
- virtual void OnModified(bool mod) = 0;
+ virtual void OnModified() = 0;
};
class EmptyEditPanel : public QWidget, public AbstractRegEditPanel
@@ -58,7 +60,7 @@ public:
EmptyEditPanel(QWidget *parent);
signals:
- void OnModified(bool mod);
+ void OnModified();
protected:
};
@@ -67,178 +69,167 @@ class SocEditPanel : public QWidget, public AbstractRegEditPanel
{
Q_OBJECT
public:
- SocEditPanel(SocRef ref, QWidget *parent = 0);
+ SocEditPanel(const soc_desc::soc_ref_t& ref, QWidget *parent = 0);
signals:
- void OnModified(bool mod);
+ void OnModified();
protected slots:
void OnTextEdited();
void OnNameEdited(const QString& text);
+ void OnTitleEdited(const QString& text);
+ void OnVersionEdited(const QString& text);
+ void OnIsaEdited(const QString& text);
+ void OnAuthorActivated(QTableWidgetItem *);
+ void OnAuthorChanged(QTableWidgetItem *);
protected:
- SocRef m_ref;
- QGroupBox *m_name_group;
- QLineEdit *m_name_edit;
- QGroupBox *m_desc_group;
+ soc_desc::soc_ref_t m_ref;
+ QTableWidget *m_authors_list;
MyTextEditor *m_desc_edit;
};
-class DevEditPanel : public QWidget, public AbstractRegEditPanel
+class NodeInstanceEditPanel : public QWidget
{
Q_OBJECT
public:
- DevEditPanel(SocDevRef ref, QWidget *parent = 0);
+ NodeInstanceEditPanel(const soc_desc::node_ref_t& ref, soc_id_t inst_id,
+ QWidget *parent = 0);
+ soc_id_t GetId();
+ soc_desc::instance_t& GetInstance();
signals:
- void OnModified(bool mod);
+ void OnModified();
protected slots:
- void OnInstActivated(int row, int column);
- void OnInstChanged(int row, int column);
void OnNameEdited(const QString& text);
- void OnLongNameEdited(const QString& text);
- void OnVersionEdited(const QString& text);
- void OnDescEdited();
+ void OnTitleEdited(const QString& text);
+ void OnDescEdited(const QString& text);
+ void OnTypeChanged(int index);
+ void OnAddrChanged(uint addr);
+ void OnBaseChanged(uint base);
+ void OnStrideChanged(uint stride);
+ void OnFirstChanged(int first);
+ void OnCountChanged(int count);
+ void OnFormulaChanged(const QString& formula);
+ void OnVariableChanged(const QString& variable);
+ void OnAddressActivated(QTableWidgetItem *);
+ void OnAddressChanged(QTableWidgetItem *);
protected:
- void FillRow(int row, const soc_dev_addr_t& addr);
- void CreateNewRow(int row);
-
- enum
- {
- DevInstDeleteType = QTableWidgetItem::UserType,
- DevInstNewType
- };
-
- enum
- {
- DevInstIconColumn = 0,
- DevInstNameColumn = 1,
- DevInstAddrColumn = 2,
- };
-
- SocDevRef m_ref;
- QGroupBox *m_name_group;
- QLineEdit *m_name_edit;
- QGroupBox *m_long_name_group;
- QLineEdit *m_long_name_edit;
- QGroupBox *m_version_group;
- QLineEdit *m_version_edit;
- QGroupBox *m_instances_group;
- QTableWidget *m_instances_table;
- QGroupBox *m_desc_group;
- MyTextEditor *m_desc_edit;
+ void UpdateType(int type);
+
+ soc_desc::node_ref_t m_ref;
+ soc_id_t m_id;
+ QComboBox *m_type_combo;
+ QWidget *m_single_group;
+ QWidget *m_range_group;
+ QWidget *m_formula_group;
+ QWidget *m_stride_group;
+ QWidget *m_list_group;
+ QStyledItemDelegate *m_table_delegate;
+ SocFieldEditorCreator *m_table_edit_factory;
};
-class RegEditPanel : public QWidget, public AbstractRegEditPanel
+class NodeEditPanel : public QWidget, public AbstractRegEditPanel
{
Q_OBJECT
public:
- RegEditPanel(SocRegRef ref, QWidget *parent = 0);
+ NodeEditPanel(const soc_desc::node_ref_t& ref, QWidget *parent = 0);
signals:
- void OnModified(bool mod);
+ void OnModified();
protected slots:
- void OnInstActivated(int row, int column);
- void OnInstChanged(int row, int column);
void OnNameEdited(const QString& text);
+ void OnTitleEdited(const QString& text);
void OnDescEdited();
- void OnSctEdited(int state);
- void OnFormulaChanged(int index);
- void OnFormulaStringChanged(const QString& text);
- void OnFormulaGenerate(bool checked);
+ void OnInstRemove(int index);
+ void OnInstCreate();
+ void OnInstModified();
+
+protected:
+ soc_desc::instance_t *GetInstanceById(soc_id_t id);
+ soc_desc::instance_t *GetInstanceByRow(int row);
+ QString GuessName();
+
+ soc_desc::node_ref_t m_ref;
+ MyTextEditor *m_desc_edit;
+ YTabWidget *m_instances_tab;
+};
+
+class RegFieldEditPanel : public QWidget
+{
+ Q_OBJECT
+public:
+ RegFieldEditPanel(const soc_desc::field_ref_t& ref, QWidget *parent = 0);
+ soc_desc::field_ref_t GetField();
+ void UpdateWidth();
+
+signals:
+ void OnModified();
+
+protected slots:
+ void OnFieldNameChanged(const QString& name);
+ void OnFieldRangeChanged(const QString& range);
+ void OnFieldDescChanged(const QString& name);
+ void OnFieldValueActivated(QTableWidgetItem *item);
+ void OnFieldValueChanged(QTableWidgetItem *item);
protected:
- void CreateNewAddrRow(int row);
- void FillRow(int row, const soc_reg_addr_t& addr);
- void UpdateFormula();
- void UpdateWarning(int row);
-
- enum
- {
- RegInstDeleteType = QTableWidgetItem::UserType,
- RegInstNewType
- };
-
- enum
- {
- RegInstIconColumn = 0,
- RegInstNameColumn,
- RegInstAddrColumn,
- RegInstNrColumns,
- };
-
- SocRegRef m_ref;
- QGroupBox *m_name_group;
+
+ soc_desc::field_ref_t m_ref;
QLineEdit *m_name_edit;
- QGroupBox *m_instances_group;
- QTableWidget *m_instances_table;
- QGroupBox *m_desc_group;
- QGroupBox *m_flags_group;
- QCheckBox *m_sct_check;
- QFont m_reg_font;
- QGroupBox *m_formula_group;
- QButtonGroup *m_formula_radio_group;
- QLabel *m_formula_type_label;
- QComboBox *m_formula_combo;
- QLineEdit *m_formula_string_edit;
- QPushButton *m_formula_string_gen;
- Unscroll< RegSexyDisplay2 > *m_sexy_display2;
+ QLineEdit *m_range_edit;
+ SocBitRangeValidator *m_range_validator;
MyTextEditor *m_desc_edit;
- QGroupBox *m_field_group;
- QTableView *m_value_table;
- RegFieldTableModel *m_value_model;
- QStyledItemDelegate *m_table_delegate;
+ QTableWidget *m_enum_table;
+ SocFieldItemDelegate *m_enum_delegate;
+ SocFieldEditorCreator *m_enum_editor;
};
-class FieldEditPanel : public QWidget, public AbstractRegEditPanel
+class RegEditPanel : public QWidget, public AbstractRegEditPanel
{
Q_OBJECT
public:
- FieldEditPanel(SocFieldRef ref, QWidget *parent = 0);
+ RegEditPanel(const soc_desc::register_ref_t& ref, QWidget *parent = 0);
signals:
- void OnModified(bool mod);
+ void OnModified();
protected slots:
+ void OnRegFieldActivated(const QModelIndex& index);
+ void OnRegDisplayContextMenu(QPoint point);
+ void OnRegFieldDelete();
+ void OnRegFieldNew();
+ void OnWidthChanged(int size);
+ void OnFieldModified();
void OnDescEdited();
- void OnNameEdited(const QString& text);
- void OnBitRangeEdited(const QString& string);
- void OnValueActivated(int row, int column);
- void OnValueChanged(int row, int column);
+ void OnVariantActivated(QTableWidgetItem *item);
+ void OnVariantValueChanged(QTableWidgetItem *item);
+ void OnFieldRemove(int index);
+ void OnFieldCreate();
protected:
- void CreateNewRow(int row);
- void FillRow(int row, const soc_reg_field_value_t& val);
- void UpdateWarning(int row);
- void UpdateDelegates();
-
- enum
- {
- FieldValueDeleteType = QTableWidgetItem::UserType,
- FieldValueNewType,
- };
-
- enum
- {
- FieldValueIconColumn = 0,
- FieldValueNameColumn,
- FieldValueValueColumn,
- FieldValueDescColumn,
- FieldValueNrColumns,
- };
-
- SocFieldRef m_ref;
- QGroupBox *m_name_group;
- QLineEdit *m_name_edit;
- QGroupBox *m_bitrange_group;
- QLineEdit *m_bitrange_edit;
- QGroupBox *m_desc_group;
+ void DoModify();
+ int FindFreeBit(int preferred);
+ int IndexById(soc_id_t id); // tab index
+ void UpdateWidthRestrictions();
+
MyTextEditor *m_desc_edit;
- QGroupBox *m_value_group;
- QTableWidget *m_value_table;
+ soc_desc::register_ref_t m_ref;
+ QFont m_reg_font;
+ Unscroll< YRegDisplay > *m_sexy_display2;
+ RegFieldTableModel *m_value_model;
+ YTabWidget *m_fields_tab;
+ QTabWidget *m_view_tab;
+ QTableWidget *m_variant_table;
+ QAction *m_new_action;
+ QAction *m_delete_action;
+ QPoint m_menu_point;
+ SocFieldItemDelegate *m_variant_delegate;
+ SocFieldEditorCreator *m_variant_editor;
+ QButtonGroup *m_reg_size_group;
};
class RegEdit : public QWidget, public DocumentTab
@@ -252,43 +243,50 @@ public:
protected slots:
void OnSocItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
- void OnSocItemActivated(QTreeWidgetItem *current, int column);
void OnOpen();
void OnSave();
void OnSaveAs();
- void OnSocModified(bool modified);
+ void OnSocModified();
void OnNew();
void OnSocItemDelete();
+ void OnSocItemNew();
+ void OnSocItemCreate();
+ void OnSocTreeContextMenu(QPoint point);
protected:
void LoadSocFile(const QString& filename);
void UpdateSocFile();
void FillSocTree();
- void FillSocTreeItem(QTreeWidgetItem *_item);
- void FillDevTreeItem(QTreeWidgetItem *_item);
- void FillRegTreeItem(QTreeWidgetItem *_item);
+ void FillNodeTreeItem(QTreeWidgetItem *item);
void SetPanel(QWidget *panel);
- void DisplaySoc(SocRef ref);
- void DisplayDev(SocDevRef ref);
- void DisplayReg(SocRegRef ref);
- void DisplayField(SocFieldRef ref);
+ void DisplaySoc(const soc_desc::soc_ref_t& ref);
+ void DisplayNode(const soc_desc::node_ref_t& ref);
+ void DisplayReg(const soc_desc::register_ref_t& ref);
bool CloseSoc();
bool SaveSoc();
bool SaveSocAs();
bool SaveSocFile(const QString& filename);
bool GetFilename(QString& filename, bool save);
void SetModified(bool add, bool mod);
- void FixupEmptyItem(QTreeWidgetItem *item);
+ void FixupItem(QTreeWidgetItem *item);
+ QIcon GetIconFromType(int type);
void MakeItalic(QTreeWidgetItem *item, bool it);
void AddDevice(QTreeWidgetItem *item);
void AddRegister(QTreeWidgetItem *_item);
void UpdateName(QTreeWidgetItem *current);
void AddField(QTreeWidgetItem *_item);
- void CreateNewDeviceItem(QTreeWidgetItem *parent);
+ void CreateNewNodeItem(QTreeWidgetItem *parent);
void CreateNewRegisterItem(QTreeWidgetItem *parent);
void CreateNewFieldItem(QTreeWidgetItem *parent);
void UpdateTabName();
-
+ bool ValidateName(const QString& name);
+ int SetMessage(MessageWidget::MessageType type, const QString& msg);
+ void HideMessage(int id);
+
+ QAction *m_delete_action;
+ QAction *m_new_action;
+ QAction *m_create_action;
+ QTreeWidgetItem *m_action_item;
QGroupBox *m_file_group;
QToolButton *m_file_open;
QToolButton *m_file_save;
@@ -299,6 +297,10 @@ protected:
bool m_modified;
SocFile m_cur_socfile;
QWidget *m_right_panel;
+ MessageWidget *m_msg;
+ QVBoxLayout *m_right_panel_layout;
+ int m_msg_welcome_id;
+ int m_msg_name_error_id;
};
#endif /* REGEDIT_H */