From e95d3a2a6bb1a8bbc6dfa21fc96f42d9210e65a4 Mon Sep 17 00:00:00 2001 From: kohait Date: Thu, 21 Apr 2011 08:34:41 +0000 Subject: [PATCH] bazaar: BoostPyTest extension of exports, cleanup, preparation for further extensions; CtrlProp: some fixes git-svn-id: svn://ultimatepp.org/upp/trunk@3365 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- bazaar/BoostPyTest/BoostPyTest.lay | 1 + bazaar/BoostPyTest/main.cpp | 19 +++- bazaar/BoostPyTest/modules.cppi | 4 + bazaar/BoostPyTest/world.cpp | 4 +- bazaar/CoreBoostPy/CoreBoostPy.cpp | 1 + bazaar/CoreBoostPy/GTypes.cpp | 131 +++++++++++++++-------- bazaar/CoreBoostPy/GTypes.h | 3 + bazaar/CoreBoostPy/Value.cpp | 99 ++++++++++++++++- bazaar/CoreBoostPy/Value.h | 1 + bazaar/CtrlLibBoostPy/CtrlCore.cpp | 122 ++++++++++++++++++++- bazaar/CtrlLibBoostPy/CtrlCore.h | 2 + bazaar/CtrlLibBoostPy/CtrlLibBoostPy.cpp | 4 +- bazaar/CtrlLibBoostPy/CtrlLibBoostPy.h | 1 + bazaar/CtrlLibBoostPy/CtrlLibBoostPy.upp | 2 + bazaar/CtrlLibBoostPy/EditCtrl.cpp | 45 ++++++++ bazaar/CtrlLibBoostPy/EditCtrl.h | 12 +++ bazaar/CtrlLibBoostPy/SliderCtrl.cpp | 3 +- bazaar/CtrlLibBoostPy/ValueCtrl.cpp | 3 +- bazaar/CtrlProp/Ctrl.icpp | 6 +- bazaar/CtrlProp/CtrlProp.upp | 1 + bazaar/CtrlProp/CtrlPropCommon.h | 1 + bazaar/CtrlProp/EditDoubleSpin.icpp | 2 +- bazaar/CtrlProp/EditInt64Spin.icpp | 2 +- bazaar/CtrlProp/EditIntSpin.icpp | 2 +- bazaar/CtrlProp/EditStringNotNull.icpp | 7 ++ bazaar/CtrlProp/init | 77 ++++++------- bazaar/PyConsoleCtrl/PyConsoleCtrl.cpp | 3 +- 27 files changed, 455 insertions(+), 103 deletions(-) create mode 100644 bazaar/CtrlLibBoostPy/EditCtrl.cpp create mode 100644 bazaar/CtrlLibBoostPy/EditCtrl.h create mode 100644 bazaar/CtrlProp/EditStringNotNull.icpp diff --git a/bazaar/BoostPyTest/BoostPyTest.lay b/bazaar/BoostPyTest/BoostPyTest.lay index 7bc5c94fb..749b0cf79 100644 --- a/bazaar/BoostPyTest/BoostPyTest.lay +++ b/bazaar/BoostPyTest/BoostPyTest.lay @@ -2,5 +2,6 @@ LAYOUT(BoostPyTestLayout, 672, 380) ITEM(PyConsoleCtrl, con, HSizePosZ(0, 248).VSizePosZ(0, 0)) ITEM(SliderCtrl, sl, RightPosZ(8, 232).TopPosZ(12, 48)) ITEM(ValueCtrl, vc, RightPosZ(8, 232).TopPosZ(76, 56)) + ITEM(EditString, es, RightPosZ(8, 232).TopPosZ(148, 19)) END_LAYOUT diff --git a/bazaar/BoostPyTest/main.cpp b/bazaar/BoostPyTest/main.cpp index f59959fba..dd841935b 100644 --- a/bazaar/BoostPyTest/main.cpp +++ b/bazaar/BoostPyTest/main.cpp @@ -49,18 +49,29 @@ BoostPyTest::BoostPyTest() vc.SetData(123); scope(upp_module).attr("vc") = ptr(&vc); + es.SetData("Hello from Upp"); + scope(upp_module).attr("es") = ptr(&es); + //the additional import is needless String sc = + "p = hello.World()\n" "p.set('Some Greet Text')\n" "print p.greet()\n" - "upp.sl.setdata(75)\n" - "print upp.sl.getdata()\n" + "upp.sl.data = 75\n" + "print upp.sl.data\n" - "upp.vc.setdata(range(10))\n" - "print upp.vc.getdata()\n" + "upp.vc.data = range(10)\n" + "print upp.vc.data\n" + "print upp.es.data\n" + "upp.es.data = 'Another Text from Upp'\n" + "print upp.es.data\n" + + "c = upp.Color(123,124,125)\n" + "print c" + //"upp.vc.data = c\n" ; con.cmd.SetData(sc); diff --git a/bazaar/BoostPyTest/modules.cppi b/bazaar/BoostPyTest/modules.cppi index c0d3f75e1..7afa9c710 100644 --- a/bazaar/BoostPyTest/modules.cppi +++ b/bazaar/BoostPyTest/modules.cppi @@ -2,10 +2,14 @@ BOOST_PYTHON_MODULE(hello) { + scope().attr("__doc__") = "hello module"; export_world(); } BOOST_PYTHON_MODULE(upp) { + scope().attr("__doc__") = "upp module"; + export_Core(); + export_CtrlCore(); export_CtrlLib(); } diff --git a/bazaar/BoostPyTest/world.cpp b/bazaar/BoostPyTest/world.cpp index 340eaad00..0acc58fac 100644 --- a/bazaar/BoostPyTest/world.cpp +++ b/bazaar/BoostPyTest/world.cpp @@ -1,5 +1,7 @@ #include "world.h" using namespace boost::python; +//#include +//using namespace std; NAMESPACE_UPP @@ -7,8 +9,8 @@ void export_world() { ONCELOCK { - scope().attr("__doc__") = "Hello module's docstring"; class_("World", "A simple world") + .def("__str__", &World::greet) //somehow works only for print not for general return as string echo .def("greet", &World::greet) .def("set", &World::set) ; diff --git a/bazaar/CoreBoostPy/CoreBoostPy.cpp b/bazaar/CoreBoostPy/CoreBoostPy.cpp index cb84246d0..a36ff8c66 100644 --- a/bazaar/CoreBoostPy/CoreBoostPy.cpp +++ b/bazaar/CoreBoostPy/CoreBoostPy.cpp @@ -10,6 +10,7 @@ ONCELOCK export_String(); export_Value(); export_ValueArray(); + export_ValueMap(); } } diff --git a/bazaar/CoreBoostPy/GTypes.cpp b/bazaar/CoreBoostPy/GTypes.cpp index 91c248d11..4d0fe3ee7 100644 --- a/bazaar/CoreBoostPy/GTypes.cpp +++ b/bazaar/CoreBoostPy/GTypes.cpp @@ -3,55 +3,95 @@ using namespace boost::python; NAMESPACE_UPP -//Color - -struct Color_to_python -{ - static PyObject* convert(const Color& c) - { - list l; - l.append(object(c.GetR())); - l.append(object(c.GetG())); - l.append(object(c.GetB())); - return incref(l.ptr()); //need to create a list - } -}; - -struct Color_from_python -{ - Color_from_python() - { - converter::registry::push_back(&convertible, &construct, type_id()); - } - - static void* convertible(PyObject* po) - { - if(PyList_Check(po)) return po; - return 0; - } - - static void construct(PyObject* po, converter::rvalue_from_python_stage1_data* data) - { - void* d = ((converter::rvalue_from_python_storage*)data)->storage.bytes; - - list l(handle<>(borrowed(po))); - assert(len(l)==3); - int r,g,b; - r = extract(l[0]); - g = extract(l[1]); - b = extract(l[2]); - new(d) Color(r,g,b); - - data->convertible = d; - } -}; +void ColorSetNull(Color& c) { c = Null; } //FIXME upstream access to Color::SetNull void export_Color() { ONCELOCK { - to_python_converter(); - Color_from_python(); + class_("Color", "Upp Color") + .def(init()) + .def(init()) + .add_property("raw", &Color::GetRaw) + .add_property("r", &Color::GetR) + .add_property("g", &Color::GetG) + .add_property("b", &Color::GetB) +// .def("setnull", &Color::SetNull) + .def("setnull", &ColorSetNull) + .def("isnull", &IsNull) + .def("__str__", &AsString) + ; +} +} + +void export_Size() +{ +ONCELOCK +{ + class_("Size", "Upp Size") + .def(init()) + .def_readwrite("cx", &Size::cx) + .def_readwrite("cy", &Size::cy) + .def("clear", &Size::Clear) + .def("setnull", &Size::SetNull) + .def("isnull", &IsNull) + .def("__str__", &AsString) + ; +} +} + +void export_Point() +{ +ONCELOCK +{ + class_("Point", "Upp Point") + .def(init()) + .def_readwrite("x", &Point::x) + .def_readwrite("y", &Point::y) + .def("clear", &Point::Clear) + .def("setnull", &Point::SetNull) + .def("isnull", &IsNull) + .def("__str__", &AsString) + ; +} +} + +void export_Rect() +{ +ONCELOCK +{ + class_("Rect", "Upp Rect") + .def(init()) + .def(init()) + .def(init()) + .def_readwrite("left", &Rect::left) + .def_readwrite("top", &Rect::top) + .def_readwrite("right", &Rect::right) + .def_readwrite("bottom", &Rect::bottom) + .def("clear", &Rect::Clear) + .def("setnull", &Rect::SetNull) + .def("isnull", &IsNull) + .def("__str__", &AsString) + + .add_property("topleft", &Rect::TopLeft) + .add_property("topcenter", &Rect::TopCenter) + .add_property("topright", &Rect::TopRight) + + .add_property("centerleft", &Rect::CenterLeft) + .add_property("center", &Rect::CenterPoint) + .add_property("centerright", &Rect::CenterRight) + + .add_property("bottomleft", &Rect::BottomLeft) + .add_property("bottomcenter", &Rect::BottomCenter) + .add_property("bottomright", &Rect::BottomRight) + + .add_property("width", &Rect::Width) + .add_property("height", &Rect::Height) + .add_property("size", &Rect::Size) + + .add_property("centerpos", (Point (Rect::*)(int, int) const)&Rect::CenterPos) + .add_property("centerrect", (Rect (Rect::*)(int, int) const)&Rect::CenterRect) + ; } } @@ -62,6 +102,9 @@ void export_GTypes() ONCELOCK { export_Color(); + export_Point(); + export_Size(); + export_Rect(); } } diff --git a/bazaar/CoreBoostPy/GTypes.h b/bazaar/CoreBoostPy/GTypes.h index 174b24fc4..579480752 100644 --- a/bazaar/CoreBoostPy/GTypes.h +++ b/bazaar/CoreBoostPy/GTypes.h @@ -6,6 +6,9 @@ NAMESPACE_UPP void export_Color(); +void export_Size(); +void export_Point(); +void export_Rect(); void export_GTypes(); diff --git a/bazaar/CoreBoostPy/Value.cpp b/bazaar/CoreBoostPy/Value.cpp index 5ed6fa131..e50599dbe 100644 --- a/bazaar/CoreBoostPy/Value.cpp +++ b/bazaar/CoreBoostPy/Value.cpp @@ -15,6 +15,10 @@ struct Value_to_python case DOUBLE_V: return incref(object(double(v)).ptr()); case STRING_V: return incref(object(String(v)).ptr()); case VALUEARRAY_V: return incref(object(ValueArray(v)).ptr()); + case COLOR_V: return incref(object(Color(v)).ptr()); + case POINT_V: return incref(object(Point(v)).ptr()); + case SIZE_V: return incref(object(Size(v)).ptr()); + case RECT_V: return incref(object(Rect(v)).ptr()); case VOID_V: default: return incref(object().ptr()); //none } @@ -37,6 +41,11 @@ struct Value_from_python if(PyFloat_Check(po)) return po; if(PyString_Check(po)) return po; if(PyList_Check(po)) return po; + if(PyDict_Check(po)) return po; + if(extract(po).check()) return po; + if(extract(po).check()) return po; + if(extract(po).check()) return po; + if(extract(po).check()) return po; return 0; } @@ -80,13 +89,43 @@ struct Value_from_python else if(PyString_Check(po)) { - String c = extract(object(handle<>(borrowed(po)))); //use upper converter, really borrowed? + String c = extract(po); //use upper converter new(d) Value(c); } else if(PyList_Check(po)) { - ValueArray c = extract(object(handle<>(borrowed(po)))); //use upper converter, really borrowed? + ValueArray c = extract(po); //use upper converter + new(d) Value(c); + } + else + if(PyDict_Check(po)) + { + ValueMap c = extract(po); //use upper converter + new(d) Value(c); + } + else + if(extract(po).check()) + { + Color& c = extract(po); //use upper converter + new(d) Value(c); + } + else + if(extract(po).check()) + { + Point& c = extract(po); //use upper converter + new(d) Value(c); + } + else + if(extract(po).check()) + { + Size& c = extract(po); //use upper converter + new(d) Value(c); + } + else + if(extract(po).check()) + { + Rect& c = extract(po); //use upper converter new(d) Value(c); } else @@ -157,4 +196,60 @@ ONCELOCK } } +//ValueMap + +struct ValueMap_to_python +{ + static PyObject* convert(const ValueMap& v) + { + dict dt; + const Index& k = v.GetKeys(); + const Vector& vv = v.GetValues().Get(); + ASSERT(k.GetCount() == vv.GetCount()); + for(int i = 0; i < k.GetCount(); i++) + dt[object(k[i])] = object(vv[i]); + return incref(dt.ptr()); //need to create a list + } +}; + +struct ValueMap_from_python +{ + ValueMap_from_python() + { + converter::registry::push_back(&convertible, &construct, type_id()); + } + + static void* convertible(PyObject* po) + { + if(PyDict_Check(po)) return po; + return 0; + } + + static void construct(PyObject* po, converter::rvalue_from_python_stage1_data* data) + { + void* d = ((converter::rvalue_from_python_storage*)data)->storage.bytes; + + Index k; + Vector vv; + dict dt(handle<>(borrowed(po))); + for(int i = 0; i < len(dt); i++) + { + k.Add(Null); //FIXME + vv.Add(Null); //extract(dt[i])); + } + new(d) ValueMap(k, vv); + + data->convertible = d; + } +}; + +void export_ValueMap() +{ +ONCELOCK +{ + to_python_converter(); + ValueMap_from_python(); +} +} + END_UPP_NAMESPACE \ No newline at end of file diff --git a/bazaar/CoreBoostPy/Value.h b/bazaar/CoreBoostPy/Value.h index 4485bfb10..eca2498d6 100644 --- a/bazaar/CoreBoostPy/Value.h +++ b/bazaar/CoreBoostPy/Value.h @@ -7,6 +7,7 @@ NAMESPACE_UPP void export_Value(); void export_ValueArray(); +void export_ValueMap(); END_UPP_NAMESPACE diff --git a/bazaar/CtrlLibBoostPy/CtrlCore.cpp b/bazaar/CtrlLibBoostPy/CtrlCore.cpp index 788b78620..870474486 100644 --- a/bazaar/CtrlLibBoostPy/CtrlCore.cpp +++ b/bazaar/CtrlLibBoostPy/CtrlCore.cpp @@ -3,17 +3,131 @@ using namespace boost::python; NAMESPACE_UPP +void export_Logc() +{ +ONCELOCK +{ + enum_("choice") + .value("center", Ctrl::CENTER) + .value("middle", Ctrl::MIDDLE) + .value("left", Ctrl::LEFT) + .value("right", Ctrl::RIGHT) + .value("top", Ctrl::TOP) + .value("bottom", Ctrl::BOTTOM) + .value("size", Ctrl::SIZE) + .value("minsize", Ctrl::MINSIZE) + .value("maxsize", Ctrl::MAXSIZE) + .value("stdsize", Ctrl::STDSIZE) + ; + + class_("Logc", "Upp Ctrl::Logc") + .def(init()) + .add_property("align", &Ctrl::Logc::GetAlign, &Ctrl::Logc::SetAlign) + .add_property("a", &Ctrl::Logc::GetA, &Ctrl::Logc::SetA) + .add_property("b", &Ctrl::Logc::GetB, &Ctrl::Logc::SetB) + .def("isempty", &Ctrl::Logc::IsEmpty) +// .def("__str__", &AsString) + ; +} +} + +void export_LogPos() +{ +ONCELOCK +{ + export_Logc(); + class_("LogPos", "Upp Ctrl::LogPos") + .def(init()) + .def_readwrite("x", &Ctrl::LogPos::x) + .def_readwrite("y", &Ctrl::LogPos::y) +// .def("__str__", &AsString) //FIXME LogPosCtrl + ; +} +} + +//virtuals +bool CtrlAccept(Ctrl& c) { return c.Accept(); } +void CtrlReject(Ctrl& c) { c.Reject(); } + +void CtrlSetModify(Ctrl& c, bool b) { if (b) c.SetModify(); else c.ClearModify(); } +bool CtrlIsModified(const Ctrl& c) { return c.IsModified(); } + Value CtrlGetData(const Ctrl& c) { return c.GetData(); } void CtrlSetData(Ctrl& c, const Value& data) { c.SetData(data); } +//return ignorers +void CtrlWantFocus(Ctrl& c, bool b) { c.WantFocus(b); } +void CtrlInitFocus(Ctrl& c, bool b) { c.InitFocus(b); } +void CtrlSetEditable(Ctrl& c, bool b) { c.SetEditable(b); } +void CtrlSetPos(Ctrl& c, const Ctrl::LogPos& p) { c.SetPos(p); } +void CtrlSetTip(Ctrl& c, const String& s) { c.Tip(s); } +void CtrlTransparent(Ctrl& c, bool b) { c.Transparent(b); } + +//other +void CtrlSetFocus(Ctrl& c, bool b) { if(b) c.SetFocus(); else if(c.GetParent()) c.GetParent()->SetFocus(); } +void CtrlSetBackPaint(Ctrl& c, bool b) { c.BackPaint(b?(Ctrl::FULLBACKPAINT):(Ctrl::NOBACKPAINT)); } +bool CtrlIsBackPaint(const Ctrl& c) { return (c.GetBackPaint()!=Ctrl::NOBACKPAINT); } + +String CtrlToString(const Ctrl& c) +{ + return String().Cat() << String(typeid(c).name()) << ": " << AsString(c.GetData()); +} + +// + void export_CtrlCore() { ONCELOCK { - scope().attr("__doc__") = "Ctrl's docstring"; - class_("Ctrl", "An Upp Ctrl", no_init) - .def("getdata", CtrlGetData) - .def("setdata", CtrlSetData) + export_Core(); + export_LogPos(); + class_("Ctrl", "Upp Ctrl", no_init) + + .def("posleft", &Ctrl::PosLeft) + .staticmethod("posleft") + .def("posright", &Ctrl::PosRight) + .staticmethod("posright") + .def("postop", &Ctrl::PosTop) + .staticmethod("postop") + .def("posbottom", &Ctrl::PosBottom) + .staticmethod("posbottom") + .def("possize", &Ctrl::PosSize) + .staticmethod("possize") + .def("poscenter", (Ctrl::Logc (*)(int, int))&Ctrl::PosCenter) + .staticmethod("poscenter") + + .def("accept", &CtrlAccept) + .def("reject", &CtrlReject) + + .add_property("data", &CtrlGetData, &CtrlSetData) + + .add_property("modify", &CtrlIsModified, &CtrlSetModify) + .def("resetmodify", &Ctrl::ResetModify) + + .add_property("pos", &Ctrl::GetPos, &CtrlSetPos) + .add_property("rect", &Ctrl::GetRect, (void (Ctrl::*)(const Rect&))&Ctrl::SetRect) + .add_property("size", &Ctrl::GetSize) + +//FIXME pos stuff + + .add_property("focus", &Ctrl::HasFocus, &CtrlSetFocus) + .add_property("wantfocus", &CtrlWantFocus, &Ctrl::IsWantFocus) + .add_property("initfocus", &Ctrl::IsInitFocus, &CtrlInitFocus) + + .add_property("show", &Ctrl::IsVisible, &Ctrl::Show) + .add_property("shown", &Ctrl::IsShown) + .add_property("enable", &Ctrl::IsEnabled, &Ctrl::Enable) + .add_property("edit", &Ctrl::IsEditable, &CtrlSetEditable) + + .def("update", &Ctrl::Update) + .def("action", &Ctrl::Action) + .def("refresh", (void (Ctrl::*)(void))&Ctrl::Refresh) + + .add_property("backpaint", &CtrlIsBackPaint, &CtrlSetBackPaint) + .add_property("transparent", &Ctrl::IsTransparent, &CtrlTransparent) + .add_property("tip", &Ctrl::GetTip, &CtrlSetTip) + + .def("__str__", &CtrlToString) ; } } diff --git a/bazaar/CtrlLibBoostPy/CtrlCore.h b/bazaar/CtrlLibBoostPy/CtrlCore.h index 471859eb9..d5d897c6a 100644 --- a/bazaar/CtrlLibBoostPy/CtrlCore.h +++ b/bazaar/CtrlLibBoostPy/CtrlCore.h @@ -5,6 +5,8 @@ NAMESPACE_UPP +void export_Logc(); +void export_LogPos(); void export_CtrlCore(); END_UPP_NAMESPACE diff --git a/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.cpp b/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.cpp index f3100fc55..c74695a7f 100644 --- a/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.cpp +++ b/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.cpp @@ -6,9 +6,9 @@ void export_CtrlLib() { ONCELOCK { - export_Core(); - export_CtrlCore(); + export_EditCtrl(); + export_SliderCtrl(); export_ValueCtrl(); } diff --git a/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.h b/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.h index 6cfc18744..506d5e18c 100644 --- a/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.h +++ b/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.h @@ -2,6 +2,7 @@ #define _CtrlLibBoostPy_CtrlLibBoostPy_h_ #include "CtrlCore.h" +#include "EditCtrl.h" #include "SliderCtrl.h" #include "ValueCtrl.h" diff --git a/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.upp b/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.upp index 1b19e207d..b97ce215a 100644 --- a/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.upp +++ b/bazaar/CtrlLibBoostPy/CtrlLibBoostPy.upp @@ -11,6 +11,8 @@ file SliderCtrl.cpp, ValueCtrl.h, ValueCtrl.cpp, + EditCtrl.h, + EditCtrl.cpp, CtrlLibBoostPy.h, CtrlLibBoostPy.cpp; diff --git a/bazaar/CtrlLibBoostPy/EditCtrl.cpp b/bazaar/CtrlLibBoostPy/EditCtrl.cpp new file mode 100644 index 000000000..81c7a60a6 --- /dev/null +++ b/bazaar/CtrlLibBoostPy/EditCtrl.cpp @@ -0,0 +1,45 @@ +#include "EditCtrl.h" +using namespace boost::python; + +NAMESPACE_UPP + +void export_EditCtrl() +{ +ONCELOCK +{ + class_, EditField, boost::noncopyable>("EditField", "Upp EditField", no_init) + ; + + class_, EditString, boost::noncopyable>("EditString", "Upp EditString", no_init) + ; + class_, EditInt, boost::noncopyable>("EditInt", "Upp EditInt", no_init) + ; + class_, EditInt64, boost::noncopyable>("EditInt64", "Upp EditInt64", no_init) + ; + class_, EditDouble, boost::noncopyable>("EditDouble", "Upp EditDouble", no_init) + ; + class_, EditStringNotNull, boost::noncopyable>("EditStringNotNull", "Upp EditStringNotNull", no_init) + ; + class_, EditIntNotNull, boost::noncopyable>("EditIntNotNull", "Upp EditIntNotNull", no_init) + ; + class_, EditInt64NotNull, boost::noncopyable>("EditInt64NotNull", "Upp EditInt64NotNull", no_init) + ; + class_, EditDoubleNotNull, boost::noncopyable>("EditDoubleNotNull", "Upp EditDoubleNotNull", no_init) + ; + + class_, EditIntSpin, boost::noncopyable>("EditIntSpin", "Upp EditIntSpin", no_init) + ; + class_, EditInt64Spin, boost::noncopyable>("EditInt64Spin", "Upp EditInt64Spin", no_init) + ; + class_, EditDoubleSpin, boost::noncopyable>("EditDoubleSpin", "Upp EditDoubleSpin", no_init) + ; + class_, EditIntNotNullSpin, boost::noncopyable>("EditIntNotNullSpin", "Upp EditIntNotNullSpin", no_init) + ; + class_, EditInt64NotNullSpin, boost::noncopyable>("EditInt64NotNullSpin", "Upp EditInt64NotNullSpin", no_init) + ; + class_, EditDoubleNotNullSpin, boost::noncopyable>("EditDoubleNotNullSpin", "Upp EditDoubleNotNullSpin", no_init) + ; +} +} + +END_UPP_NAMESPACE diff --git a/bazaar/CtrlLibBoostPy/EditCtrl.h b/bazaar/CtrlLibBoostPy/EditCtrl.h new file mode 100644 index 000000000..0ca04e585 --- /dev/null +++ b/bazaar/CtrlLibBoostPy/EditCtrl.h @@ -0,0 +1,12 @@ +#ifndef _CtrlLibBoostPy_EditCtrl_h_ +#define _CtrlLibBoostPy_EditCtrl_h_ + +#include "Common.h" + +NAMESPACE_UPP + +void export_EditCtrl(); + +END_UPP_NAMESPACE + +#endif diff --git a/bazaar/CtrlLibBoostPy/SliderCtrl.cpp b/bazaar/CtrlLibBoostPy/SliderCtrl.cpp index cc2fddb74..9bf401527 100644 --- a/bazaar/CtrlLibBoostPy/SliderCtrl.cpp +++ b/bazaar/CtrlLibBoostPy/SliderCtrl.cpp @@ -7,8 +7,7 @@ void export_SliderCtrl() { ONCELOCK { - scope().attr("__doc__") = "SliderCtrl's docstring"; - class_, SliderCtrl, boost::noncopyable>("SliderCtrl", "An Upp SliderCtrl", no_init) + class_, SliderCtrl, boost::noncopyable>("SliderCtrl", "Upp SliderCtrl", no_init) .def("inc", &SliderCtrl::Inc) .def("dec", &SliderCtrl::Dec) .def("step", &SliderCtrl::GetStep) diff --git a/bazaar/CtrlLibBoostPy/ValueCtrl.cpp b/bazaar/CtrlLibBoostPy/ValueCtrl.cpp index da6e652e5..45c18308c 100644 --- a/bazaar/CtrlLibBoostPy/ValueCtrl.cpp +++ b/bazaar/CtrlLibBoostPy/ValueCtrl.cpp @@ -7,8 +7,7 @@ void export_ValueCtrl() { ONCELOCK { - scope().attr("__doc__") = "ValueCtrl module's docstring"; - class_, ValueCtrl, boost::noncopyable>("ValueCtrl", "An Upp ValueCtrl", no_init) + class_, ValueCtrl, boost::noncopyable>("ValueCtrl", "Upp ValueCtrl", no_init) ; } } diff --git a/bazaar/CtrlProp/Ctrl.icpp b/bazaar/CtrlProp/Ctrl.icpp index 07f5953fc..f87d8e1be 100644 --- a/bazaar/CtrlProp/Ctrl.icpp +++ b/bazaar/CtrlProp/Ctrl.icpp @@ -7,12 +7,14 @@ bool PropEnable(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; o.Enab bool PropIsEnabled(Value& v, const Ctrl& o) { v = o.IsEnabled(); return true; } bool PropShow(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; o.Show(v); return true; } bool PropIsVisible(Value& v, const Ctrl& o) { v = o.IsVisible(); return true; } +bool PropIsShown(Value& v, const Ctrl& o) { v = o.IsShown(); return true; } bool PropEditable(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; o.SetEditable(v); return true; } bool PropIsEditable(Value& v, const Ctrl& o) { v = o.IsEditable(); return true; } bool PropFocus(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; bool b = v; if(b) o.SetFocus(); else if(o.GetParent()) o.GetParent()->SetFocus(); return true; } bool PropHasFocus(Value& v, const Ctrl& o) { v = o.HasFocus(); return true; } -bool PropModify(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; bool b = v; if(b) o.SetModify(); else o.ResetModify(); return true; } +bool PropModify(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; bool b = v; if(b) o.SetModify(); else o.ClearModify(); return true; } bool PropIsModified(Value& v, const Ctrl& o) { v = o.IsModified(); return true; } +bool PropResetModify(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; if(bool(v)) o.ResetModify(); return true; } bool PropSetTip(const Value& v, Ctrl& o) { o.Tip(AsString(v)); return true; } bool PropGetTip(Value& v, const Ctrl& o) { v = o.GetTip(); return true; } bool PropWantFocus(const Value& v, Ctrl& o) { if(!IsNumber(v)) return false; o.WantFocus(v); return true; } @@ -35,10 +37,12 @@ PROPERTIES(Ctrl, EmptyClass) PROPERTY("data", PropSetData, PropGetData) PROPERTY("enable", PropEnable, PropIsEnabled) PROPERTY("show", PropShow, PropIsVisible) +PROPERTY_GET("shown", PropIsShown) PROPERTY("editable", PropEditable, PropIsEditable) PROPERTY("logpos", PropSetLogPos, PropGetLogPos) PROPERTY("focus", PropFocus, PropHasFocus) PROPERTY("modify", PropModify, PropIsModified) +PROPERTY_SET("refresh", PropResetModify) PROPERTY("tip", PropSetTip, PropGetTip) PROPERTY("wantfocus", PropWantFocus, PropIsWantFocus) PROPERTY("initFocus", PropInitFocus, PropIsInitFocus) diff --git a/bazaar/CtrlProp/CtrlProp.upp b/bazaar/CtrlProp/CtrlProp.upp index 7fed3bc96..58b7f8abc 100644 --- a/bazaar/CtrlProp/CtrlProp.upp +++ b/bazaar/CtrlProp/CtrlProp.upp @@ -26,6 +26,7 @@ file EditInt.icpp, EditInt64.icpp, EditDouble.icpp, + EditStringNotNull.icpp, EditIntNotNull.icpp, EditInt64NotNull.icpp, EditDoubleNotNull.icpp, diff --git a/bazaar/CtrlProp/CtrlPropCommon.h b/bazaar/CtrlProp/CtrlPropCommon.h index 197091011..f8b557d2b 100644 --- a/bazaar/CtrlProp/CtrlPropCommon.h +++ b/bazaar/CtrlProp/CtrlPropCommon.h @@ -21,6 +21,7 @@ DEC_PROPERTIES(EditString, EditField) DEC_PROPERTIES(EditInt, EditField) DEC_PROPERTIES(EditInt64, EditField) DEC_PROPERTIES(EditDouble, EditField) +DEC_PROPERTIES(EditStringNotNull, EditString) DEC_PROPERTIES(EditIntNotNull, EditInt) DEC_PROPERTIES(EditInt64NotNull, EditInt64) DEC_PROPERTIES(EditDoubleNotNull, EditDouble) diff --git a/bazaar/CtrlProp/EditDoubleSpin.icpp b/bazaar/CtrlProp/EditDoubleSpin.icpp index 126364712..25af2368c 100644 --- a/bazaar/CtrlProp/EditDoubleSpin.icpp +++ b/bazaar/CtrlProp/EditDoubleSpin.icpp @@ -4,7 +4,7 @@ bool PropSetInc(const Value& v, EditDoubleSpin& o) { if(!IsNumber(v)) return false; o.SetInc(v); return true; } bool PropGetInc(Value& v, const EditDoubleSpin& o) { v = o.GetInc(); return true; } bool PropSetShowSpin(const Value& v, EditDoubleSpin& o) { if(!IsNumber(v)) return false; o.ShowSpin(v); return true; } -bool PropGetShowSpin(Value& v, const EditDoubleSpin& o) { v = o.IsShowSpin(); return true; } +bool PropGetShowSpin(Value& v, const EditDoubleSpin& o) { v = o.IsSpinVisible(); return true; } PROPERTIES(EditDoubleSpin, EditDouble) PROPERTY("inc", PropSetInc, PropGetInc) diff --git a/bazaar/CtrlProp/EditInt64Spin.icpp b/bazaar/CtrlProp/EditInt64Spin.icpp index d3683f6ce..55478fe0a 100644 --- a/bazaar/CtrlProp/EditInt64Spin.icpp +++ b/bazaar/CtrlProp/EditInt64Spin.icpp @@ -4,7 +4,7 @@ bool PropSetInc(const Value& v, EditInt64Spin& o) { if(!IsNumber(v)) return false; o.SetInc(v); return true; } bool PropGetInc(Value& v, const EditInt64Spin& o) { v = o.GetInc(); return true; } bool PropSetShowSpin(const Value& v, EditInt64Spin& o) { if(!IsNumber(v)) return false; o.ShowSpin(v); return true; } -bool PropGetShowSpin(Value& v, const EditInt64Spin& o) { v = o.IsShowSpin(); return true; } +bool PropGetShowSpin(Value& v, const EditInt64Spin& o) { v = o.IsSpinVisible(); return true; } PROPERTIES(EditInt64Spin, EditInt64) PROPERTY("inc", PropSetInc, PropGetInc) diff --git a/bazaar/CtrlProp/EditIntSpin.icpp b/bazaar/CtrlProp/EditIntSpin.icpp index d11a36ca3..3cfb7e9f8 100644 --- a/bazaar/CtrlProp/EditIntSpin.icpp +++ b/bazaar/CtrlProp/EditIntSpin.icpp @@ -4,7 +4,7 @@ bool PropSetInc(const Value& v, EditIntSpin& o) { if(!IsNumber(v)) return false; o.SetInc(v); return true; } bool PropGetInc(Value& v, const EditIntSpin& o) { v = o.GetInc(); return true; } bool PropSetShowSpin(const Value& v, EditIntSpin& o) { if(!IsNumber(v)) return false; o.ShowSpin(v); return true; } -bool PropGetShowSpin(Value& v, const EditIntSpin& o) { v = o.IsShowSpin(); return true; } +bool PropGetShowSpin(Value& v, const EditIntSpin& o) { v = o.IsSpinVisible(); return true; } PROPERTIES(EditIntSpin, EditInt) PROPERTY("inc", PropSetInc, PropGetInc) diff --git a/bazaar/CtrlProp/EditStringNotNull.icpp b/bazaar/CtrlProp/EditStringNotNull.icpp new file mode 100644 index 000000000..13107a344 --- /dev/null +++ b/bazaar/CtrlProp/EditStringNotNull.icpp @@ -0,0 +1,7 @@ +#include "CtrlPropCommon.h" +#include + +PROPERTIES(EditStringNotNull, EditString) +END_PROPERTIES + +PROPS(Ctrl, EditStringNotNull, EditString) diff --git a/bazaar/CtrlProp/init b/bazaar/CtrlProp/init index ae83d45fc..743e20f8d 100644 --- a/bazaar/CtrlProp/init +++ b/bazaar/CtrlProp/init @@ -5,115 +5,118 @@ #include "ValueCtrl/init" #include "Gen/init" #include "Property/init" -#define BLITZ_INDEX__ F4EC0DB899421D0C1D869232C6EC4C5A3 +#define BLITZ_INDEX__ FFC2270AB0FB33D678F5561A07F438A77 #include "Ctrl.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F3397D59194F9D4B10B1FCE8C48B3656F +#define BLITZ_INDEX__ FB4183220157DADB51535992BE9ADFC12 #include "Pusher.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FCFB26CCB720C731590AE5A2A41870099 +#define BLITZ_INDEX__ F4BC91299C20A6B9D8543A53AC29C4DD4 #include "Button.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F381DD011034260B0065FCCB00D9B3FCD +#define BLITZ_INDEX__ F5F54889575415D7DA9E011B22CAD4677 #include "ButtonOption.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F06370681C42D1C0F5ED7DECFBCCF38CC +#define BLITZ_INDEX__ FAB6FBE1CC30704B6E85F4C560F470868 #include "Option.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FDBDED7C612DDD7CC99E1AE7ED52DC9B2 +#define BLITZ_INDEX__ F19FC452F7E8FC5DF9AF5FAB26E19CDC4 #include "Switch.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F55D2E2CD4483365B842C1549FCBBD10C +#define BLITZ_INDEX__ FE5BA8D3795F0AEA139224D0CE165D7B5 #include "EditField.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F5CD0D9636F9DF26E6D1891B0211D7EC3 +#define BLITZ_INDEX__ F2B034460C632BA9E18DCCEF898064609 #include "EditString.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FE2FA2420124F2F4DEEB76903EF7BEAF5 +#define BLITZ_INDEX__ FCE260609A5532B2A1E3CF5D3E6B44E48 #include "EditInt.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FDD59F48E680E3373B72DA882FAB0CD08 +#define BLITZ_INDEX__ FBF49E638A7C7E464F03424D1AFF39E22 #include "EditInt64.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F542CF35D22B2982CF4B2932EEBE1FA8B +#define BLITZ_INDEX__ F3132A0EDB96002892759BB2DBEF1CC9F #include "EditDouble.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F198EF5BA8E7E45F3D0C7B4F0735D03EC +#define BLITZ_INDEX__ FE0D87E3E2113BEA9B177CD5A2786B002 +#include "EditStringNotNull.icpp" +#undef BLITZ_INDEX__ +#define BLITZ_INDEX__ F0ECB3DDD44A907D388AF81DBFB2A6C93 #include "EditIntNotNull.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F80C1B81E1CEF5E34AD3D6D8DCAA48CB1 +#define BLITZ_INDEX__ F5397628FE5A93A84D77BEFC1ECA67EA6 #include "EditInt64NotNull.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FE60BF48B43BBF74B0B54BC87C1FAC217 +#define BLITZ_INDEX__ F5F589B1CE1B79516B109AD1AD14BBBDE #include "EditDoubleNotNull.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FE383B80BB8EB03E69D0DE355F061445A +#define BLITZ_INDEX__ FE06FB7B5E32C6D2828597A81ACAEF624 #include "EditIntSpin.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F3B22816CFDBE883A08875ACADED044C5 +#define BLITZ_INDEX__ F4617D89FBF7F0381ED15A40F31611221 #include "EditInt64Spin.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F0FC83045C1BDBE6115477DAB29414E46 +#define BLITZ_INDEX__ F4EF437BC4BDF79A5BE083049E0903B72 #include "EditDoubleSpin.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F94EA7834B45E0EFFF1EA5C9F1D793966 +#define BLITZ_INDEX__ F4446E8336B47C63BD2DCA7BD57595C9D #include "EditIntNotNullSpin.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F9A2E5E82BFB3994E113F55EAD88DD319 +#define BLITZ_INDEX__ F509BE4B7BB17734D065674715E03B86F #include "EditInt64NotNullSpin.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F0800A32BC9588A3882708FC1403047E9 +#define BLITZ_INDEX__ FD5D326864DA1DD80729FDC51D7C5CA78 #include "EditDoubleNotNullSpin.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F090168E99D6C8AB65F941F1031B76C19 +#define BLITZ_INDEX__ F09F8F48362E6C915B81A36386271E80B #include "EditDate.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FADC4B5E906F6B3A00FBE7CF260AC1661 +#define BLITZ_INDEX__ FE6E5B6C3F6BAB1A7201A5123CDE2305C #include "EditTime.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F78443C4BE99BC4BD9234AF2EFAF9DA9E +#define BLITZ_INDEX__ F60DCD6B01D912776843181D1D3724D1E #include "EditDateNotNull.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F83557A930D6ED7EC782F36D6B41B74C8 +#define BLITZ_INDEX__ F7D709718A03B1A9E0AC038DFBEDE79CE #include "EditTimeNotNull.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FF633FF8E0669D4950989F0BE67B9B14B +#define BLITZ_INDEX__ F9AE32D2324197279D4FCF442CDF6C0ED #include "TextCtrl.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F9DB26EA152406370E2AB8C5206AE8B7B +#define BLITZ_INDEX__ F4F3878C4A91F673762FB3A63F26182D7 #include "LineEdit.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FE4470C0DA4CAF8DBB353CEB03667FF06 +#define BLITZ_INDEX__ F26C70D98845F1C603D404C5CD2C161D5 #include "DocEdit.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F155A52A914CA880B2B814DDDAF6BD79B +#define BLITZ_INDEX__ F79087F1CC260466FFA1EAD8914E36E9F #include "StaticText.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FEC1A18AA1B510E6AE0814A6B564799DA +#define BLITZ_INDEX__ FF876FA80BC41C8BC263238671A0075CF #include "Label.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F47828CFC11F4EBB0E2F5581973CA8877 +#define BLITZ_INDEX__ F57E0A8F51EA69357C483096AE268C95A #include "LabelBox.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F4F16F05EE2CFF503CA9B25CBE4988A75 +#define BLITZ_INDEX__ F6582304123ECBEE22680EA2F77A51451 #include "ParentCtrl.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F3AC10AF9A3F7FAF987F0CB37B7FEF10F +#define BLITZ_INDEX__ F1532A61E89187887BCBB051F1D0C44ED #include "StaticRect.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FE73D753887BFF7C80E3C55713C1AF0B9 +#define BLITZ_INDEX__ FFD30132CA05AA27133EC27B2C07E5ED1 #include "ImageCtrl.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F759C8E1322BD4BC8C2BFF0A154B18BD9 +#define BLITZ_INDEX__ F2CE5D540E87DAE77F2D959612019FCC8 #include "DisplayCtrl.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F3B1828F5731F2DF389626AD2EA5130B8 +#define BLITZ_INDEX__ F0E31EDFC7BADB57A6116CA552C17DD50 #include "Picture.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ FD64BE2656AF741A314947E51E11FF2F7 +#define BLITZ_INDEX__ F4540B0520E33F322636959BD513569CF #include "SeparatorCtrl.icpp" #undef BLITZ_INDEX__ -#define BLITZ_INDEX__ F6F03A2CB37A88111DD950A8C0C0C49DB +#define BLITZ_INDEX__ F2C3719B6302762034D27F7F463A33ACE #include "SliderCtrl.icpp" #undef BLITZ_INDEX__ #endif diff --git a/bazaar/PyConsoleCtrl/PyConsoleCtrl.cpp b/bazaar/PyConsoleCtrl/PyConsoleCtrl.cpp index 94878bc51..c8f5407d7 100644 --- a/bazaar/PyConsoleCtrl/PyConsoleCtrl.cpp +++ b/bazaar/PyConsoleCtrl/PyConsoleCtrl.cpp @@ -26,7 +26,7 @@ void PyConsoleCtrl::Clear() void PyConsoleCtrl::Exec() { String c = cmd.GetData(); - if(c.IsEmpty()) return; + if(c.IsEmpty()) { cmd.SetFocus(); return; } int ret = -1; @@ -54,6 +54,7 @@ void PyConsoleCtrl::Exec() } ex.Clear(); ex <<= ret; + cmd.SetFocus(); } void PyConsoleCtrl::ShowHistory(int i)