| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- /*=========================================================================
- Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake
- Module: $RCSfile$
- Language: C++
- Date: $Date$
- Version: $Revision$
- Author: Jorgen Bodde
- Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
- See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
- =========================================================================*/
- #ifndef __WXPROPERTYLIST_H
- #define __WXPROPERTYLIST_H
- #ifndef WX_PRECOMP
- #include "wx/wx.h"
- #endif
- #include <wx/dynarray.h>
- #include <wx/grid.h>
- #include "../cmStandardIncludes.h"
- #ifdef __LINUX__
- #define MC_DEFAULT_WILDCARD "*"
- #else
- #define MC_DEFAULT_WILDCARD "*.*"
- #endif
- #if 0
- // the editor for string/text data
- class wxGridCellPathEditor : public wxGridCellEditor
- {
- public:
- wxGridCellPathEditor();
- virtual void Create(wxWindow* parent,
- wxWindowID id,
- wxEvtHandler* evtHandler);
- virtual void SetSize(const wxRect& rect);
- virtual void PaintBackground(const wxRect& rectCell, wxGridCellAttr *attr);
- virtual bool IsAcceptedKey(wxKeyEvent& event);
- virtual void BeginEdit(int row, int col, wxGrid* grid);
- virtual bool EndEdit(int row, int col, wxGrid* grid);
- virtual void Reset();
- virtual void StartingKey(wxKeyEvent& event);
- virtual void HandleReturn(wxKeyEvent& event);
- // parameters string format is "max_width"
- virtual void SetParameters(const wxString& params);
- virtual wxGridCellEditor *Clone() const
- { return new wxGridCellPathEditor; }
- // DJC MAPTEK
- // added GetValue so we can get the value which is in the control
- virtual wxString GetValue() const;
- protected:
- wxTextCtrl *Text() const { return (wxTextCtrl *)m_control; }
- // parts of our virtual functions reused by the derived classes
- void DoBeginEdit(const wxString& startValue);
- void DoReset(const wxString& startValue);
- private:
- size_t m_maxChars; // max number of chars allowed
- wxString m_startValue;
- DECLARE_NO_COPY_CLASS(wxGridCellPathEditor)
- };
- #endif
- /////////////////////////////////////////////////////////////////////////////
- //wxPropertyItem Items
- class wxPropertyItem
- {
- public:
- wxPropertyItem(const wxString &propName, const wxString &curValue,
- const wxString &helpString, int nItemType, const wxString &cmbItems)
- : m_NewValue(true)
- , m_HelpString(helpString)
- , m_Removed(false)
- , m_propName(propName)
- , m_curValue(curValue)
- , m_nItemType(nItemType)
- , m_cmbItems(cmbItems)
- , m_Advanced(false)
- {
- //m_NewValue = true;
- //m_HelpString = helpString;
- //m_Removed = false;
- //m_propName = propName;
- //m_curValue = curValue;
- //m_nItemType = nItemType;
- //m_cmbItems = cmbItems;
- //m_Advanced = false;
- }
- const wxString &GetCurValue() const {
- return m_curValue;
- };
-
- const wxString &GetPropName() const {
- return m_propName;
- };
-
- void SetCurValue(const char *str) {
- m_curValue = str;
- };
-
- void SetPropName(const char *str) {
- m_propName = str;
- };
- void SetAdvanced(bool value) {
- m_Advanced = value;
- };
- void SetHelpString(const char *str) {
- m_HelpString = str;
- };
- bool GetAdvanced() const {
- return m_Advanced;
- };
- void SetNewValue(bool value) {
- m_NewValue = value;
- };
- bool GetNewValue() const {
- return m_NewValue;
- };
- int GetItemType() const {
- return m_nItemType;
- };
- const wxString &GetHelpString() const {
- return m_HelpString;
- };
- // returns true when this property item is a filepath
- bool IsFilePath();
- // returns true when this property item is a dir path
- bool IsDirPath();
- private:
- wxString m_HelpString;
- wxString m_propName;
- wxString m_curValue;
- int m_nItemType;
- wxString m_cmbItems;
- bool m_NewValue;
- bool m_Removed;
- bool m_Advanced;
- };
- WX_DEFINE_ARRAY(wxPropertyItem *, wxPropertyItems);
- /////////////////////////////////////////////////////////////////////////////
- // wxPropertyList Grid
- class wxPropertyList : public wxGrid
- {
- // Construction
- public:
- wxPropertyList(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = wxWANTS_CHARS,
- const wxString& name = wxPanelNameStr)
- : wxGrid(parent, id, pos, size, style, name)
- {
- };
- enum ItemType
- {
- COMBO = 0,
- EDIT,
- COLOR,
- FONT,
- FILE,
- CHECKBOX,
- PATH
- };
-
- virtual ~wxPropertyList();
-
- public:
- bool GetShowAdvanced() const {
- return m_ShowAdvanced;
- };
-
- void SetProjectGenerated(bool value) {
- m_generatedProjects = value;
- };
-
- bool IsGenerated() {
- return m_generatedProjects;
- };
- int AddItem(const wxString &txt);
-
- void AddProperty(const char* name, const char* value, const char* helpString, int type,
- const char* comboItems, bool reverseOrder, bool advanced);
-
- void RemoveProperty(wxPropertyItem *pItem);
-
- void HideControls();
- void ShowAdvanced();
- void HideAdvanced();
-
- void RemoveAll();
- wxPropertyItem* GetItem(size_t index) {
- wxCHECK(index < GetCount(), 0);
- return m_PropertyItems[index];
- };
-
- size_t GetCount() const {
- return m_PropertyItems.Count();
- };
- const wxPropertyItems &GetItems() {
- return m_PropertyItems;
- };
-
- void SetShowAdvanced(bool value) {
- m_ShowAdvanced = value;
- };
- bool UpdatePropertyItem(wxPropertyItem *pItem, int row);
- /** Returns the row of the grid on which the item is found. -1 is returned when not found */
- int FindProperty(wxPropertyItem *pItem);
- /** Returns true when the cache is still dirty, which means
- after a configuration run, there are still new items */
- bool IsCacheDirty() {
- // check if we have items that are new
- for(size_t i = 0; i < m_PropertyItems.Count(); i++)
- {
- //if((m_PropertyItems[i]->GetNewValue() && m_ShowAdvanced && m_PropertyItems[i]->GetAdvanced()) ||
- // (m_PropertyItems[i]->GetNewValue() && !m_ShowAdvanced))
- if(m_PropertyItems[i]->GetNewValue())
- return true;
- }
-
- // return flag if generated cache or not
- return false;
- };
- /** Returns the property item from the current row. 0 if no property item found */
- wxPropertyItem *GetPropertyItemFromRow(int row);
- /** Finds the property by name and returns the property item */
- wxPropertyItem *FindPropertyByName(const wxString &name);
- /** Sets the search filter. Making sure that the items currently displayed
- match this substring query */
- void SetQuery(const wxString &query) {
- m_strQuery = query;
- UpdateGridView();
- };
- /** Returns the last used query. */
- const wxString &GetQuery() {
- return m_strQuery;
- };
- /** Function that tries to browse for the item that is selected */
- void BrowseSelectedItem();
- /** Returns true when the item is browsable (file or path) and only one item is
- selected */
- bool IsSelectedItemBrowsable(int row = -1);
- private:
- // order = 0 sorted
- // order = 1 add to top
- // order = 2 add to bottom
- int AddPropItem(wxPropertyItem* pItem, int order);
-
- /** Adds the property item to the grid. */
- int AddPropertyToGrid(wxPropertyItem *pItem, int order) ;
-
- /** Adds / removes all the items that are currently (not) matching the
- query filter */
- void UpdateGridView();
- void OnSelectCell( wxGridEvent& event );
- void OnCellChange( wxGridEvent& event );
- void OnCellPopup( wxGridEvent& event );
- void OnIgnoreCache( wxCommandEvent& event );
- void OnDeleteCache( wxCommandEvent& event );
- void OnSizeGrid( wxSizeEvent &event );
- void OnBrowseItem( wxCommandEvent& event );
- void OnKeyPressed( wxKeyEvent &event );
- int m_curSel;
- int m_prevSel;
- int m_nDivider;
- int m_nDivTop;
- int m_nDivBtm;
- int m_nOldDivX;
- int m_nLastBox;
- bool m_bTracking;
- bool m_bDivIsSet;
- bool m_ShowAdvanced;
- // flag to indicate the last cache load has resulted
- // in generating a valid project
- bool m_generatedProjects;
- wxString m_strQuery;
- wxPropertyItems m_PropertyItems;
- DECLARE_EVENT_TABLE()
- };
- #endif
|