0029018: Documentation - Provide user guide for Qt browser
[occt.git] / tools / TreeModel / TreeModel_MessageDialog.cxx
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
16 #include <inspector/TreeModel_MessageDialog.hxx>
17
18 #include <QCheckBox>
19 #include <QCursor>
20 #include <QGridLayout>
21 #include <QLabel>
22 #include <QPushButton>
23 #include <QWidget>
24
25 // =======================================================================
26 // function : Constructor
27 // purpose :
28 // =======================================================================
29 TreeModel_MessageDialog::TreeModel_MessageDialog (QWidget* theParent, const QString& theInformation,
30                                                   const QString& theQuestion)
31 : QDialog (theParent), myDoNotShowItAgain (false), myPreviousAnswer (false), myInformation (theInformation),
32  myQuestion (theQuestion)
33 {
34   setWindowTitle ("Information");
35
36   QGridLayout* aLayout = new QGridLayout (this);
37   QString anInformation = theInformation;
38   if (!theQuestion.isEmpty())
39     anInformation += QString("\n\n%2").arg (myQuestion);
40   myInformationLabel = new QLabel (anInformation, this);
41   myInformationLabel->setWordWrap (true);
42   aLayout->addWidget (myInformationLabel, 0, 0, 1, 3);
43
44   myDoNotShowCheckBox = new QCheckBox ("Don't show this dialog again. Do the same next time.", this);
45   connect (myDoNotShowCheckBox, SIGNAL (toggled (bool)), this, SLOT (onDonNotShowToggled (bool) ));
46   aLayout->addWidget (myDoNotShowCheckBox, 1, 0, 1, 3);
47
48   myOkButton = new QPushButton ("Ok", this);
49   myCancelButton = new QPushButton ("Cancel", this);
50   connect (myOkButton, SIGNAL (clicked()), this, SLOT (onOkClicked() ));
51   connect (myCancelButton, SIGNAL (clicked()), this, SLOT (onCancelClicked() ));
52   aLayout->addWidget (myOkButton, 2, 1);
53   aLayout->addWidget (myCancelButton, 2, 2);
54
55   aLayout->setColumnStretch (0, 1);
56
57   myCancelButton->setDefault (true);
58
59   SetInformation (theInformation);
60 }
61
62 // =======================================================================
63 // function : Start
64 // purpose :
65 // =======================================================================
66 void TreeModel_MessageDialog::Start()
67 {
68   if (!myDoNotShowItAgain)
69   {
70     QString anInformation = myInformation;
71     if (!myQuestion.isEmpty())
72       anInformation += QString("\n\n%2").arg (myQuestion);
73     myInformationLabel->setText (anInformation);
74     exec();
75     return;
76   }
77
78   if (IsAccepted())
79     return;
80
81   // tool tip information window
82   QWidget* aWidget = new QWidget (this, Qt::Popup);
83   QVBoxLayout* aLayout = new QVBoxLayout (aWidget);
84   aLayout->addWidget (new QLabel(myInformation, aWidget));
85   aWidget->move(QCursor::pos());
86   aWidget->show();
87 }
88
89 // =======================================================================
90 // function : onOkClicked
91 // purpose :
92 // =======================================================================
93 void TreeModel_MessageDialog::onOkClicked()
94 {
95   myPreviousAnswer = true;
96   if (myDoNotShowItAgain)
97     setToolTipInfoMode();
98
99   accept();
100 }
101
102 // =======================================================================
103 // function : onCancelClicked
104 // purpose :
105 // =======================================================================
106 void TreeModel_MessageDialog::onCancelClicked()
107 {
108   myPreviousAnswer = false;
109   if (myDoNotShowItAgain)
110     setToolTipInfoMode();
111
112   reject();
113 }
114
115 // =======================================================================
116 // function : setToolTipInfoMode
117 // purpose :
118 // =======================================================================
119 void TreeModel_MessageDialog::setToolTipInfoMode()
120 {
121   //setWindowFlags (Qt::FramelessWindowHint);
122   //myDoNotShowCheckBox->setVisible (false);
123   //myOkButton->setVisible (false);
124   //myCancelButton->setVisible (false);
125 }