예제 #1
0
 static string GetHeader(TreeNodeData[] nodes)
 {
     if (nodes.Length == 1)
     {
         return(string.Format(dnSpy_AsmEditor_Resources.RemoveCommand, UIUtilities.EscapeMenuItemHeader(nodes[0].ToString())));
     }
     return(string.Format(dnSpy_AsmEditor_Resources.RemoveAssembliesCommand, nodes.Length));
 }
예제 #2
0
 static string GetHeader(DocumentTreeNodeData[] nodes)
 {
     if (nodes.Length == 1)
     {
         return(string.Format(dnSpy_AsmEditor_Resources.DeleteX, UIUtilities.EscapeMenuItemHeader(nodes[0].ToString())));
     }
     return(string.Format(dnSpy_AsmEditor_Resources.DeleteFieldsCommand, nodes.Length));
 }
예제 #3
0
 static string GetHeader(IFileTreeNodeData[] nodes)
 {
     nodes = DeleteTypeDefCommand.FilterOutGlobalTypes(nodes);
     if (nodes.Length == 1)
     {
         return(string.Format(dnSpy_AsmEditor_Resources.DeleteX, UIUtilities.EscapeMenuItemHeader(nodes[0].ToString())));
     }
     return(string.Format(dnSpy_AsmEditor_Resources.DeleteTypesCommand, nodes.Length));
 }
예제 #4
0
            public override string GetHeader(Context context)
            {
                var filename = debugger.Value.GetCurrentExecutableFilename();

                if (!File.Exists(filename))
                {
                    return(null);
                }
                return(string.Format(dnSpy_Debugger_Resources.DebugProgramX, UIUtilities.EscapeMenuItemHeader(Path.GetFileName(filename))));
            }
예제 #5
0
        public override string GetHeader(IMenuItemContext context)
        {
            var asm = debugService.Value.GetCurrentExecutableAssembly(context);

            if (asm == null)
            {
                return(null);
            }
            return(string.Format(dnSpy_Debugger_Resources.DebugProgramX, UIUtilities.EscapeMenuItemHeader(asm.GetShortName())));
        }
예제 #6
0
        public IEnumerable <CreatedMenuItem> Create(IMenuItemContext context)
        {
            var langs = cultureManager.AllLanguages.OrderBy(a => a, LanguageInfoComparer.Instance);

            foreach (var lang in langs)
            {
                var attr = new ExportMenuItemAttribute {
                    Header = UIUtilities.EscapeMenuItemHeader(lang.UIName)
                };
                yield return(new CreatedMenuItem(attr, new SwitchLanguageCommand(cultureManager, lang)));
            }
        }
예제 #7
0
        static string GetShortMenuItemHeader(string s)
        {
            Debug.Assert(s != null);
            if (s == null)
            {
                s = string.Empty;
            }
            const int MAX_LEN = 40;

            if (s.Length > MAX_LEN)
            {
                s = s.Substring(0, MAX_LEN) + "...";
            }
            return(UIUtilities.EscapeMenuItemHeader(s));
        }
예제 #8
0
        IEnumerable <CreatedMenuItem> IMenuItemProvider.Create(IMenuItemContext context)
        {
            var ctx = CreateContext(context);

            if (ctx == null)
            {
                yield break;
            }

            if (ctx.Field is FlagsData)
            {
                var flagsData = (FlagsData)ctx.Field;
                var isEnum    = new HashSet <ulong>();
                foreach (var info in flagsData.FlagInfos)
                {
                    if (info.IsEnumName)
                    {
                        isEnum.Add(info.Mask);
                    }
                }
                foreach (var info in flagsData.FlagInfos)
                {
                    if (info.IsEnumName)
                    {
                        continue;
                    }
                    var attr = new ExportMenuItemAttribute {
                        Header = UIUtilities.EscapeMenuItemHeader(info.Name),
                    };
                    yield return(new CreatedMenuItem(attr, new EditFlagsFieldCommand(hexBufferFileServiceFactory, info, !isEnum.Contains(info.Mask))));
                }
            }
            else if (ctx.Field is EnumData)
            {
                var enumData = (EnumData)ctx.Field;
                foreach (var info in enumData.EnumFieldInfos)
                {
                    var attr = new ExportMenuItemAttribute {
                        Header = UIUtilities.EscapeMenuItemHeader(info.Name),
                    };
                    yield return(new CreatedMenuItem(attr, new EditEnumFieldCommand(hexBufferFileServiceFactory, info)));
                }
            }
            else
            {
                Debug.Fail($"Unknown type: {ctx.Field.GetType()}");
            }
        }