HAL
context_manager_widget.h
Go to the documentation of this file.
1 // MIT License
2 //
3 // Copyright (c) 2019 Ruhr University Bochum, Chair for Embedded Security. All Rights reserved.
4 // Copyright (c) 2019 Marc Fyrbiak, Sebastian Wallat, Max Hoffmann ("ORIGINAL AUTHORS"). All rights reserved.
5 // Copyright (c) 2021 Max Planck Institute for Security and Privacy. All Rights reserved.
6 // Copyright (c) 2021 Jörn Langheinrich, Julian Speith, Nils Albartus, René Walendy, Simon Klix ("ORIGINAL AUTHORS"). All Rights reserved.
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 // SOFTWARE.
25 
26 #pragma once
27 
29 
30 #include "hal_core/defines.h"
31 
37 
38 #include <QListWidget>
39 #include <QPoint>
40 #include <QTableView>
41 #include <QPushButton>
42 #include <QMenu>
43 #include <QTreeView>
44 
45 
46 
47 namespace hal
48 {
49  class GraphContext;
50  class GraphTabWidget;
51 
61  {
62  Q_OBJECT
78 
79  public:
87  ContextManagerWidget(GraphTabWidget* tab_view, QWidget* parent = nullptr);
88 
94  void selectViewContext(GraphContext* context);
95 
102 
109 
114 
118  void handleItemDoubleClicked(const QModelIndex &proxyIndex);
119 
123  void handleItemClicked(const QModelIndex &proxyIndex);
124 
130  virtual void setupToolbar(Toolbar* toolbar) override;
131 
135  void enableSearchbar(bool enable);
136 
140  QString disabledIconStyle() const;
141  QString newViewIconPath() const;
142  QString newDirIconPath() const;
143  QString newViewIconStyle() const;
144  QString renameIconPath() const;
145  QString renameIconStyle() const;
146  QString deleteIconPath() const;
147  QString deleteIconStyle() const;
148  QString duplicateIconPath() const;
149  QString duplicateIconStyle() const;
150  QString openIconPath() const;
151  QString openIconStyle() const;
152  QString searchIconPath() const;
153  QString searchIconStyle() const;
156 
160  void setDisabledIconStyle(const QString &path);
161  void setNewViewIconPath(const QString &path);
162  void setNewViewIconStyle(const QString &style);
163  void setNewDirIconPath(const QString &path);
164  void setRenameIconPath(const QString &path);
165  void setRenameIconStyle(const QString &style);
166  void setDeleteIconPath(const QString &path);
167  void setDeleteIconStyle(const QString &style);
168  void setDuplicateIconPath(const QString &path);
169  void setDuplicateIconStyle(const QString &style);
170  void setOpenIconPath(const QString &path);
171  void setOpenIconStyle(const QString &style);
172  void setSearchIconPath(const QString &path);
173  void setSearchIconStyle(const QString &style);
176 
177  public Q_SLOTS:
178  //void handleContextCreated(GraphContext* context);
179  //void handleContextRenamed(GraphContext* context);
180  //void handleContextRemoved(GraphContext* context);
181 
185  void handleDataChanged();
186 
190  void updateSearchIcon();
191 
195  void selectDirectory(ContextTreeItem* item);
196 
197  void handleRowsInserted(const QModelIndex &parent, int first, int last);
198 
199  private Q_SLOTS:
200 
201  void handleFocusChanged(QWidget* oldWidget, QWidget* newWidget);
202  void handleCreateContextClicked();
203  void handleCreateDirectoryClicked();
204  void handleRenameClicked();
205  void handleDuplicateContextClicked();
206  void handleDeleteClicked();
207  void handleHeaderSectionClicked(int column);
208 
209  void handleContextMenuRequest(const QPoint& point);
210  void handleSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
211 
212  private:
213  GraphTabWidget* mTabView;
214 
215  QTreeView* mContextTreeView;
216  ContextTreeModel* mContextTreeModel;
217  ContextProxyModel* mContextTreeProxyModel;
218 
219  Searchbar* mSearchbar;
220 
221  QString mDisabledIconStyle;
222 
223  QAction* mNewDirectoryAction;
224 
225  QAction* mNewViewAction;
226  QString mNewViewIconPath;
227  QString mNewDirIconPath;
228  QString mNewViewIconStyle;
229 
230  QAction* mRenameAction;
231  QString mRenameIconPath;
232  QString mRenameIconStyle;
233 
234 
235  QAction* mDuplicateAction;
236  QString mDuplicateIconPath;
237  QString mDuplicateIconStyle;
238 
239  QAction* mDeleteAction;
240  QString mDeleteIconPath;
241  QString mDeleteIconStyle;
242 
243  QAction* mOpenAction;
244  QString mOpenIconPath;
245  QString mOpenIconStyle;
246 
247  QString mSearchIconPath;
248  QString mSearchIconStyle;
249  QString mSearchActiveIconStyle;
250 
251  QShortcut* mShortCutDeleteItem;
252 
253  void setToolbarButtonsEnabled(bool enabled);
254 
255  void toggleSearchbar();
256 
257  QList<QShortcut*> createShortcuts() override;
258  };
259 }
Abstract class for Widgets within HAL's ContentArea.
Provides the user with an interface to manage GraphContexts.
void setDuplicateIconStyle(const QString &style)
void selectViewContext(GraphContext *context)
void setSearchIconStyle(const QString &style)
void setRenameIconPath(const QString &path)
void setOpenIconPath(const QString &path)
void handleItemClicked(const QModelIndex &proxyIndex)
void setDeleteIconPath(const QString &path)
void handleItemDoubleClicked(const QModelIndex &proxyIndex)
ContextManagerWidget(GraphTabWidget *tab_view, QWidget *parent=nullptr)
void setDuplicateIconPath(const QString &path)
void setNewDirIconPath(const QString &path)
void setSearchActiveIconStyle(const QString &style)
void setRenameIconStyle(const QString &style)
void setDisabledIconStyle(const QString &path)
void setNewViewIconStyle(const QString &style)
void setOpenIconStyle(const QString &style)
void setNewViewIconPath(const QString &path)
void setSearchIconPath(const QString &path)
void setDeleteIconStyle(const QString &style)
virtual void setupToolbar(Toolbar *toolbar) override
void selectDirectory(ContextTreeItem *item)
void handleRowsInserted(const QModelIndex &parent, int first, int last)
A proxy model to filter the ContextTableModel by a given string.
Base model for the ContextManagerWidget to manage GraphContexts.
Logical container for modules, gates, and nets.
Definition: graph_context.h:55
A ContentWidget that holds all GraphWidget objects (GraphView) as tabs of a QTabWidget.
A QFrame with a QLineEdit that can be used to input a substring to search for.
Definition: searchbar.h:48
Toolbar for all ContentFrames and ContentWidgets.
Definition: toolbar.h:39
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SLOTSQ_SLOTS
QObject * parent() const const
QStyle * style() const const