Salome HOME
Copyrights update
[modules/gui.git] / src / LightApp / LightApp_ModuleDlg.cxx
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 //  File   : LightApp_ModuleDlg.cxx\r
20 //  Author : Michael Zorin (mzn)\r
21 //  Module : LightApp\r
22 \r
23 #include <LightApp_ModuleDlg.h>\r
24 \r
25 #include <qframe.h>\r
26 #include <qlabel.h>\r
27 #include <qpushbutton.h>\r
28 #include <qlayout.h>\r
29 #include <qpixmap.h>\r
30 \r
31 #ifndef WIN32\r
32 using namespace std;\r
33 #endif\r
34 \r
35 /*!Default icon*/\r
36 static const char* const default_icon[] = { \r
37 "48 48 17 1",\r
38 ". c None",\r
39 "# c #161e4c",\r
40 "b c #1d3638",\r
41 "e c #2f585b",\r
42 "i c #345b5e",\r
43 "c c #386266",\r
44 "g c #3f7477",\r
45 "d c #4d8589",\r
46 "m c #519099",\r
47 "o c #6abbc1",\r
48 "a c #70c9d3",\r
49 "f c #79ddea",\r
50 "n c #7adff2",\r
51 "k c #7ce2f4",\r
52 "j c #993550",\r
53 "h c #d84b71",\r
54 "l c #ef537d",\r
55 "................................................",\r
56 "................................................",\r
57 "................................................",\r
58 "................................................",\r
59 "................................................",\r
60 "................########.########.########......",\r
61 "...............#aaaaaa###aaaaaa###aaaaaa##......",\r
62 "..............#aaaaaa#b#aaaaaa#b#aaaaaa#c#......",\r
63 ".............########b########b########cc#......",\r
64 ".............#dddddd#b#dddddd#b#dddddd#cc#......",\r
65 "...........########d########d########d#cc#......",\r
66 "..........#aaaaaa###aaaaaa###aaaaaa##d#cc#......",\r
67 ".........#aaaaaa#b#aaaaaa#b#aaaaaa#c#d#cc#......",\r
68 "........########b########e########cc#d#c#.......",\r
69 "........#dddddd#b#dddddd#e#ffffff#cc#d####......",\r
70 "......########d########d########f#cc###g##......",\r
71 ".....#aaaaaa###aaaaaa###hhhhhh##f#cc#gg#c#......",\r
72 "....#aaaaaa#b#aaaaaa#i#hhhhhh#j#f#cc###cc#......",\r
73 "...########b########i########jj#f#c#gg#cc#......",\r
74 "...#kkkkkk#b#kkkkkk#i#llllll#jj#f####g#cc#......",\r
75 "...#kkkkkk#b#kkkkkk#i#llllll#jj###m##g#cc#......",\r
76 "...#knnkkk#b#kkkkkk#i#llllll#jj#mm#c#g#cc#......",\r
77 "...#knnkkk#b#kkkkkk#i#llllll#jj###cc#g#c#.......",\r
78 "...#kkkkkk#b#kkkkkk#i#llllll#j#dd#cc#g####......",\r
79 "...#kkkkkk###kkkkkk###llllll####d#cc###g##......",\r
80 "...########g########g########o##d#cc#gg#c#......",\r
81 "....#gggggg#b#gggggg#b#oooooo#c#d#cc###cc#......",\r
82 "...########b########b########cc#d#c#gg#cc#......",\r
83 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#d####g#cc#......",\r
84 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###g##g#cc#......",\r
85 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#gg#c#g#cc#......",\r
86 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###cc#g#c#.......",\r
87 "...#kkkkkk#b#kkkkkk#b#kkkkkk#c#gg#cc#g##........",\r
88 "...#kkkkkk###kkkkkk###kkkkkk####g#cc###.........",\r
89 "...########g########g########g##g#cc#...........",\r
90 "....#gggggg#b#gggggg#b#gggggg#c#g#cc#...........",\r
91 "...########b########b########cc#g#c#............",\r
92 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#g##.............",\r
93 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###..............",\r
94 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................",\r
95 "...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................",\r
96 "...#kkkkkk#b#kkkkkk#b#kkkkkk#c#.................",\r
97 "...#kkkkkk###kkkkkk###kkkkkk##..................",\r
98 "...########.########.########...................",\r
99 "................................................",\r
100 "................................................",\r
101 "................................................",\r
102 "................................................"};\r
103 \r
104 //==============================================================================================================================\r
105 /*!\r
106  *  LightApp_ModuleDlg::LightApp_ModuleDlg \n\r
107  *\r
108  *  Constructor.\r
109  */\r
110 //==============================================================================================================================\r
111 LightApp_ModuleDlg::LightApp_ModuleDlg ( QWidget * parent, const QString& component, const QPixmap icon )\r
112      : QDialog ( parent, "ActivateModuleDlg", true,  WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )\r
113 {\r
114   QPixmap defaultIcon( ( const char** ) default_icon );\r
115   setCaption( tr( "CAPTION" ) );\r
116   setSizeGripEnabled( TRUE );\r
117   \r
118   QGridLayout* ActivateModuleDlgLayout = new QGridLayout( this ); \r
119   ActivateModuleDlgLayout->setMargin( 11 ); ActivateModuleDlgLayout->setSpacing( 6 );\r
120 \r
121   // Module's name and icon\r
122   myComponentFrame = new QFrame( this, "myComponentFrame" );\r
123   myComponentFrame->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding ) );\r
124   myComponentFrame->setMinimumHeight( 100 );\r
125   myComponentFrame->setFrameStyle( QFrame::Box | QFrame::Sunken );\r
126   \r
127   QGridLayout* myComponentFrameLayout = new QGridLayout( myComponentFrame ); \r
128   myComponentFrameLayout->setMargin( 11 ); myComponentFrameLayout->setSpacing( 6 );\r
129 \r
130   // --> icon\r
131   myComponentIcon = new QLabel( myComponentFrame, "myComponentIcon" );\r
132   myComponentIcon->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );\r
133   myComponentIcon->setPixmap( !icon.isNull() ? icon : defaultIcon );\r
134   myComponentIcon->setScaledContents( false );\r
135   myComponentIcon->setAlignment( AlignCenter );\r
136   // --> name\r
137   myComponentLab = new QLabel( component, myComponentFrame, "myComponentLab" );\r
138   QFont fnt = myComponentLab->font(); fnt.setBold( TRUE ); myComponentLab->setFont( fnt ); \r
139   myComponentLab->setAlignment( AlignCenter );\r
140 \r
141   myComponentFrameLayout->addWidget( myComponentIcon, 0, 0 );\r
142   myComponentFrameLayout->addWidget( myComponentLab,  0, 1 );\r
143 \r
144   // Info\r
145   QVBoxLayout* infoLayout = new QVBoxLayout();\r
146   infoLayout->setMargin( 0 ); infoLayout->setSpacing( 6 );\r
147   \r
148   // --> top line\r
149   QFrame* myLine1 = new QFrame( this, "myLine1" );\r
150   myLine1->setFrameStyle( QFrame::HLine | QFrame::Plain );\r
151   // --> info label  \r
152   myInfoLabel = new QLabel( tr ("ActivateComponent_DESCRIPTION"), this, "myInfoLabel" );\r
153   myInfoLabel->setAlignment( AlignCenter );\r
154   // --> bottom line\r
155   QFrame*  myLine2 = new QFrame( this, "myLine2" );\r
156   myLine2->setFrameStyle( QFrame::HLine | QFrame::Plain );\r
157   \r
158   infoLayout->addStretch();\r
159   infoLayout->addWidget( myLine1 );\r
160   infoLayout->addWidget( myInfoLabel );\r
161   infoLayout->addWidget( myLine2 );\r
162   infoLayout->addStretch();\r
163   \r
164   // Buttons\r
165   QHBoxLayout* btnLayout = new QHBoxLayout(); \r
166   btnLayout->setMargin( 0 ); btnLayout->setSpacing( 6 );\r
167   \r
168   // --> New\r
169   myNewBtn = new QPushButton( tr( "NEW" ), this, "myNewBtn" );\r
170   myNewBtn->setDefault( true ); myNewBtn->setAutoDefault( true );\r
171   // --> Open\r
172   myOpenBtn = new QPushButton( tr( "OPEN" ), this, "myOpenBtn" );\r
173   myOpenBtn->setAutoDefault( true );\r
174   // --> Load\r
175   myLoadBtn = new QPushButton( tr( "LOAD" ), this, "myLoadBtn" );\r
176   myLoadBtn->setAutoDefault( true );\r
177   // --> Cancel\r
178   myCancelBtn = new QPushButton( tr( "CANCEL" ), this, "myCancelBtn" );\r
179   myCancelBtn->setAutoDefault( true );\r
180   \r
181   btnLayout->addWidget( myNewBtn );\r
182   btnLayout->addWidget( myOpenBtn );\r
183   btnLayout->addWidget( myLoadBtn );\r
184   btnLayout->addStretch();\r
185   btnLayout->addSpacing( 70 );\r
186   btnLayout->addStretch();\r
187   btnLayout->addWidget( myCancelBtn );\r
188 \r
189   ActivateModuleDlgLayout->addWidget(          myComponentFrame, 0,    0    );\r
190   ActivateModuleDlgLayout->addLayout(          infoLayout,       0,    1    );\r
191   ActivateModuleDlgLayout->addMultiCellLayout( btnLayout,        1, 1, 0, 1 );\r
192 \r
193   // signals and slots connections\r
194   connect( myNewBtn,    SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );\r
195   connect( myOpenBtn,   SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );\r
196   connect( myLoadBtn,   SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );\r
197   connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );\r
198 }\r
199 \r
200 //==============================================================================================================================\r
201 /*!\r
202  *  LightApp_ModuleDlg::onButtonClicked\r
203  *\r
204  *  Buttons slot\r
205  */\r
206 //==============================================================================================================================\r
207 void LightApp_ModuleDlg::onButtonClicked()\r
208 {\r
209   QPushButton* btn = ( QPushButton* )sender();\r
210   if ( btn == myNewBtn )\r
211     done( 1 );\r
212   if ( btn == myOpenBtn )\r
213     done( 2 );\r
214   if ( btn == myLoadBtn )\r
215     done( 3 );\r
216 }\r