/// <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); }
public void FLoadDocumentByName(IFApp AppToSearchForDocumentIn, string DocumentName) { foreach (IFDocument FDocumentToSearch in AppToSearchForDocumentIn.Documents) { if (FDocumentToSearch.DocumentName == DocumentName) { FLoadDocument(FDocumentToSearch); } } }
/// <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); }
/// <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); }
/// <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); } }