Example #1
0
 public IdeaNote GetPrevNoteInTree()
 {
     if (Parent != null)
     {
         int index = Parent.Ideas.IndexOf(this);
         if (index != 0)
         {
             return(Parent.Ideas[index - 1].GetLastChild());
         }
         else
         {
             return(Parent);
         }
     }
     else
     {
         IdeaTreeSaveFile save = GetRootSaveFile();
         if (save == null)
         {
             return(null);
         }
         int index = save.Ideas.IndexOf(this);
         if (index != 0)
         {
             return(save.Ideas[index - 1].GetLastChild());
         }
         else
         {
             return(null);
         }
     }
 }
Example #2
0
        public static IdeaTreeSaveFile FromFile(string path)
        {
            IdeaTreeSaveFile saveFile = null;

            using (Stream file = File.OpenRead(path))
            {
                using (var gzip = new GZipStream(file, CompressionMode.Decompress, true))
                {
                    saveFile = Serializer.Deserialize <IdeaTreeSaveFile>(gzip);
                }
            }

            return(saveFile);
        }
Example #3
0
 public IdeaNote GetNextNoteInTree(bool skipChildren = false)
 {
     if (Ideas.Count > 0 && !skipChildren)
     {
         return(Ideas[0]);
     }
     else if (Parent != null)
     {
         int index = Parent.Ideas.IndexOf(this);
         if (index != (Parent.Ideas.Count - 1))
         {
             return(Parent.Ideas[index + 1]);
         }
         else
         {
             return(Parent.GetNextNoteInTree(true));
         }
     }
     else
     {
         IdeaTreeSaveFile save = GetRootSaveFile();
         if (save == null)
         {
             return(null);
         }
         int index = save.Ideas.IndexOf(this);
         if (index != (save.Ideas.Count - 1))
         {
             return(save.Ideas[index + 1]);
         }
         else
         {
             return(null);
         }
     }
 }
Example #4
0
        public void NewFile(bool silent = false)
        {
            if (SaveFile?.ChangedSinceLastSave == true && !silent && !CheckClosing()) return;

            SaveFile = new IdeaTreeSaveFile();
            currentSavePath = null;

            SetStartingTemplate();
            
            NewTextNote(null, -1);

            SaveFile.ChangedSinceLastSave = false;
            SaveFile.ChangedSinceLastSaveExceptExpansion = false;
        }
Example #5
0
 /// <summary>
 /// If the specified file is an IdeaTree file, it is opened in a separate instance of the program.
 /// If it is any other type of file, it is added to the current file as a Note.
 /// </summary>
 /// <param name="path">The path of the file to open or add.</param>
 /// <returns>
 /// True if the file was opened successfully in this instance ONLY.
 /// False if a new process was started to open it, or if it could not be opened at all for any reason.
 /// </returns>
 public bool RelaunchOrAddFile(string path, IdeaNote parent, int index)
 {
     if (Path.GetExtension(path) == IdeaTreeSaveFile.IdeaTreeSaveFileExt)
     {
         Process.Start(Environment.GetCommandLineArgs()[0], path);
         return false;
     }
     else
     {
         if (SaveFile == null) SaveFile = new IdeaTreeSaveFile();
         AddFile(path, false, parent, index);
     }
     return true;
 }
Example #6
0
 /// <summary>
 /// Opens the specified file. IdeaTree files are loaded; other filetypes are added as Notes.
 /// </summary>
 /// <param name="path">The path of the file to open or add.</param>
 /// <returns>True if the file was opened successfully.</returns>
 private bool OpenFile(string path)
 {
     if (Path.GetExtension(path) == IdeaTreeSaveFile.IdeaTreeSaveFileExt)
     {
         if (!CheckClosing()) return false;
         return LoadSaveFile(path);
     }
     else
     {
         if (SaveFile == null) SaveFile = new IdeaTreeSaveFile();
         AddFile(path, true, null, -1);
     }
     return true;
 }
Example #7
0
        private void AddFolder(string path, bool replace, IdeaNote parent, int index)
        {
            if (replace)
            {
                if (!CheckClosing()) return;
                SaveFile = new IdeaTreeSaveFile();
            }

            TextNote newNote = NewTextNote(parent, index);
            DirectoryInfo dInfo = new DirectoryInfo(path);
            newNote.ExplicitName = dInfo.Name;

            for (int i = 0; i < dInfo.GetFileSystemInfos().Count(); i++)
            {
                AddFile(dInfo.GetFileSystemInfos()[i].FullName, false, newNote, -1);
            }
        }
Example #8
0
        private void LoadSaveFile(IdeaTreeSaveFile saveFile, bool replace, IdeaNote parent, int index)
        {
            if (replace)
            {
                SaveFile = saveFile;

                if (!string.IsNullOrEmpty(saveFile.TemplatePath) && File.Exists(saveFile.TemplatePath))
                    LoadTemplate(saveFile.TemplatePath, true);

                if (SaveFile.Ideas.Count > 0) CurrentIdeaNote = SaveFile.Ideas[0];

                SaveFile.ChangedSinceLastSave = false;
                SaveFile.ChangedSinceLastSaveExceptExpansion = false;
            }
            else if (parent == null)
            {
                IdeaNote original = CurrentIdeaNote;
                if (index == -1)
                    SaveFile.Ideas = new ObservableCollection<IdeaNote>(SaveFile.Ideas.Concat(saveFile.Ideas));
                else SaveFile.Ideas = new ObservableCollection<IdeaNote>(SaveFile.Ideas.Take(index).Concat(saveFile.Ideas).Concat(SaveFile.Ideas.Skip(index)));
                CurrentIdeaNote = original;
            }
            else
            {
                IdeaNote original = CurrentIdeaNote;
                if (index == -1) parent.Ideas = new ObservableCollection<IdeaNote>(parent.Ideas.Concat(saveFile.Ideas));
                else parent.Ideas = new ObservableCollection<IdeaNote>(parent.Ideas.Take(index).Concat(saveFile.Ideas).Concat(parent.Ideas.Skip(index)));
                foreach (IdeaNote note in parent.Ideas) note.Parent = parent;
                CurrentIdeaNote = original;
            }
        }