00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef IGCONTROLCENTRE_H
00011 #define IGCONTROLCENTRE_H
00012
00013 # include "Iguana/GLBrowsers/interface/config.h"
00014 # include <qvariant.h>
00015 # include <qdialog.h>
00016 # include <qstring.h>
00017 # include <map>
00018 # include <vector>
00019
00020 class IgControlCategory;
00021 class QVBoxLayout;
00022 class QHBoxLayout;
00023 class QGridLayout;
00024 class QIconView;
00025 class QIconViewItem;
00026 class QPushButton;
00027 class IgState;
00028 class QFocusEvent;
00029
00030 class IGUANA_GL_BROWSERS_API IgControlCentre : public QDialog
00031 {
00032 Q_OBJECT
00033
00034 public:
00035 IgControlCentre (QWidget* parent = 0,
00036 const char* name = 0,
00037 bool modal = FALSE,
00038 WFlags fl = 0);
00039 ~IgControlCentre (void);
00040
00041 void addCategory (IgControlCategory *category);
00042 void removeCategory (IgControlCategory *category);
00043 void selectCategory (IgControlCategory *category);
00044 void selectCategory (const QString& name);
00045
00046 QIconView *iconView (void);
00047
00048
00049 virtual void show (void);
00050 virtual void hide (void);
00051 void updateOnWindowActive (void);
00052
00053 public slots:
00054 virtual void apply (void);
00055 virtual void revert (void);
00056 virtual void help (void);
00057 virtual void back (void);
00058 virtual void enableCategory (IgControlCategory *category,
00059 bool state = true);
00060
00061 private slots:
00062 void selectIconItem (QIconViewItem*);
00063 void dirtyCategory (void);
00064 void cleanCategory (void);
00065 void showCategory (IgControlCategory *category);
00066 void hideCategory (void);
00067 void addIconViewItems (QString name);
00068 void showIconView (QString name);
00069 void hideIconView (void);
00070
00071 protected:
00072 void windowActivationChange (bool oldActive);
00073
00074 QGridLayout *IgControlCentreLayout;
00075 QHBoxLayout *m_layout1;
00076 QGridLayout *m_layout2;
00077
00078 protected slots:
00079 virtual void languageChange();
00080
00081 private:
00082 typedef std::map<QString, std::pair<IgControlCategory *, bool> > CategoryMap;
00083 typedef std::vector<QIconViewItem*> IconViewList;
00084 typedef std::map<QString, std::pair<void*, bool> > IconViewArch;
00085 void updateControlCentre (QString name);
00086 void removeCategory (QString name, IconViewArch *toplevel);
00087 bool hasCategory (const IgControlCategory *category);
00088 void deleteIconViewArch (IconViewArch *toplevel);
00089 void enableCategory (QString name,
00090 IconViewArch *toplevel,
00091 bool state = true);
00092
00093 IconViewArch m_iconViewArch;
00094 CategoryMap m_categories;
00095 IconViewList m_iconViewList;
00096 IgControlCategory *m_current;
00097
00098 QIconView *m_iconView;
00099 QPushButton *m_close;
00100 QPushButton *m_revert;
00101 QPushButton *m_apply;
00102 QPushButton *m_help;
00103 QPushButton *m_back;
00104 QString m_name;
00105 QString m_baseName;
00106 bool m_updateOnWindowActive;
00107 bool m_focusChanged;
00108 };
00109
00110 #endif // IGCONTROLCENTRE_H