The code above is for a class called customwidgetslider. I used this class in another class called test where I am able to create multiple custom widgets on the frame.
Here is the class for the customwidgetsldier along with the function I call, I changed it from the last post (I was trying different ways)
Code: Select all
customwidgetslider::customwidgetslider(wxPanel *parent, int currentvalue, int maxVal)
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(1000,1000))
{
Oninit(parent, currentvalue, maxVal);
}
void customwidgetslider::Oninit(wxPanel* panel, int currentvalue, int maxVal)
{
id = rand();
playerSizer = new wxBoxSizer(wxHORIZONTAL);
slider = new singlesliderobj(panel, id, currentvalue, 0, maxVal, wxDefaultPosition, wxSize(-1, 85), wxSL_HORIZONTAL | wxSL_SELRANGE);
playerSizer->Add(slider, maxVal, wxEXPAND);
//Bind(wxEVT_CHECKBOX, &customwidgetslider::SetCheck,this);
}
Here is the code for the test class
Code: Select all
test::test(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(1500, 700))
{
wxPanel* panel = new wxPanel(this);
int practice[8] = { 500,1000,1500,2000,2049,2949,1003,3506};
multi(panel, 1,practice);
//wxCheckBox* testingcheck = new wxCheckBox(panel, wxID_ANY, "testingcheck");
}
void test::multi(wxPanel* panel ,int n, int* max_array_ordered) {
wxBoxSizer *mainSizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *mediaSizer = new wxBoxSizer(wxVERTICAL);
for (int i = 0; i < n; i++) {
sliders.push_back(new customwidgetslider(panel, max_array_ordered[i], max_array_ordered[i]));
wxBoxSizer *fullsizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *slidersizer = new wxBoxSizer(wxHORIZONTAL);
wxCheckBox* slidercheck = new wxCheckBox(panel, wxID_ANY, "sync");
wxTextCtrl* TimeText = new wxTextCtrl(panel, wxID_ANY, _("Time"));
wxTextCtrl* FrameText = new wxTextCtrl(panel, wxID_ANY, _("Frame"));
slidersizer->Add(slidercheck, 1, wxLEFT);
slidersizer->Add(TimeText, 1, wxRIGHT);
slidersizer->Add(FrameText, 1, wxRIGHT);
fullsizer->Add(slidersizer, 0, wxALIGN_CENTER_VERTICAL);
fullsizer->Add(sliders.at(i)->GetPlayerSizer(), 1, wxEXPAND);
mediaSizer->Add(fullsizer, 1, wxEXPAND);
}
mainSizer->Add(mediaSizer, 1, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL);
panel->SetSizer(mainSizer);
//Bind(wxEVT_IDLE, &test::onIdle, this);
}
PS: ive added objects and used the sizers in an older project so I know its suppose to work but I did it all in one panel in that project so maybe thats the reason?