コード例 #1
0
 void SetDockNotebookTabTitle()
 {
     tab.Text   = Title;
     tab.Notify = show_notification;
     tab.Dirty  = content.IsDirty;
     if (content.ContentName != null && content.ContentName != "")
     {
         tab.Tooltip = content.ContentName;
     }
     try {
         if (content.StockIconId != null)
         {
             tab.Icon = ImageService.GetIcon(content.StockIconId, IconSize.Menu);
         }
         else
         if (content.ContentName != null && content.ContentName.IndexOfAny(new char[] {
             '*',
             '+'
         }) == -1)
         {
             tab.Icon = DesktopService.GetIconForFile(content.ContentName, Gtk.IconSize.Menu);
         }
     }
     catch (Exception ex) {
         LoggingService.LogError(ex.ToString());
         tab.Icon = DesktopService.GetIconForType("gnome-fs-regular", Gtk.IconSize.Menu);
     }
 }
コード例 #2
0
        protected virtual void OnTitleChanged(EventArgs e)
        {
            fileTypeCondition.SetFileName(content.ContentName ?? content.UntitledName);

            tab.Text   = Title;
            tab.Notify = show_notification;
            tab.Dirty  = content.IsDirty;

            if (content.ContentName != null && content.ContentName != "")
            {
                tab.Tooltip = content.ContentName;
            }

            try {
                if (content.StockIconId != null)
                {
                    tab.Icon = ImageService.GetIcon(content.StockIconId, IconSize.Menu);
                }
                else if (content.ContentName != null && content.ContentName.IndexOfAny(new char[] { '*', '+' }) == -1)
                {
                    tab.Icon = DesktopService.GetIconForFile(content.ContentName, Gtk.IconSize.Menu);
                }
            } catch (Exception ex) {
                LoggingService.LogError(ex.ToString());
                tab.Icon = DesktopService.GetIconForType("gnome-fs-regular", Gtk.IconSize.Menu);
            }

            if (TitleChanged != null)
            {
                TitleChanged(this, e);
            }
        }
コード例 #3
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            ProjectFile file = (ProjectFile)dataObject;

            nodeInfo.Label = GLib.Markup.EscapeText(file.Link.IsNullOrEmpty ? file.FilePath.FileName : file.Link.FileName);
            if (!File.Exists(file.FilePath))
            {
                nodeInfo.Label = "<span foreground='red'>" + nodeInfo.Label + "</span>";
            }

            nodeInfo.Icon = DesktopService.GetIconForFile(file.FilePath, Gtk.IconSize.Menu);

            if (file.IsLink && nodeInfo.Icon != null)
            {
                var overlay = ImageService.GetIcon("md-link-overlay").WithSize(Xwt.IconSize.Small);
                var cached  = Context.GetComposedIcon(nodeInfo.Icon, overlay);
                if (cached != null)
                {
                    nodeInfo.Icon = cached;
                }
                else
                {
                    var ib = new Xwt.Drawing.ImageBuilder(nodeInfo.Icon.Width, nodeInfo.Icon.Height);
                    ib.Context.DrawImage(nodeInfo.Icon, 0, 0);
                    ib.Context.DrawImage(overlay, 0, 0);
                    var res = ib.ToVectorImage();
                    ib.Dispose();
                    Context.CacheComposedIcon(nodeInfo.Icon, overlay, res);
                    nodeInfo.Icon = res;
                }
            }
        }
コード例 #4
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            base.BuildNode(treeBuilder, dataObject, nodeInfo);

            var file = (File)dataObject;

            nodeInfo.Label = file.Name;
            nodeInfo.Icon  = DesktopService.GetIconForFile(file.RelativePath);
        }
コード例 #5
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            SolutionFolderFileNode file = (SolutionFolderFileNode)dataObject;

            nodeInfo.Label = file.FileName.FileName;
            if (!System.IO.File.Exists(file.FileName))
            {
                nodeInfo.Label = "<span foreground='red'>" + nodeInfo.Label + "</span>";
            }
            nodeInfo.Icon = DesktopService.GetIconForFile(file.FileName, Gtk.IconSize.Menu);
        }
コード例 #6
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            SolutionFolderFileNode file = (SolutionFolderFileNode)dataObject;

            nodeInfo.Label = file.Name;
            if (!System.IO.File.Exists(file.Path))
            {
                nodeInfo.Label = "<span foreground='" + Styles.ErrorForegroundColor.ToHexString(false) + "'>" + nodeInfo.Label + "</span>";
            }
            nodeInfo.Icon = DesktopService.GetIconForFile(file.Path, Gtk.IconSize.Menu);
        }
コード例 #7
0
        void FileIconDataFunc(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
        {
            if (TreeIter.Zero.Equals(iter))
            {
                return;
            }
            var fileNamePixbufRenderer = (CellRendererImage)cell;
            var searchResult           = (SearchResult)store.GetValue(iter, SearchResultColumn);

            if (searchResult == null)
            {
                return;
            }
            fileNamePixbufRenderer.Image = DesktopService.GetIconForFile(searchResult.FileName, IconSize.Menu);
        }
コード例 #8
0
        void UpdateFileList(object sender, EventArgs args)
        {
            fileStore.Clear();

            string pattern = defaultFilter.Patterns [0];

            if (filters != null)
            {
                pattern = filters[fileTypeCombo.Active].Patterns [0];
            }
            pattern = Regex.Escape(pattern);
            pattern = pattern.Replace("\\*", ".*");
            pattern = pattern.Replace("\\?", ".");
            pattern = pattern.Replace("\\|", "$|^");
            pattern = "^" + pattern + "$";
            var regex = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);

            string dir = GetSelectedDirectory().ToString();

            foreach (ProjectFile pf in project.Files)
            {
                string pathStr = pf.FilePath.ToString();
                if (pf.Subtype == Subtype.Directory || !pathStr.StartsWith(dir))
                {
                    continue;
                }

                int split = pathStr.LastIndexOf(System.IO.Path.DirectorySeparatorChar);
                if (split != dir.Length)
                {
                    continue;
                }

                if (regex.IsMatch(pf.FilePath.FileName))
                {
                    fileStore.AppendValues(pf, DesktopService.GetIconForFile(pf.FilePath, Gtk.IconSize.Menu));
                }
            }

            TreeIter root;

            if (fileStore.GetIterFirst(out root))
            {
                fileList.Selection.SelectIter(root);
            }

            UpdateSensitivity(null, null);
        }
コード例 #9
0
        TreeIter GetFile(Change change)
        {
            TextReplaceChange replaceChange = change as TextReplaceChange;

            if (replaceChange == null)
            {
                return(TreeIter.Zero);
            }

            TreeIter result;

            if (!fileDictionary.TryGetValue(replaceChange.FileName, out result))
            {
                fileDictionary[replaceChange.FileName] = result = store.AppendValues(DesktopService.GetIconForFile(replaceChange.FileName, IconSize.Menu), System.IO.Path.GetFileName(replaceChange.FileName), null, true);
            }
            return(result);
        }
コード例 #10
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            ProjectFile file = (ProjectFile)dataObject;

            nodeInfo.Label = GLib.Markup.EscapeText(file.Link.IsNullOrEmpty ? file.FilePath.FileName : file.Link.FileName);
            if (!File.Exists(file.FilePath))
            {
                nodeInfo.Label = "<span foreground='" + Styles.ErrorForegroundColor.ToHexString(false) + "'>" + nodeInfo.Label + "</span>";
            }

            nodeInfo.Icon = DesktopService.GetIconForFile(file.FilePath, Gtk.IconSize.Menu);

            if (file.IsLink && nodeInfo.Icon != null)
            {
                var overlay = ImageService.GetIcon("md-link-overlay").WithSize(Xwt.IconSize.Small);
                nodeInfo.OverlayBottomRight = overlay;
            }
        }
コード例 #11
0
        TreeIter AppendFileInfo(VersionInfo n)
        {
            Xwt.Drawing.Image statusicon = VersionControlService.LoadIconForStatus(n.Status);
            string            lstatus    = VersionControlService.GetStatusLabel(n.Status);

            Xwt.Drawing.Image rstatusicon = VersionControlService.LoadIconForStatus(n.RemoteStatus);
            string            rstatus     = VersionControlService.GetStatusLabel(n.RemoteStatus);

            string scolor = n.HasLocalChanges && n.HasRemoteChanges ? "red" : null;

            string localpath = n.LocalPath.ToRelative(filepath);

            if (localpath.Length > 0 && localpath[0] == Path.DirectorySeparatorChar)
            {
                localpath = localpath.Substring(1);
            }
            if (localpath == "")
            {
                localpath = ".";
            }                                                     // not sure if this happens

            bool hasComment = GetCommitMessage(n.LocalPath).Length > 0;
            bool commit     = changeSet.ContainsFile(n.LocalPath);

            Xwt.Drawing.Image fileIcon;
            if (n.IsDirectory)
            {
                fileIcon = ImageService.GetIcon(MonoDevelop.Ide.Gui.Stock.ClosedFolder, Gtk.IconSize.Menu);
            }
            else
            {
                fileIcon = DesktopService.GetIconForFile(n.LocalPath, Gtk.IconSize.Menu);
            }

            TreeIter it = filestore.AppendValues(statusicon, lstatus, GLib.Markup.EscapeText(localpath).Split('\n'), rstatus, commit, false, n.LocalPath.ToString(), true, hasComment, fileIcon, n.HasLocalChanges, rstatusicon, scolor, n.HasRemoteChange(VersionStatus.Modified));

            if (!n.IsDirectory)
            {
                filestore.AppendValues(it, statusicon, "", new string[0], "", false, true, n.LocalPath.ToString(), false, false, fileIcon, false, null, null, false);
            }
            return(it);
        }
コード例 #12
0
        void AddFile(FilePath filePath)
        {
            var      relativePath = filePath.ToRelative(baseDirectory);
            TreeIter iter         = GetPath(relativePath.ParentDirectory);

            object[] values = new object[] {
                //FIXME: look these pixbufs up lazily in the renderer
                DesktopService.GetIconForFile(filePath, IconSize.Menu),
                null,
                filePath.FileName,
                filePath.ToString(),
                false
            };
            if (iter.Equals(TreeIter.Zero))
            {
                store.AppendValues(values);
                return;
            }
            store.AppendValues(iter, values);
        }
コード例 #13
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            SystemFile file = (SystemFile)dataObject;

            nodeInfo.Label = GLib.Markup.EscapeText(file.Name);

            nodeInfo.Icon = DesktopService.GetIconForFile(file.Path, Gtk.IconSize.Menu);

            if (file.ShowTransparent)
            {
                var gicon = Context.GetComposedIcon(nodeInfo.Icon, "fade");
                if (gicon == null)
                {
                    gicon = nodeInfo.Icon.WithAlpha(0.5);
                    Context.CacheComposedIcon(nodeInfo.Icon, "fade", gicon);
                }
                nodeInfo.Icon  = gicon;
                nodeInfo.Label = "<span foreground='dimgrey'>" + nodeInfo.Label + "</span>";
            }
        }
コード例 #14
0
ファイル: LogWidget.cs プロジェクト: google2013/monodevelop
        void TreeSelectionChanged(object o, EventArgs args)
        {
            Revision d = SelectedRevision;

            changedpathstore.Clear();
            textviewDetails.Buffer.Clear();

            if (d == null)
            {
                return;
            }

            revertButton.GetNativeWidget <Gtk.Widget> ().Sensitive = revertToButton.GetNativeWidget <Gtk.Widget> ().Sensitive = true;
            Gtk.TreeIter selectIter = Gtk.TreeIter.Zero;
            bool         select     = false;

            foreach (RevisionPath rp in info.Repository.GetRevisionChanges(d))
            {
                Xwt.Drawing.Image actionIcon;
                string            action = null;
                if (rp.Action == RevisionAction.Add)
                {
                    action     = GettextCatalog.GetString("Add");
                    actionIcon = ImageService.GetIcon(Gtk.Stock.Add, Gtk.IconSize.Menu);
                }
                else if (rp.Action == RevisionAction.Delete)
                {
                    action     = GettextCatalog.GetString("Delete");
                    actionIcon = ImageService.GetIcon(Gtk.Stock.Remove, Gtk.IconSize.Menu);
                }
                else if (rp.Action == RevisionAction.Modify)
                {
                    action     = GettextCatalog.GetString("Modify");
                    actionIcon = ImageService.GetIcon("gtk-edit", Gtk.IconSize.Menu);
                }
                else if (rp.Action == RevisionAction.Replace)
                {
                    action     = GettextCatalog.GetString("Replace");
                    actionIcon = ImageService.GetIcon("gtk-edit", Gtk.IconSize.Menu);
                }
                else
                {
                    action     = rp.ActionDescription;
                    actionIcon = ImageService.GetIcon(MonoDevelop.Ide.Gui.Stock.Empty, Gtk.IconSize.Menu);
                }
                Xwt.Drawing.Image fileIcon = DesktopService.GetIconForFile(rp.Path, Gtk.IconSize.Menu);
                var iter = changedpathstore.AppendValues(actionIcon, action, fileIcon, System.IO.Path.GetFileName(rp.Path), System.IO.Path.GetDirectoryName(rp.Path), rp.Path, null);
                changedpathstore.AppendValues(iter, null, null, null, null, null, rp.Path, null);
                if (rp.Path == preselectFile)
                {
                    selectIter = iter;
                    select     = true;
                }
            }
            if (!string.IsNullOrEmpty(d.Email))
            {
                imageUser.Show();
                imageUser.LoadUserIcon(d.Email, 32);
            }
            else
            {
                imageUser.Hide();
            }

            labelAuthor.Text = d.Author;
            labelDate.Text   = d.Time.ToString();
            string rev = d.Name;

            if (rev.Length > 15)
            {
                currentRevisionShortened = true;
                rev = d.ShortName;
            }
            else
            {
                currentRevisionShortened = false;
            }

            labelRevision.Text          = GettextCatalog.GetString("Revision: {0}", rev);
            textviewDetails.Buffer.Text = d.Message;

            if (select)
            {
                treeviewFiles.Selection.SelectIter(selectIter);
                treeviewFiles.ExpandRow(treeviewFiles.Model.GetPath(selectIter), true);
            }
        }
コード例 #15
0
        public ConfirmProjectDeleteDialog(IWorkspaceFileObject item)
        {
            this.Build();
            this.item = item;

            store          = new TreeStore(typeof(bool), typeof(Xwt.Drawing.Image), typeof(string), typeof(string), typeof(string));
            fileList.Model = store;

            TreeViewColumn col = new TreeViewColumn();

            CellRendererToggle crt = new CellRendererToggle();

            crt.Toggled += CrtToggled;
            col.PackStart(crt, false);
            col.AddAttribute(crt, "active", 0);

            CellRendererImage crp = new CellRendererImage();

            col.PackStart(crp, false);
            col.AddAttribute(crp, "image", 1);

            CellRendererText cre = new CellRendererText();

            col.PackStart(cre, true);
            col.AddAttribute(cre, "text", 2);
            col.AddAttribute(cre, "foreground", 4);

            fileList.AppendColumn(col);
            store.SetSortColumnId(2, SortType.Ascending);

            labelProjectDir.Text = item.BaseDirectory.FullPath;

            HashSet <string> itemFiles  = new HashSet <string> ();
            HashSet <string> knownPaths = new HashSet <string> ();

            foreach (FilePath file in item.GetItemFiles(true))
            {
                itemFiles.Add(file.FullPath);
                knownPaths.Add(file.FullPath + "~");
            }

            foreach (string ext in knownExtensions)
            {
                knownPaths.Add(item.FileName.ChangeExtension(ext));
            }

            FillDirRec(TreeIter.Zero, item, itemFiles, knownPaths, item.BaseDirectory, false);

            if (item.BaseDirectory != item.ItemDirectory)
            {
                // If the project has a custom base directory, make sure the project files
                // from the item directory are shown in the list
                foreach (FilePath f in item.GetItemFiles(false))
                {
                    if (!f.IsChildPathOf(item.BaseDirectory))
                    {
                        var pix = DesktopService.GetIconForFile(f, IconSize.Menu);
                        paths [f] = store.AppendValues(true, pix, f.FileName, f.ToString());
                    }
                }
            }

            if (item is SolutionFolderItem)
            {
                var sol  = ((SolutionFolderItem)item).ParentSolution;
                var bdir = item.BaseDirectory;
                if (sol.GetItemFiles(false).Any(f => f.IsChildPathOf(bdir)) || sol.GetAllItems <SolutionItem> ().Any(it => it != item && it.GetItemFiles(true).Any(f => f.IsChildPathOf(bdir))))
                {
                    radioDeleteAll.Sensitive = false;
                    labelProjectDir.Text     = GettextCatalog.GetString("Project directory can't be deleted since it contains files from other projects or solutions");
                }
            }

            if (item.BaseDirectory.FileName == item.Name && radioDeleteAll.Sensitive)
            {
                radioDeleteAll.Active = true;
                fileList.Sensitive    = false;
            }
            else
            {
                radioDeleteSel.Active = true;
                Focus = radioDeleteSel;
            }
        }
コード例 #16
0
        ChildInfo FillDirRec(Gtk.TreeIter iter, IWorkspaceFileObject item, HashSet <string> itemFiles, HashSet <string> knownPaths, FilePath dir, bool forceSet)
        {
            ChildInfo cinfo       = ChildInfo.AllSelected;
            bool      hasChildren = false;

            foreach (string sd in knownSubdirs)
            {
                if (dir == item.BaseDirectory.Combine(sd))
                {
                    forceSet = true;
                    break;
                }
            }

            TreeIter dit;

            if (!iter.Equals(TreeIter.Zero))
            {
                dit = store.AppendValues(iter, false, DesktopService.GetIconForFile(dir, IconSize.Menu), dir.FileName.ToString(), dir.ToString());
                fileList.ExpandRow(store.GetPath(iter), false);
            }
            else
            {
                dit = store.AppendValues(false, DesktopService.GetIconForFile(dir, IconSize.Menu), dir.FileName.ToString(), dir.ToString());
            }

            paths [dir] = dit;

            foreach (string file in Directory.GetFiles(dir))
            {
                string path   = System.IO.Path.GetFileName(file);
                var    pix    = DesktopService.GetIconForFile(file, IconSize.Menu);
                bool   active = itemFiles.Contains(file);
                string color  = null;
                if (!active)
                {
                    pix   = pix.WithAlpha(0.5);
                    color = "dimgrey";
                }
                else
                {
                    cinfo |= ChildInfo.HasProjectFiles;
                }

                active = active || forceSet || knownPaths.Contains(file);
                if (!active)
                {
                    cinfo &= ~ChildInfo.AllSelected;
                }
                else
                {
                    cinfo |= ChildInfo.SomeSelected;
                }

                paths [file] = store.AppendValues(dit, active, pix, path, file, color);
                if (!hasChildren)
                {
                    hasChildren = true;
                    fileList.ExpandRow(store.GetPath(dit), false);
                }
            }
            foreach (string cdir in Directory.GetDirectories(dir))
            {
                hasChildren = true;
                ChildInfo ci = FillDirRec(dit, item, itemFiles, knownPaths, cdir, forceSet);
                if ((ci & ChildInfo.AllSelected) == 0)
                {
                    cinfo &= ~ChildInfo.AllSelected;
                }
                cinfo |= ci & (ChildInfo.SomeSelected | ChildInfo.HasProjectFiles);
            }
            if ((cinfo & ChildInfo.AllSelected) != 0 && hasChildren)
            {
                store.SetValue(dit, 0, true);
            }
            if ((cinfo & ChildInfo.HasProjectFiles) == 0)
            {
                var pix = DesktopService.GetIconForFile(dir, IconSize.Menu).WithAlpha(0.5);
                store.SetValue(dit, 1, pix);
                store.SetValue(dit, 4, "dimgrey");
            }
            if ((cinfo & ChildInfo.SomeSelected) != 0 && (cinfo & ChildInfo.AllSelected) == 0)
            {
                fileList.ExpandRow(store.GetPath(dit), false);
            }
            else
            {
                fileList.CollapseRow(store.GetPath(dit));
            }
            return(cinfo);
        }