public void WriteToDataset(CardDataset cds, CardPart part) { if (part == CardPart.Data) { CardDataset.MemoryRow mr; CardDataset.RegisterRow rr; for (int i = 0; i < cds.Memory.Count; i++) { cds.Memory.RemoveMemoryRow(cds.Memory [i]); } mr = cds.Memory.NewMemoryRow(); mr.RegisterCount = registers.Length; mr.CardRow = cds.Card [0]; cds.Memory.AddMemoryRow(mr); for (int i = 0; i < registers.Length; i++) { rr = cds.Register.NewRegisterRow(); rr.Id = i; // rr.Value = ...; // Not used anymore! registers [i].WriteToRow(rr); rr.MemoryRow = mr; cds.Register.AddRegisterRow(rr); } } }
public void WriteToDataset(CardDataset cds, CardPart part) { if (part == CardPart.Program) { CardDataset.EngineRow er; CardDataset.FlagRow fr; for (int i = 0; i < cds.Engine.Count; i++) { cds.Engine.RemoveEngineRow(cds.Engine [i]); } er = cds.Engine.NewEngineRow(); er.AngleUnit = unit.ToString(); er.FlagCount = flags.Length; er.CardRow = cds.Card [0]; cds.Engine.AddEngineRow(er); for (int i = 0; i < flags.Length; i++) { fr = cds.Flag.NewFlagRow(); fr.Id = i; fr.Value = flags [i]; fr.EngineRow = er; cds.Flag.AddFlagRow(fr); } } }
public void WriteToDataset(CardDataset cds, CardPart part) { if (part == CardPart.Program) { // Note that we write 1-based step numbers, in case someone wants to look at the // generated XML. CardDataset.ArgumentRow ar; CardDataset.InstructionRow ir; CardDataset.LabelRow lr; CardDataset.ProgramRow pr; CardDataset.StepRow sr; for (int i = 0; i < cds.Program.Count; i++) { cds.Program.RemoveProgramRow(cds.Program [i]); } pr = cds.Program.NewProgramRow(); pr.InstructionCount = instructions.Length; pr.LabelCount = labels.Length; pr.CardRow = cds.Card [0]; cds.Program.AddProgramRow(pr); for (int i = 0; i < instructions.Length; i++) { ir = cds.Instruction.NewInstructionRow(); ir.Step = i + 1; ir.Instruction = instructions [i].Symbol.Name; ir.ArgumentCount = instructions [i].Arguments.Length; ir.ProgramRow = pr; cds.Instruction.AddInstructionRow(ir); for (int j = 0; j < instructions [i].Arguments.Length; j++) { Argument argument = instructions [i].Arguments [j]; ar = cds.Argument.NewArgumentRow(); ar.Id = j; argument.WriteToArgumentRow(ar); ar.InstructionRow = ir; cds.Argument.AddArgumentRow(ar); } } for (int i = 0; i < labels.Length; i++) { lr = cds.Label.NewLabelRow(); lr.Id = i; lr.StepCount = labels [i].Count; lr.ProgramRow = pr; cds.Label.AddLabelRow(lr); for (int j = 0; j < labels [i].Count; j++) { sr = cds.Step.NewStepRow(); sr.Step = (int)labels [i] [j] + 1; sr.LabelRow = lr; cds.Step.AddStepRow(sr); } } } }
public void WriteToDataset(CardDataset cds, CardPart part) { if (part == CardPart.Program) { CardDataset.DisplayRow dr; for (int i = 0; i < cds.Display.Count; i++) { cds.Display.RemoveDisplayRow(cds.Display [i]); } dr = cds.Display.NewDisplayRow(); dr.Digits = digits; dr.Format = format.ToString(); dr.CardRow = cds.Card [0]; cds.Display.AddDisplayRow(dr); } }
static public void Write(Stream stream, CardPart part) { CardDataset cds = new CardDataset(); if (stream.Length > 0) { cds.ReadXml(stream); CheckVersion(cds); } else { CardDataset.CardRow cr; cr = cds.Card.NewCardRow(); cr.Version = Version; cds.Card.AddCardRow(cr); } WriteToDataset(cds, part); stream.SetLength(0); cds.WriteXml(stream); }
public SaveMessage(CardPart part, FileStream stream) { this.part = part; this.stream = stream; }
protected bool Save(bool alreadyLocked, bool saveAs, CardPart part, ref string name) { bool fileIsNullOrReadOnly; bool fileIsReadOnly; bool mustShowDialog = saveAs; bool status = false; FileStream stream = null; // If we don't have a currently open file, or if it is read-only, or if this is a // Save As, we bring up the menu. We keep doing so until either the user cancels the // operation, or selects a writeable or nonexistent file. for (;;) { fileIsReadOnly = File.Exists(name) && ((File.GetAttributes(name) & FileAttributes.ReadOnly) != 0); fileIsNullOrReadOnly = (name == null || fileIsReadOnly); if (!mustShowDialog && !fileIsNullOrReadOnly) { break; } if (fileIsNullOrReadOnly) { saveFileDialog.FileName = Localization.GetString(Localization.UntitledFileName); } else { saveFileDialog.FileName = name; } if (saveFileDialog.ShowDialog() == DialogResult.OK) { name = saveFileDialog.FileName; mustShowDialog = false; } else { return(false); } } // Now do the actual write to the card. Use OpenOrCreate so as to be able to read the // part of the file that we won't overwrite. try { stream = new FileStream(name, FileMode.OpenOrCreate); if (!alreadyLocked) { Monitor.Enter(executionThread.IsBusy); } try { status = Card.Write(stream, part); } finally { if (!alreadyLocked) { Monitor.Exit(executionThread.IsBusy); } } stream.Close(); return(status); } catch (Exception ex) { string text = string.Format( Localization.GetString(Localization.ExceptionSavingFile), name, ex.Message); string caption = Localization.GetString(Localization.ErrorDuringSave); if (stream != null) { stream.Close(); } MessageBox.Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }
void ChangeValidParts(CardPart cardPart, bool isValid) { if (!_validParts.ContainsKey(cardPart)) { _validParts.Add(cardPart, isValid); } else { _validParts[cardPart] = isValid; } }
void ValidatePart(JudoEntry entry, IValidator validator, CardPart cardPart) { var validationResponse = validator.Validate(entry.Text, _currentDiscoveredNetwork, _acceptedCardNetworks); ChangeValidParts(cardPart, validationResponse.IsValid); entry.Error = !validationResponse.IsValid && validationResponse.ShouldDisplayErrorMessage ? validationResponse.ErrorMessage : null; }