Преглед изворни кода

ENH: Add internal option to display the path as absolute or relative.
It also fix the bug that there was no text on the button when using the default constructor

Julien Finet пре 15 година
родитељ
комит
b01450aced
1 измењених фајлова са 9 додато и 5 уклоњено
  1. 9 5
      Libs/Widgets/ctkDirectoryButton.cpp

+ 9 - 5
Libs/Widgets/ctkDirectoryButton.cpp

@@ -19,6 +19,7 @@
 =========================================================================*/
 
 // Qt includes
+#include <QDebug>
 #include <QHBoxLayout>
 #include <QPushButton>
 #include <QStyle>
@@ -37,12 +38,14 @@ public:
   QPushButton* PushButton;
   QString      DialogCaption;
   ctkDirectoryButton::Options DialogOptions;
+  bool         DisplayAbsolutePath;
 };
 
 //-----------------------------------------------------------------------------
 ctkDirectoryButtonPrivate::ctkDirectoryButtonPrivate()
 {
   this->DialogOptions = ctkDirectoryButton::ShowDirsOnly;
+  this->DisplayAbsolutePath = true;
 }
 
 //-----------------------------------------------------------------------------
@@ -64,6 +67,7 @@ ctkDirectoryButton::ctkDirectoryButton(QWidget * parentWidget)
   CTK_INIT_PRIVATE(ctkDirectoryButton);
   CTK_D(ctkDirectoryButton);
   d->init();
+  d->PushButton->setText(d->DisplayAbsolutePath ? d->Directory.absolutePath() : d->Directory.path());
   d->PushButton->setIcon(this->style()->standardIcon(QStyle::SP_DirIcon));
 }
     
@@ -76,7 +80,7 @@ ctkDirectoryButton::ctkDirectoryButton(const QString& dir,
   CTK_D(ctkDirectoryButton);
   d->init();
   d->Directory = QDir(dir);
-  d->PushButton->setText(d->Directory.path());
+  d->PushButton->setText(d->DisplayAbsolutePath ? d->Directory.absolutePath() : d->Directory.path());
   d->PushButton->setIcon(this->style()->standardIcon(QStyle::SP_DirIcon));
 }
 
@@ -89,7 +93,7 @@ ctkDirectoryButton::ctkDirectoryButton(
   CTK_D(ctkDirectoryButton);
   d->init();
   d->Directory = QDir(dir);
-  d->PushButton->setText(d->Directory.path());
+  d->PushButton->setText(d->DisplayAbsolutePath ? d->Directory.absolutePath() : d->Directory.path());
   d->PushButton->setIcon(icon);
 }
 
@@ -98,13 +102,13 @@ void ctkDirectoryButton::setDirectory(const QString& dir)
 {
   CTK_D(ctkDirectoryButton);
   QDir newDirectory(dir);
-  if (d->Directory == newDirectory )
+  if (d->Directory == newDirectory)
     {
     return;
     }
   d->Directory = newDirectory;
-  d->PushButton->setText(d->Directory.path());
-  emit directoryChanged(d->Directory.path());
+  d->PushButton->setText(d->DisplayAbsolutePath ? d->Directory.absolutePath() : d->Directory.path());
+  emit directoryChanged(d->DisplayAbsolutePath ? d->Directory.absolutePath() : d->Directory.path());
 }
 
 //-----------------------------------------------------------------------------