/// <summary> /// 获取一个监视表格内所有被监视的软元件 /// </summary> /// <param name="table">监视表格</param> static private void GetRegisters(MonitorVariableTable table) { foreach (ElementModel emodel in table.Elements) { string ivname = emodel.ShowName; if (!regids.ContainsKey(ivname)) { IValueModel ivmodel = null; switch (emodel.ShowType) { case "BOOL": ivmodel = ValueParser.ParseBitValue(ivname); break; case "WORD": case "UWORD": case "BCD": ivmodel = ValueParser.ParseWordValue(ivname); break; case "DWORD": case "UDWORD": ivmodel = ValueParser.ParseDoubleWordValue(ivname); break; case "FLOAT": ivmodel = ValueParser.ParseFloatValue(ivname); break; } regs.Add(ivmodel); regids.Add(ivname, regids.Count()); } } }
/// <summary> /// 写入一个梯形图元件 /// </summary> /// <param name="bvmodel">元件</param> static private void Write(BaseViewModel bvmodel) { // 连线不必写入 if (bvmodel is HorizontalLineViewModel || bvmodel is VerticalLineViewModel) { return; } // 坐标,指令ID edata.Add(Int32_Low(bvmodel.X)); edata.Add(Int32_Low(bvmodel.Y)); edata.Add(Int32_Low(LadderInstViewModelPrototype.GetOrderFromCatalog(bvmodel.GetCatalogID()))); // 写入每个软元件参数 for (int i = 0; i < bvmodel.Model.ParaCount; i++) { IValueModel ivmodel = bvmodel.Model.GetPara(i); // 在软元件表中找到,写入ID if (regids.ContainsKey(ivmodel.ValueString)) { int regid = regids[ivmodel.ValueString]; edata.Add(Int32_Low(regid)); edata.Add(Int32_High(regid)); } // 写入0xFFFF表示空参数 else { edata.Add(0xFF); edata.Add(0xFF); } } }
protected object ResolveUntypedValue(object val, IValueModel mdl) { if (val == null) { return(null); } if (mdl is IObjectReferenceValueModel) { var objRefMdl = (IObjectReferenceValueModel)mdl; if (val is Guid) { return(DataContext.FindPersistenceObject(DataContext.GetInterfaceType(objRefMdl.ReferencedClass.GetDataType()), (Guid)val)); } else if (val is int) { return(DataContext.FindPersistenceObject(DataContext.GetInterfaceType(objRefMdl.ReferencedClass.GetDataType()), (int)val)); } else { return(null); } } else { return(val); } }
public CompoundObjectPropertyViewModel( IViewModelDependencies appCtx, IZetboxContext dataCtx, ViewModel parent, IValueModel mdl) : base(appCtx, dataCtx, parent, mdl) { CompoundObjectModel = (ICompoundObjectValueModel)mdl; }
public async Task Update(IValueModel value) { if (await IdExist(value.Id)) { await Task.Run(() => { _values.Find(v => v.Id == value.Id).Name = value.Name; }); return; } throw new KeyNotFoundException($"Id '{value.Id}' is not found."); }
public override void SetPara(int id, IValueModel value) { switch (id) { case 0: Value = (BitValue)value; break; default: throw new ArgumentOutOfRangeException(String.Format("Index {0:d} out of range for parameters", id)); } }
public override void Bind(IValueModel <string> model) { base.Bind(model); if (Text == null) { Text = GetComponent <TMPro.TextMeshProUGUI>(); } }
public override void Bind(IValueModel <Sprite> model) { base.Bind(model); if (Image == null) { Image = GetComponentInChildren <Image>(); } }
public override void Bind(IValueModel <float> model) { base.Bind(model); if (Slider == null) { Slider = GetComponent <Slider>(); } }
public AssemblyReferenceViewModel( IViewModelDependencies appCtx, IZetboxContext dataCtx, ViewModel parent, IValueModel mdl) : base(appCtx, dataCtx, parent, mdl) { //// TODO: use a static reference here //if (prop.GetReferencedObjectClass() != DataContext.GetQuery<ObjectClass>().Where(oc => oc.Name == "Assembly")) //{ // throw new ArgumentOutOfRangeException("prop", "Can only handle Assembly References"); //} }
public TypeRefPropertyViewModel( IViewModelDependencies appCtx, IZetboxContext dataCtx, ViewModel parent, IValueModel mdl) : base(appCtx, dataCtx, parent, mdl) { // TODO: use a static reference here //if (prop.GetReferencedObjectClass().Name != "TypeRef") //{ // throw new ArgumentOutOfRangeException("prop", "Can only handle TypeRef References"); //} }
public override void SetPara(int id, IValueModel value) { switch (id) { case 0: InputValue = (WordValue)value; break; case 1: OutputValue = (WordValue)value; break; default: throw new ArgumentOutOfRangeException(String.Format("Index {0:d} out of range for parameters of instruction 'NEGD'", id)); } }
public async Task <IValueModel> Add(IValueModel value) { return(await Task.Run(() => { var maxId = _values.Max(v => v.Id); var newItem = new ValueModel { Id = maxId + 1, Name = value.Name }; _values.Add(newItem); return newItem; })); }
public override void SetPara(int id, IValueModel value) { switch (id) { case 0: COMPort = (WordValue)value; break; case 1: Table = ((StringValue)value).ValueString; break; case 2: Message = (WordValue)value; break; default: throw new ArgumentOutOfRangeException(String.Format("Index {0:d} out of range for parameters", id)); } }
public override void SetPara(int id, IValueModel value) { switch (id) { case 0: SourceValue = (WordValue)value; break; case 1: DestinationValue = (WordValue)value; break; case 2: Count = (WordValue)value; break; default: throw new ArgumentOutOfRangeException(String.Format("Index {0:d} out of range for parameters", id)); } }
private bool IsVariable(IValueModel model) { if (model is NullBitValue || model is NullWordValue || model is NullFloatValue || model is NullDoubleWordValue || model is HDoubleWordValue || model is KDoubleWordValue || model is KFloatValue || model is HWordValue || model is KWordValue || model is StringValue || model is ArgumentValue) { return(false); } else { return(true); } }
public ObjectReferenceViewModel( IViewModelDependencies appCtx, IZetboxContext dataCtx, ViewModel parent, IValueModel mdl) : base(appCtx, dataCtx, parent, mdl) { ObjectReferenceModel = (IObjectReferenceValueModel)mdl; var relEnd = ObjectReferenceModel.RelEnd; if (relEnd == null && mdl.IsReadOnly) { // could be e.g. a calculated object ref property _allowClear = false; _allowCreateNewItem = false; _allowDelete = false; _allowSelectValue = false; } else if (relEnd == null && !mdl.IsReadOnly) { // could be e.g. a filter _allowClear = true; _allowCreateNewItem = false; _allowDelete = false; _allowSelectValue = true; } else { var rel = relEnd.Parent; if (rel != null) { var relType = rel.GetRelationType(); if (relType == RelationType.one_n && rel.Containment == ContainmentSpecification.Independent) { _allowCreateNewItem = false; // search first } else if (relType == RelationType.one_one) { if ((rel.Containment == ContainmentSpecification.AContainsB && rel.A == relEnd) || (rel.Containment == ContainmentSpecification.BContainsA && rel.B == relEnd)) { _allowSelectValue = false; // This end is creating the value, don't change another item } else { _allowCreateNewItem = false; // possibility to change parent, but do not create a new one } } } } dataCtx.IsElevatedModeChanged += new EventHandler(dataCtx_IsElevatedModeChanged); }
public FilterArgumentConfig(IValueModel value, ViewModelDescriptor desc) { if (value == null) { throw new ArgumentNullException("value"); } if (desc == null) { throw new ArgumentNullException("desc"); } this.Value = value; this.ViewModelType = desc; }
public override void SetPara(int id, IValueModel value) { switch (id) { case 0: ArgumentValue = (DoubleWordValue)value; break; case 1: VelocityValue = (DoubleWordValue)value; break; case 2: OutputValue1 = (BitValue)value; break; case 3: OutputValue2 = (BitValue)value; break; default: throw new ArgumentOutOfRangeException(String.Format("Index {0:d} out of range for parameters", id)); } }
static private void Initialize(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { BaseModel bmodel = bvmodel.Model; if (bmodel == null) { continue; } if (bmodel is TONModel) { TONModel tmodel = (TONModel)(bmodel); IValueModel ivmodel = tmodel.TimerValue; if (ivmodel.IsVariable) { continue; } if (ivmodel is TVWordValue) { int index = (int)(ivmodel.Index); timers[index] = new SFCTimerModel(tmodel); } } else { for (int i = 0; i < bmodel.ParaCount; i++) { IValueModel ivmodel = bmodel.GetPara(i); if (ivmodel is SBitValue) { int index = (int)(ivmodel.Index); if (status[index] == null) { status[index] = new SFCStatusModel(ldvmodel); } else if (status[index].LDVModel != ldvmodel) { status[index] = new SFCInvalidStatusModel(); } } } } } } }
private static void Setup(LadderNetworkViewModel lnvmodel) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { bvmodel.ViewCtrl = smmanager; BaseModel bmodel = bvmodel.Model; if (bmodel == null) { continue; } for (int i = 0; i < bmodel.ParaCount; i++) { IValueModel vmodel = bmodel.GetPara(i); SimulateVariableUnit svunit = null; if (vmodel.ValueString.Equals(String.Empty)) { continue; } switch (vmodel.Type) { case LadderValueType.Bool: svunit = smodel.GetVariableUnit(vmodel.ValueString, "BIT"); break; case LadderValueType.Word: svunit = smodel.GetVariableUnit(vmodel.ValueString, "WORD"); break; case LadderValueType.DoubleWord: svunit = smodel.GetVariableUnit(vmodel.ValueString, "DWORD"); break; case LadderValueType.Float: svunit = smodel.GetVariableUnit(vmodel.ValueString, "FLOAT"); break; case LadderValueType.String: svunit = new SimulateStringUnit(vmodel.ValueString); break; } svunit.CanClose = false; SimuMoniValueModel smvmodel = new SimuMoniValueModel(svunit, smodel); bvmodel.SetValueModel(i, smvmodel); } } }
public override void SetPara(int id, IValueModel value) { switch (id) { case 0: FunctionName = value.ValueString; break; case 1: Value1 = (ArgumentValue)value; break; case 2: Value2 = (ArgumentValue)value; break; case 3: Value3 = (ArgumentValue)value; break; case 4: Value4 = (ArgumentValue)value; break; default: throw new ArgumentOutOfRangeException(String.Format("Index {0:d} out of range for parameters", id)); } }
public CrewManagementViewModel(Settlement settlement) { GameVars = Globals.GameVars; Settlement = settlement; Money = new BoundModel <int>(GameVars.playerShipVariables.ship, nameof(GameVars.playerShipVariables.ship.currency)); CrewCapacity = new BoundModel <int>(GameVars.playerShipVariables.ship, nameof(GameVars.playerShipVariables.ship.crewCapacity)); CrewCount = ValueModel.Wrap(GameVars.playerShipVariables.ship.crewRoster) .Select(c => c.Count()); AvailableCrew = ValueModel.Wrap(settlement.availableCrew) .Where(crew => !GameVars.playerShipVariables.ship.crewRoster.Contains(crew)) .Select(crew => new CrewManagementMemberViewModel(crew, OnCrewClicked, null)); MyCrew = ValueModel.Wrap(GameVars.playerShipVariables.ship.crewRoster) .Select(crew => new CrewManagementMemberViewModel(crew, OnCrewClicked, null)); }
private ElementModel GetElement(IValueModel model) { ElementModel elementmodel = new ElementModel(); elementmodel.AddrType = model.Base; elementmodel.StartAddr = model.Index; elementmodel.DataType = GetDataType(model.Type); if (model.Offset != WordValue.Null) { elementmodel.IsIntrasegment = true; elementmodel.IntrasegmentType = model.Offset.Base; elementmodel.IntrasegmentAddr = model.Offset.Index; } else { elementmodel.IsIntrasegment = false; } elementmodel.SetShowTypes(); return(elementmodel); }
public void UpdateComment() { foreach (TextBlock comment in comments) { if (G_Inst.Children.Contains(comment)) { G_Inst.Children.Remove(comment); } } comments.Clear(); int rowid = 0; foreach (PLCOriginInst inst in insts) { BaseViewModel bvmodel = inst.ProtoType; if (bvmodel != null) { TextBlock cmt = new TextBlock(); cmt.Visibility = iscommentmode ? Visibility.Visible : Visibility.Hidden; cmt.Foreground = Brushes.Green; cmt.Text = "//"; BaseModel bmodel = bvmodel.Model; for (int i = 0; i < bmodel.ParaCount; i++) { IValueModel ivmodel = bmodel.GetPara(i); cmt.Text += String.Format("{0:s}:{1:s},", ivmodel.ValueString, ValueCommentManager.GetComment(ivmodel)); } Grid.SetRow(cmt, rowid); Grid.SetColumn(cmt, 7); G_Inst.Children.Add(cmt); comments.Add(cmt); } rowid++; } }
/// <summary> /// 获得一个梯形图程序中所有已经使用的软元件 /// </summary> /// <param name="ldvmodel">梯形图程序</param> static private void GetRegisters(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { if (bvmodel.Model == null) { continue; } for (int i = 0; i < bvmodel.Model.ParaCount; i++) { IValueModel ivmodel = bvmodel.Model.GetPara(i); string ivname = ivmodel.ValueString; if (!regids.ContainsKey(ivname)) { regs.Add(ivmodel); regids.Add(ivname, regids.Count()); } } } } }
static private void Read(MainMonitor mmoni) { int sz = ReadE16(); sz += eid; while (eid < sz) { string name = ReadTextE8(); MonitorVariableTable mvtable = new MonitorVariableTable(name, mmoni); int count = (int)edata[eid++]; while (count-- > 0) { int regid = ReadE16(); IValueModel ivmodel = regs[regid]; ElementModel emodel = new ElementModel(); emodel.IsIntrasegment = ivmodel.IsVariable; if (ivmodel is BitValue) { emodel.ShowType = "BOOL"; } if (ivmodel is WordValue) { emodel.ShowType = "WORD"; } if (ivmodel is DoubleWordValue) { emodel.ShowType = "DWORD"; } if (ivmodel is FloatValue) { emodel.ShowType = "FLOAT"; } emodel.ShowName = ivmodel.ValueString; mvtable.AddElement(emodel); } } }
private void Initialize(LadderNetworkViewModel lnvmodel) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { bvmodel.ViewCtrl = this; BaseModel bmodel = bvmodel.Model; if (bmodel == null) { continue; } for (int i = 0; i < bmodel.ParaCount; i++) { IValueModel ivmodel = bmodel.GetPara(i); if (AssertValueModel(ivmodel)) { ElementModel elementmodel = new ElementModel(); elementmodel.AddrType = ivmodel.Base; elementmodel.StartAddr = ivmodel.Index; elementmodel.DataType = GetDataType(ivmodel.Type); if (ivmodel.Offset != WordValue.Null) { elementmodel.IsIntrasegment = true; elementmodel.IntrasegmentType = ivmodel.Offset.Base; elementmodel.IntrasegmentAddr = ivmodel.Offset.Index; } else { elementmodel.IsIntrasegment = false; } elementmodel.SetShowTypes(); _Add(elementmodel, false); elementmodel = Get(elementmodel); bvmodel.SetValueModel(i, elementmodel); } } } }
public TagPropertyEditorViewModel(IViewModelDependencies dependencies, IZetboxContext dataCtx, ViewModel parent, IValueModel mdl) : base(dependencies, dataCtx, parent, mdl) { }
protected object ResolveUntypedValue(object val, IValueModel mdl) { if (val == null) return null; if (mdl is IObjectReferenceValueModel) { var objRefMdl = (IObjectReferenceValueModel)mdl; if (val is Guid) { return DataContext.FindPersistenceObject(DataContext.GetInterfaceType(objRefMdl.ReferencedClass.GetDataType()), (Guid)val); } else if (val is int) { return DataContext.FindPersistenceObject(DataContext.GetInterfaceType(objRefMdl.ReferencedClass.GetDataType()), (int)val); } else { return null; } } else { return val; } }
public CTUDModel(IValueModel _CountValue, IValueModel _EndValue) { CountValue = _CountValue; EndValue = _EndValue; }
public abstract void SetPara(int id, IValueModel value);
public AnyReferencePropertyViewModel(IViewModelDependencies appCtx, IZetboxContext dataCtx, ViewModel parent, IValueModel mdl) : base(appCtx, dataCtx, parent, mdl) { }