public static bool Redo(KPage page) { if (!history.ContainsKey(page)) { return(false); } if (history[page].Current >= history[page].Versions.Count - 1) { return(false); } page.LoadFromString(E.GetString(history[page].Versions[++history[page].Current].Data), Program.MainLog); SetButtonVisibility(page); return(true); }
public bool LoadDocument(string path, MessageLog log) { log?.Add(MessageType.MSG, "Loading File '{0}'", path); DirectoryInfo dir = TmpManager.GetTmpDir(); if (path != null) { ZipFile zip = new ZipFile(path); if (dir.Exists) { dir.RemoveAll(); } try { zip.ExtractAll(dir.FullName); } catch (BadPasswordException) { Dialogues.PasswordDialog dialog = new Dialogues.PasswordDialog(); var res = dialog.ShowDialog(out string pw, delegate(string _password) { try { zip.Password = _password; zip.ExtractAll(dir.FullName); return(true); } catch (BadPasswordException) { return(false); } }); if (res == DialogResult.Cancel) { return(false); } } } FileInfo docFile = new FileInfo(dir + "\\document.kritzel"); XmlReader reader = XmlReader.Create(docFile.FullName); XmlDocument doc = new XmlDocument(); doc.Load(reader); reader.Close(); XmlNode root = doc.LastChild; XmlNode pagesNode = root.GetNode("Pages"); //Bitmap[] bgrs = new Bitmap[0]; PdfDocument pdfDoc = null; bool loadPdf = false; if (File.Exists(dir + "\\.pdf")) { //bgrs = MupdfSharp.PageRenderer.Render(dir + "\\.pdf", Dialogues.PDFImporter.PAGETHEIGHTPIXEL); pdfDoc = PdfSharp.Pdf.IO.PdfReader.Open(dir + "\\.pdf", PdfDocumentOpenMode.Modify | PdfDocumentOpenMode.Import); loadPdf = true; } int ind = 1; foreach (XmlNode xmlPage in pagesNode.GetNodes("Page")) { string src = xmlPage.Attributes.GetNamedItem("src").InnerText; string text = File.ReadAllText(dir.FullName + "\\" + src); KPage page = new KPage(this); log?.Add(MessageType.MSG, "Loading Page {0}", ind++); page.LoadFromString(text, log); int pdfInd; int.TryParse(xmlPage.Attributes["pdf"].Value, out pdfInd); if (pdfInd >= 0 && loadPdf) { //page.BackgroundImage = new Renderer.Image(bgrs[pdfInd]); page.OriginalPage = pdfDoc.Pages[pdfInd]; page.PdfRenderPath = TmpManager.NewFilename(TmpManager.GetTmpDir() + "\\render", "page", ".png"); } Pages.Add(page); } var defForm = doc.GetElementsByTagName("DefaultFormat"); if (defForm.Count > 0) { DefaultFormat = defForm[0].InnerText; } if (loadPdf) { pdfDoc.Close(); pdfDoc.Dispose(); } this.FilePath = path; SetCurrentStateAsSaved(); return(true); }