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