[Kst] branches/work/kst/portto4/kst/src/widgets

Barth Netterfield netterfield at astro.utoronto.ca
Wed Nov 23 14:27:07 UTC 2011


SVN commit 1265595 by netterfield:

Feature:
~ is expanded to HOME in file and data source selection widgets.
~USER is not expanded, because I haven't found a reasonably system independant way
of doing that.




 M  +26 -3     datasourceselector.cpp  
 M  +1 -0      datasourceselector.h  
 M  +20 -2     filerequester.cpp  


--- branches/work/kst/portto4/kst/src/widgets/datasourceselector.cpp #1265594:1265595
@@ -19,7 +19,7 @@
 #include <QToolButton>
 #include <QHBoxLayout>
 #include <QFileDialog>
-#include <QDirModel>
+#include <QFileSystemModel>
 #include <QCompleter>
 #include <QPointer>
 
@@ -59,11 +59,13 @@
   _fileButton->setFixedSize(size + 8, size + 8);
 
   setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
-  connect (_fileEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(changed(const QString &)));
+  //connect (_fileEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(changed(const QString &)));
+  connect (_fileEdit, SIGNAL(textChanged(const QString &)), this, SLOT(updateFile(const QString &)));
   connect (_fileButton, SIGNAL(clicked()), this, SLOT(chooseFile()));
 
-  QDirModel *dirModel = new QDirModel(this);
+  QFileSystemModel *dirModel = new QFileSystemModel;
   dirModel->setFilter(QDir::AllEntries);
+  dirModel->setRootPath(QString('/'));
 
   QCompleter *completer = new QCompleter(this);
   completer->setModel(dirModel); 
@@ -86,7 +88,28 @@
   emit changed(file);
 }
 
+void DataSourceSelector::updateFile(const QString &file) {
+  if (file.contains('~')) {
+    QString home = qgetenv("HOME"); // linux
+    if (!home.isEmpty()) {
+      QString changed_file = file;
+      changed_file.replace('~', home);
+      setFile(changed_file);
+      return;
+    }
+    home = qgetenv("USERPROFILE"); // windows, maybe (?)
+    if (!home.isEmpty()) {
+      QString changed_file = file;
+      changed_file.replace('~', home);
+      setFile(changed_file);
+      return;
+    }
+  }
+  emit changed(file);
+}
 
+
+
 void DataSourceSelector::chooseFile() {
   QString file;
   QPointer<DataSourceSelectorDialog> dialog = new DataSourceSelectorDialog( _file, this );
--- branches/work/kst/portto4/kst/src/widgets/datasourceselector.h #1265594:1265595
@@ -36,6 +36,7 @@
     QLineEdit *_fileEdit;
   public Q_SLOTS:
     void setFile(const QString &file);
+    void updateFile(const QString &file);
 
   Q_SIGNALS:
     void changed(const QString &file);
--- branches/work/kst/portto4/kst/src/widgets/filerequester.cpp #1265594:1265595
@@ -17,7 +17,7 @@
 #include <QToolButton>
 #include <QHBoxLayout>
 #include <QFileDialog>
-#include <QDirModel>
+#include <QFileSystemModel>
 #include <QCompleter>
 
 #include <QDebug>
@@ -52,8 +52,9 @@
   connect (_fileEdit, SIGNAL(textChanged(const QString &)), this, SLOT(updateFile(const QString &)));
   connect (_fileButton, SIGNAL(clicked()), this, SLOT(chooseFile()));
 
-  QDirModel *dirModel = new QDirModel(this);
+  QFileSystemModel *dirModel = new QFileSystemModel(this);
   dirModel->setFilter(QDir::AllEntries);
+  dirModel->setRootPath(QString('/'));
 
   QCompleter *completer = new QCompleter(this);
   completer->setModel(dirModel); 
@@ -77,6 +78,23 @@
 }
 
 void FileRequester::updateFile(const QString &file) {
+  if (file.contains('~')) {
+    QString home = qgetenv("HOME"); // linux
+    if (!home.isEmpty()) {
+      QString changed_file = file;
+      changed_file.replace('~', home);
+      setFile(changed_file);
+      return;
+    }
+    home = qgetenv("USERPROFILE"); // windows, maybe (?)
+    if (!home.isEmpty()) {
+      QString changed_file = file;
+      changed_file.replace('~', home);
+      setFile(changed_file);
+      return;
+    }
+  }
+
   _file = file;
   emit changed(file);
 }


More information about the Kst mailing list