Пример #1
0
// -----------------------------------------------------------------------------
// 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();
}
Пример #2
0
/* 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();
}