MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/MaterialX / createIntWidget

Function createIntWidget

source/MaterialXView/Editor.cpp:815–875  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

813}
814
815ng::ref<ng::IntBox<int>> createIntWidget(ng::ref<ng::Widget> parent, const std::string& label, int value,
816 const mx::UIProperties* ui, std::function<void(int)> callback)
817{
818 new ng::Label(parent, label);
819
820 ng::ref<ng::Slider> slider = new ng::Slider(parent);
821 slider->set_value((float) value);
822
823 ng::ref<ng::IntBox<int>> box = new ng::IntBox<int>(parent, value);
824 box->set_fixed_width(60);
825 box->set_font_size(15);
826 box->set_alignment(ng::TextBox::Alignment::Right);
827 if (ui)
828 {
829 std::pair<int, int> range(0, 1);
830 if (ui->uiMin)
831 {
832 box->set_min_value(ui->uiMin->asA<int>());
833 range.first = ui->uiMin->asA<int>();
834 }
835 if (ui->uiMax)
836 {
837 box->set_max_value(ui->uiMax->asA<int>());
838 range.second = ui->uiMax->asA<int>();
839 }
840 if (ui->uiSoftMin)
841 {
842 range.first = ui->uiSoftMin->asA<int>();
843 }
844 if (ui->uiSoftMax)
845 {
846 range.second = ui->uiSoftMax->asA<int>();
847 }
848 if (range.first != range.second)
849 {
850 std::pair<float, float> float_range((float) range.first, (float) range.second);
851 slider->set_range(float_range);
852 }
853 if (ui->uiStep)
854 {
855 box->set_value_increment(ui->uiStep->asA<int>());
856 box->set_spinnable(true);
857 box->set_editable(true);
858 }
859 }
860
861 auto sliderPtr = slider.get();
862 auto boxPtr = box.get();
863 slider->set_callback([boxPtr, callback](float value)
864 {
865 boxPtr->set_value((int) value);
866 callback((int) value);
867 });
868 box->set_callback([sliderPtr, callback](int value)
869 {
870 sliderPtr->set_value((float) value);
871 callback(value);
872 });

Callers 1

Calls 2

set_valueMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected