14bbbdcb |
1 | // Created on: 2017-06-16 |
2 | // Created by: Natalia ERMOLAEVA |
3 | // Copyright (c) 2017 OPEN CASCADE SAS |
4 | // |
5 | // This file is part of Open CASCADE Technology software library. |
6 | // |
7 | // This library is free software; you can redistribute it and/or modify it under |
8 | // the terms of the GNU Lesser General Public License version 2.1 as published |
9 | // by the Free Software Foundation, with special exception defined in the file |
10 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
11 | // distribution for complete text of the license and disclaimer of any warranty. |
12 | // |
13 | // Alternatively, this file may be used under the terms of Open CASCADE |
14 | // commercial license or contractual agreement. |
15 | |
0cb512c0 |
16 | #include <inspector/DFBrowserPane_ItemDelegateButton.hxx> |
14bbbdcb |
17 | |
18 | #include <QAbstractItemModel> |
19 | #include <QEvent> |
20 | #include <QPainter> |
21 | |
22 | // ======================================================================= |
23 | // function : Constructor |
24 | // purpose : |
25 | // ======================================================================= |
26 | DFBrowserPane_ItemDelegateButton::DFBrowserPane_ItemDelegateButton (QObject* theParent, const QString& theIcon) |
27 | : QStyledItemDelegate (theParent) |
28 | { |
29 | myIcon = QIcon (theIcon); |
30 | } |
31 | |
32 | // ======================================================================= |
33 | // function : paint |
34 | // purpose : |
35 | // ======================================================================= |
36 | void DFBrowserPane_ItemDelegateButton::paint (QPainter* thePainter, const QStyleOptionViewItem& theOption, |
37 | const QModelIndex& theIndex) const |
38 | { |
39 | if (!myFreeRows.contains (theIndex.row())) |
40 | thePainter->drawPixmap (theOption.rect, myIcon.pixmap (20,20)); |
41 | } |
42 | |
43 | // ======================================================================= |
44 | // function : editorEvent |
45 | // purpose : |
46 | // ======================================================================= |
47 | bool DFBrowserPane_ItemDelegateButton::editorEvent (QEvent* theEvent, QAbstractItemModel* theModel, |
48 | const QStyleOptionViewItem& theOption, const QModelIndex& theIndex) |
49 | { |
50 | if (theEvent->type() == QEvent::MouseButtonPress && !myFreeRows.contains (theIndex.row())) |
51 | emit buttonPressed (theIndex); |
52 | |
53 | return QStyledItemDelegate::editorEvent (theEvent, theModel, theOption, theIndex); |
54 | } |