/// <summary> /// /// </summary> /// <param name="mapView">Must not be null</param> /// <param name="tree"></param> public Tab(MapView mapView, PersistentTree tree) : base(mapView.Canvas) { Tree = tree; MapView = mapView; tree.DirtyChanged += Tree_DirtyChanged; AutoScroll = true; }
/// <summary> /// Changes all image source to mm protocol, downloads and saves the locally /// </summary> public static void ProcessImages(HtmlDocument document, PersistentTree tree) { using (var web = new WebClient()) { var elemCol = document.GetElementsByTagName("img"); for (int i = 0; i < elemCol.Count; i++) { var elem = elemCol[i]; var originalSrc = elem.GetAttribute("src"); if (originalSrc.Length > 4 && originalSrc.Substring(0, 4).Equals("http", StringComparison.OrdinalIgnoreCase)) { byte[] data = null; string extension; try { data = web.DownloadData(originalSrc); extension = MimeTypes.GetExtension(web.ResponseHeaders["Content-Type"]); } catch (WebException) //resource not found (404) and no connection { extension = "png"; } var newInternalSrc = ImageLocalPath.CreateNewLocalPath(extension); tree.SetLargeObject(newInternalSrc.FileName, new BytesLob(data)); elem.SetAttribute("srcOrig", originalSrc); elem.SetAttribute("src", newInternalSrc.Url); } } } }
public Tab FindTab(PersistentTree tree) { if (tree == null) { return(null); } Tab tab = SelectedTab as Tab; if (tab != null && tab.Tree == tree) { return(tab); } foreach (TabPage page in TabPages) { tab = page as Tab; if (tab.MapView.Tree == tree.Tree) { return(tab); } } return(null); }
public void CloseTab(PersistentTree tree) { Tab tab = FindTab(tree); if (tab != null) { CloseTab(tab); } }
/// <summary> /// Open MapView tab /// </summary> /// <param name="tree"></param> /// <returns></returns> public Tab OpenTab(PersistentTree tree) { MapView mapView = new MapView(tree.Tree); Tab tab = new Tab(mapView, tree); tab.UpdateTitle(); OpenTabInternal(tab); mapView.CenterOnForm(); return(tab); }
private void Manager_CurrentTreeChanged(PersistenceManager manager, PersistentTree oldTree, PersistentTree newTree) { if (oldTree != null) { Unregister(oldTree); } if (newTree != null) { Register(newTree); } }
public void SaveMap(PersistentTree tree) { if (tree != null) { if (tree.IsNewMap) { SaveAsMap(tree); } else { SaveMapInternal(tree); } } }
/// <summary> /// Changes all image source to mm protocol, downloads and saves the locally /// </summary> public static void ProcessImages(HtmlDocument document, PersistentTree tree) { ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3; using (var web = new WebClient()) { var elemCol = document.GetElementsByTagName("img"); for (int i = 0; i < elemCol.Count; i++) { var elem = elemCol[i]; var originalSrc = elem.GetAttribute("src"); if (originalSrc.Length > 4 && originalSrc.Substring(0, 4).Equals("http", StringComparison.OrdinalIgnoreCase)) { byte[] data = null; string extension; try { data = web.DownloadData(originalSrc); } catch (Exception exp) { Log.Write("[ImageLocalSaver] Cannot download the image: " + exp.Message); } if (data != null) { try { extension = MimeTypes.GetExtension(web.ResponseHeaders["Content-Type"]); } catch (WebException exp) //resource not found (404) and no connection { Log.Write("[ImageLocalSaver] Cannot get the content type of image: " + exp.Message); extension = "png"; } var newInternalSrc = ImageLocalPath.CreateNewLocalPath(extension); tree.SetLargeObject(newInternalSrc.FileName, new BytesLob(data)); elem.SetAttribute("srcOrig", originalSrc); elem.SetAttribute("src", newInternalSrc.Url); } } } } }
public void FindTab() { MetaModel.MetaModel.Initialize(); var sut = new EditorTabs(); Form f = CreateForm(); f.Controls.Add(sut); f.Show(); PersistenceManager pManager = new PersistenceManager(); PersistentTree tree = pManager.NewTree(); Tab tab = sut.OpenTab(tree); Assert.IsNotNull(sut.FindTab(tree)); }
private void Manager_CurrentTreeChanged(PersistenceManager manager, PersistentTree oldTree, PersistentTree newTree) { if (oldTree != null) { UpdateNodeFromEditor(); Unregister(oldTree); } if (newTree != null) { Register(newTree); editor.BackColor = newTree.NoteBackColor; editor.ForeColor = newTree.NoteForeColor; } }
/// <summary> /// /// </summary> /// <param name="tree">should not be null</param> public void SaveAsMap(PersistentTree tree) { SaveFileDialog file = new SaveFileDialog(); file.AddExtension = true; file.DefaultExt = "mm"; file.Filter = "MindMap files (*.mm)|*.mm|All files (*.*)|*.*|Text (*.txt)|*.txt"; file.InitialDirectory = Path.GetDirectoryName(PersistenceManager.CurrentTree.FileName); file.FileName = tree.IsNewMap? CurrentMapCtrl.MapView.Tree.RootNode.Text : PersistenceManager.CurrentTree.FileName; if (file.ShowDialog() == DialogResult.OK) { SaveMapInternal(tree, file.FileName); } mainForm.EditorTabs.UpdateAppTitle(); }
public void UpdateAppTitle() { MetaModel.MetaModel.Initialize(); var sut = new EditorTabs(); Form f = CreateForm(); f.Controls.Add(sut); f.Show(); PersistenceManager pManager = new PersistenceManager(); PersistentTree tree = pManager.NewTree(); tree.RootNode.Text = "UpdateTitle"; Tab tab = sut.OpenTab(tree); Assert.IsTrue(f.Text.Contains("UpdateTitle")); }
public void OpenMap(string fileName = null) { if (fileName == null) { OpenFileDialog file = new OpenFileDialog(); file.Filter = "MindMap files (*.mm)|*.mm|All files (*.*)|*.*|Text (*.txt)|*.txt"; if (file.ShowDialog() != DialogResult.OK) { return; } else { fileName = file.FileName; } } //file already open PersistentTree persistentTree = PersistenceManager.Find(t => t.FileName == fileName); if (persistentTree != null) { PersistenceManager.CurrentTree = persistentTree; return; } MapTree tree; try { tree = PersistenceManager.OpenTree(fileName); } catch (FileNotFoundException) { MessageBox.Show("File not found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } catch (DirectoryNotFoundException) { MessageBox.Show("File not found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MetaModel.MetaModel.Instance.RecentFiles.Add(fileName); mainForm.RefreshRecentFilesMenuItems(); }
public void ControlGotFocus() { MetaModel.MetaModel.Initialize(); var sut = new EditorTabs(); Form f = CreateForm(); f.Controls.Add(sut); int gotFocus = 0; sut.ControlGotFocus += (a, b) => gotFocus++; f.Show(); PersistenceManager pManager = new PersistenceManager(); PersistentTree tree = pManager.NewTree(); Tab tab = sut.OpenTab(tree); sut.Focus(); Assert.AreEqual(1, gotFocus); }
private ContinueOperation PromptForUnsavedChanges(PersistentTree tree) { if (tree.IsDirty) { DialogResult result = MessageBox.Show("Do you want to save changes?", "Unsaved Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation); switch (result) { case DialogResult.Yes: SaveMap(tree); break; case DialogResult.Cancel: return(ContinueOperation.Cancel); } } return(ContinueOperation.Continue); }
public void UpdateAppTitle() { Debug.Assert(TopLevelControl != null, "TopLevelControl != null"); PersistentTree tree = (SelectedTab as Tab)?.Tree; if (tree != null) { TopLevelControl.Text = tree.Tree.RootNode.Text + " - " + Controller.MainCtrl.APPLICATION_NAME + " - " + tree.FileName; if (tree.IsDirty) { TopLevelControl.Text += "*"; } } else { TopLevelControl.Text = Controller.MainCtrl.APPLICATION_NAME + " - " + SelectedTab.Text; } }
public static bool PasteFromClipboard(NoteEditor editor, PersistentTree tree) { if (Clipboard.ContainsImage()) { Image image = Clipboard.GetImage(); var imagePath = ImageLocalPath.CreateNewLocalPath("png"); MemoryStream ms = new MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); tree.SetByteArray(imagePath.FileName, ms.ToArray()); var htmlImage = new HtmlImageCreator(editor); htmlImage.InsertImage(imagePath.Url, ""); return(true); } else if (Clipboard.ContainsFileDropList()) { var fileList = Clipboard.GetFileDropList(); var imageList = FilterImageFiles(fileList); if (imageList.Any()) { imageList.ForEach(i => { var localPath = ImageLocalPath.CreateNewLocalPath(Path.GetExtension(i).Substring(1)); tree.SetByteArray(localPath.FileName, File.ReadAllBytes(i)); var htmlImage = new HtmlImageCreator(editor); htmlImage.InsertImage(localPath.Url, ""); }); return(true); } else { return(false); } } else { return(false); } }
/// <summary> /// Method which actually saves the file to disk. Other methods like SaveAsMap and SaveMap invoke this. /// </summary> /// <param name="tree"></param> /// <param name="fileName"></param> private void SaveMapInternal(PersistentTree tree, string fileName = null) { Debug.Assert(tree.FileName != null || fileName != null, "Saving: Missing file name."); noteCrtl.UpdateNodeFromEditor(); if (tree != null) { if (fileName == null) { tree.Save(); } else { tree.Save(fileName); } MetaModel.MetaModel.Instance.RecentFiles.Add(tree.FileName); } }
public static bool PasteFromClipboard(NoteEditor editor, PersistentTree tree) { if (Clipboard.ContainsImage()) { Image image = Clipboard.GetImage(); var imagePath = ImageLocalPath.CreateNewLocalPath("png"); MemoryStream ms = new MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); tree.SetLargeObject(imagePath.FileName, new BytesLob(ms.ToArray())); var htmlImage = new HtmlImageCreator(editor); htmlImage.InsertImage(imagePath.Url, ""); return(true); } else if (Clipboard.ContainsFileDropList()) { var fileList = Clipboard.GetFileDropList(); var imageList = FilterImageFiles(fileList); if (imageList.Any()) { imageList.ForEach(i => { InsertFormFile(editor, i, tree); }); return(true); } else { return(false); } } else { return(false); } }
private void Tree_DirtyChanged(PersistentTree tree) { UpdateTitle(); }