Salome HOME
Copyrights update
[modules/gui.git] / src / LightApp / LightApp_NameDlg.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_NameDlg.cxx\r
20 //  Author : Vadim SANDLER\r
21 //  $Header$\r
22 \r
23 #include <LightApp_NameDlg.h>\r
24 #include <SUIT_Application.h>\r
25 #include <SUIT_Desktop.h>\r
26 #include <SUIT_Tools.h>\r
27 \r
28 #include <qgroupbox.h>\r
29 #include <qlabel.h>\r
30 #include <qlineedit.h>\r
31 #include <qpushbutton.h>\r
32 #include <qlayout.h>\r
33 \r
34 #ifndef WIN32\r
35 using namespace std;\r
36 #endif\r
37 \r
38 /*!\r
39   Constructor\r
40 */\r
41 LightApp_NameDlg::LightApp_NameDlg( QWidget* parent )\r
42 : QDialog( parent ? parent : NULL,//application()->desktop(), \r
43 "LightApp_NameDlg",\r
44 true,\r
45 WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )\r
46 {\r
47   setCaption( tr("TLT_RENAME") );\r
48   setSizeGripEnabled( TRUE );\r
49 \r
50   QVBoxLayout* topLayout = new QVBoxLayout( this );\r
51   topLayout->setMargin( 11 ); topLayout->setSpacing( 6 );\r
52 \r
53   /***************************************************************/\r
54   QGroupBox* GroupC1 = new QGroupBox( this, "GroupC1" );\r
55   GroupC1->setColumnLayout(0, Qt::Vertical );\r
56   GroupC1->layout()->setMargin( 0 ); GroupC1->layout()->setSpacing( 0 );\r
57   QHBoxLayout* GroupC1Layout = new QHBoxLayout( GroupC1->layout() );\r
58   GroupC1Layout->setAlignment( Qt::AlignTop );\r
59   GroupC1Layout->setMargin( 11 ); GroupC1Layout->setSpacing( 6 );\r
60   \r
61   QLabel* TextLabel = new QLabel( GroupC1, "TextLabel1" );\r
62   TextLabel->setText( tr( "NAME_LBL" ) );\r
63   GroupC1Layout->addWidget( TextLabel );\r
64   \r
65   myLineEdit = new QLineEdit( GroupC1, "LineEdit1" );\r
66   myLineEdit->setMinimumSize( 250, 0 );\r
67   GroupC1Layout->addWidget( myLineEdit );\r
68   \r
69   /***************************************************************/\r
70   QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );\r
71   GroupButtons->setColumnLayout(0, Qt::Vertical );\r
72   GroupButtons->layout()->setMargin( 0 ); GroupButtons->layout()->setSpacing( 0 ); \r
73   QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() );\r
74   GroupButtonsLayout->setAlignment( Qt::AlignTop );\r
75   GroupButtonsLayout->setMargin( 11 ); GroupButtonsLayout->setSpacing( 6 );\r
76   \r
77   myButtonOk = new QPushButton( GroupButtons, "buttonOk" );\r
78   myButtonOk->setText( tr( "BUT_OK"  ) );\r
79   myButtonOk->setAutoDefault( TRUE ); myButtonOk->setDefault( TRUE );\r
80   GroupButtonsLayout->addWidget( myButtonOk );\r
81 \r
82   GroupButtonsLayout->addStretch();\r
83   \r
84   myButtonCancel = new QPushButton( GroupButtons, "buttonCancel" );\r
85   myButtonCancel->setText( tr( "BUT_CANCEL"  ) );\r
86   myButtonCancel->setAutoDefault( TRUE );\r
87   GroupButtonsLayout->addWidget( myButtonCancel );\r
88   /***************************************************************/\r
89   \r
90   topLayout->addWidget( GroupC1 );\r
91   topLayout->addWidget( GroupButtons );\r
92   \r
93   // signals and slots connections\r
94   connect( myButtonOk,     SIGNAL( clicked() ), this, SLOT( accept() ) );\r
95   connect( myButtonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );\r
96   \r
97   /* Move widget on the botton right corner of main widget */\r
98   SUIT_Tools::centerWidget( this, parent );\r
99 }\r
100 \r
101 /*!\r
102   Destructor\r
103 */\r
104 LightApp_NameDlg::~LightApp_NameDlg()\r
105 {\r
106 }\r
107 \r
108 /*!\r
109   Sets name\r
110 */\r
111 void LightApp_NameDlg::setName( const QString& name )\r
112 {\r
113   myLineEdit->setText( name );\r
114   myLineEdit->end(false);\r
115   myLineEdit->home(true);\r
116 }\r
117 \r
118 /*!\r
119   Returns name entered by user\r
120 */\r
121 QString LightApp_NameDlg::name()\r
122 {\r
123   return myLineEdit->text();\r
124 }\r
125 \r
126 void LightApp_NameDlg::accept()\r
127 {\r
128   if ( name().stripWhiteSpace().isEmpty() )\r
129     return;\r
130   QDialog::accept();\r
131 }\r
132 \r
133 /*!\r
134   Creates modal <Rename> dialog and returns name entered [ static ]\r
135 */\r
136 QString LightApp_NameDlg::getName( QWidget* parent, const QString& oldName )\r
137 {\r
138   QString n;\r
139   LightApp_NameDlg* dlg = new LightApp_NameDlg( parent );\r
140   if ( !oldName.isNull() )\r
141     dlg->setName( oldName );\r
142   if ( dlg->exec() == QDialog::Accepted ) \r
143     n = dlg->name();\r
144   delete dlg;\r
145   return n;\r
146 }\r