Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
                    }
                }
            }
        }
Пример #4
0
            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);
                }
            }
Пример #5
0
        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);
        }
Пример #6
0
 public SaveMessage(CardPart part, FileStream stream)
 {
     this.part   = part;
     this.stream = stream;
 }
Пример #7
0
        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);
            }
        }
Пример #8
0
		void ChangeValidParts(CardPart cardPart, bool isValid)
		{
			if (!_validParts.ContainsKey(cardPart))
			{
				_validParts.Add(cardPart, isValid);
			}
			else
			{
				_validParts[cardPart] = isValid;
			}
		}
Пример #9
0
		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;
		}