/// <summary> /// If the newly selected item is of type referenceKey, allow jump on double click /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void propGrid_SelectedGridItemChanged(object sender, SelectedGridItemChangedEventArgs e) { m_selectedObject = e.NewSelection.Value as MXFObject; m_currentReference = null; if (m_selectedObject != null) { // Select the reference itself by default m_currentReference = m_selectedObject; // Refkey, then select the reference it points too MXFRefKey refkey = m_selectedObject as MXFRefKey; if (refkey != null) { if (refkey.Reference != null) { m_currentReference = refkey.Reference; } else { m_currentReference = null; // Reset } } } this.btnSelectReference.Enabled = (m_currentReference != null); }
/// <summary> /// Read a list of keys /// </summary> /// <param name="reader"></param> /// <param name="categoryName"></param> /// <returns></returns> protected UInt32 ReadKeyList(MXFReader reader, string categoryName, string singleItem) { UInt32 nofItems = reader.ReadD(); UInt32 objectSize = reader.ReadD(); // useless size of objects, always 16 according to specs MXFObject keylist = new MXFObject(categoryName, reader.Position); if (nofItems < UInt32.MaxValue) { for (int n = 0; n < nofItems; n++) { MXFRefKey key = new MXFRefKey(reader, objectSize, singleItem); keylist.AddChild(key); } } this.AddChild(keylist); return(nofItems); }
/// <summary> /// Overridden method to process local tags /// </summary> /// <param name="localTag"></param> protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x4403: this.TracksCount = ReadKeyList(reader, "Tracks", "Track"); return(true); case 0x4401: // UMID this.ULUID = new MXFRefKey(reader); this.PackageUID = new MXFRefKey(reader); return(true); case 0x4701: // Descriptor this.DescriptorUID = new MXFRefKey(reader); return(true); } return(false); // Not parsed, use default parsing }
/// <summary> /// Overridden method to process local tags /// </summary> /// <param name="localTag"></param> protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x3B02: this.LastModificationDate = reader.ReadTimestamp(); return(true); case 0x3B05: this.Version = reader.ReadW(); return(true); case 0x3B07: this.ObjectModelVersion = reader.ReadD(); return(true); case 0x3B03: this.ContentStorageUID = new MXFRefKey(reader, 16, "ContentStorageUID"); return(true); case 0x3B08: this.PrimaryPackageUID = new MXFRefKey(reader, 16, "PrimaryPackageUID"); return(true); case 0x3B09: this.OperationalPatternUL = new MXFKey(reader, 16); return(true); case 0x3B06: ReadKeyList(reader, "Identifications", "Identification"); return(true); case 0x3B0A: ReadKeyList(reader, "Essencecontainers", "Essencecontainer"); return(true); case 0x3B0B: ReadKeyList(reader, "Metadata Schemes", "Metadata scheme"); return(true); } return(false); // Not parsed, use default parsing }