Index: /trunk/GnssCenter/inpedit/keyword.cpp
===================================================================
--- /trunk/GnssCenter/inpedit/keyword.cpp	(revision 5113)
+++ /trunk/GnssCenter/inpedit/keyword.cpp	(revision 5114)
@@ -128,8 +128,13 @@
   }
   else if (widgetType == "selwin") {
-    t_selWin* selWin = new t_selWin();
-    if (_origValues.size()) {
-      selWin->setFileName(_origValues[0]);
-    }
+    t_selWin::Mode mode = t_selWin::File;
+    if      (_desc.value("seldir") == "true") {
+      mode = t_selWin::Directory;
+    }
+    else if (_desc.value("maxfiles").toInt() > 1) {
+      mode = t_selWin::Files;
+    }
+    t_selWin* selWin = new t_selWin(mode);
+    selWin->setFileNames(_origValues);
     _widget = selWin;
   }
@@ -194,4 +199,5 @@
   else if (widgetType == "selwin") {
     t_selWin* selWin = static_cast<t_selWin*>(_widget);
+    values << selWin->fileNames();
   }
   else if (widgetType == "spinbox") {
Index: /trunk/GnssCenter/inpedit/selwin.cpp
===================================================================
--- /trunk/GnssCenter/inpedit/selwin.cpp	(revision 5113)
+++ /trunk/GnssCenter/inpedit/selwin.cpp	(revision 5114)
@@ -23,6 +23,7 @@
 // Constructor
 ////////////////////////////////////////////////////////////////////////////////
-t_selWin::t_selWin(QWidget* parent, t_selWin::Mode mode) : 
-  QWidget(parent), _mode(mode) {
+t_selWin::t_selWin(t_selWin::Mode mode, QWidget* parent) : QWidget(parent) {
+
+  _mode = mode;
 
   QHBoxLayout* layout = new QHBoxLayout( this );
@@ -33,5 +34,5 @@
 
   connect(_lineEdit, SIGNAL(textChanged(const QString &)),
-          this, SIGNAL(fileNameChanged(const QString &)));
+          this, SLOT(slotTextChanged()));
 
   _button = new QPushButton("...", this);
@@ -39,5 +40,5 @@
   layout->addWidget(_button);
 
-  connect(_button, SIGNAL(clicked()), this, SLOT(chooseFile()));
+  connect(_button, SIGNAL(clicked()), this, SLOT(slotChooseFile()));
   setFocusProxy(_lineEdit);
 }
@@ -50,32 +51,66 @@
 // 
 ////////////////////////////////////////////////////////////////////////////////
-void t_selWin::setFileName(const QString& fileName) {
-  _lineEdit->setText(fileName);
+void t_selWin::setFileNames(const QStringList& fileNames) {
+  _fileNames = fileNames;
+  setLineEditText();
 }
 
 // 
 ////////////////////////////////////////////////////////////////////////////////
-QString t_selWin::fileName() const {
-  return _lineEdit->text();
+void t_selWin::setLineEditText() {
+  if      (_fileNames.size() == 0) {
+    _lineEdit->setText("");
+  }
+  else if (_fileNames.size() == 1) {
+    _lineEdit->setText(_fileNames[0]);
+  }
+  else if (_fileNames.size() > 1) {
+    _lineEdit->setText(QString("SELECTED (%1 FILES)").arg(_fileNames.size()));
+  }
 }
 
 // 
 ////////////////////////////////////////////////////////////////////////////////
-void t_selWin::chooseFile() {
-  QString fileName;
+const QStringList& t_selWin::fileNames() const {
+  return _fileNames;
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////////
+void t_selWin::slotTextChanged() {
+  _fileNames.clear();
+  if (!_lineEdit->text().isEmpty()) {
+    _fileNames << _lineEdit->text();
+  }
+  emit fileNameChanged();
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////////
+void t_selWin::slotChooseFile() {
   if      (mode() == File) {
-    fileName = QFileDialog::getOpenFileName(this);
+    QString fileName = QFileDialog::getOpenFileName(this);
+    if (!fileName.isEmpty()) {
+      _fileNames.clear();
+      _fileNames << fileName;
+      emit fileNameChanged();
+   }
   }
   else if (mode() == Files) {
     QStringList fileNames = QFileDialog::getOpenFileNames(this);
-    fileName = fileNames.join(",");
+    if (fileNames.size()) {
+      _fileNames = fileNames;
+      emit fileNameChanged();
+    }
   }
   else {
-    fileName = QFileDialog::getExistingDirectory(this);
+   QString dirName = QFileDialog::getExistingDirectory(this);
+    if (!dirName.isEmpty()) {
+      _fileNames.clear();
+      _fileNames << dirName;
+      emit fileNameChanged();
+    }
   }
+  setLineEditText();
+}
 
-  if (!fileName.isEmpty()) {
-    _lineEdit->setText(fileName);
-    emit fileNameChanged(fileName);
-  }
-}
Index: /trunk/GnssCenter/inpedit/selwin.h
===================================================================
--- /trunk/GnssCenter/inpedit/selwin.h	(revision 5113)
+++ /trunk/GnssCenter/inpedit/selwin.h	(revision 5114)
@@ -7,33 +7,29 @@
 
 class t_selWin : public QWidget {
-  Q_OBJECT
-
-  Q_ENUMS( Mode )
-  Q_PROPERTY( Mode mode READ mode WRITE setMode )
-  Q_PROPERTY( QString fileName READ fileName WRITE setFileName )
+ Q_OBJECT
 
  public:
   enum Mode {File, Files, Directory};
 
-  t_selWin(QWidget* parent = 0, t_selWin::Mode mode = File);
+  t_selWin(t_selWin::Mode mode, QWidget* parent = 0);
   ~t_selWin();
 
-  QString fileName() const;
-  Mode mode() const {return _mode;}
-
-  public slots:
-   void setFileName(const QString& fileName);
-   void setMode(Mode mode) {_mode = mode;}
+  const QStringList& fileNames() const;
+  Mode        mode() const {return _mode;}
+  void setFileNames(const QStringList& fileNames);
 
   signals:
-   void fileNameChanged(const QString&);
+   void fileNameChanged();
 
   private slots:
-   void chooseFile();
+   void slotTextChanged();
+   void slotChooseFile();
 
   private:
+   void setLineEditText();
    QLineEdit*   _lineEdit;
    QPushButton* _button;
    Mode         _mode;
+   QStringList  _fileNames;
 };
 
