void SymbolPropertySetting::OnPropertyGridChange(const std::string& name, const wxAny& value) { if (value.IsNull()) return; bool dirty = true; if (name == wxT("Name")) { if (m_sym) { std::string name = wxANY_AS(value, wxString); m_sym->name = name; m_sym->SetName(name); RefreshPanelSJ::Instance()->Refresh(); } else if (m_name) { *m_name = wxANY_AS(value, wxString); } } else if (name == "Tag") { if (m_sym) { m_sym->tag = wxANY_AS(value, wxString); } else if (m_tag) { *m_tag = wxANY_AS(value, wxString); } } else { dirty = false; } if (dirty) { SetCanvasDirtySJ::Instance()->SetDirty(); } }
void LayerPropertySetting::onPropertyGridChange(const wxString& name, const wxAny& value) { if (value.IsNull()) return; if (name == wxT("Name")) m_layer->setName(wxANY_AS(value, wxString)); else if (name == wxT("Visible")) m_layer->getLayer()->isVisible = wxANY_AS(value, bool); else if (name == wxT("Editable"))
void CirclePropertySetting::onPropertyGridChange(const wxString& name, const wxAny& value) { if (value.IsNull()) return; if (name == wxT("Name")) m_circle->name = wxANY_AS(value, wxString); if (name == wxT("X")) m_circle->center.x = wxANY_AS(value, float); else if (name == wxT("Y"))
void TextPropertySetting::onPropertyGridChange(const wxString& name, const wxAny& value) { if (value.IsNull()) return; if (name == "Text") { wxString text = wxANY_AS(value, wxString); m_sprite->setText(text.ToStdString()); } else if (name == "Size") { m_sprite->setSize(wxANY_AS(value, float)); }
void JointPropertySetting::OnPropertyGridChange(const std::string& name, const wxAny& value) { if (value.IsNull()) return; bool dirty = true; if (name == wxT("Name")) m_joint->m_name = wxANY_AS(value, wxString); else if (name == wxT("collideConnected")) m_joint->m_collide_connected = wxANY_AS(value, bool); switch (m_joint->m_type) { case Joint::e_revoluteJoint: OnPropertyGridChange(static_cast<RevoluteJoint*>(m_joint), name, value); break; case Joint::e_prismaticJoint: OnPropertyGridChange(static_cast<PrismaticJoint*>(m_joint), name, value); break; case Joint::e_distanceJoint: OnPropertyGridChange(static_cast<DistanceJoint*>(m_joint), name, value); break; case Joint::e_pulleyJoint: OnPropertyGridChange(static_cast<PulleyJoint*>(m_joint), name, value); break; case Joint::e_gearJoint: OnPropertyGridChange(static_cast<GearJoint*>(m_joint), name, value); break; case Joint::e_wheelJoint: OnPropertyGridChange(static_cast<WheelJoint*>(m_joint), name, value); break; case Joint::e_weldJoint: OnPropertyGridChange(static_cast<WeldJoint*>(m_joint), name, value); break; case Joint::e_frictionJoint: OnPropertyGridChange(static_cast<FrictionJoint*>(m_joint), name, value); break; case Joint::e_ropeJoint: OnPropertyGridChange(static_cast<RopeJoint*>(m_joint), name, value); break; case Joint::e_motorJoint: OnPropertyGridChange(static_cast<MotorJoint*>(m_joint), name, value); break; } if (dirty) { ee::SetCanvasDirtySJ::Instance()->SetDirty(); } }
bool wxConvertAnyToVariant(const wxAny& any, wxVariant* variant) { if ( any.IsNull() ) { variant->MakeNull(); return true; } // (signed) integer is a special case, because there is only one type // in wxAny, and two ("long" and "longlong") in wxVariant. For better // backwards compatibility, convert all values that fit in "long", // and others to "longlong". if ( wxANY_CHECK_TYPE(any, signed int) ) { #ifdef wxLongLong_t wxLongLong_t ll = 0; if ( any.GetAs(&ll) ) { // NB: Do not use LONG_MAX here. Explicitly using 32-bit // integer constraint yields more consistent behaviour across // builds. if ( ll > wxINT32_MAX || ll < wxINT32_MIN ) *variant = wxLongLong(ll); else *variant = (long) wxLongLong(ll).GetLo(); } else { return false; } #else long l; if ( any.GetAs(&l) ) *variant = l; else return false; #endif return true; }