]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Add file dialog options in QtxPathEdit
authorCHEMIN Sebastien <sc236498@is245491.intra.cea.fr>
Fri, 12 Jan 2024 09:23:43 +0000 (10:23 +0100)
committerCHEMIN Sebastien <sc236498@is245491.intra.cea.fr>
Fri, 12 Jan 2024 09:23:43 +0000 (10:23 +0100)
src/Qtx/QtxPagePrefMgr.cxx
src/Qtx/QtxPagePrefMgr.h
src/Qtx/QtxPathEdit.cxx
src/Qtx/QtxPathEdit.h

index 6273720910e10055d5f51644f7e902fdaa90d175..541764a31d7f93153c2ec099a83e02ea17f5585f 100644 (file)
@@ -3932,6 +3932,27 @@ void QtxPagePrefPathItem::setPathFilter( const QString& f )
   myPath->setPathFilter( f );
 }
 
+/*!
+  \brief Get currently used path widget options.
+  \return file or directory path options
+  \sa setPathOptions()
+*/
+QFileDialog::Options QtxPagePrefPathItem::pathOptions() const
+{
+  return myPath->pathOptions();
+}
+
+/*!
+  \brief Set path widget options.
+  \param f new file or directory path options
+  \sa pathOptions()
+*/
+void QtxPagePrefPathItem::setPathOptions( const QFileDialog::Options options )
+{
+  myPath->setPathOptions( options );
+}
+
+
 /*!
   \brief Store preference item to the resource manager.
   \sa retrieve()
@@ -3962,6 +3983,8 @@ QVariant QtxPagePrefPathItem::optionValue( const QString& name ) const
     return pathType();
   else if ( name == "path_filter" )
     return pathFilter();
+  else if ( name == "path_options" )
+    return QVariant::fromValue(pathOptions());
   else
     return QtxPageNamedPrefItem::optionValue( name );
 }
@@ -3984,6 +4007,11 @@ void QtxPagePrefPathItem::setOptionValue( const QString& name, const QVariant& v
     if ( val.canConvert( QVariant::String ) )
       setPathFilter( val.toString() );
   }
+  else if ( name == "path_options" )
+  {
+    if ( val.canConvert( QVariant::Int ) )
+      setPathOptions( (QFileDialog::Options)val.toInt() );
+  }
   else
     QtxPageNamedPrefItem::setOptionValue( name, val );
 }
index b29945cd6f5bac0db114c8e64580f3ce41658d20..ea58fd5cb5ff966d4401eb81a976aa0b4e22bcbb 100644 (file)
@@ -658,6 +658,9 @@ public:
 
   QString          pathFilter() const;
   void             setPathFilter( const QString& );
+  QFileDialog::Options pathOptions() const;
+  void setPathOptions(const QFileDialog::Options);
 
   virtual void     store();
   virtual void     retrieve();
index cd881b9a9a75dd2363975fda90d7de33319c960a..2e8e033f29c968b16032d4ffb5df5b6618b30138 100644 (file)
@@ -29,7 +29,6 @@
 #include <QCompleter>
 #include <QKeyEvent>
 #include <QToolButton>
-#include <QFileDialog>
 #include <QRegExpValidator>
 
 static const char* browse_icon[] = {
@@ -185,6 +184,30 @@ void QtxPathEdit::setPathFilter( const QString& f )
   updateState();
 }
 
+/*!
+  \brief Set path file dialog options.
+  \param f new file or directory path options
+  \sa pathOptions()
+*/
+void QtxPathEdit::setPathOptions(const QFileDialog::Options options)
+{
+  if ( myOptions == options )
+    return;
+
+  myOptions = options;
+}
+
+/*!
+  \brief Get currently used path options.
+  \return file or directory path options
+  \sa setPathOptions()
+*/
+QFileDialog::Options QtxPathEdit::pathOptions() const
+{
+  return myOptions;
+}
+
+
 /*!
   \brief Called when user clicks "Browse" button. 
 
@@ -200,13 +223,13 @@ void QtxPathEdit::onBrowse( bool /*on*/ )
   switch ( pathType() )
   {
   case Qtx::PT_OpenFile:
-    path = QFileDialog::getOpenFileName( myPath, QString(), initial, pathFilter() );
+    path = QFileDialog::getOpenFileName( myPath, QString(), initial, pathFilter(), nullptr, pathOptions() );
     break;
   case Qtx::PT_SaveFile:
-    path = QFileDialog::getSaveFileName( myPath, QString(), initial, pathFilter() );
+    path = QFileDialog::getSaveFileName( myPath, QString(), initial, pathFilter(), nullptr, pathOptions() );
     break;
   case Qtx::PT_Directory:
-    path = QFileDialog::getExistingDirectory( myPath, QString(), initial );
+    path = QFileDialog::getExistingDirectory( myPath, QString(), initial, pathOptions() );
     break;
   }
 
index 0320928adc9228653a476849e998026fa50e846a..ad385922c71eb042c431e336289a3e4ddeda3ecd 100644 (file)
@@ -26,6 +26,7 @@
 #include "Qtx.h"
 
 #include <QFrame>
+#include <QFileDialog>
 
 class QLineEdit;
 
@@ -47,6 +48,9 @@ public:
   QString       pathFilter() const;
   void          setPathFilter( const QString& );
 
+  QFileDialog::Options pathOptions() const;
+  void setPathOptions( const QFileDialog::Options );
+
 private slots:
   void          onBrowse( bool = false );
 
@@ -61,6 +65,7 @@ private:
   QLineEdit*    myPath;
   Qtx::PathType myType;
   QString       myFilter;
+  QFileDialog::Options myOptions;
   bool          myBrowse;
 };