Beispiel #1
0
        /// <summary>
        /// Recursive function that creates a level of the file tree
        /// </summary>
        /// <param name="g"></param>
        /// <param name="parent"></param>
        /// <param name="path"></param>
        private void buildTree(vtkMutableDirectedGraph g, long parent, string path)
        {
            vtkStringArray   name     = (vtkStringArray)g.GetVertexData().GetAbstractArray("name");
            vtkLongLongArray size     = (vtkLongLongArray)g.GetVertexData().GetAbstractArray("size");
            vtkStringArray   fullpath = (vtkStringArray)g.GetVertexData().GetAbstractArray("path");

            if (Directory.Exists(path))
            {
                long v = 0;
                if (parent == -1)
                {
                    v = g.AddVertex();
                }
                else
                {
                    v = g.AddChild((int)parent);
                }
                string[] pathparts = path.Split('\\');
                int      ipaths    = pathparts.GetUpperBound(0);
                fullpath.InsertNextValue(path);
                name.InsertNextValue(pathparts[ipaths]);
                size.InsertNextValue(1024);
                this.label1.Text = "Processing " + path;
                this.Update();
                try
                {
                    foreach (string f in Directory.GetFiles(path))
                    {
                        Console.Out.WriteLine(f);
                        buildTree(g, v, f);
                    }

                    foreach (string d in Directory.GetDirectories(path))
                    {
                        Console.Out.WriteLine(d);
                        buildTree(g, v, d);
                    }
                }
                catch (System.Exception excpt)
                {
                    Console.Error.WriteLine(excpt.Message);
                }
            }
            else if (File.Exists(path))
            {
                FileInfo info = new FileInfo(path);

                //Do not graph files smaller than 1K
                if (info.Length > 1024)
                {
                    g.AddChild((int)parent);
                    fullpath.InsertNextValue(path);
                    name.InsertNextValue(Path.GetFileName(path));
                    size.InsertNextValue(info.Length);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Open a folder browser and graph the
        /// selected folder
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void setupView_Click(object sender, EventArgs e)
        {
            if (this.folderBrowserDialog1.ShowDialog().Equals(DialogResult.OK))
            {
                //Add the view to the render window
                if (!initialized)
                {
                    initialized = true;

                    this.view.GetRenderWindow().SetParentId(
                        this.renWinCTRL.RenderWindow.GetGenericWindowId());
                    this.ResizeTreeMapView();

                    //Add a handler to the view
                    view.SelectionChangedEvt += new vtkObject.vtkObjectEventHandler(this.view_SelectionChangedEvt);
                }

                g = vtkMutableDirectedGraph.New();
                vtkStringArray name = vtkStringArray.New();
                name.SetName("name");
                g.GetVertexData().AddArray(name);
                vtkStringArray path = vtkStringArray.New();
                path.SetName("path");
                g.GetVertexData().SetPedigreeIds(path);
                vtkLongLongArray size = vtkLongLongArray.New();
                size.SetName("size");
                g.GetVertexData().AddArray(size);
                string cur = Directory.GetCurrentDirectory();


                buildTree(g, -1, this.folderBrowserDialog1.SelectedPath);

                this.label1.Text = "Viewing " + this.folderBrowserDialog1.SelectedPath;

                vtkTree t = vtkTree.New();
                t.ShallowCopy(g);

                view.SetLayoutStrategyToSquarify();

                view.SetAreaLabelArrayName("name");
                view.SetAreaHoverArrayName("path");
                view.SetAreaColorArrayName("level");
                view.SetAreaSizeArrayName("size");

                view.AddRepresentationFromInput(t);
                view.GetRenderer().ResetCamera();
                view.Update();
                view.Render();
            }
        }