added browsing history
This commit is contained in:
parent
3eb34bf38b
commit
82c9fef3de
@ -88,18 +88,42 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), net
|
|||||||
actionFirst = new QAction("", this);
|
actionFirst = new QAction("", this);
|
||||||
actionFirst->setIcon(QIcon(":/icons/resources/resultset_first.png"));
|
actionFirst->setIcon(QIcon(":/icons/resources/resultset_first.png"));
|
||||||
actionFirst->setEnabled(false);
|
actionFirst->setEnabled(false);
|
||||||
|
connect(actionFirst, &QAction::triggered, this, [this] {
|
||||||
|
history_ignore = true;
|
||||||
|
history_index = 0;
|
||||||
|
treeWidget->setCurrentItem(history.at(history_index));
|
||||||
|
updateButtons();
|
||||||
|
});
|
||||||
|
|
||||||
actionPrev = new QAction("", this);
|
actionPrev = new QAction("", this);
|
||||||
actionPrev->setIcon(QIcon(":/icons/resources/resultset_previous.png"));
|
actionPrev->setIcon(QIcon(":/icons/resources/resultset_previous.png"));
|
||||||
actionPrev->setEnabled(false);
|
actionPrev->setEnabled(false);
|
||||||
|
connect(actionPrev, &QAction::triggered, this, [this] {
|
||||||
|
history_ignore = true;
|
||||||
|
history_index--;
|
||||||
|
treeWidget->setCurrentItem(history.at(history_index));
|
||||||
|
updateButtons();
|
||||||
|
});
|
||||||
|
|
||||||
actionNext = new QAction("", this);
|
actionNext = new QAction("", this);
|
||||||
actionNext->setIcon(QIcon(":/icons/resources/resultset_next.png"));
|
actionNext->setIcon(QIcon(":/icons/resources/resultset_next.png"));
|
||||||
actionNext->setEnabled(false);
|
actionNext->setEnabled(false);
|
||||||
|
connect(actionNext, &QAction::triggered, this, [this] {
|
||||||
|
history_ignore = true;
|
||||||
|
history_index++;
|
||||||
|
treeWidget->setCurrentItem(history.at(history_index));
|
||||||
|
updateButtons();
|
||||||
|
});
|
||||||
|
|
||||||
actionLast = new QAction("", this);
|
actionLast = new QAction("", this);
|
||||||
actionLast->setIcon(QIcon(":/icons/resources/resultset_last.png"));
|
actionLast->setIcon(QIcon(":/icons/resources/resultset_last.png"));
|
||||||
actionLast->setEnabled(false);
|
actionLast->setEnabled(false);
|
||||||
|
connect(actionLast, &QAction::triggered, this, [this] {
|
||||||
|
history_ignore = true;
|
||||||
|
history_index = int(history.size() - 1);
|
||||||
|
treeWidget->setCurrentItem(history.at(history_index));
|
||||||
|
updateButtons();
|
||||||
|
});
|
||||||
|
|
||||||
QToolBar *toolbar = new QToolBar();
|
QToolBar *toolbar = new QToolBar();
|
||||||
toolbar->addAction(actionFirst);
|
toolbar->addAction(actionFirst);
|
||||||
@ -148,13 +172,43 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), net
|
|||||||
connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked);
|
connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked);
|
||||||
|
|
||||||
connect(treeWidget, SIGNAL(itemSelectionChanged()), SLOT(onItemSelectionChanged()));
|
connect(treeWidget, SIGNAL(itemSelectionChanged()), SLOT(onItemSelectionChanged()));
|
||||||
|
|
||||||
|
history_index = -1;
|
||||||
|
history_ignore = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DesignWidget::~DesignWidget() {}
|
DesignWidget::~DesignWidget() {}
|
||||||
|
|
||||||
|
void DesignWidget::updateButtons()
|
||||||
|
{
|
||||||
|
int count = int(history.size());
|
||||||
|
actionFirst->setEnabled(history_index > 0);
|
||||||
|
actionPrev->setEnabled(history_index > 0);
|
||||||
|
actionNext->setEnabled(history_index < (count - 1));
|
||||||
|
actionLast->setEnabled(history_index < (count - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
void DesignWidget::addToHistory(QTreeWidgetItem *item)
|
||||||
|
{
|
||||||
|
if (!history_ignore) {
|
||||||
|
int count = int(history.size());
|
||||||
|
for (int i = count - 1; i > history_index; i--)
|
||||||
|
history.pop_back();
|
||||||
|
history.push_back(item);
|
||||||
|
history_index++;
|
||||||
|
}
|
||||||
|
history_ignore = false;
|
||||||
|
updateButtons();
|
||||||
|
}
|
||||||
|
|
||||||
void DesignWidget::newContext(Context *ctx)
|
void DesignWidget::newContext(Context *ctx)
|
||||||
{
|
{
|
||||||
treeWidget->clear();
|
treeWidget->clear();
|
||||||
|
history_ignore = false;
|
||||||
|
history_index = -1;
|
||||||
|
history.clear();
|
||||||
|
updateButtons();
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
nameToItem[i].clear();
|
nameToItem[i].clear();
|
||||||
|
|
||||||
@ -444,6 +498,8 @@ void DesignWidget::onItemSelectionChanged()
|
|||||||
|
|
||||||
std::vector<DecalXY> decals;
|
std::vector<DecalXY> decals;
|
||||||
|
|
||||||
|
addToHistory(clickItem);
|
||||||
|
|
||||||
clearProperties();
|
clearProperties();
|
||||||
if (type == ElementType::BEL) {
|
if (type == ElementType::BEL) {
|
||||||
IdString c = static_cast<IdStringTreeItem *>(clickItem)->getData();
|
IdString c = static_cast<IdStringTreeItem *>(clickItem)->getData();
|
||||||
|
@ -57,6 +57,8 @@ class DesignWidget : public QWidget
|
|||||||
QString getElementTypeName(ElementType type);
|
QString getElementTypeName(ElementType type);
|
||||||
ElementType getElementTypeByName(QString type);
|
ElementType getElementTypeByName(QString type);
|
||||||
int getElementIndex(ElementType type);
|
int getElementIndex(ElementType type);
|
||||||
|
void updateButtons();
|
||||||
|
void addToHistory(QTreeWidgetItem *item);
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void info(std::string text);
|
void info(std::string text);
|
||||||
void selected(std::vector<DecalXY> decal);
|
void selected(std::vector<DecalXY> decal);
|
||||||
@ -86,6 +88,9 @@ class DesignWidget : public QWidget
|
|||||||
QMap<QString, QtProperty *> idToProperty;
|
QMap<QString, QtProperty *> idToProperty;
|
||||||
|
|
||||||
QMap<QString, QTreeWidgetItem *> nameToItem[6];
|
QMap<QString, QTreeWidgetItem *> nameToItem[6];
|
||||||
|
std::vector<QTreeWidgetItem *> history;
|
||||||
|
int history_index;
|
||||||
|
bool history_ignore;
|
||||||
|
|
||||||
QTreeWidgetItem *nets_root;
|
QTreeWidgetItem *nets_root;
|
||||||
QTreeWidgetItem *cells_root;
|
QTreeWidgetItem *cells_root;
|
||||||
|
Loading…
Reference in New Issue
Block a user