Salome HOME
Fix compilation error on Linux. Part V.
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetFileSelector.h
index 06ca8bf5cf7d4a54de28013413f29cc7ca731e56..b6f029fb088b9eda8c124d32a8c4617e4283b874 100644 (file)
@@ -21,16 +21,21 @@ class QWidget;
 class QLineEdit;
 
 /**
+* \ingroup GUI
 *  Implementation of model widget for open file widget.
 *  It can be defined as following:
 *  \code
 *      <file_selector
 *          id="import_file_selector"
+*          type="open"
 *          title="Import file"
 *          path="">
 *          <validator id="ExchangePlugin_ImportFormat" parameters="BREP:BREPImport,STEP:STEPImport" />
 *      </file_selector>
 *  \endcode
+* It can use following parameters:
+* - id - name of object attribute
+* - type - type of dialog. Possible values: open, save.
 */
 class MODULEBASE_EXPORT ModuleBase_WidgetFileSelector : public ModuleBase_ModelWidget
 {
@@ -38,19 +43,13 @@ class MODULEBASE_EXPORT ModuleBase_WidgetFileSelector : public ModuleBase_ModelW
  public:
   /// Constructor
   /// \param theParent the parent object
-  /// \param theData the widget configuation. The attribute of the model widget is obtained from
+  /// \param theData the widget configuration. The attribute of the model widget is obtained from
   /// \param theParentId is Id of a parent of the current attribute
   ModuleBase_WidgetFileSelector(QWidget* theParent,
                                 const Config_WidgetAPI* theData,
                                 const std::string& theParentId);
   virtual ~ModuleBase_WidgetFileSelector();
 
-  virtual bool storeValue() const;
-
-  virtual bool restoreValue();
-
-  QWidget* getControl() const;
-
   virtual QList<QWidget*> getControls() const;
 
   /// Returns true if a file on the current path in the line edit
@@ -64,23 +63,51 @@ class MODULEBASE_EXPORT ModuleBase_WidgetFileSelector : public ModuleBase_ModelW
   /// Processing of path changing
   void onPathChanged();
 
- protected:
-   /// Returns string containing formats
-  QString formatsString() const;
+protected:
+  /// Saves the internal parameters to the given feature
+  /// \return True in success
+  virtual bool storeValueCustom() const;
+
+  virtual bool restoreValueCustom();
+
+protected:
+  /// Converts format to filter string
+  static QString formatToFilter(const QString & theFormat);
+
+  /// Returns a short format string of theFilter string
+  static QString filterToShortFormat(const QString & theFilter);
+
+  /// Returns a list of extensions from theFilter
+  static QStringList filterToExtensions(const QString & theFilter);
 
-  /// Return list of validator formats
+  /// Returns list of validator formats
   QStringList getValidatorFormats() const;
 
- private:
+  /// Returns string containing formats
+  QString filterString() const;
+
+  /// Add an extension to file name if the extension is not defined
+  /// \param theFileName a file name
+  /// \param theFilter a file filter
+  /// \return the file name with extension
+  static QString applyExtension(const QString& theFileName, const QString& theFilter);
+
+protected:
    /// A control for path input
   QLineEdit* myPathField;
 
-  /// Container
-  QWidget* myMainWidget;
-
   /// A title of open file dialog box
   QString myTitle;
 
+  /// A current format
+  QString mySelectedFilter;
+
+  /// A title of open file dialog box
+  enum {
+    WFS_OPEN, ///< open file
+    WFS_SAVE ///< save file
+  } myType; ///< type of dialog
+
   /// Default path
   QString myDefaultPath;
 };