protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { FrameworkElement element = ( FrameworkElement )container; PinRecord Para = ( PinRecord )item; return(Para.TreeLevel == 0 ? DevRecord : PinRecord); }
private async Task PinRecord(PinRecord Record) { BookItem Book = await ItemProcessor.GetBookFromId(Record.Id); if (Book == null) { return; } TaskCompletionSource <bool> TCS = new TaskCompletionSource <bool>(); BookLoader BL = new BookLoader(async(b) => { if (b != null) { string TileId = await PageProcessor.PinToStart(Book); if (!string.IsNullOrEmpty(TileId)) { PM.RegPin(b, TileId, false); } } TCS.SetResult(true); }); BL.Load(Book); await TCS.Task; }
private void ShowContextMenu(object sender, RightTappedRoutedEventArgs e) { FrameworkElement Elem = ( FrameworkElement )sender; FlyoutBase.ShowAttachedFlyout(Elem); SelectedRecord = ( PinRecord )Elem.DataContext; }
private PinRecord ReadPinRecord(BinaryReader reader, int size, ParameterCollection pinWideText, byte[] pinTextData, ParameterCollection pinSymbolLineWidth) { int recordType = (size >> 24); BeginContext($"Binary Record {recordType}"); var pin = new PinRecord(); pin.Record = reader.ReadInt32(); AssertValue(nameof(pin.Record), pin.Record, 2); reader.ReadByte(); // TODO: unknown pin.OwnerPartId = reader.ReadInt16(); reader.ReadByte(); // TODO: unknown pin.SymbolInnerEdge = (PinSymbol)reader.ReadByte(); pin.SymbolOuterEdge = (PinSymbol)reader.ReadByte(); pin.SymbolInside = (PinSymbol)reader.ReadByte(); pin.SymbolOutside = (PinSymbol)reader.ReadByte(); pin.SymbolLineWidth = LineWidth.Smallest; pin.Description = ReadPascalShortString(reader); reader.ReadByte(); // TODO: unknown pin.Electrical = (PinElectricalType)reader.ReadByte(); pin.PinConglomerate = (PinConglomerateFlags)reader.ReadByte(); pin.PinLength = Utils.DxpFracToCoord(reader.ReadInt16(), 0); var locationX = Utils.DxpFracToCoord(reader.ReadInt16(), 0); var locationY = Utils.DxpFracToCoord(reader.ReadInt16(), 0); pin.Location = new CoordPoint(locationX, locationY); pin.Color = ColorTranslator.FromWin32(reader.ReadInt32()); pin.Name = ReadPascalShortString(reader); pin.Designator = ReadPascalShortString(reader); reader.ReadByte(); // TODO: unknown reader.ReadByte(); // TODO: unknown reader.ReadByte(); // TODO: unknown if (pinWideText != null) { pin.Description = pinWideText["DESC"].AsStringOrDefault(pin.Description); pin.Name = pinWideText["NAME"].AsStringOrDefault(pin.Name); pin.Designator = pinWideText["DESIG"].AsStringOrDefault(pin.Designator); } if (pinTextData != null) { } if (pinSymbolLineWidth != null) { pin.SymbolLineWidth = pinSymbolLineWidth["SYMBOL_LINEWIDTH"].AsEnumOrDefault(pin.SymbolLineWidth); } EndContext(); return(pin); }
private void RenderPinPrimitive(Graphics g, PinRecord pin) { var location = ScreenFromWorld(pin.Location.X, pin.Location.Y); g.TranslateTransform(location.X, location.Y); var direction = 1.0f; var displayNameHorizontalAlignment = StringAlignment.Far; var designatorHorizontalAlignment = StringAlignment.Near; var penWidth = ScaleLineWidth(LineWidth.Small); using (var pen = CreatePen(pin.Color, penWidth, LineCap.Flat)) { if (pin.PinConglomerate.HasFlag(PinConglomerateFlags.Rotated)) { g.RotateTransform(-90); } if (pin.PinConglomerate.HasFlag(PinConglomerateFlags.Flipped)) { direction = -1.0f; displayNameHorizontalAlignment = StringAlignment.Near; designatorHorizontalAlignment = StringAlignment.Far; } var length = ScaleCoord(pin.PinLength) * direction; g.DrawLine(pen, -1.0f, 0.0f, length, 0.0f); } using (var brush = new SolidBrush(pin.Color)) using (var font = CreateFont("Times New Roman", 10f, FontStyle.Regular)) { if (pin.PinConglomerate.HasFlag(PinConglomerateFlags.DisplayNameVisible)) { var x = ScalePixelLength(-5.0f) * direction; var displayName = pin.Name.Replace(@"\", ""); DrawingUtils.DrawString(g, displayName, font, brush, x, ScalePixelLength(0.5), StringAlignmentKind.Default, displayNameHorizontalAlignment, StringAlignment.Center); using (var pen = CreatePen(pin.Color, ScaleLineWidth(LineWidth.Small))) { DrawOverline(g, pin.Name, font, pen, x, ScalePixelLength(0.5), StringAlignmentKind.Default, displayNameHorizontalAlignment, StringAlignment.Center); } } if (pin.PinConglomerate.HasFlag(PinConglomerateFlags.DesignatorVisible)) { DrawingUtils.DrawString(g, pin.Designator, font, brush, ScalePixelLength(8.0f) * direction, 0, StringAlignmentKind.Extent, designatorHorizontalAlignment, StringAlignment.Far); } } }
private PinRecord ReadPinRecord(BinaryReader reader, int size) { int recordType = (size >> 24); BeginContext($"Binary Record {recordType}"); var pin = new PinRecord(); pin.Record = reader.ReadInt32(); AssertValue(nameof(pin.Record), pin.Record, 2); reader.ReadByte(); // TODO: unknown pin.OwnerPartId = reader.ReadInt16(); reader.ReadByte(); // TODO: unknown pin.SymbolInnerEdge = (PinSymbol)reader.ReadByte(); pin.SymbolOuterEdge = (PinSymbol)reader.ReadByte(); pin.SymbolInside = (PinSymbol)reader.ReadByte(); pin.SymbolOutside = (PinSymbol)reader.ReadByte(); pin.SymbolLineWidth = LineWidth.Smallest; pin.Description = ReadPascalShortString(reader); reader.ReadByte(); // TODO: unknown pin.Electrical = (PinElectricalType)reader.ReadByte(); pin.PinConglomerate = (PinConglomerateFlags)reader.ReadByte(); pin.PinLength = Utils.DxpFracToCoord(reader.ReadInt16(), 0); var locationX = Utils.DxpFracToCoord(reader.ReadInt16(), 0); var locationY = Utils.DxpFracToCoord(reader.ReadInt16(), 0); pin.Location = new CoordPoint(locationX, locationY); pin.Color = ColorTranslator.FromWin32(reader.ReadInt32()); pin.Name = ReadPascalShortString(reader); pin.Designator = ReadPascalShortString(reader); reader.ReadByte(); // TODO: unknown reader.ReadByte(); // TODO: unknown reader.ReadByte(); // TODO: unknown EndContext(); return(pin); }
/// <summary> /// Instantiates a record according to its record type number. /// </summary> /// <param name="recordType">Integer representing the record type.</param> /// <returns>A new empty instance of a record primitive.</returns> private SchPrimitive CreateRecord(int recordType) { SchPrimitive record; switch (recordType) { case 1: record = new SchComponent(); break; case 2: record = new PinRecord(); break; case 3: record = new SymbolRecord(); break; case 4: record = new TextStringRecord(); break; case 5: record = new BezierRecord(); break; case 6: record = new PolylineRecord(); break; case 7: record = new PolygonRecord(); break; case 8: record = new EllipseRecord(); break; case 9: record = new PieChartRecord(); break; case 10: record = new RoundedRectangleRecord(); break; case 11: record = new EllipticalArcRecord(); break; case 12: record = new ArcRecord(); break; case 13: record = new LineRecord(); break; case 14: record = new RectangleRecord(); break; case 28: case 209: record = new TextFrameRecord(); break; case 30: record = new ImageRecord(); break; case 34: record = new Record34(); break; case 41: record = new Record41(); break; case 44: record = new Record44(); break; case 45: record = new Record45(); break; case 46: record = new Record46(); break; case 48: record = new Record48(); break; default: EmitWarning($"Record {recordType} not supported"); record = new SchPrimitive(); break; } return(record); }
private void UpdatePinData() { SelectedRecord = null; CurrRecords = PM.GetPinRecords(); PinList.ItemsSource = CurrRecords; }