ultimatepp/bazaar/CtrlProp/PropEdit.h
kohait 5bd126c78a bazaar: CtrlProp and ValueAccessorEdit: some NULL inits
git-svn-id: svn://ultimatepp.org/upp/trunk@3901 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2011-09-22 14:59:37 +00:00

46 lines
1 KiB
C++

#ifndef _CtrlProp_PropEdit_h_
#define _CtrlProp_PropEdit_h_
#include <ValueAccessorEdit/ValueAccessorEdit.h>
NAMESPACE_UPP
class PropEditCtrl : public AccessorMapCtrl
{
public:
typedef PropEditCtrl CLASSNAME;
PropEditCtrl() : ctrl(NULL) { WhenAction = THISBACK(OnAction); }
void SetCtrl(Ctrl* c) { if(ctrl != c) { ctrl = c; UpdateCtrl(); } Update(); }
Ctrl* GetCtrl() const { return ctrl; }
void ClearCtrl() { SetCtrl(NULL); }
virtual Value GetData() const { return RawToValue(ctrl); }
virtual void SetData(const Value& v) { SetCtrl(RawValue<Ctrl*>::Extract(v)); }
void OnAction();
protected:
void UpdateCtrl();
Ctrl* ctrl;
One<AccessorMap> oam;
};
class PropEdit : public WithCloserKeys<PopUpC>
{
public:
typedef PropEdit CLASSNAME;
PropEdit();
virtual void Deactivate() {} //let other popups open, we would close on deactivate from PopUpC
using PopUpC::PopUp;
void PopUp(Ctrl* owner, Ctrl& e) { pec.SetCtrl(&e); PopUpC::PopUp(owner); }
PropEditCtrl pec;
};
END_UPP_NAMESPACE
#endif