Example #1
0
        /// <summary>
        /// Adds a package to the AddOn package list.
        /// </summary>
        /// <param name="packageFileName">The file path of the AddOn package file.</param>
        public void AddPackage(string packageFileName)
        {
            //Prepare...
            AddOnPackageFile package = new AddOnPackageFile();

            package.DecompressData += Program.Package_DecompressData;

            //Load
            try { package.Load(packageFileName); } catch { }

            //Extract
            try
            {
                if (package.Entries.Count > 0 && package.Entries.ContainsFilename("Manifest.xml"))
                {
                    //Load Manifest
                    AddOnManifest manifest = new AddOnManifest();
                    manifest.LoadXml(package.LoadFile("Manifest.xml"));

                    //Create
                    AddOn addOn = new AddOn(package, manifest);

                    //Add to list...
                    addOnsListBox.SetItemChecked(addOnsListBox.Items.Add(addOn), true);
                }
            }
            catch (Exception) { }
        }
Example #2
0
        /// <summary>
        /// Adds a package to the AddOn package list.
        /// </summary>
        /// <param name="package">The AddOn package file.</param>
        /// <param name="manifest">The AddOn maniest.</param>
        public void AddPackage(AddOnPackageFile package, AddOnManifest manifest)
        {
            //Create
            AddOn addOn = new AddOn(package, manifest);

            //Add to list...
            addOnsListBox.SetItemChecked(addOnsListBox.Items.Add(addOn), true);
        }
Example #3
0
        private void addPackageButton_Click(object sender, EventArgs e)
        {
            //Prepare
            string filename = string.Empty;
            bool   open     = false;

            //Initialize
            using (OpenFileDialog openDlg = new OpenFileDialog())
            {
                //Setup
                openDlg.Filter = "Abide AddOn Packages (*.aao)|*.aao";
                openDlg.Title  = "Add AddOn Package...";
                if (openDlg.ShowDialog() == DialogResult.OK)
                {
                    filename = openDlg.FileName;
                    open     = true;
                }
            }

            //Check
            if (open)
            {
                //Prepare...
                AddOnPackageFile package = new AddOnPackageFile();
                package.DecompressData += Program.Package_DecompressData;

                //Load
                try { package.Load(filename); } catch { }

                //Extract
                try
                {
                    if (package.Entries.Count > 0 && package.Entries.ContainsFilename("Manifest.xml"))
                    {
                        //Load Manifest
                        AddOnManifest manifest = new AddOnManifest();
                        manifest.LoadXml(package.LoadFile("Manifest.xml"));

                        //Create
                        AddOn addOn = new AddOn(package, manifest);

                        //Add to list...
                        addOnsListBox.SetItemChecked(addOnsListBox.Items.Add(addOn), true);
                    }
                }
                catch (Exception) { }
            }
        }
        void newButton_Click(object sender, EventArgs e)
        {
            try
            {
                using (var fileDialog = new OpenFileDialog())
                {
                    fileDialog.Filter = "Zitationsstil-Element (*.xml)|*.xml|Citavi AddOn (*.dll)|*.dll";
                    if (fileDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        if (fileDialog.FileName.EndsWith(".xml"))
                        {
                            Manifest = new CitationStyleElementManifest();
                            var doc = XDocument.Load(File.OpenRead(fileDialog.FileName));
                            Manifest.Id = new Guid(doc.Root.Attributes("id").First().Value);
                            if (doc.Root.Name == "BibliographyGroupingSet")
                            {
                                Manifest.Name = doc.Root.Elements("Name").First().Value;
                            }
                            ManifestPath = Path.Combine(Path.GetDirectoryName(fileDialog.FileName), Path.GetFileNameWithoutExtension(fileDialog.FileName) + ".json");
                        }
                        else
                        {
                            ManifestPath = Path.Combine(Path.GetDirectoryName(fileDialog.FileName), "manifest.json");
                            Manifest     = new AddOnManifest();
                            ((AddOnManifest)Manifest).EntryPoint = Path.GetFileName(fileDialog.FileName);
                            var asm = Assembly.LoadFrom(fileDialog.FileName);
                            Manifest.Id = new Guid(((GuidAttribute)asm.GetCustomAttributes(typeof(GuidAttribute), true).First()).Value);
                            ((AddOnManifest)Manifest).SummaryLocalized = new Dictionary <string, string>();
                        }

                        Manifest.NameLocalized        = new Dictionary <string, string>();
                        Manifest.DescriptionLocalized = new Dictionary <string, string>();
                        Manifest.Version          = new Version(1, 0, 0, 0);
                        Manifest.CitaviMinVersion = new Version(5, 8, 0, 0);
                        Manifest.ManifestVersion  = 1;
                        Init();

                        newButton.Hide();
                        loadButton.Enabled = false;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Example #5
0
        private void createButton_Click(object sender, EventArgs e)
        {
            //Check
            if (!File.Exists(Path.Combine(root, primaryAssembly)))
            {
                return;
            }
            if (string.IsNullOrEmpty(nameTextBox.Text))
            {
                return;
            }
            if (string.IsNullOrEmpty(root))
            {
                return;
            }
            if (!Directory.Exists(root))
            {
                return;
            }

            //Prepare
            AddOnManifest manifest = new AddOnManifest();

            string[] files = node_GetFiles(filesTreeView.Nodes);
            manifest.PrimaryAssemblyFile = primaryAssembly;
            manifest.Name = nameTextBox.Text;

            //Loop
            foreach (string file in files)
            {
                //Split...
                string[] parts = file.Replace(root, string.Empty).Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
                manifest.Add(string.Join("\\", parts));
            }

            //Create Package
            AddOnPackageFile package = new AddOnPackageFile();

            package.CompressData += Package_CompressData;

            //Write
            using (MemoryStream manifestStream = new MemoryStream())
            {
                //Save
                manifest.SaveXml(manifestStream);

                //Create File Entry
                FileEntry manifestEntry = new FileEntry(manifestStream.ToArray());
                manifestEntry.Filename    = "Manifest.xml";
                manifestEntry.Compression = "GZIP";
                manifestEntry.Created     = DateTime.Now;
                manifestEntry.Modified    = DateTime.Now;
                manifestEntry.Accessed    = DateTime.Now;

                //Add Manifest
                package.Entries.Add(manifestEntry);
            }

            //Add
            foreach (string targetFile in manifest)
            {
                package.AddFile(Path.Combine(root, targetFile), targetFile, "GZIP");
            }

            //Save
            using (SaveFileDialog saveDlg = new SaveFileDialog())
            {
                //Setup
                saveDlg.Filter   = "Abide AddOn Package Files (*.aao)|*.aao";
                saveDlg.FileName = manifest.Name;

                //Show
                if (saveDlg.ShowDialog() == DialogResult.OK)
                {
                    package.Save(saveDlg.FileName);
                }
            }

            //OK
            DialogResult = DialogResult.OK;
        }
Example #6
0
 /// <summary>
 /// Initializes a new <see cref="AddOn"/> instance using the supplied package and AddOn manifest instances.
 /// </summary>
 /// <param name="package">The AddOn package file.</param>
 /// <param name="manifest">The AddOn manifest.</param>
 public AddOn(AddOnPackageFile package, AddOnManifest manifest)
 {
     this.package  = package;
     this.manifest = manifest;
 }