00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <iostream>
00011 #include <fstream>
00012
00013
00014 #include "PSQt/PSQtGUIMain.h"
00015
00016 namespace PSQt {
00017
00018
00019
00020 PSQtGUIMain::PSQtGUIMain( QWidget *parent )
00021 {
00022 this -> setFrame();
00023
00024
00025
00026
00027
00028 m_but_fnxtc = new QPushButton( "xtc file:", this );
00029 m_but_fncfg = new QPushButton( "cfg file:", this );
00030 m_but_start = new QPushButton( "Start", this );
00031 m_but_stop = new QPushButton( "Stop", this );
00032 m_but_save = new QPushButton( "Save", this );
00033 m_but_exit = new QPushButton( "Exit", this );
00034 m_edi_fnxtc = new QLineEdit ("/reg/d/psdm/CXI/cxi49012/xtc/e158-r0001-s02-c00.xtc");
00035 m_edi_fncfg = new QLineEdit ("./psana.cfg");
00036
00037 connect( m_but_start, SIGNAL( clicked() ), this, SLOT( onButStart()) );
00038 connect( m_but_stop, SIGNAL( clicked() ), this, SLOT( onButStop()) );
00039 connect( m_but_exit, SIGNAL( clicked() ), this, SLOT( onButExit()) );
00040 connect( m_but_save, SIGNAL( clicked() ), this, SLOT( onButSave()) );
00041 connect( m_edi_fnxtc, SIGNAL( editingFinished() ), this, SLOT( onEditXtcFileName()) );
00042 connect( m_but_fnxtc, SIGNAL( clicked() ), this, SLOT( onButSelectXtcFile()) );
00043 connect( m_edi_fncfg, SIGNAL( editingFinished() ), this, SLOT( onEditCfgFileName()) );
00044 connect( m_but_fncfg, SIGNAL( clicked() ), this, SLOT( onButSelectCfgFile()) );
00045
00046
00047
00048 QGridLayout *grid = new QGridLayout();
00049
00050
00051 grid -> addWidget(m_but_fnxtc, 0, 0);
00052 grid -> addWidget(m_edi_fnxtc, 0, 1, 1, 5);
00053
00054 grid -> addWidget(m_but_fncfg, 1, 0);
00055 grid -> addWidget(m_edi_fncfg, 1, 1, 1, 5);
00056
00057 grid -> addWidget(m_but_start, 2, 0, Qt::AlignRight);
00058 grid -> addWidget(m_but_stop, 2, 1);
00059 grid -> addWidget(m_but_save, 2, 2);
00060 grid -> addWidget(m_but_exit, 2, 5);
00061
00062 this -> setLayout(grid);
00063
00064 this -> setWindowTitle(tr("PSQtGUIMain"));
00065 this -> setMinimumHeight(40);
00066 this -> setMinimumWidth(500);
00067 this -> move(100,50);
00068
00069 this -> showTips();
00070 }
00071
00072
00073
00074 void
00075 PSQtGUIMain::showTips()
00076 {
00077 m_but_fnxtc -> setToolTip("Find and select the XTC file");
00078 m_but_fncfg -> setToolTip("Find and select the psana configuration file");
00079 m_but_start -> setToolTip("Start psana");
00080 m_but_stop -> setToolTip("Stop psana");
00081 m_but_save -> setToolTip("Save control parameters");
00082 m_but_exit -> setToolTip("Exit program");
00083 }
00084
00085
00086
00087 void
00088 PSQtGUIMain::setFrame()
00089 {
00090 m_frame = new QFrame(this);
00091 m_frame -> setFrameStyle ( QFrame::Box | QFrame::Sunken);
00092
00093
00094 m_frame -> setLineWidth(0);
00095 m_frame -> setMidLineWidth(1);
00096 m_frame -> setCursor(Qt::SizeAllCursor);
00097
00098 }
00099
00100
00101
00102
00103
00104 void
00105 PSQtGUIMain::resizeEvent(QResizeEvent *event)
00106 {
00107
00108 m_frame->setGeometry(0, 0, event->size().width(), event->size().height());
00109 setWindowTitle("Window is resized");
00110 }
00111
00112
00113
00114 void
00115 PSQtGUIMain::closeEvent(QCloseEvent *event)
00116 {
00117 QWidget::closeEvent(event);
00118 std::cout << "PSQtGUIMain::closeEvent(...): type = " << event -> type() << std::endl;
00119 }
00120
00121
00122
00123
00124
00125 void
00126 PSQtGUIMain::onButExit()
00127 {
00128 std::cout << "PSQtGUIMain::onButExit()\n";
00129 this->close();
00130 }
00131
00132
00133
00134 void
00135 PSQtGUIMain::onButStart()
00136 {
00137 std::cout << "PSQtGUIMain::onButStart()\n";
00138 }
00139
00140
00141
00142 void
00143 PSQtGUIMain::onButStop()
00144 {
00145 std::cout << "PSQtGUIMain::onButStop()\n";
00146 }
00147
00148
00149
00150 void
00151 PSQtGUIMain::onButSave()
00152 {
00153 std::cout << "PSQtGUIMain::onButSave()\n";
00154 }
00155
00156
00157
00158 void
00159 PSQtGUIMain::onEditCfgFileName()
00160 {
00161 std::cout << "PSQtGUIMain::onEditCfgFileName() : ";
00162 std::string str_fname = (m_edi_fncfg -> displayText()).toStdString();
00163 std::cout << "Edited file name: " << str_fname << std::endl;
00164
00165 fileExists(str_fname);
00166 }
00167
00168
00169
00170 void
00171 PSQtGUIMain::onEditXtcFileName()
00172 {
00173 std::cout << "PSQtGUIMain::onEditXtcFileName() : ";
00174 std::string str_fname = (m_edi_fnxtc -> displayText()).toStdString();
00175 std::cout << "Edited file name: " << str_fname << std::endl;
00176
00177 fileExists(str_fname);
00178 }
00179
00180
00181
00182 void
00183 PSQtGUIMain::onButSelectCfgFile()
00184 {
00185 std::cout << "PSQtGUIMain::onButSelectCfgFile()\n";
00186 }
00187
00188
00189
00190 void
00191 PSQtGUIMain::onButSelectXtcFile()
00192 {
00193 std::cout << "PSQtGUIMain::onButSelectXtcFile()\n";
00194
00195
00196
00197 const char* sep = "/";
00198 std::string str_path_file_edi = (m_edi_fnxtc -> displayText()).toStdString();
00199
00200 size_t pos = str_path_file_edi.rfind(sep);
00201
00202 pos = (pos != std::string::npos) ? pos : str_path_file_edi.size();
00203
00204 std::string dname(str_path_file_edi, 0, pos );
00205 std::string fname(str_path_file_edi, pos+1 );
00206
00207 std::cout << "dname: " << dname << std::endl;
00208 std::cout << "fname: " << fname << std::endl;
00209
00210 dname = "/reg/d/psdm/CXI/cxi49012/xtc/";
00211
00212 QString path_file = QFileDialog::getOpenFileName(this, tr("Select input XTC file"),
00213 QString(dname.c_str()), tr("Xtc file (*.xtc)"));
00214
00215 std::string str_path_file = path_file.toStdString();
00216 std::cout << "Selected file name: " << str_path_file << std::endl;
00217
00218 if( fileExists(str_path_file) )
00219 m_edi_fnxtc -> setText(path_file);
00220 }
00221
00222
00223
00224 bool
00225 PSQtGUIMain::fileExists(std::string fname)
00226 {
00227 std::ifstream xtc_file(fname.c_str());
00228 if(xtc_file.good()) {
00229 std::cout << "Selected file exists" << std::endl;
00230 return true;
00231 }
00232
00233 std::cout << "WARNING: Selected file DOES NOT exists, try to select other file.";
00234 return false;
00235 }
00236
00237
00238
00239
00240
00241
00242
00243 }
00244
00245