Пример #1
0
        /// <summary>
        /// Internal API for loading title pages of Apps.
        /// </summary>
        /// <param name="AppToLoadTitlePageOf">The app to load the title page of.</param>
        /// <returns>An FDocumentTitlePage containing the loaded app title page.</returns>
        internal FDocumentTitlePage FStartApp_LoadTitlePage(IFApp AppToLoadTitlePageOf, bool FMode = true)
        {
            FDocumentTitlePage FDocumentTitlePage = new FDocumentTitlePage();

            if (FMode)
            {
                FDocumentTitlePage.DocumentXML = FLoadXml($"{AppToLoadTitlePageOf.AppPath}\\{AppToLoadTitlePageOf.AppName}\\Title.xml", "Fuchsia");
            }
            else
            {
                FDocumentTitlePage.DocumentXML = FLoadXml($"{AppToLoadTitlePageOf.AppPath}\\Title.xml", "Fuchsia");
            }

            if (!FStartApp_VerifyAttributes(FDocumentTitlePage))
            {
                return(null);
            }
            else
            {
                FStartApp_GetDocumentMetadataXml(FDocumentTitlePage);
            }

            FDocumentTitlePage.DocumentRTB = FParseDocument(FDocumentTitlePage);
            FuchsiaHome FuchsiaHome = new FuchsiaHome(FDocumentTitlePage.DocumentRTB); //tempcode.

            FuchsiaHome.Show();
            return(FDocumentTitlePage);
        }
Пример #2
0
 public void FLoadDocumentByName(IFApp AppToSearchForDocumentIn, string DocumentName)
 {
     foreach (IFDocument FDocumentToSearch in AppToSearchForDocumentIn.Documents)
     {
         if (FDocumentToSearch.DocumentName == DocumentName)
         {
             FLoadDocument(FDocumentToSearch);
         }
     }
 }
Пример #3
0
        /// <summary>
        /// Internal API for loading document lists. Loads the list of documents for a particular IFApp.
        /// </summary>
        /// <param name="AppToLoadDocumentsOf">The App to load the Document of.</param>
        /// <returns></returns>
        internal List <IFDocument> FStartApp_LoadDocuments(IFApp AppToLoadDocumentsOf, List <IFDocument> FDocument, bool FMode = true)
        {
            List <IFDocument> FDocumentList = FDocument;

            XmlDocument FDocumentDefinitionsXML = FStartApp_LoadDocumentDefinitionsXML(AppToLoadDocumentsOf, FMode);

            FDocumentList = FStartApp_ParseDocumentDefinitionsXML(FDocumentDefinitionsXML, FDocumentList);

            return(FDocumentList);
        }
Пример #4
0
        /// <summary>
        /// Internal API for loading document lists. Loads the document definition XML for the IFApp
        /// </summary>
        /// <param name="AppToLoadDocumentDefinitionsOf">The App to load the document of.</param>
        /// <returns></returns>
        internal XmlDocument FStartApp_LoadDocumentDefinitionsXML(IFApp AppToLoadDocumentDefinitionsOf, bool FMode = true) // loads the document definition xml.
        {
            XmlDocument FXMLDocument = new XmlDocument();

            if (FMode)
            {
                FXMLDocument.Load($"{AppToLoadDocumentDefinitionsOf.AppPath}\\{AppToLoadDocumentDefinitionsOf.AppName}\\DocumentDefinitions.xml");
            }
            else
            {
                FXMLDocument.Load($"{AppToLoadDocumentDefinitionsOf.AppPath}\\DocumentDefinitions.xml");
            }

            return(FXMLDocument);
        }
Пример #5
0
        /// <summary>
        /// Internal API for parsing the App Definition XML.
        /// </summary>
        /// <param name="FApp">The IFApp to load.</param>
        /// <param name="FAppXml">The XML file to load the IFApp attributes from.</param>
        /// <returns></returns>
        ///
        internal IFApp FStartApp_ParseAppXml(IFApp FApp, XmlDocument FAppXml)
        {
            try
            {
                XmlNode FXmlRootNode = FAppXml.FirstChild;

                if (FXmlRootNode.Name != "Fuchsia")
                {
                    FError.ThrowError(1, $"App App.xml does not have Fuchsia as its first node. Aborting load...", FErrorSeverity.Error);
                    return(null);
                }

                XmlNodeList FXmlFirstLevelNodes = FXmlRootNode.ChildNodes;

                foreach (XmlNode FXmlFirstLevelNode in FXmlFirstLevelNodes)
                {
                    switch (FXmlFirstLevelNode.Name)
                    {
                    case "AppInformation":
                        if (FXmlFirstLevelNode.Attributes.Count == 0)
                        {
                            FError.ThrowError(4, $"App definition empty. Aborting load...", FErrorSeverity.Error);
                        }
                        XmlAttributeCollection FXmlAppInfoAttributes = FXmlFirstLevelNode.Attributes;

                        foreach (XmlAttribute FXmlAppInfoAttribute in FXmlAppInfoAttributes)
                        {
                            switch (FXmlAppInfoAttribute.Name)
                            {
                            case "author":
                                FApp.AppAuthor = FXmlAppInfoAttribute.Value;
                                continue;

                            case "description":
                                FApp.AppDescription = FXmlAppInfoAttribute.Value;
                                continue;

                            case "developer":
                                FApp.AppDeveloper = FXmlAppInfoAttribute.Value;
                                continue;

                            case "name":
                                FApp.AppName = FXmlAppInfoAttribute.Value;
                                continue;

                            case "purpose":
                                FApp.AppPurpose = FXmlAppInfoAttribute.Value;
                                continue;
                            }

                            if (FApp.AppName == null)
                            {
                                FError.ThrowError(5, $"Attempted to load app with no name. Aborting load...", FErrorSeverity.Error);
                            }
                        }

                        continue;

                    default:
                        FError.ThrowError(3, $"Invalid node name present in App.xml, aborting load...", FErrorSeverity.Error);
                        return(null);
                    }
                }

                return(FApp);
            }
            catch (XmlException err)
            {
                FError.ThrowError(2, $"App App.xml corrupted. Aborting load...", FErrorSeverity.Error, err);
                return(null);
            }
            catch (FileNotFoundException err)
            {
                FError.ThrowError(6, $"Attempted to load a nonexistent App.xml.", FErrorSeverity.Error, err);
                return(null);
            }
            catch (DirectoryNotFoundException err)
            {
                FError.ThrowError(7, $"Attempted to load a nonexistent App.xml.", FErrorSeverity.Error, err);
                return(null);
            }
        }