Selaa lähdekoodia

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 16 vuotta sitten
vanhempi
commit
b01450aced
1 muutettua tiedostoa jossa 9 lisäystä ja 5 poistoa
  1. 9 5
      Libs/Widgets/ctkDirectoryButton.cpp

+ 9 - 5
Libs/Widgets/ctkDirectoryButton.cpp

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