コード例 #1
0
        public Item CreateFile(string path, ItemType type)
        {
            var dirs     = path.Split('/', '\\');
            var fname    = dirs.Last();                              //File name
            var fullName = Project.CurrentProject._Directory + path; //Complete file path

            Array.Resize(ref dirs, dirs.Length - 1);                 //Remove filename
            var fullDirs = new string[dirs.Length];

            fullDirs[0] = Project.CurrentProject._Directory + dirs[0];
            for (int x = 1; x < dirs.Length; x++)
            {
                fullDirs[x] = fullDirs[x - 1] + "/" + dirs[x];
            }

            int  i = 0;
            Item d = (from it in RootDirectories where it.Name == dirs[i] select it).FirstOrDefault();

            if (d == null)
            {
                //New Root Directory
                Project.Directory dir = new Project.Directory(dirs[i], fullDirs[i]);
                Project.CurrentProject.ProjectFiles.SubDirectories.Add(dir);
                RootDirectories.Add(d = new Item(null, this, ItemTypes.Directory, dirs[i], fullDirs[i], Item.ItemState.NORMAL, dir));
            }
            i++;

            Directory.CreateDirectory(fullDirs.Last());
            File.Create(fullName)?.Close();

            //Go through all existing directories
            for (; i < dirs.Length; i++)
            {
                d.MakeStateNormal();
                Item d2 = (from it in d.DirectoryChildren where it.Name == dirs[i] select it).FirstOrDefault();
                if (d2 != null)
                {
                    d = d2;
                }
                else
                {
                    return(CreateItems(d, type, fname, fullName, dirs, fullDirs, i));
                }
            }
            d.MakeStateNormal();
            //Create file
            var f = new Project.File(fname);

            (d.FileObject as Project.Directory).Files.Add(f);
            var result = new FileBrowser.Item(d, this, type, fname, fullName, Item.ItemState.NORMAL, f);

            d.AddChild(result);
            return(result);
        }
コード例 #2
0
        private Item CreateItems(Item root, ItemType type, string fname, string fullName, string[] dirs, string[] fullDirs, int i)
        {
            Item item = root;
            Item item2;

            Project.File      f;
            Project.Directory d;
            //Create all directories
            for (; i < dirs.Length; i++)
            {
                (item.FileObject as Project.Directory).SubDirectories.Add(d = new Project.Directory(dirs[i], fullDirs[i]));
                item.AddChild(item2 = new FileBrowser.Item(item, this, ItemTypes.Directory, dirs[i], fullDirs[i], Item.ItemState.NORMAL, d));
                item = item2;
            }
            //Create file
            (item.FileObject as Project.Directory).Files.Add(f = new Project.File(fname));
            item.AddChild(item2 = new FileBrowser.Item(item, this, type, fname, fullName, Item.ItemState.NORMAL, f));
            return(item2);
        }