// ----------------------------------------------------------------------------- // ObjectEditPanel class constructor // ----------------------------------------------------------------------------- ObjectEditPanel::ObjectEditPanel(wxWindow* parent) : wxPanel(parent) { wxIntegerValidator<int> val_int(nullptr, wxNUM_VAL_DEFAULT); wxIntegerValidator<unsigned int> val_uint(nullptr, wxNUM_VAL_DEFAULT); wxFloatingPointValidator<double> val_double(2, nullptr, wxNUM_VAL_DEFAULT); auto tb_size = WxUtils::scaledSize(64, -1); // Create controls text_xoff_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, tb_size, 0, val_int); text_yoff_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, tb_size, 0, val_int); text_scalex_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, tb_size, 0, val_uint); text_scaley_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, tb_size, 0, val_uint); combo_rotation_ = new wxComboBox(this, -1, "", wxDefaultPosition, tb_size); cb_mirror_x_ = new wxCheckBox(this, -1, "Mirror X"); cb_mirror_y_ = new wxCheckBox(this, -1, "Mirror Y"); btn_preview_ = new SIconButton(this, "eye", "Preview"); btn_cancel_ = new SIconButton(this, "close", "Cancel"); btn_apply_ = new SIconButton(this, "tick", "Apply"); // Init controls combo_rotation_->Set(WxUtils::arrayString({ "0", "45", "90", "135", "180", "225", "270", "315" })); combo_rotation_->SetValidator(val_double); btn_preview_->SetDefault(); // Layout setupLayout(); // Bind events btn_preview_->Bind(wxEVT_BUTTON, &ObjectEditPanel::onBtnPreviewClicked, this); btn_cancel_->Bind(wxEVT_BUTTON, [&](wxCommandEvent&) { KeyBind::pressBind("map_edit_cancel"); }); btn_apply_->Bind(wxEVT_BUTTON, [&](wxCommandEvent&) { KeyBind::pressBind("map_edit_accept"); }); cb_mirror_x_->Bind(wxEVT_CHECKBOX, &ObjectEditPanel::onBtnPreviewClicked, this); cb_mirror_y_->Bind(wxEVT_CHECKBOX, &ObjectEditPanel::onBtnPreviewClicked, this); // Init layout wxWindowBase::Layout(); }
/* ObjectEditPanel::ObjectEditPanel * ObjectEditPanel class constructor *******************************************************************/ ObjectEditPanel::ObjectEditPanel(wxWindow* parent) : wxPanel(parent) { // Setup sizer wxBoxSizer* msizer = new wxBoxSizer(wxVERTICAL); SetSizer(msizer); wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); msizer->Add(sizer, 1, wxEXPAND|wxALL, 4); wxIntegerValidator<int> val_int(NULL, wxNUM_VAL_DEFAULT); wxIntegerValidator<unsigned int> val_uint(NULL, wxNUM_VAL_DEFAULT); wxFloatingPointValidator<double> val_double(2, NULL, wxNUM_VAL_DEFAULT); // X offset text_xoff = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(64, -1), 0, val_int); sizer->Add(new wxStaticText(this, -1, "X Offset:"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2); sizer->Add(text_xoff, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // Y offset text_yoff = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(64, -1), 0, val_int); sizer->Add(new wxStaticText(this, -1, "Y Offset:"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2); sizer->Add(text_yoff, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // X scale text_scalex = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(64, -1), 0, val_uint); sizer->Add(new wxStaticText(this, -1, "X Scale:"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2); sizer->Add(text_scalex, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT); sizer->Add(new wxStaticText(this, -1, "%"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // Y scale text_scaley = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(64, -1), 0, val_uint); sizer->Add(new wxStaticText(this, -1, "Y Scale:"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2); sizer->Add(text_scaley, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT); sizer->Add(new wxStaticText(this, -1, "%"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // Rotation string angles[] = { "0", "45", "90", "135", "180", "225", "270", "315" }; combo_rotation = new wxComboBox(this, -1, "", wxDefaultPosition, wxSize(64, -1), 8, angles, 0, wxDefaultValidator); combo_rotation->SetValidator(val_double); sizer->Add(new wxStaticText(this, -1, "Rotation:"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2); sizer->Add(combo_rotation, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // Mirror X cb_mirror_x = new wxCheckBox(this, -1, "Mirror X"); sizer->Add(cb_mirror_x, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // Mirror Y cb_mirror_y = new wxCheckBox(this, -1, "Mirror Y"); sizer->Add(cb_mirror_y, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8); // Preview button btn_preview = new wxBitmapButton(this, -1, Icons::getIcon(Icons::GENERAL, "eye")); btn_preview->SetToolTip("Preview"); btn_preview->SetDefault(); sizer->Add(btn_preview, 0, wxEXPAND|wxRIGHT, 4); // Cancel button btn_cancel = new wxBitmapButton(this, -1, Icons::getIcon(Icons::GENERAL, "close")); btn_cancel->SetToolTip("Cancel"); sizer->Add(btn_cancel, 0, wxEXPAND|wxRIGHT, 4); // Apply button btn_apply = new wxBitmapButton(this, -1, Icons::getIcon(Icons::GENERAL, "tick")); sizer->Add(btn_apply, 0, wxEXPAND); btn_apply->SetToolTip("Apply"); // Bind events btn_preview->Bind(wxEVT_BUTTON, &ObjectEditPanel::onBtnPreviewClicked, this); btn_cancel->Bind(wxEVT_BUTTON, &ObjectEditPanel::onBtnCancelClicked, this); btn_apply->Bind(wxEVT_BUTTON, &ObjectEditPanel::onBtnApplyClicked, this); cb_mirror_x->Bind(wxEVT_CHECKBOX, &ObjectEditPanel::onBtnPreviewClicked, this); cb_mirror_y->Bind(wxEVT_CHECKBOX, &ObjectEditPanel::onBtnPreviewClicked, this); // Init layout Layout(); }