Пример #1
0
            public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
            {
                AApiVersionedFieldsCTD.TypedValuePropertyDescriptor pd = (AApiVersionedFieldsCTD.TypedValuePropertyDescriptor)context.PropertyDescriptor;
                IResourceKeyCTD     rkCTD = (IResourceKeyCTD)pd.GetValue(null);
                AApiVersionedFields owner = rkCTD.owner;
                string       field        = rkCTD.field;
                object       component    = rkCTD.component;
                IResourceKey rk           = (IResourceKey)AApiVersionedFieldsCTD.GetFieldValue(owner, field).Value;

                if (typeof(IResourceKey).IsAssignableFrom(value.GetType()))
                {
                    IResourceKey rkNew = (IResourceKey)value;
                    rk.ResourceType  = rkNew.ResourceType;
                    rk.ResourceGroup = rkNew.ResourceGroup;
                    rk.Instance      = rkNew.Instance;
                    return(rk);
                }
                if (value != null && value is string)
                {
                    if (AResourceKey.TryParse((string)value, rk))
                    {
                        return(rk);
                    }
                    else
                    {
                        throw new NotSupportedException("Invalid data: " + (string)value);
                    }
                }
                return(base.ConvertFrom(context, culture, value));
            }
Пример #2
0
 public void PasteResourceKey(AResourceKey rk)
 {
     foreach (string s in new String[] { "ResourceType", "ResourceGroup", "Instance", })
     {
         if (fields.Contains(s))
         {
             values[s].Value = new Regex(rk[s].ToString("X"));
         }
     }
 }
Пример #3
0
        public static void AddFiles(IPackage package, List <string> sourceFilePaths)
        {
            List <TGIN> addedResourceKeys = new List <TGIN>();

            for (int sourceFilePathIndex = 0; sourceFilePathIndex < sourceFilePaths.Count; sourceFilePathIndex++)
            {
                string sourceInfoFilePath = sourceFilePaths[sourceFilePathIndex] + "." + SourceInfoFileExtension;

                TGIN targetResourceKeyTGIN = Path.GetFileName(sourceFilePaths[sourceFilePathIndex]);

                if (File.Exists(sourceInfoFilePath))
                {
                    try {
                        SourceInfo sourceInfo = (SourceInfo)Tools.ReadXML <SourceInfo>(sourceInfoFilePath);
                        targetResourceKeyTGIN = sourceInfo.ToTGIN();
                    } catch (Exception e) {
                        Console.Error.Write("Failed to read source info file.\n" + sourceInfoFilePath + "\n" + e.ToString());
                    }
                }

                AResourceKey targetResourceKey = targetResourceKeyTGIN;

                MemoryStream sourceStream       = new MemoryStream();
                BinaryWriter sourceStreamWriter = new BinaryWriter(sourceStream);

                using (BinaryReader sourceFileReader = new BinaryReader(new FileStream(sourceFilePaths[sourceFilePathIndex], FileMode.Open, FileAccess.Read))) {
                    sourceStreamWriter.Write(sourceFileReader.ReadBytes((int)sourceFileReader.BaseStream.Length));
                    sourceStreamWriter.Flush();
                }

                IResourceIndexEntry targetPreviousEntry = package.Find(targetResourceKey.Equals);

                while (targetPreviousEntry != null)
                {
                    package.DeleteResource(targetPreviousEntry);
                    targetPreviousEntry = package.Find(targetResourceKey.Equals);
                }

                IResourceIndexEntry targetEntry = package.AddResource(targetResourceKey, sourceStream, false);

                if (targetEntry == null)
                {
                    continue;
                }

                targetEntry.Compressed = 23106;
                addedResourceKeys.Add(targetResourceKeyTGIN);
            }

            GenerateNameMap(package, addedResourceKeys, null);
        }
Пример #4
0
        public static void RemoveFiles(IPackage package, List <string> fileNames)
        {
            List <TGIN> removedResourceKeys = new List <TGIN>();

            for (int fileNameIndex = 0; fileNameIndex < fileNames.Count; fileNameIndex++)
            {
                TGIN         targetResourceKeyTGIN = fileNames[fileNameIndex];
                AResourceKey targetResourceKey     = targetResourceKeyTGIN;

                IResourceIndexEntry targetPreviousEntry = package.Find(targetResourceKey.Equals);

                while (targetPreviousEntry != null)
                {
                    package.DeleteResource(targetPreviousEntry);
                    targetPreviousEntry = package.Find(targetResourceKey.Equals);
                }

                removedResourceKeys.Add(targetResourceKeyTGIN);
            }

            GenerateNameMap(package, null, removedResourceKeys);
        }
Пример #5
0
 /// <summary>
 /// Tests whether a string can be converted to an <see cref="IResourceKey"/> and,
 /// if so, sets <paramref name="result"/> to the converted value.
 /// </summary>
 /// <param name="value">A potential string representation of an <see cref="IResourceKey"/>.</param>
 /// <param name="result">The eqivalent <see cref="IResourceKey"/> value for <paramref name="value"/>.</param>
 /// <returns>True if <paramref name="value"/> has the format
 /// "0xHHHHHHHH-0xHHHHHHHH-0xHHHHHHHHHHHHHHHH"; otherwise false.
 /// </returns>
 public static bool TryParse(string value, out IResourceKey result)
 {
     result = new RK();
     return(AResourceKey.TryParse(value, result));
 }