CMake/Source/WXDialog/cmWXCacheProperty.h

131 lines
3.4 KiB
C++

/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
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 CMCACHEPROPERTY_H
#define CMCACHEPROPERTY_H
#include "cmStandardIncludes.h"
#include "wxincludes.h"
class cmMainFrame;
class wxControl;
class wxPanel;
class wxSizer;
class wxWindow;
/** \class cmCacheProperty
* \brief GUI Control class for cmake's cache property
*
* Stores cache property as displayed on GUI, caches its value, colors
* red when new.
*
*/
class cmCacheProperty
{
public:
cmCacheProperty(cmMainFrame*, const std::string& name);
~cmCacheProperty();
const std::string& GetName() { return this->m_Name; }
//! Get and set the value
const std::string& GetValue() { return this->m_Value; }
void SetValue(const std::string& s) { this->m_Value = s; }
//! Get and set the help value
void SetHelp(const std::string& s) { this->m_HelpString = s; }
const std::string& GetHelp() { return this->m_HelpString; }
//! Display the property in the window. Return the maximum height.
int Display(wxSizer*, wxPanel*);
//! Remove the property from the window
void Remove(wxSizer*, wxPanel*);
//! This method is called when property is changed
void OnPropertyChanged(wxEvent& event);
//! Mark cache entry as being removed.
void MarkRemoved() { this->m_Removed = true; }
//! Check if the entry was removed
bool IsRemoved() { return this->m_Removed; }
//! Get and set the new flag.
void SetNewFlag(bool f) { this->m_NewValue = f; }
bool GetNewFlag() { return this->m_NewValue; }
//! Mark cache entry as being removed.
void MarkAdvanced() { this->m_Advanced = true; }
//! Check if the entry was removed
bool IsAdvanced() { return this->m_Advanced; }
//! Set item type
void SetItemType(int t) { this->m_ItemType = t; }
//! Get the main frame asociated with the cache property
cmMainFrame* GetMainFrame() { return this->m_MainFrame; }
enum ItemType
{
NOTHING = 0,
EDIT,
FILE,
CHECKBOX,
PATH
};
enum
{
Menu_Popup_Ignore = 200,
Menu_Popup_Delete,
Menu_Popup_Help
};
protected:
bool m_NewValue;
bool m_Advanced;
int m_ItemType;
wxWindow* m_KeyWindow;
wxWindow* m_ValueWindow;
std::string m_Name;
std::string m_Value;
std::string m_HelpString;
bool m_Removed;
//! The following methods set the events handling of widgets for the
// cache property.
void ConnectEvent(wxWindow* win, wxEventType et, wxObjectEventFunction func);
void ConnectEventTo(wxWindow* win, wxEventType et, wxObjectEventFunction func);
void SetupMenu(wxWindow* win);
//! This are event callbacks for different events.
void OnFileBrowseButton(wxEvent& event);
void OnPathBrowseButton(wxEvent& event);
void OnCheckboxButton(wxEvent& event);
void OnEntryChanged(wxEvent& event);
private:
cmMainFrame* m_MainFrame;
wxControl* m_TextControl;
};
#endif