Salome HOME
Fix for bug 10438: Crash during Explode on Blocks operation (Global selection on...
[modules/gui.git] / src / Qtx / QtxListResourceEdit.h
index 554cec23b6490230e4c6d90f9a5ace3aeefcc2d5..7a6d2b4a59695ab504ca38622a15a27b4c27072a 100644 (file)
@@ -10,6 +10,7 @@
 #include <qhbox.h>
 #include <qframe.h>
 #include <qgroupbox.h>
+#include <qvalidator.h>
 
 class QLabel;
 class QListBox;
@@ -22,6 +23,8 @@ class QWidgetStack;
 class QtxIntSpinBox;
 class QtxDblSpinBox;
 
+class QtxDirListEditor;
+
 /*
   Class: QtxListResourceEdit
   Descr: GUI implementation of QtxResourceEdit - manager of resources
@@ -38,27 +41,42 @@ public:
   class PrefItem;
 
   class Spacer;
-  class ListItem;
   class ColorItem;
   class StateItem;
+  class SelectItem;
   class StringItem;
   class DoubleSpinItem;
   class DoubleEditItem;
   class IntegerSpinItem;
   class IntegerEditItem;
+  class FontItem;
+  class FileItem;
+  class DirListItem;
+
+  enum { Space, Bool, Color, String, Selector, DblSpin, IntSpin, Double, Integer, GroupBox, Font, DirList, File, User };
 
 public:
   QtxListResourceEdit( QtxResourceMgr*, QWidget* = 0 );
   virtual ~QtxListResourceEdit();
 
+  virtual void  setItemProperty( const int, const QString&, const QVariant& );
+
+signals:
+  void          resourceChanged( int );
+  void          resourceChanged( QString&, QString& );
+  void          resourcesChanged( const QMap<int, QString>& );
+
 private slots:
   void          onSelectionChanged();
 
 protected:
+  virtual void  itemAdded( Item* );
   virtual Item* createItem( const QString&, const int );
+  virtual void  changedResources( const QMap<Item*, QString>& );
 
 private:
   void          updateState();
+  void          updateVisible();
 
 private:
   QListBox*     myList;
@@ -76,6 +94,8 @@ public:
   Category( QtxListResourceEdit*, QWidget* = 0 );
   virtual ~Category();
 
+  virtual bool     isEmpty() const;
+
   virtual int      type() const;
   virtual void     store();
   virtual void     retrieve();
@@ -119,7 +139,7 @@ private:
   void          adjustLabels();
 
 private:
-  QGroupBox*    myMainFrame;
+  QWidget*      myMainFrame;
 };
 
 /*
@@ -182,15 +202,15 @@ public:
 };
 
 /*
-  Class: QtxListResourceEdit::ListItem
-  Descr: GUI implementation of resources list item.
+  Class: QtxListResourceEdit::SelectItem
+  Descr: GUI implementation of resources selector item.
 */
 
-class QtxListResourceEdit::ListItem : public PrefItem
+class QtxListResourceEdit::SelectItem : public PrefItem
 {
 public:
-  ListItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
-  virtual ~ListItem();
+  SelectItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
+  virtual ~SelectItem();
 
   virtual void     store();
   virtual void     retrieve();
@@ -342,4 +362,150 @@ private:
   QWidget*         myColor;
 };
 
+/*
+  Class: QtxListResourceEdit::FontItem
+  Descr: GUI implementation of resources font item.
+*/
+
+class QtxComboBox;
+class QToolButton;
+
+class QtxListResourceEdit::FontItem : public PrefItem
+{
+  Q_OBJECT
+
+public:
+  typedef enum
+  {
+    Family    = 0x01,
+    Size      = 0x02,
+    UserSize  = 0x04,
+    Bold      = 0x08,
+    Italic    = 0x10,
+    Underline = 0x20,
+    Preview   = 0x40,
+
+    All = Family | Size | UserSize | Bold | Italic | Underline | Preview
+    
+  } WidgetFlags;
+  
+public:
+  FontItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
+  virtual ~FontItem();
+
+  virtual void store();
+  virtual void retrieve();
+
+  virtual QVariant property( const QString& ) const;
+  virtual void     setProperty( const QString&, const QVariant& );
+
+private slots:
+  void onActivateFamily( int );
+  void onPreview();
+  
+private:
+  void       setFamily( const QString& );
+  QString    family() const;
+  void       setSize( const int );
+  int        size() const;
+  void       setParams( const bool, const bool, const bool );
+  void       params( bool&, bool&, bool& );
+  void       internalUpdate();
+  
+private:
+  int            myFlags;
+  bool           myIsSystem;
+  QtxComboBox   *myFamilies, *mySizes;
+  QCheckBox     *myBold, *myItalic, *myUnderline;
+  QToolButton   *myPreview;
+  QMap<QString, QVariant>   myProperties;
+};
+
+
+/*!
+ * \brief GUI implementation of resources directory list item.
+ *
+ * 
+ */
+class QtxListResourceEdit::DirListItem : public PrefItem
+{
+  Q_OBJECT
+  
+public:
+
+  /*!
+   * \brief Constructor
+   */
+  DirListItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
+  /*!
+   * \brief Destructor
+   */
+  virtual ~DirListItem();
+
+  /*!
+   * \brief Stores the data
+   */
+  virtual void     store();
+
+  /*!
+   * \brief Retrieves the data
+   */
+  virtual void     retrieve();
+
+private:
+  QtxDirListEditor* myDirListEditor; //!< The widget wich implements in GUI the list of directories
+};
+
+/*
+  Class: QtxListResourceEdit::FontItem
+  Descr: GUI implementation of resources font item.
+*/
+
+class QtxComboBox;
+class QToolButton;
+class QFileDialog;
+
+class QtxListResourceEdit::FileItem : public PrefItem
+{
+  Q_OBJECT
+
+private:
+  class FileValidator : public QValidator
+  {
+  public:
+    FileValidator( FileItem*, QObject* );
+    ~FileValidator();
+
+    virtual QValidator::State validate( QString&, int& ) const;
+
+  private:
+    FileItem* myItem;
+  };
+
+public:
+  FileItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
+  virtual ~FileItem();
+
+  virtual void store();
+  virtual void retrieve();
+  
+  virtual QVariant property( const QString& ) const;
+  virtual void     setProperty( const QString&, const QVariant& );
+
+  virtual bool isFileCorrect( const QString& ) const;
+
+private slots:
+  void onOpenFile();
+  void onFileSelected( const QString& );
+
+private:
+  uint          myFlags;
+  QStringList   myFilter;
+  bool          myIsExisting;
+  QLineEdit*    myFile;
+  QToolButton*  myOpenFile;
+  QFileDialog*  myFileDlg;
+};
+
+
 #endif