1 | #ifdef NANOGUI_PYTHON |
2 | |
3 | #include "python.h" |
4 | |
5 | DECLARE_WIDGET(Button); |
6 | DECLARE_WIDGET(ToolButton); |
7 | DECLARE_WIDGET(PopupButton); |
8 | DECLARE_WIDGET(CheckBox); |
9 | |
10 | void register_button(py::module &m) { |
11 | py::class_<Button, Widget, ref<Button>, PyButton> button(m, "Button" , D(Button)); |
12 | button |
13 | .def(py::init<Widget *, const std::string &, int>(), |
14 | py::arg("parent" ), py::arg("caption" ) = std::string("Untitled" ), py::arg("icon" ) = 0, D(Button, Button)) |
15 | .def("caption" , &Button::caption, D(Button, caption)) |
16 | .def("setCaption" , &Button::setCaption, D(Button, setCaption)) |
17 | .def("backgroundColor" , &Button::backgroundColor, D(Button, backgroundColor)) |
18 | .def("setBackgroundColor" , &Button::setBackgroundColor, D(Button, setBackgroundColor)) |
19 | .def("textColor" , &Button::textColor, D(Button, textColor)) |
20 | .def("setTextColor" , &Button::setTextColor, D(Button, setTextColor)) |
21 | .def("icon" , &Button::icon, D(Button, icon)) |
22 | .def("setIcon" , &Button::setIcon, D(Button, setIcon)) |
23 | .def("flags" , &Button::flags, D(Button, flags)) |
24 | .def("setFlags" , &Button::setFlags, D(Button, setFlags)) |
25 | .def("iconPosition" , &Button::iconPosition, D(Button, iconPosition)) |
26 | .def("setIconPosition" , &Button::setIconPosition, D(Button, setIconPosition)) |
27 | .def("pushed" , &Button::pushed, D(Button, pushed)) |
28 | .def("setPushed" , &Button::setPushed, D(Button, setPushed)) |
29 | .def("callback" , &Button::callback, D(Button, callback)) |
30 | .def("setCallback" , &Button::setCallback, D(Button, setCallback)) |
31 | .def("changeCallback" , &Button::changeCallback, D(Button, changeCallback)) |
32 | .def("setChangeCallback" , &Button::setChangeCallback, D(Button, setChangeCallback)) |
33 | .def("buttonGroup" , &Button::buttonGroup, D(Button, buttonGroup)) |
34 | .def("setButtonGroup" , &Button::setButtonGroup, D(Button, setButtonGroup)); |
35 | |
36 | py::enum_<Button::IconPosition>(button, "IconPosition" , D(Button, IconPosition)) |
37 | .value("Left" , Button::IconPosition::Left) |
38 | .value("LeftCentered" , Button::IconPosition::LeftCentered) |
39 | .value("RightCentered" , Button::IconPosition::RightCentered) |
40 | .value("Right" , Button::IconPosition::Right); |
41 | |
42 | py::enum_<Button::Flags>(button, "Flags" , D(Button, Flags)) |
43 | .value("NormalButton" , Button::Flags::NormalButton) |
44 | .value("RadioButton" , Button::Flags::RadioButton) |
45 | .value("ToggleButton" , Button::Flags::ToggleButton) |
46 | .value("PopupButton" , Button::Flags::PopupButton); |
47 | |
48 | py::class_<ToolButton, Button, ref<ToolButton>, PyToolButton>(m, "ToolButton" , D(ToolButton)) |
49 | .def(py::init<Widget *,int, const std::string &>(), |
50 | py::arg("parent" ), py::arg("icon" ), py::arg("caption" ) = std::string("" ), |
51 | D(ToolButton, ToolButton)); |
52 | |
53 | py::class_<PopupButton, Button, ref<PopupButton>, PyPopupButton> (m, "PopupButton" , D(PopupButton)); |
54 | popupBtn |
55 | .def(py::init<Widget *, const std::string&, int>(), |
56 | py::arg("parent" ), py::arg("caption" ) = std::string("Untitled" ), |
57 | py::arg("buttonIcon" ) = 0, D(PopupButton, PopupButton)) |
58 | .def("popup" , (Popup*(PopupButton::*)(void)) &PopupButton::popup, D(PopupButton, popup)) |
59 | .def("chevronIcon" , &PopupButton::chevronIcon, D(PopupButton, chevronIcon)) |
60 | .def("setChevronIcon" , &PopupButton::setChevronIcon, D(PopupButton, setChevronIcon)) |
61 | .def("side" , &PopupButton::side, D(PopupButton, side)) |
62 | .def("setSide" , &PopupButton::setSide, D(PopupButton, setSide)); |
63 | |
64 | py::class_<CheckBox, Widget, ref<CheckBox>, PyCheckBox>(m, "CheckBox" , D(CheckBox)) |
65 | .def(py::init<Widget *, const std::string &>(), py::arg("parent" ), |
66 | py::arg("caption" ) = std::string("Untitled" ), |
67 | D(CheckBox, CheckBox)) |
68 | .def(py::init<Widget *, const std::string &, const std::function<void(bool)>&>(), |
69 | py::arg("parent" ), py::arg("caption" ), py::arg("callback" ), |
70 | D(CheckBox, CheckBox)) |
71 | .def("caption" , &CheckBox::caption, D(CheckBox, caption)) |
72 | .def("setCaption" , &CheckBox::setCaption, D(CheckBox, setCaption)) |
73 | .def("checked" , &CheckBox::checked, D(CheckBox, checked)) |
74 | .def("setChecked" , &CheckBox::setChecked, D(CheckBox, setChecked)) |
75 | .def("pushed" , &CheckBox::pushed, D(CheckBox, pushed)) |
76 | .def("setPushed" , &CheckBox::setPushed, D(CheckBox, setPushed)) |
77 | .def("callback" , &CheckBox::callback, D(CheckBox, callback)) |
78 | .def("setCallback" , &CheckBox::setCallback, D(CheckBox, setCallback)); |
79 | } |
80 | |
81 | #endif |
82 | |