18 #include <QApplication>
19 #include <QHeaderView>
20 #include <QItemSelectionModel>
22 #include <QModelIndex>
27 #include <QVBoxLayout>
35 mToggleNetsAction(new
QAction(this)),
36 mToggleGatesAction(new
QAction(this)),
37 mRenameAction(new
QAction(this)),
38 mDeleteAction(new
QAction(this)),
39 mToggleExpandTreeAction(new
QAction(this)),
53 mToggleNetsAction->
setToolTip(
"Toggle net visibility");
54 mToggleGatesAction->
setToolTip(
"Toggle gate visibility");
58 mToggleExpandTreeAction->
setToolTip(
"Toggle expand all / collapse all");
63 mTreeView->
setModel(mModuleProxyModel);
82 enableDeleteAction(
false);
83 mIgnoreSelectionChange =
false;
118 void ModuleWidget::enableDeleteAction(
bool enable)
124 void ModuleWidget::handleToggleNetsClicked()
136 void ModuleWidget::handleToggleGatesClicked()
148 void ModuleWidget::handleToggleExpandTreeClicked()
162 void ModuleWidget::handleRenameClicked()
164 ModuleItem* item = getModuleItemFromIndex(mTreeView->
currentIndex());
175 toolbar->
addAction(mToggleExpandTreeAction);
213 QString output =
"navigation regular expression '" + text +
"' entered.";
221 if (!
index.isValid())
253 mIgnoreSelectionChange =
true;
259 ModuleItem* mi = getModuleItemFromIndex(current);
261 enableDeleteAction(
false);
271 if (mIgnoreSelectionChange || mModuleModel->
isModifying())
280 for (
const auto&
index : current_selection)
298 if (selectedMods.
size() == 1)
301 enableDeleteAction(
true);
303 else if (selectedGats.
size() == 1)
306 enableDeleteAction(
false);
310 enableDeleteAction(
false);
331 mIgnoreSelectionChange =
true;
347 mTreeView->
selectionModel()->
select(module_selection, QItemSelectionModel::SelectionFlag::ClearAndSelect);
349 mIgnoreSelectionChange =
false;
372 return mDisabledIconStyle;
377 return mActiveIconStyle;
382 return mModuleProxyModel;
387 return mShowNetsIconPath;
392 return mHideNetsIconPath;
397 return mShowGatesIconPath;
402 return mHideGatesIconPath;
407 return mSearchIconPath;
412 return mSearchIconStyle;
417 return mSearchActiveIconStyle;
422 return mDeleteIconPath;
427 return mRenameIconPath;
432 return mExpandedIconPath;
437 return mCollapsedIconPath;
442 mDisabledIconStyle =
style;
447 mActiveIconStyle =
style;
452 mShowNetsIconPath = path;
457 mHideNetsIconPath = path;
462 mShowGatesIconPath = path;
467 mHideGatesIconPath = path;
472 mSearchIconPath = path;
477 mSearchIconStyle =
style;
482 mSearchActiveIconStyle =
style;
487 mDeleteIconPath = path;
492 mRenameIconPath = path;
497 mExpandedIconPath = path;
502 mCollapsedIconPath = path;
505 void ModuleWidget::deleteSelectedItem()
512 ModuleItem* selectedItem = getModuleItemFromIndex(mTreeView->
currentIndex());
513 if(selectedItem->getParent() !=
nullptr)
524 void ModuleWidget::handleDeleteShortcutOnFocusChanged(
QWidget* oldWidget,
QWidget* newWidget)
527 if(!newWidget)
return;
528 if(newWidget->
parent() ==
this)
QModelIndex getIndexFromItem(BaseTreeItem *item) const
QStringList headerLabels() const
static SettingsItemKeybind * sSettingDeleteItem
Abstract class for Widgets within HAL's ContentArea.
QKeySequence mSearchKeysequence
QShortcut * mSearchShortcut
QVBoxLayout * mContentLayout
void openGateInView(u32 gateId)
void openModuleInView(u32 moduleId, bool unfold)
void openNetEndpointsInView(u32 netId)
static void addPluginSubmenus(QMenu *contextMenu, Netlist *netlist, const std::vector< u32 > &modules, const std::vector< u32 > &gates, const std::vector< u32 > &nets)
bool is_top_module() const
An item in the ModuleModel.
TreeItemType getType() const
A model for displaying multiple netlist elements.
QList< ModuleItem * > getItems(const u32 id, ModuleItem::TreeItemType type=ModuleItem::TreeItemType::Module) const
ModuleItem * getItem(const QModelIndex &index) const
void populateTree(const QVector< u32 > &modIds={}, const QVector< u32 > &gatIds={}, const QVector< u32 > &netIds={})
Enables filtering in the ModuleModel.
void startSearch(QString text, int options) override
Wraps the QTreeView used for the ModuleWidget.
void collapseAllModules()
bool toggleStateExpanded() const
void setDefaultColumnWidth()
Module * get_top_module() const
Module * get_module_by_id(u32 module_id) const
void deleteModule(const u32 id)
void changeElementNameDialog(ModuleItem::TreeItemType type, u32 id)
void moduleSubmoduleRemoved(Module *m, const u32 removed_module) const
A QFrame with a QLineEdit that can be used to input a substring to search for.
void setColumnNames(QList< QString > list)
void triggerNewSearch(const QString &text, int searchOptions)
void setFocus(ItemType ftype, u32 fid, Subfocus sfoc=Subfocus::None, u32 sfinx=0)
void selectionChanged(void *sender)
void relaySelectionChanged(void *sender)
QList< u32 > selectedModulesList() const
void registerSender(void *sender, QString name)
void keySequenceChanged(QKeySequence value)
#define log_info(channel,...)
const Module * module(const Gate *g, const NodeBoxes &boxes)
QIcon getStyledSvgIcon(const QString &from_to_colors_enabled, const QString &svg_path, QString from_to_colors_disabled=QString())
GraphContextManager * gGraphContextManager
SelectionRelay * gSelectionRelay
NetlistRelay * gNetlistRelay
QModelIndex currentIndex() const const
void doubleClicked(const QModelIndex &index)
void setEditTriggers(QAbstractItemView::EditTriggers triggers)
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
void setSelectionMode(QAbstractItemView::SelectionMode mode)
QItemSelectionModel * selectionModel() const const
void setIcon(const QIcon &icon)
void triggered(bool checked)
void focusChanged(QWidget *old, QWidget *now)
void setFrameStyle(int style)
void select(const QModelIndex &topLeft, const QModelIndex &bottomRight)
void currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
virtual void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
void append(const T &value)
bool isValid() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QObject * parent() const const
QObject * sender() const const
bool isValid() const const
QSet::iterator insert(const T &value)
void setEnabled(bool enable)
void setKey(const QKeySequence &key)
virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const const override
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const const override
void setFilterRegularExpression(const QString &pattern)
virtual void setSourceModel(QAbstractItemModel *sourceModel) override
void sortByColumn(int column)
void setExpandsOnDoubleClick(bool enable)
virtual QModelIndex indexAt(const QPoint &point) const const override
virtual void setModel(QAbstractItemModel *model) override
void setSortingEnabled(bool enable)