void SDRDevicesDialog::OnPropGridChanged( wxPropertyGridEvent& event ) { if (!editId) { return; } SDRDeviceInfo *dev = getSelectedDevice(editId); if (editId && event.GetProperty() == devSettings["name"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); wxString devName = event.GetPropertyValue().GetString(); devConfig->setDeviceName(devName.ToStdString()); if (editId) { devTree->SetItemText(editId, devConfig->getDeviceName()); } if (devName == "") { event.GetProperty()->SetValueFromString(devConfig->getDeviceName()); } } if (dev && event.GetProperty() == devSettings["offset"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); long offset = event.GetPropertyValue().GetInteger(); devConfig->setOffset(offset); } }
int ArchesModel::OnPropertyGridChange(wxPropertyGridInterface *grid, wxPropertyGridEvent& event) { if ("ArchesCount" == event.GetPropertyName()) { ModelXml->DeleteAttribute("parm1"); ModelXml->AddAttribute("parm1", wxString::Format("%d", event.GetPropertyValue().GetLong())); SetFromXml(ModelXml, zeroBased); AdjustStringProperties(grid, parm1); return 3; } else if ("ArchesNodes" == event.GetPropertyName()) { ModelXml->DeleteAttribute("parm2"); ModelXml->AddAttribute("parm2", wxString::Format("%d", event.GetPropertyValue().GetLong())); SetFromXml(ModelXml, zeroBased); return 3; } else if ("ArchesLights" == event.GetPropertyName()) { ModelXml->DeleteAttribute("parm3"); ModelXml->AddAttribute("parm3", wxString::Format("%d", event.GetPropertyValue().GetLong())); SetFromXml(ModelXml, zeroBased); return 3; } else if ("ArchesArc" == event.GetPropertyName()) { ModelXml->DeleteAttribute("arc"); ModelXml->AddAttribute("arc", wxString::Format("%d", event.GetPropertyValue().GetLong())); SetFromXml(ModelXml, zeroBased); return 3; } else if ("ArchesStart" == event.GetPropertyName()) { ModelXml->DeleteAttribute("Dir"); ModelXml->AddAttribute("Dir", event.GetValue().GetLong() == 0 ? "L" : "R"); SetFromXml(ModelXml, zeroBased); return 3; } return Model::OnPropertyGridChange(grid, event); }
bool ObjectsPropgridHelper::OnPropertyChanged(gd::Object * object, gd::Layout * layout, wxPropertyGridEvent& event) { if ( !grid || !object ) return false; auto readEnumPropertyString = [&event](std::map<gd::String, gd::PropertyDescriptor> properties) { const std::vector<gd::String> & choices = properties[event.GetProperty()->GetLabel()].GetExtraInfo(); unsigned int id = event.GetPropertyValue().GetLong(); if (id < choices.size()) { return gd::String(choices[id]); } return gd::String(""); }; if ( event.GetPropertyName().substr(0,10) == "AUTO_PROP:" ) { gd::String autoName = event.GetPropertyName().substr(10); if ( !object->HasBehaviorNamed(autoName)) { event.Veto(); return false; } gd::Behavior & behavior = object->GetBehavior(autoName); gd::String value = event.GetPropertyValue().GetString(); //Special case for enums. if (wxEnumProperty * enumProperty = dynamic_cast<wxEnumProperty*>(event.GetProperty())) value = readEnumPropertyString(behavior.GetProperties(project)); if (!behavior.UpdateProperty(event.GetProperty()->GetLabel(), value, project)) { event.Veto(); return false; } } else if ( event.GetPropertyName().substr(0,8) == "OBJ_PROP" ) { gd::String value = event.GetPropertyValue().GetString(); //Special case for enums. if (wxEnumProperty * enumProperty = dynamic_cast<wxEnumProperty*>(event.GetProperty())) value = readEnumPropertyString(object->GetProperties(project)); if (!object->UpdateProperty(event.GetProperty()->GetLabel(), value, project)) { event.Veto(); return false; } } return false; }
void ProjectWindow::OnPropertyChanged( wxPropertyGridEvent& evt ) { if (!mSelectedAssetDef || !mSelectedAsset) return; wxString name = evt.GetPropertyName(); wxVariant val = evt.GetPropertyValue(); wxString strVal = val.GetString(); if (name.StartsWith("TextureAsset")) { long intVal = val.GetInteger(); //strVal = mTextureAssetChoices.GetLabel(intVal); } // Set Value. mSelectedAsset->setDataField(Torque::StringTableLink->insert(name), NULL, strVal); // Save the asset mSelectedAsset->saveAsset(); // Refresh textures if it's a MaterialAsset. if (mSelectedMaterialAsset) mSelectedMaterialAsset->loadTextures(); // Refresh Scene. Torque::Scene.refresh(); // Reload object properties. mAssetsInspector->Inspect(mSelectedAssetDef); }
//----------------------------------------------------------------------------- void Property::OnChange (wxPropertyGridEvent &event) { wxPGProperty *id = event.GetProperty(); PX2_UNUSED(id); const wxString &name = event.GetPropertyName(); std::string stdName = std::string(name); wxVariant variant = event.GetPropertyValue(); if (name != wxString(mName.c_str())) return; if (variant.IsNull()) return; if (!mData) return; if (mType == PT_INT) { *((int*)mData) = wxPGVariantToInt(variant); } else if (mType == PT_FLOAT) { double value = 0; wxPGVariantToDouble(variant, &value); *((float*)mData) = (float)value; } else if (mType == PT_BOOL) { bool value = (bool)(event.GetPropertyValueAsBool()!=0); *((bool*)mData) = value; } else if (mType == PT_BOOLCHECK) { bool value = (bool)(event.GetPropertyValueAsBool()!=0); *((bool*)mData) = value; } else if (PT_COLOR3FLOAT3 == mType) { wxString strColor = event.GetPropertyValueAsString(); wxColor color = StringToColor(strColor); Float3 float3Color((float)color.Red()/255.0f, (float)color.Green()/255.0f, (float)color.Blue()/255.0f); *((Float3*)mData) = float3Color; } else if (PT_FLOAT3 == mType) { *((Float3*)mData) = Float3FromVariant(variant); } else if (mType == PT_STRING) { std::string value; wxString wxValue = event.GetPropertyValueAsString(); value = std::string(wxValue.ToAscii()); *((std::string*)mData) = value; } }
void SDRDevicesDialog::OnPropGridChanged( wxPropertyGridEvent& event ) { if (editId && event.GetProperty() == devSettings["name"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); wxString devName = event.GetPropertyValue().GetString(); devConfig->setDeviceName(devName.ToStdString()); if (editId) { devTree->SetItemText(editId, devConfig->getDeviceName()); } if (devName == "") { event.GetProperty()->SetValueFromString(devConfig->getDeviceName()); } } else if (dev && event.GetProperty() == devSettings["offset"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); long offset = event.GetPropertyValue().GetInteger(); devConfig->setOffset(offset); } else if (editId && dev) { wxPGProperty *prop = event.GetProperty(); for (std::map<std::string, wxPGProperty *>::iterator rtp = runtimeProps.begin(); rtp != runtimeProps.end(); rtp++) { if (rtp->second == prop) { SoapySDR::Device *soapyDev = dev->getSoapyDevice(); std::string settingValue = prop->GetValueAsString().ToStdString(); SoapySDR::ArgInfo arg = runtimeArgs[rtp->first]; if (arg.type == SoapySDR::ArgInfo::STRING && arg.options.size()) { settingValue = arg.options[prop->GetChoiceSelection()]; } else if (arg.type == SoapySDR::ArgInfo::BOOL) { settingValue = (prop->GetValueAsString()=="True")?"true":"false"; } else { settingValue = prop->GetValueAsString(); } soapyDev->writeSetting(rtp->first, settingValue); if (dev->isActive()) { wxGetApp().getSDRThread()->writeSetting(rtp->first, settingValue); } refreshDeviceProperties(); return; } } } }
int TreeModel::OnPropertyGridChange(wxPropertyGridInterface *grid, wxPropertyGridEvent& event) { if (event.GetPropertyName() == "TreeStyle") { ModelXml->DeleteAttribute("DisplayAs"); wxPGProperty *p = grid->GetPropertyByName("TreeDegrees"); if (p != nullptr) { degrees = p->GetValue().GetLong(); } switch (event.GetPropertyValue().GetLong()) { case 0: ModelXml->AddAttribute("DisplayAs", wxString::Format("Tree %d", degrees > 1 ? (int)degrees : 180)); break; case 1: ModelXml->AddAttribute("DisplayAs", "Tree Flat"); break; case 2: ModelXml->AddAttribute("DisplayAs", "Tree Ribbon"); break; } SetFromXml(ModelXml, zeroBased); if (p != nullptr) { p->Enable(treeType == 0); } p = grid->GetPropertyByName("TreeRotation"); if (p != nullptr) { p->Enable(treeType == 0); } return 3; } else if (event.GetPropertyName() == "TreeDegrees") { ModelXml->DeleteAttribute("DisplayAs"); ModelXml->AddAttribute("DisplayAs", wxString::Format("Tree %d", (int)event.GetPropertyValue().GetLong())); SetFromXml(ModelXml, zeroBased); return 3; } else if (event.GetPropertyName() == "TreeRotation") { ModelXml->DeleteAttribute("TreeRotation"); ModelXml->AddAttribute("TreeRotation", wxString::Format("%f", (float)event.GetPropertyValue().GetDouble())); SetFromXml(ModelXml, zeroBased); return 3; } else if (event.GetPropertyName() == "TreeSpiralRotations") { ModelXml->DeleteAttribute("TreeSpiralRotations"); ModelXml->AddAttribute("TreeSpiralRotations", wxString::Format("%f", (float)event.GetPropertyValue().GetDouble())); SetFromXml(ModelXml, zeroBased); return 3; } else if (event.GetPropertyName() == "TreeBottomTopRatio") { ModelXml->DeleteAttribute("TreeBottomTopRatio"); ModelXml->AddAttribute("TreeBottomTopRatio", wxString::Format("%f", (float)event.GetPropertyValue().GetDouble())); SetFromXml(ModelXml, zeroBased); return 3; } else if (event.GetPropertyName() == "TreePerspective") { ModelXml->DeleteAttribute("TreePerspective"); ModelXml->AddAttribute("TreePerspective", wxString::Format("%f", (float)(event.GetPropertyValue().GetDouble()/10.0))); SetFromXml(ModelXml, zeroBased); return 3; } return MatrixModel::OnPropertyGridChange(grid, event); }
void DlgPass::OnProcessPGChange( wxPropertyGridEvent& e) { Pass *p = getPass(); wxString name,subname,value; std::string mat,lib; name = e.GetPropertyName(); int index; index = e.GetPropertyValue().GetInteger(); if (name == wxT("Camera")) { value = m_pgCamList.GetLabel(index); p->setCamera(std::string(value.mb_str())); } else if (name == wxT("Viewport")) { if (index == 0) p->setViewport(RENDERMANAGER->getCamera(p->getCameraName())->getViewport()); else { value = m_pgViewportList.GetLabel(index-1); p->setViewport(RENDERMANAGER->getViewport(std::string(value.mb_str()))); } } else if (name == wxT("Use Render Target")) { p->enableRenderTarget(0 != e.GetPropertyValue().GetBool()); } else if (name == wxT("Render Target")) { value = e.GetPropertyValue().GetString(); if (value == wxT("None")) { p->setRenderTarget(NULL); m_PG->SetPropertyValue(wxT("Viewport"),wxT("From Camera")); m_PG->EnableProperty(wxT("Viewport")); } else { m_PG->SetPropertyValue(wxT("Viewport"), wxT("From Render Target")); m_PG->DisableProperty(wxT("Viewport")); p->setRenderTarget(RESOURCEMANAGER->getRenderTarget(std::string(value.mb_str()))); } } //else if (name == wxT("Clear Color")) // p->setPropb(Pass::COLOR_CLEAR, (0 != e.GetPropertyValue().GetBool())); //else if (name == wxT("Clear Depth")) // p->setPropb(Pass::DEPTH_CLEAR, (0 != e.GetPropertyValue().GetBool())); else if (name.substr(0,6) == wxT("Lights")) { subname = name.substr(7,std::string::npos); bool b = 0 != e.GetPropertyValue().GetBool(); if (b) p->addLight(std::string(subname.mb_str())); else p->removeLight(std::string(subname.mb_str())); } else if (name.substr(0,6) == wxT("Scenes")) { subname = name.substr(7,std::string::npos); bool b = 0 != e.GetPropertyValue().GetBool(); if (b) p->addScene(std::string(subname.mb_str())); else p->removeScene(std::string(subname.mb_str())); } else if (name.substr(0,13) == wxT("Material Maps")) { // Material Maps subname = name.substr(14, std::string::npos); if (subname == wxT("*")) value = m_pgMaterialListPlus.GetLabel(e.GetPropertyValue().GetInteger()); else value = m_pgMaterialList.GetLabel(e.GetPropertyValue().GetInteger()); mat = std::string(value.AfterLast(':').mb_str()); lib = std::string(value.BeforeFirst(':').mb_str()); if (subname == wxT("*")) { if (mat == "*") { p->remapAll(lib); updateMats(p); } else if (value != wxT("None")) { p->remapAll(lib,mat); updateMats(p); } } else p->remapMaterial(std::string(subname.c_str()),lib,mat); } else PropertyManager::updateProp(m_PG, name.ToStdString(), Pass::Attribs, (AttributeValues *)p); //else if (name.substr(0,10) == wxT("Parameters")) { // subname = name.substr(11, std::string::npos); // p->setParam(std::string(subname.mb_str()), (float)(e.GetPropertyValue().GetDouble())); // //} }
void CPropertiesCanvas::OnPropertyGridChange( wxPropertyGridEvent& event ) { wxPGProperty* p = event.GetPropertyPtr(); Property* property = GetProperty(p); if(property == NULL)return; wxGetApp().CreateUndoPoint(); switch(property->get_property_type()){ case StringPropertyType: { wxString value; if (property->Evaluate(GetProperties(), event.GetPropertyValue().GetString(), value)) { (*(((PropertyString*)property)->m_callbackfunc))(value, ((PropertyString*)property)->m_object); } } break; case DoublePropertyType: { wxString value; if (property->Evaluate(GetProperties(), event.GetPropertyValue().GetString(), value)) { (*(((PropertyDouble*)property)->m_callbackfunc))(strtod(value.utf8_str(),NULL), ((PropertyDouble*)property)->m_object); } } break; case LengthPropertyType: { wxString value; if (property->Evaluate(GetProperties(), event.GetPropertyValue().GetString(), value)) { (*(((PropertyLength*)property)->m_callbackfunc))(strtod(value.utf8_str(),NULL) * wxGetApp().m_view_units, ((PropertyDouble*)property)->m_object); } } break; case IntPropertyType: { (*(((PropertyInt*)property)->m_callbackfunc))(event.GetPropertyValue().GetLong(), ((PropertyInt*)property)->m_object); } break; case ColorPropertyType: { wxVariant var = event.GetPropertyValue(); const wxColour* wcol = wxGetVariantCast(var,wxColour); HeeksColor col(wcol->Red(), wcol->Green(), wcol->Blue()); (*(((PropertyColor*)property)->m_callbackfunc))(col, ((PropertyColor*)property)->m_object); } break; case VertexPropertyType: { if(p->GetName()[0] == 'x'){ ((PropertyVertex*)property)->m_x[0] = event.GetPropertyValue().GetDouble(); if(((PropertyVertex*)property)->m_affected_by_view_units)((PropertyVertex*)property)->m_x[0] *= wxGetApp().m_view_units; } else if(p->GetName()[0] == 'y'){ ((PropertyVertex*)property)->m_x[1] = event.GetPropertyValue().GetDouble(); if(((PropertyVertex*)property)->m_affected_by_view_units)((PropertyVertex*)property)->m_x[1] *= wxGetApp().m_view_units; } else if(p->GetName()[0] == 'z'){ ((PropertyVertex*)property)->m_x[2] = event.GetPropertyValue().GetDouble(); if(((PropertyVertex*)property)->m_affected_by_view_units)((PropertyVertex*)property)->m_x[2] *= wxGetApp().m_view_units; } (*(((PropertyVertex*)property)->m_callbackfunc))(((PropertyVertex*)property)->m_x, ((PropertyVertex*)property)->m_object); } break; case TrsfPropertyType: { double pos[3]; extract(((PropertyTrsf*)property)->m_trsf.TranslationPart(), pos); gp_Dir xaxis(1, 0, 0); xaxis.Transform(((PropertyTrsf*)p)->m_trsf); gp_Dir yaxis(0, 1, 0); yaxis.Transform(((PropertyTrsf*)p)->m_trsf); double vertical_angle = 0; double horizontal_angle = 0; double twist_angle = 0; CoordinateSystem::AxesToAngles(xaxis, yaxis, vertical_angle, horizontal_angle, twist_angle); if(p->GetName()[0] == 'x'){ pos[0] = event.GetPropertyValue().GetDouble(); } else if(p->GetName()[0] == 'y'){ pos[1] = event.GetPropertyValue().GetDouble(); } else if(p->GetName()[0] == 'z'){ pos[2] = event.GetPropertyValue().GetDouble(); } else if(p->GetName()[0] == 'v'){ vertical_angle = event.GetPropertyValue().GetDouble(); } else if(p->GetName()[0] == 'h'){ horizontal_angle = event.GetPropertyValue().GetDouble(); } else if(p->GetName()[0] == 't'){ twist_angle = event.GetPropertyValue().GetDouble(); } CoordinateSystem::AnglesToAxes(vertical_angle, horizontal_angle, twist_angle, xaxis, yaxis); ((PropertyTrsf*)property)->m_trsf = make_matrix(make_point(pos), xaxis, yaxis); (*(((PropertyTrsf*)property)->m_callbackfunc))(((PropertyTrsf*)property)->m_trsf, ((PropertyTrsf*)property)->m_object); } break; case ChoicePropertyType: { (*(((PropertyChoice*)property)->m_callbackfunc))(event.GetPropertyValue().GetLong(), ((PropertyChoice*)property)->m_object); } break; case CheckPropertyType: { (*(((PropertyCheck*)property)->m_callbackfunc))(event.GetPropertyValue().GetBool(), ((PropertyCheck*)property)->m_object); } break; case ListOfPropertyType: { } break; case FilePropertyType: { (*(((PropertyFile*)property)->m_callbackfunc))(event.GetPropertyValue().GetString(), ((PropertyFile*)property)->m_object); } break; case DirectoryPropertyType: { (*(((PropertyDir*)property)->m_callbackfunc))(event.GetPropertyValue().GetString(), ((PropertyDir*)property)->m_object); } break; } wxGetApp().Changed(); }
void SDRDevicesDialog::OnPropGridChanged( wxPropertyGridEvent& event ) { if (editId && event.GetProperty() == devSettings["name"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); wxString devName = event.GetPropertyValue().GetString(); devConfig->setDeviceName(devName.ToStdString()); if (editId) { devTree->SetItemText(editId, devConfig->getDeviceName()); } if (devName == "") { event.GetProperty()->SetValueFromString(devConfig->getDeviceName()); } } else if (dev && event.GetProperty() == devSettings["offset"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); long offset = event.GetPropertyValue().GetInteger(); devConfig->setOffset(offset); if (dev->isActive() || !wxGetApp().getDevice()) { wxGetApp().setOffset(offset); } } else if (dev && event.GetProperty() == devSettings["sample_rate"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); std::string strRate = deviceArgs["sample_rate"].options[event.GetPropertyValue().GetInteger()]; long srate = 0; try { srate = std::stol(strRate); devConfig->setSampleRate(srate); if (dev->isActive() || !wxGetApp().getDevice()) { wxGetApp().setSampleRate(srate); } } catch (std::invalid_argument e) { // nop } } else if (dev && event.GetProperty() == devSettings["antenna"]) { DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); std::string strAntennaName = deviceArgs["antenna"].options[event.GetPropertyValue().GetInteger()]; try { devConfig->setAntennaName(strAntennaName); if (dev->isActive() || !wxGetApp().getDevice()) { wxGetApp().setAntennaName(strAntennaName); } } catch (std::invalid_argument e) { // nop } } else if (editId && dev) { wxPGProperty *prop = event.GetProperty(); //change value of RuntimeProps for (std::map<std::string, wxPGProperty *>::iterator rtp = runtimeProps.begin(); rtp != runtimeProps.end(); rtp++) { if (rtp->second == prop) { SoapySDR::Device *soapyDev = dev->getSoapyDevice(); std::string settingValue = prop->GetValueAsString().ToStdString(); SoapySDR::ArgInfo arg = runtimeArgs[rtp->first]; if (arg.type == SoapySDR::ArgInfo::STRING && arg.options.size()) { settingValue = arg.options[prop->GetChoiceSelection()]; } else if (arg.type == SoapySDR::ArgInfo::BOOL) { settingValue = (prop->GetValueAsString()=="True")?"true":"false"; } else { settingValue = prop->GetValueAsString(); } soapyDev->writeSetting(rtp->first, settingValue); if (dev->isActive()) { wxGetApp().getSDRThread()->writeSetting(rtp->first, settingValue); } wxGetApp().notifyMainUIOfDeviceChange(); return; } } } // general refresh. wxGetApp().notifyMainUIOfDeviceChange(); }