Exemple #1
0
 private void ExtensionAddButton_Click(object sender, EventArgs e)
 {
     //create new file type and call validate extensions to set validation flags
     PropertyManager.AirExtension extension = new PropertyManager.AirExtension();
     _extensions.Add(extension);
     ValidateExtensions();
     //add the item to the list view and select it
     ListViewItem extensionListItem = new ListViewItem(extension.ExtensionId);
     ExtensionsListView.Items.Add(extensionListItem);
     ExtensionsListView.SelectedIndices.Clear();
     ExtensionsListView.Items[ExtensionsListView.Items.Count - 1].Selected = true;
     RefreshSelectedExtension();
 }
Exemple #2
0
        private void ExtensionBrowseButton_Click(object sender, EventArgs e)
        {
            using (var extensionBrowser = new OpenFileDialog())
            {
                extensionBrowser.CheckFileExists = true;
                extensionBrowser.Filter = TextHelper.GetString("Info.AneFilter");
                extensionBrowser.InitialDirectory = _propertiesFilePath;

                if (extensionBrowser.ShowDialog(this) == DialogResult.OK)
                {
                    ZipFile zFile;
                    try
                    {
                        zFile = new ZipFile(extensionBrowser.FileName);
                    }
                    catch (Exception ex)
                    {
                        String msg = TextHelper.GetString("Info.CouldNotLoadANE") + "\n" + ex.Message;
                        ErrorManager.ShowWarning(msg, null);
                        return;
                    }
                    var entry = zFile.GetEntry("META-INF/ANE/extension.xml");

                    if (entry == null)
                    {
                        String msg = TextHelper.GetString("Info.ANEDescFileNotFound");
                        ErrorManager.ShowWarning(msg, null);
                        return;
                    }

                    byte[] buffer = UnzipFile(zFile, entry);

                    string extensionId = null;
                    using (var stream = new MemoryStream(buffer))
                    {
                        using (var reader = XmlReader.Create(stream))
                        {
                            reader.MoveToContent();

                            while (reader.Read())
                            {
                                if (reader.NodeType != XmlNodeType.Element) continue;

                                if (reader.Name == "id")
                                {
                                    extensionId = reader.ReadInnerXml();
                                    break;
                                }
                            }
                        }
                    }

                    if (extensionId == null)
                    {
                        String msg = TextHelper.GetString("Info.ExtensionIDNotFound");
                        ErrorManager.ShowWarning(msg, null);
                        return;
                    }

                    PropertyManager.AirExtension extension = null;

                    // We look for the extension in case it is already added, and modify its path, maybe FD is missing the external library entry and the user
                    //wants to add it.
                    foreach (var existingExtension in _extensions)
                    {
                        if (existingExtension.ExtensionId == extensionId) extension = existingExtension;
                        break;
                    }
                    if (extension == null)
                    {
                        extension = new PropertyManager.AirExtension() { ExtensionId = extensionId, IsValid = true };
                        _extensions.Add(extension);
                        //I don't validation and selection is needed in this case
                        var extensionListItem = new ListViewItem(extension.ExtensionId);
                        ExtensionsListView.Items.Add(extensionListItem);
                    }
                    extension.Path = extensionBrowser.FileName;
                }
            }
        }