1 // File : SALOMEGUI_ExternalBrowserDlg.cxx
2 // Author : Nichael ZORIN
6 #include "SALOMEGUI_ExternalBrowserDlg.h"
8 #include <qbuttongroup.h>
10 #include <qpushbutton.h>
11 #include <qmessagebox.h>
14 #include "QAD_FileDlg.h"
15 #include "QAD_Tools.h"
19 * Constructs a modal SALOMEGUI_ExternalBowserDlg which is a child of 'parent'
23 SALOMEGUI_ExternalBrowserDlg::SALOMEGUI_ExternalBrowserDlg( QWidget* parent )
24 : QDialog( parent, "SALOMEGUI_ExternalBrowserDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
26 setCaption( tr( "MEN_EXTERNAL_BROWSER" ) );
27 setSizeGripEnabled( true );
29 QGridLayout* TopLayout = new QGridLayout( this );
30 TopLayout->setSpacing( 6 );
31 TopLayout->setMargin( 11 );
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 );
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 );
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 );
58 browseButton = new QPushButton( tr( "MEN_EXTERNAL_BROWSER_BROWSE" ) , TopGroup, "browseButton" );
59 TopGroupLayout->addWidget( browseButton, 0, 2 );
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 );
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 );
80 TopLayout->addWidget( TopGroup, 0, 0 );
81 TopLayout->addWidget( GroupButtons, 1, 0 );
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() ) );
90 void SALOMEGUI_ExternalBrowserDlg::onButtonClicked()
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());
100 void SALOMEGUI_ExternalBrowserDlg::setSettings(const QString& AppString, const QString& ParamsString)
102 ApplicationLine->setText(AppString);
103 ParametersLine->setText(ParamsString);
106 QString SALOMEGUI_ExternalBrowserDlg::getApp()
108 return ApplicationLine->text();
111 QString SALOMEGUI_ExternalBrowserDlg::getParams()
113 return ParametersLine->text();
116 void SALOMEGUI_ExternalBrowserDlg::accept() {
118 QFileInfo aFile = QFileInfo(ApplicationLine->text());
120 if (aFile.isFile() && !aFile.isExecutable())
121 QMessageBox::warning ( this, tr( "Error" ) , tr ( "MEN_EXTERNAL_BROWSER_NOTEXECUTABLE" ));
127 * Destroys the object and frees any allocated resources
129 SALOMEGUI_ExternalBrowserDlg::~SALOMEGUI_ExternalBrowserDlg()
131 // no need to delete child widgets, Qt does it all for us