private static void InitPrimitive()
        {
            CircuitProject     project = CircuitProject.Create(null);
            List <IDescriptor> list    = new List <IDescriptor>(32);

            project.StartTransaction();

            list.Add(new TextNoteDescriptor(project));

            list.Add(new PinDescriptor(project, PinType.Input));
            list.Add(new PinDescriptor(project, PinType.Output));
            list.Add(new ButtonDescriptor(project));
            list.Add(new ConstantDescriptor(project));
            list.Add(new SensorDescriptor(project));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Clock, 0, false), Properties.Resources.ToolTipDescriptorClock));
            list.Add(new SplitterDescriptor(project));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Led, 1, false), null));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Led, 8, false), null));
            list.Add(new LedMatrixDescriptor(project));
            list.Add(new GraphicsArrayDescriptor(project));
            list.Add(new SoundDescriptor(project));
            list.Add(new ProbeDescriptor(project));

            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Not, 1, true), null));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.TriState2, 2, false), Properties.Resources.ToolTipDescriptorTriState));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.TriState1, 2, false), Properties.Resources.ToolTipDescriptorTriState));

            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.And, 2, false), null));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.And, 2, true), null));

            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Or, 2, false), null));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Or, 2, true), null));

            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Xor, 2, false), null));
            list.Add(new GateDescriptor(project.GateSet.Gate(GateType.Xor, 2, true), null));

            list.Add(new MemoryDescriptor(project, false));
            list.Add(new MemoryDescriptor(project, true));

            project.Commit();

            CircuitDescriptorList.primitiveList = list;
        }
Пример #2
0
        public string WriteToString(IEnumerable <Symbol> symbol)
        {
            CircuitProject copy    = new CircuitProject();
            bool           started = copy.StartTransaction();

            Tracer.Assert(started);
            copy.ProjectSet.Copy(this.ProjectSet.Project);
            LogicalCircuit target = copy.LogicalCircuitSet.Copy(this.ProjectSet.Project.LogicalCircuit, false);

            foreach (Symbol s in symbol)
            {
                s.CopyTo(target);
            }
            StringBuilder sb = new StringBuilder();

            using (TextWriter textWriter = new StringWriter(sb, CultureInfo.InvariantCulture)) {
                copy.Save(textWriter);
            }
            return(sb.ToString());
        }
Пример #3
0
        protected void InTransaction(Action action)
        {
            CircuitProject project = this.Circuit.CircuitProject;

            if (project.StartTransaction())
            {
                try {
                    action();
                } catch {
                    project.Rollback();
                    throw;
                } finally {
                    if (project.IsEditor)
                    {
                        project.Omit();
                    }
                }
            }
            else
            {
                Tracer.Fail();
            }
        }