예제 #1
0
        public ProjectNode(IProject project)
        {
            sortOrder = 1;

            this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode";
            this.project = project;

            Text           = project.Name;
            autoClearNodes = false;

            if (project is MissingProject)
            {
                OpenedImage = ClosedImage = "ProjectBrowser.MissingProject";
                this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/MissingProjectNode";
            }
            else if (project is UnknownProject)
            {
                OpenedImage = ClosedImage = "ProjectBrowser.ProjectWarning";
                this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/UnknownProjectNode";
            }
            else
            {
                OpenedImage = ClosedImage = IconService.GetImageForProjectType(project.Language);
            }
            Tag = project;

            if (project.ParentSolution != null)
            {
                project.ParentSolution.Preferences.StartupProjectChanged += OnStartupProjectChanged;
                OnStartupProjectChanged(null, null);
            }
        }
예제 #2
0
        public ProjectNode(IProject project) : base(project)
        {
            sortOrder = 0;

            Text = Project.Name;
            SetIcon(IconService.GetImageForProjectType(Project.Language));
            Nodes.Add(new TreeNode(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Pads.ClassScout.LoadingNode}")));
        }
        private void PopulateCombo()
        {
            IconService service = (IconService)ServiceManager.GetService(typeof(IconService));
            Combine     cmb     = IdeApp.ProjectOperations.CurrentOpenCombine;

            if (cmb != null)
            {
                CombineEntry selected   = IdeApp.ProjectOperations.CurrentSelectedCombineEntry;
                TreeIter     activeIter = TreeIter.Zero;

                foreach (Project proj in cmb.Entries)
                {
                    Gdk.Pixbuf pixbuf = null;

                    if (proj is DotNetProject && (proj as DotNetProject).LanguageBinding == null)
                    {
                        pixbuf = MonoDevelop.Core.Gui.Services.Resources.GetIcon(Stock.DialogError);
                    }
                    else
                    {
                        string icon = service.GetImageForProjectType(proj.ProjectType);
                        pixbuf = MonoDevelop.Core.Gui.Services.Resources.GetIcon(icon);
                    }

                    TreeIter iter = store.AppendValues(pixbuf, "<b>" + proj.Name + "</b>", proj, null);

                    foreach (ProjectFile file in proj.ProjectFiles)
                    {
                        if (file.Subtype != Subtype.Directory)
                        {
                            continue;
                        }

                        pixbuf = MonoDevelop.Core.Gui.Services.Resources.GetIcon(Stock.Directory);
                        store.AppendValues(iter, pixbuf, file.Name, proj, file);
                    }

                    if (proj == selected)
                    {
                        activeIter = iter;
                    }
                }

                if (activeIter.Equals(TreeIter.Zero))
                {
                    if (store.GetIterFirst(out activeIter))
                    {
                        this.SetActiveIter(activeIter);
                    }
                }
                else
                {
                    this.SetActiveIter(activeIter);
                }
            }
        }
예제 #4
0
        public ProjectNode(IProject project)
        {
            if (project == null)
            {
                throw new ArgumentNullException("project");
            }
            sortOrder = 1;

            this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode";
            this.project = project;

            Text           = project.Name;
            autoClearNodes = false;

            if (project is MissingProject)
            {
                OpenedImage = ClosedImage = "ProjectBrowser.MissingProject";
                this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/MissingProjectNode";
                Text += StringParser.Parse(" (${res:Global.ErrorText})");
            }
            else if (project is ErrorProject)
            {
                OpenedImage = ClosedImage = "ProjectBrowser.ProjectWarning";
                this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/UnknownProjectNode";
                Text += StringParser.Parse(" (${res:Global.ErrorText})");
            }
            else
            {
                OpenedImage = ClosedImage = IconService.GetImageForProjectType(project.Language);
                if (project.IsReadOnly)
                {
                    Text += StringParser.Parse(" (${res:Global.ReadOnly})");
                }
            }
            Tag = project;

            if (project.ParentSolution != null)
            {
                project.ParentSolution.StartupProjectChanged += OnStartupProjectChanged;
                OnStartupProjectChanged(null, null);
            }
        }
        /// <summary>
        /// Scans the solution and creates a hierarchy of
        /// support objects for each project and file
        /// within each project.
        /// </summary>
        private void ScanSolution()
        {
            if (m_summaryList == null)
            {
                m_summaryList = new List <LineCountSummary>();
            }

            m_summaryList.Clear();

            Solution solution = ProjectService.OpenSolution;

            if (solution != null)             // OpenSolution is null when no solution is opened
            {
                FileInfo         fiSolution = new FileInfo(solution.FileName);
                LineCountSummary summary    = new LineCountSummary("All Projects", m_projIconMappings["{00000000-0000-0000-0000-000000000000}"]);
                m_summaryList.Add(summary);

                // Configure progress bars
                tsprgTotal.Minimum = 0;
                tsprgTotal.Step    = 1;
                tsprgTask.Minimum  = 0;
                tsprgTask.Step     = 1;

                List <IProject> projects = new List <IProject>(solution.Projects);
                tsprgTotal.Maximum = projects.Count;
                tsprgTask.Value    = 0;
                foreach (IProject fiProject in projects)
                {
                    tsprgTotal.PerformStep();
                    string projName, lang;
                    if (fiProject.FileName.IndexOf("://") != -1)
                    {
                        projName = fiProject.FileName;                         // this is a web project
                        lang     = "{00000001-0000-0000-0000-000000000000}";
                    }
                    else
                    {
                        projName = fiProject.Name;
                        lang     = fiProject.TypeGuid;
                    }

                    int iconIndex;
                                        #if IMPR1
                    iconIndex = projectImageListHelper.GetIndex(IconService.GetImageForProjectType(fiProject.Language ?? "defaultLanguageName"));
                                        #else
                    m_projIconMappings.TryGetValue(lang, out iconIndex);                     // default icon 0
                                        #endif
                    summary = new LineCountSummary(projName, iconIndex);
                    m_summaryList.Add(summary);

                    tsprgTask.Maximum = 0;
                    tsprgTotal.Value  = 0;
                    ScanProjectItems(fiProject.Items, summary);
                }

                tsprgTask.Value  = tsprgTask.Maximum;
                tsprgTotal.Value = tsprgTotal.Maximum;
            }
            else
            {
                MessageBox.Show("There is no solution open in SharpDevelop.", "Line Counter");
            }
        }
        void ProjectTreeScanningBackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (this.IsDisposed || this.projectResourcesTreeView.IsDisposed)
            {
                // This can happen when the dialog is closed before
                // the scan has finished
                if (!e.Cancelled && e.Error == null)
                {
                    TreeScanResult r = e.Result as TreeScanResult;
                    if (r != null)
                    {
                        DisposeNodeImages(r.Root);
                    }
                }
                return;
            }

            this.projectResourcesTreeView.Nodes.Clear();

            if (e.Cancelled)
            {
                return;
            }

            if (e.Error != null)
            {
                MessageService.ShowError(e.Error, "Error in project tree scanning thread");
            }

            TreeScanResult result = e.Result as TreeScanResult;

            if (result == null)
            {
                return;
            }

            this.projectResourcesTreeView.BeginUpdate();

            ImageList imageList = new ImageList();

            imageList.ColorDepth = ColorDepth.Depth32Bit;
            imageList.Images.Add(IconService.GetBitmap(IconService.GetImageForProjectType(this.project.Language)));
            imageList.Images.Add(WinFormsResourceService.GetBitmap("ProjectBrowser.Folder.Closed"));
            imageList.Images.Add(IconService.GetBitmap(IconService.GetImageForFile("a.resx")));
            imageList.Images.Add(WinFormsResourceService.GetBitmap("Icons.16x16.Field"));
            imageList.Images.Add(WinFormsResourceService.GetBitmap("Icons.16x16.Error"));
            this.projectResourcesTreeView.ImageList = imageList;

            this.projectResourcesTreeView.Nodes.Add(result.Root);

            if (result.PreSelection != null)
            {
                result.PreSelection.EnsureVisible();
                this.projectResourcesTreeView.SelectedNode = result.PreSelection;
                result.PreSelection.Expand();
            }
            else
            {
                result.Root.Expand();
            }

            this.projectResourcesTreeView.EndUpdate();

            if (result.PreSelection != null)
            {
                this.projectResourcesTreeView.Focus();
            }
        }