regtools: completely rework qeditor, improve soc desc library and tools

The graphical editor can now display and editor description files.
The library has been improved to provide more useful function.
The XML format has been slightly changed: only one soc is allowed per file
(this is was already de facto the case since <soc> was the root tag).
Also introduce a DTD to validate the files.

Change-Id: If70ba35b6dc0242bdb87411cf4baee9597798aac
This commit is contained in:
Amaury Pouly 2014-04-07 11:28:04 +02:00
parent 3754624edc
commit 4356666101
22 changed files with 4390 additions and 614 deletions

View file

@ -0,0 +1,77 @@
#ifndef REGDISPLAYPANEL_H
#define REGDISPLAYPANEL_H
#include <QVBoxLayout>
#include <QLabel>
#include <QGroupBox>
#include <QTableWidget>
#include <QStyledItemDelegate>
#include <QItemEditorCreatorBase>
#include <QTextEdit>
#include <QScrollArea>
#include <soc_desc.hpp>
#include "backend.h"
#include "settings.h"
#include "aux.h"
#include "regtab.h"
class RegItemEditorCreator : public QItemEditorCreatorBase
{
public:
RegItemEditorCreator() {}
virtual QWidget *createWidget(QWidget * parent) const;
virtual QByteArray valuePropertyName () const;
};
class DevDisplayPanel : public QGroupBox, public RegTabPanel
{
Q_OBJECT
public:
DevDisplayPanel(QWidget *parent, const SocDevRef& reg);
void Reload();
void AllowWrite(bool en);
QWidget *GetWidget();
bool Quit();
protected:
const SocDevRef& m_dev;
QFont m_reg_font;
QLabel *m_name;
QLabel *m_desc;
};
class RegDisplayPanel : public QGroupBox, public RegTabPanel
{
Q_OBJECT
public:
RegDisplayPanel(QWidget *parent, IoBackend *io_backend, const SocRegRef& reg);
~RegDisplayPanel();
void AllowWrite(bool en);
void Reload();
QWidget *GetWidget();
bool Quit();
protected:
IoBackend::WriteMode EditModeToWriteMode(RegLineEdit::EditMode mode);
IoBackend *m_io_backend;
const SocRegRef& m_reg;
bool m_allow_write;
RegLineEdit *m_raw_val_edit;
RegSexyDisplay *m_sexy_display;
GrowingTableWidget *m_value_table;
QStyledItemDelegate *m_table_delegate;
QItemEditorFactory *m_table_edit_factory;
RegItemEditorCreator *m_regedit_creator;
QLabel *m_raw_val_name;
QFont m_reg_font;
QLabel *m_desc;
QWidget *m_viewport;
QScrollArea *m_scroll;
private slots:
void OnRawRegValueReturnPressed();
};
#endif /* REGDISPLAYPANEL_H */