private void loadLogisimToolStripMenuItem_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { string text = File.ReadAllText(openFileDialog1.FileName, Encoding.UTF8); LogisimCirc = new XmlDocument(); LogisimCirc.LoadXml(text); CircuitModel = LogisimConverter.LoadModel(LogisimCirc); VisualizeLogisim(CircuitModel); //Console.WriteLine(""); //Console.WriteLine(text); this.Text = SavedText + " - " + Path.GetFileName(openFileDialog1.FileName); } }
private void loadModelToolStripMenuItem_Click(object sender, EventArgs e) { if (openFileDialog2.ShowDialog() == DialogResult.OK) { XmlSerializer ser = new XmlSerializer(typeof(LogisimConverter.LogisimModel)); using (FileStream fs = new FileStream(openFileDialog2.FileName, FileMode.Open)) { CircuitModel = (LogisimConverter.LogisimModel)ser.Deserialize(fs); // Restore wire linkage LogisimConverter.RestoreLinkage(CircuitModel); VisualizeLogisim(CircuitModel); this.Text = SavedText + " - " + Path.GetFileName(openFileDialog2.FileName); } } }
private void VisualizeLogisim(LogisimConverter.LogisimModel model) { canvasControl1.RemoveAllItems(); // Comps foreach (var comp in model.comps) { CanvasRect rect = new CanvasRect((PointF)comp.loc, LogisimConverter.CompSize, LogisimConverter.CompSize, Color.Gold); rect.Text = comp.name; if (comp.name == "Text") { // Skip labels continue; } else if (comp.name == "1") { rect.FrontColor = Color.Tomato; } else if (comp.name == "0") { rect.FrontColor = Color.LimeGreen; } #if DEBUG rect.Text += " #" + comp.id.ToString(); #endif canvasControl1.AddItem(rect); } // Wires foreach (var wire in model.wires) { List <PointF> path = new List <PointF>(); foreach (var p in wire.path) { path.Add(p); } CanvasPolyLine line = new CanvasPolyLine(path, 1, Color.Black); line.Text = wire.name; WireMeta meta = new WireMeta(); meta.wire = wire; line.UserData = meta; canvasControl1.AddItem(line); WireDirection(wire, meta); } // Vias foreach (var vias in model.viases) { CanvasPoint point = new CanvasPoint(vias.loc, 5, Color.Gold); #if DEBUG //point.Text = vias.id.ToString(); //point.TextColor = Color.DeepPink; #endif canvasControl1.AddItem(point); } canvasControl1.Invalidate(); }