Salome HOME
PR : merge branch V1_2c dans branche principale pour V1_3_0_b1
[modules/kernel.git] / src / SALOMEGUI / SALOMEGUI_ExternalBrowserDlg.cxx
1 //  File   : SALOMEGUI_ExternalBrowserDlg.cxx
2 //  Author : Nichael ZORIN
3 //  Module : SALOME
4 //  $Header: /dn05/salome/CVS/SALOME_ROOT/SALOME/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx
5
6 using namespace std;
7 #include "SALOMEGUI_ExternalBrowserDlg.h"
8
9 #include <qbuttongroup.h>
10 #include <qlabel.h>
11 #include <qpushbutton.h>
12 #include <qmessagebox.h>
13 #include <qlayout.h>
14
15 #include "QAD_FileDlg.h"
16 #include "QAD_Tools.h"
17
18 /* 
19  *  Constructs a modal SALOMEGUI_ExternalBowserDlg which is a child of 'parent'
20  *
21  */
22
23 SALOMEGUI_ExternalBrowserDlg::SALOMEGUI_ExternalBrowserDlg( QWidget* parent )
24   : QDialog( parent, "SALOMEGUI_ExternalBrowserDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
25 {
26   setCaption( tr( "MEN_EXTERNAL_BROWSER"  ) );
27   setSizeGripEnabled( true );
28  
29   QGridLayout* TopLayout = new QGridLayout( this ); 
30   TopLayout->setSpacing( 6 );
31   TopLayout->setMargin( 11 );
32   
33   QGroupBox* TopGroup = new QGroupBox( this, "TopGroup" );
34   TopGroup->setColumnLayout(0, Qt::Vertical );
35   TopGroup->layout()->setSpacing( 0 );
36   TopGroup->layout()->setMargin( 0 );
37   QGridLayout* TopGroupLayout = new QGridLayout( TopGroup->layout() );
38   TopGroupLayout->setAlignment( Qt::AlignTop );
39   TopGroupLayout->setSpacing( 6 );
40   TopGroupLayout->setMargin( 11 );
41   
42   QLabel* LabelApp = new QLabel( tr( "MEN_EXTERNAL_BROWSER_APP" ), TopGroup, "LabelApp" );
43   TopGroupLayout->addWidget( LabelApp, 0, 0 );
44   ApplicationLine = new QLineEdit( TopGroup );
45   ApplicationLine->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
46   ApplicationLine->setMinimumSize( 250, 0 );
47   LabelApp->setBuddy(ApplicationLine);
48   TopGroupLayout->addWidget( ApplicationLine, 0, 1 );
49   
50   QLabel* LabelParams = new QLabel( tr( "MEN_EXTERNAL_BROWSER_PARAMS" ), TopGroup, "LabelParams" );
51   TopGroupLayout->addWidget( LabelParams, 1, 0 );
52   ParametersLine = new QLineEdit( TopGroup );
53   ParametersLine->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
54   ParametersLine->setMinimumSize( 250, 0 );
55   LabelParams->setBuddy(ParametersLine);
56   TopGroupLayout->addWidget( ParametersLine, 1, 1 );
57   
58   browseButton = new QPushButton( tr( "MEN_EXTERNAL_BROWSER_BROWSE" ) , TopGroup, "browseButton" );
59   TopGroupLayout->addWidget( browseButton, 0, 2 );
60   
61   QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
62   GroupButtons->setGeometry( QRect( 10, 10, 381, 48 ) ); 
63   GroupButtons->setColumnLayout(0, Qt::Vertical );
64   GroupButtons->layout()->setSpacing( 0 );
65   GroupButtons->layout()->setMargin( 0 );
66   QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() );
67   GroupButtonsLayout->setAlignment( Qt::AlignTop );
68   GroupButtonsLayout->setSpacing( 6 );
69   GroupButtonsLayout->setMargin( 11 );
70   
71   QPushButton* buttonOk = new QPushButton( tr( "BUT_OK" ), GroupButtons, "buttonOk" );
72   buttonOk->setAutoDefault( TRUE );
73   buttonOk->setDefault( TRUE );
74   GroupButtonsLayout->addWidget( buttonOk, 0, 0 );
75   GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
76   QPushButton* buttonCancel = new QPushButton( tr( "BUT_CANCEL" ) , GroupButtons, "buttonCancel" );
77   buttonCancel->setAutoDefault( TRUE );
78   GroupButtonsLayout->addWidget( buttonCancel, 0, 2 );
79   
80   TopLayout->addWidget( TopGroup,     0, 0 );
81   TopLayout->addWidget( GroupButtons, 1, 0 );
82   
83   // signals and slots connections
84   connect( browseButton, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
85   connect( buttonOk,     SIGNAL( clicked() ), this, SLOT( accept() ) );
86   connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
87   
88 }
89
90 void SALOMEGUI_ExternalBrowserDlg::onButtonClicked()
91 {
92   QStringList flt;
93   flt.append( "ALL Files(*)" );
94   QString aDir = QAD_Tools::getDirFromPath ( ApplicationLine->text() );
95   QFileInfo aFileInfo = QAD_FileDlg::getFileName (this, aDir, flt, tr( "MEN_EXTERNAL_BROWSER_CHOOSEAPP" ), true);
96   if(aFileInfo.exists())
97     ApplicationLine->setText(aFileInfo.filePath());
98 }
99
100 void SALOMEGUI_ExternalBrowserDlg::setSettings(const QString& AppString, const QString& ParamsString)
101 {
102   ApplicationLine->setText(AppString);
103   ParametersLine->setText(ParamsString);
104 }
105
106 QString SALOMEGUI_ExternalBrowserDlg::getApp()
107 {
108   return ApplicationLine->text();
109 }
110
111 QString SALOMEGUI_ExternalBrowserDlg::getParams()
112 {
113   return ParametersLine->text();
114 }
115
116 void SALOMEGUI_ExternalBrowserDlg::accept() {
117
118   QFileInfo aFile = QFileInfo(ApplicationLine->text());
119    
120   if (aFile.isFile() && !aFile.isExecutable())
121     QMessageBox::warning ( this, tr( "Error" ) , tr ( "MEN_EXTERNAL_BROWSER_NOTEXECUTABLE" ));
122   else
123     QDialog::accept();
124 }
125
126 /*  
127  *  Destroys the object and frees any allocated resources
128  */
129 SALOMEGUI_ExternalBrowserDlg::~SALOMEGUI_ExternalBrowserDlg()
130 {
131     // no need to delete child widgets, Qt does it all for us
132 }
133
134