public static void Delete(Resource resource) { var plugin = PluginFactory.GetInstance(); ModuleDefinition moddef = null; foreach (var wrapper in plugin.Package.HostAssemblies) { if (wrapper.IsValid) { if (plugin.IsAssemblyContextLoaded(wrapper.Location)) { var context = plugin.GetAssemblyContext(wrapper.Location); moddef = context.AssemblyDefinition.Modules.FirstOrDefault( imoddef => imoddef.Resources.Contains(resource)); } } if (moddef != null) { moddef.Resources.Remove(resource); } } }
private void WireAssemblyEvents(MainWindow instance) { instance.CurrentAssemblyListChanged += (sender, args) => { if (args.NewItems != null && args.NewItems.Count > 0) { AssemblyLoaded(this, EventArgs.Empty); } else { // Ignore if we are hot replacing an assembly if (UpdatingHostObjectModel) { return; } AssemblyUnloaded(this, EventArgs.Empty); // Remove loaded contexts var plugin = PluginFactory.GetInstance() as ILSpyPlugin; if (plugin == null) { return; } if (args.OldItems == null) { return; } foreach (LoadedAssembly loadedAssembly in args.OldItems) { plugin.RemoveAssemblyContext(loadedAssembly.FileName); } } }; }
public GenericMemberReferenceForm(T selected) : base() { InitializeComponent(); string keyword = (typeof(T).Name.Contains("Reference")) ? "Reference" : "Definition"; Text = Text + typeof(T).Name.Replace(keyword, string.Empty).ToLower(); ImageList.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages()); foreach (IAssemblyWrapper asm in PluginFactory.GetInstance().GetAssemblies(true)) { AppendRootNode(asm); } m_orders.Add(typeof(AssemblyDefinition), 0); m_orders.Add(typeof(TypeDefinition), 1); m_orders.Add(typeof(MethodDefinition), 2); m_orders.Add(typeof(PropertyDefinition), 3); m_orders.Add(typeof(EventDefinition), 3); m_orders.Add(typeof(FieldDefinition), 5); TreeView.TreeViewNodeSorter = this; ButOk.Enabled = selected != null && SelectItem(selected); }
public void FillControls(MethodDefinition mdef) { OpCodeBindingSource.DataSource = PluginFactory.GetInstance().GetAllOpCodes(); OpCodes.SelectedIndex = 0; Operands.Items.Add(new NoneOperandEditor()); Operands.Items.Add(new ByteEditor()); Operands.Items.Add(new SByteEditor()); Operands.Items.Add(new IntegerEditor()); Operands.Items.Add(new LongEditor()); Operands.Items.Add(new SingleEditor()); Operands.Items.Add(new DoubleEditor()); Operands.Items.Add(new StringEditor()); if (mdef.HasBody) { Operands.Items.Add(new InstructionReferenceEditor(mdef.Body.Instructions)); Operands.Items.Add(new MultipleInstructionReferenceEditor(mdef.Body.Instructions)); Operands.Items.Add(new VariableReferenceEditor(mdef.Body.Variables)); } else { Operands.Items.Add(new GenericOperandReferenceEditor <Instruction, InstructionWrapper>(null)); Operands.Items.Add(new MultipleInstructionReferenceEditor(null)); Operands.Items.Add(new GenericOperandReferenceEditor <VariableDefinition, VariableWrapper>(null)); } Operands.Items.Add(new ParameterReferenceEditor(mdef.Parameters)); Operands.Items.Add(new FieldReferenceEditor()); Operands.Items.Add(new MethodReferenceEditor()); Operands.Items.Add(new GenericTypeReferenceEditor()); Operands.Items.Add(new TypeReferenceEditor()); Operands.Items.Add(new NotSupportedOperandEditor()); Operands.SelectedIndex = 0; }
public void HandleItem(object item) { HandleItem(PluginFactory.GetInstance().GetEmbeddedResource(item)); }
public bool IsItemHandled(object item) { return(PluginFactory.GetInstance().IsEmbeddedResourceHandled(item)); }
private void SyncWarningForm_Load(object sender, System.EventArgs e) { LabWarning.Text = string.Format(LabWarning.Text, PluginFactory.GetInstance().HostApplication); }
/// <summary> /// Assembly unloaded /// </summary> /// <param name="sender">Event sender</param> /// <param name="e">Event parameters</param> protected virtual void AssemblyUnloaded(object sender, EventArgs e) { PluginFactory.GetInstance().ReloadAssemblies(Assemblies); PluginFactory.GetInstance().SynchronizeAssemblyContexts(Assemblies); }
bool IHandler.IsItemHandled(object item) { return(PluginFactory.GetInstance().IsFieldDefinitionHandled(item)); }
bool IHandler.IsItemHandled(object item) { return(PluginFactory.GetInstance().IsAssemblyNameReferenceHandled(item)); }
/// <summary> /// Addin load method /// </summary> /// <param name="serviceProvider">Cecil Studio service provider</param> public void Load(System.IServiceProvider serviceProvider) { PluginFactory.Register(new CecilStudioPlugin(this)); sp = serviceProvider; wm = GetService <IWindowManager>(); ab = GetService <IAssemblyBrowser>(); cbm = GetService <IBarManager>(); am = GetService <IAssemblyManager>(); CheckFrameWorkVersion(); // Main Window items = new List <UIContext>(); reflexilwindow = new Reflexil.Forms.ReflexilWindow(); IWindow window = wm.Windows.Add(REFLEXIL_WINDOW_ID, reflexilwindow, REFLEXIL_WINDOW_TEXT); window.Image = BasePlugin.ReflexilImage; // Main button items.Add(new ButtonUIContext(cbm.Bars[BarNames.Toolbar])); items.Add(new ButtonUIContext(cbm.Bars[BarNames.Toolbar], REFLEXIL_BUTTON_TEXT, Button_Click, BasePlugin.ReflexilImage)); using (ImageList browserimages = new ImageList()) { browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages()); browserimages.TransparentColor = Color.Green; using (ImageList barimages = new ImageList()) { barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages()); // Menus var typemenu = AddMenu(BarNames.TypeDefinitionBrowser.ToString()); var assemblymenu = AddMenu(BarNames.AssemblyDefinitionBrowser.ToString()); var assemblyrefmenu = AddMenu(BarNames.AssemblyNameReferenceBrowser.ToString()); var modulemenu = AddMenu(BarNames.ModuleDefinitionBrowser.ToString()); var methodmenu = AddMenu(BarNames.MethodDefinitionBrowser.ToString()); var fieldmenu = AddMenu(BarNames.FieldDefinitionBrowser.ToString()); var propertymenu = AddMenu(BarNames.PropertyDefinitionBrowser.ToString()); var eventmenu = AddMenu(BarNames.EventDefinitionBrowser.ToString()); var allmenus = new UIContext[] { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu }; var membersmenus = new UIContext[] { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu }; // Type declaration menu items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); items.Add(new SubMenuUIContext(typemenu)); items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(EInjectType.Event), browserimages.Images[(int)EBrowserImages.PublicEvent])); items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(EInjectType.Field), browserimages.Images[(int)EBrowserImages.PublicField])); items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(EInjectType.Method), browserimages.Images[(int)EBrowserImages.PublicMethod])); items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(EInjectType.Constructor), browserimages.Images[(int)EBrowserImages.PublicConstructor])); items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(EInjectType.Property), browserimages.Images[(int)EBrowserImages.PublicProperty])); // Shared subitems for Assembly/Module foreach (MenuUIContext menu in new MenuUIContext[] { assemblymenu, modulemenu }) { items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); items.Add(new SubMenuUIContext(menu, "Inject assembly reference", (sender, e) => Inject(EInjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly])); items.Add(new SubMenuUIContext(menu)); items.Add(new SubMenuUIContext(menu, "Save as...", (sender, e) => AssemblyHelper.TrySaveAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Save])); items.Add(new SubMenuUIContext(menu, "Reload", ReloadAssembly, barimages.Images[(int)EBarImages.Reload])); items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); items.Add(new SubMenuUIContext(menu, "Verify", (sender, e) => AssemblyHelper.VerifyAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Check])); } // Shared subitems for renaming/deleting foreach (MenuUIContext menu in membersmenus) { if (menu == typemenu) { items.Add(new SubMenuUIContext(menu)); } items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); items.Add(new SubMenuUIContext(menu, "Delete", DeleteMember, barimages.Images[(int)EBarImages.Delete])); } items.AddRange(allmenus); } } // Main events ab.ActiveItemChanged += this.ActiveItemChanged; am.AssemblyLoaded += this.AssemblyLoaded; am.AssemblyUnloaded += this.AssemblyUnloaded; PluginFactory.GetInstance().ReloadAssemblies(Enumerable.ToList(am.Assemblies)); reflexilwindow.HandleItem(ab.ActiveItem); }
/// <summary> /// Addin load method /// </summary> /// <param name="serviceProvider">Reflector service provider</param> public void Load(IServiceProvider serviceProvider) { PluginFactory.Register(new ReflectorPlugin(this)); _sp = serviceProvider; _wm = GetService <IWindowManager>(); _ab = GetService <IAssemblyBrowser>(); _cbm = GetService <ICommandBarManager>(); _am = GetService <IAssemblyManager>(); CheckPrerequisites(); // Main Window _items = new List <UIContext>(); ReflexilWindow = new Forms.ReflexilWindow(); _wm.Windows.Add(ReflexilWindowId, ReflexilWindow, ReflexilWindowText); // Main button _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolsId])); _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolsId], ReflexilButtonText, Button_Click, BasePlugin.ReflexilImage)); using (var browserimages = new ImageList()) { browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages()); browserimages.TransparentColor = Color.Green; using (var barimages = new ImageList()) { barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages()); // Menus var typemenu = AddMenu(ReflectorTypedecId); var assemblymenu = AddMenu(ReflectorAssemblyId); var assemblyrefmenu = AddMenu(ReflectorAssemblyrefId); var modulemenu = AddMenu(ReflectorModuleId); var methodmenu = AddMenu(ReflectorMethoddecId); var fieldmenu = AddMenu(ReflectorFielddecId); var propertymenu = AddMenu(ReflectorPropertydecId); var eventmenu = AddMenu(ReflectorEventdecId); var resmenu = AddMenu(ReflectorResourceId); var allmenus = new UIContext[] { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu }; var membersmenus = new UIContext[] { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu }; // Type declaration menu _items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); _items.Add(new SubMenuUIContext(typemenu)); _items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(EInjectType.Event), browserimages.Images[(int)EBrowserImages.PublicEvent])); _items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(EInjectType.Field), browserimages.Images[(int)EBrowserImages.PublicField])); _items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(EInjectType.Method), browserimages.Images[(int)EBrowserImages.PublicMethod])); _items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(EInjectType.Constructor), browserimages.Images[(int)EBrowserImages.PublicConstructor])); _items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(EInjectType.Property), browserimages.Images[(int)EBrowserImages.PublicProperty])); // Shared subitems for Assembly/Module foreach (var menu in new[] { assemblymenu, modulemenu }) { _items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(EInjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); _items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(EInjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); _items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(EInjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); _items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(EInjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); _items.Add(new SubMenuUIContext(menu, "Inject assembly reference", (sender, e) => Inject(EInjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly])); _items.Add(new SubMenuUIContext(menu, "Inject resource", (sender, e) => Inject(EInjectType.Resource), browserimages.Images[(int)EBrowserImages.Resources])); _items.Add(new SubMenuUIContext(menu)); _items.Add(new SubMenuUIContext(menu, "Save as...", (sender, e) => AssemblyHelper.SaveAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Save])); _items.Add(new SubMenuUIContext(menu, "Obfuscator search...", (sender, e) => AssemblyHelper.SearchObfuscator(GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Search])); _items.Add(new SubMenuUIContext(menu, "Reload", ReloadAssembly, barimages.Images[(int)EBarImages.Reload])); _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); _items.Add(new SubMenuUIContext(menu, "Verify", (sender, e) => AssemblyHelper.VerifyAssembly(GetCurrentAssemblyDefinition(), GetCurrentModuleOriginalLocation()), barimages.Images[(int)EBarImages.Check])); } // Shared subitems for renaming/deleting foreach (var uiContext in membersmenus) { var menu = (MenuUIContext)uiContext; if (menu == typemenu) { _items.Add(new SubMenuUIContext(menu)); } _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); _items.Add(new SubMenuUIContext(menu, "Delete", DeleteMember, barimages.Images[(int)EBarImages.Delete])); } _items.AddRange(allmenus); } } // Main events _ab.ActiveItemChanged += ActiveItemChanged; _am.AssemblyLoaded += AssemblyLoaded; _am.AssemblyUnloaded += AssemblyUnloaded; PluginFactory.GetInstance().ReloadAssemblies(_am.Assemblies); ReflexilWindow.HandleItem(_ab.ActiveItem); }
/// <summary> /// When an item is deleted /// </summary> protected override void OnItemDeleted() { (PluginFactory.GetInstance() as ReflectorPlugin).RemoveFromCache(ActiveItem); base.OnItemDeleted(); }
/// <summary> /// Assembly loaded /// </summary> /// <param name="sender">Event sender</param> /// <param name="e">Event parameters</param> protected virtual void AssemblyLoaded(object sender, EventArgs e) { PluginFactory.GetInstance().ReloadAssemblies(Assemblies); }
public bool IsItemHandled(object item) { return(PluginFactory.GetInstance().IsAssemblyLinkedResourceHandled(item)); }
public void HandleItem(object item) { HandleItem(PluginFactory.GetInstance().GetAssemblyLinkedResource(item)); }
public void Load(IServiceProvider serviceProvider) { PluginFactory.Register(new ReflectorPlugin(this)); _sp = serviceProvider; _wm = GetService <IWindowManager>(); _ab = GetService <IAssemblyBrowser>(); _cbm = GetService <ICommandBarManager>(); _am = GetService <IAssemblyManager>(); // IAssemblyManager exposes HotReplaceAssembly, but we want to support older Reflector versions _hotReplaceAssemblyMethod = _am.GetType().GetMethod("HotReplaceAssembly", BindingFlags.Instance | BindingFlags.Public); // Main Window _items = new List <UIContext>(); ReflexilWindow = new Forms.ReflexilWindow(); _wm.Windows.Add(ReflexilWindowId, ReflexilWindow, ReflexilWindowText); // Main button AddButtonSeparatorIfNeeded(ReflectorToolsId); _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolsId], ReflexilButtonText, MainButtonClick, BasePlugin.ReflexilImage)); AddButtonSeparatorIfNeeded(ReflectorToolBarId); _items.Add(new ButtonUIContext(_cbm.CommandBars[ReflectorToolBarId], ReflexilButtonText, MainButtonClick, BasePlugin.ReflexilImage)); using (var browserimages = new ImageList()) { browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages()); browserimages.TransparentColor = Color.Green; using (var barimages = new ImageList()) { barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages()); // Menus var typemenu = AddMenu(ReflectorTypedecId); var assemblymenu = AddMenu(ReflectorAssemblyId); var assemblyrefmenu = AddMenu(ReflectorAssemblyrefId); var modulemenu = AddMenu(ReflectorModuleId); var methodmenu = AddMenu(ReflectorMethoddecId); var fieldmenu = AddMenu(ReflectorFielddecId); var propertymenu = AddMenu(ReflectorPropertydecId); var eventmenu = AddMenu(ReflectorEventdecId); var resmenu = AddMenu(ReflectorResourceId); var allmenus = new[] { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu }; var membersmenus = new[] { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu, resmenu }; // Type declaration menu _items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(InjectType.Constructor), browserimages.Images[(int)EBrowserImages.PublicConstructor])); _items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(InjectType.Event), browserimages.Images[(int)EBrowserImages.PublicEvent])); _items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(InjectType.Field), browserimages.Images[(int)EBrowserImages.PublicField])); _items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(InjectType.Method), browserimages.Images[(int)EBrowserImages.PublicMethod])); _items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(InjectType.Property), browserimages.Images[(int)EBrowserImages.PublicProperty])); _items.Add(new SubMenuUIContext(typemenu)); _items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(InjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(InjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(InjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(InjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); // Shared subitems for Assembly/Module foreach (var menu in new[] { assemblymenu, modulemenu }) { _items.Add(new SubMenuUIContext(menu, "Inject assembly reference", (sender, e) => Inject(InjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly])); _items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(InjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); _items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(InjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); _items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(InjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); _items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(InjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); _items.Add(new SubMenuUIContext(menu, "Inject resource", (sender, e) => Inject(InjectType.Resource), browserimages.Images[(int)EBrowserImages.Resources])); _items.Add(new SubMenuUIContext(menu)); _items.Add(new SubMenuUIContext(menu, "Reload Reflexil object model", ReloadAssembly, barimages.Images[(int)EBarImages.Reload])); if (_hotReplaceAssemblyMethod != null) { _items.Add(new SubMenuUIContext(menu, "Update Reflector object model", UpdateHostObjectModel, barimages.Images[(int)EBarImages.Reload])); } _items.Add(new SubMenuUIContext(menu)); _items.Add(new SubMenuUIContext(menu, "Obfuscator search...", SearchObfuscator, barimages.Images[(int)EBarImages.Search])); _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); _items.Add(new SubMenuUIContext(menu, "Save as...", SaveAssembly, barimages.Images[(int)EBarImages.Save])); _items.Add(new SubMenuUIContext(menu, "Verify", VerifyAssembly, barimages.Images[(int)EBarImages.Check])); } // Shared subitems for renaming/deleting foreach (var menu in membersmenus) { if (menu == typemenu) { _items.Add(new SubMenuUIContext(menu)); } _items.Add(new SubMenuUIContext(menu, "Delete", DeleteItem, barimages.Images[(int)EBarImages.Delete])); _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); if (_hotReplaceAssemblyMethod != null) { _items.Add(new SubMenuUIContext(menu)); _items.Add(new SubMenuUIContext(menu, "Update Reflector object model", UpdateHostObjectModel, barimages.Images[(int)EBarImages.Reload])); } } _items.AddRange(allmenus); } } // Main events _ab.ActiveItemChanged += ActiveItemChanged; _am.AssemblyLoaded += AssemblyLoaded; _am.AssemblyUnloaded += AssemblyUnloaded; ReflexilWindow.HandleItem(_ab.ActiveItem); }
public bool IsItemHandled(object item) { return(PluginFactory.GetInstance().IsModuleDefinitionHandled(item)); }
public void HandleItem(object item) { HandleItem(PluginFactory.GetInstance().GetModuleDefinition(item)); }
void IHandler.HandleItem(object item) { HandleItem(PluginFactory.GetInstance().GetAssemblyNameReference(item)); }
public void Load(IServiceProvider serviceProvider) { PluginFactory.Register(new CecilStudioPlugin(this)); _sp = serviceProvider; _wm = GetService <IWindowManager>(); _ab = GetService <IAssemblyBrowser>(); _cbm = GetService <IBarManager>(); _am = GetService <IAssemblyManager>(); // Main Window _items = new List <UIContext>(); ReflexilWindow = new Forms.ReflexilWindow(); var window = _wm.Windows.Add(ReflexilWindowId, ReflexilWindow, ReflexilWindowText); window.Image = BasePlugin.ReflexilImage; // Main button _items.Add(new ButtonUIContext(_cbm.Bars[BarNames.Toolbar])); _items.Add(new ButtonUIContext(_cbm.Bars[BarNames.Toolbar], ReflexilButtonText, MainButtonClick, BasePlugin.ReflexilImage)); using (var browserimages = new ImageList()) { browserimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBrowserImages()); browserimages.TransparentColor = Color.Green; using (var barimages = new ImageList()) { barimages.Images.AddStrip(PluginFactory.GetInstance().GetAllBarImages()); // Menus var typemenu = AddMenu(BarNames.TypeDefinitionBrowser.ToString()); var assemblymenu = AddMenu(BarNames.AssemblyDefinitionBrowser.ToString()); var assemblyrefmenu = AddMenu(BarNames.AssemblyNameReferenceBrowser.ToString()); var modulemenu = AddMenu(BarNames.ModuleDefinitionBrowser.ToString()); var methodmenu = AddMenu(BarNames.MethodDefinitionBrowser.ToString()); var fieldmenu = AddMenu(BarNames.FieldDefinitionBrowser.ToString()); var propertymenu = AddMenu(BarNames.PropertyDefinitionBrowser.ToString()); var eventmenu = AddMenu(BarNames.EventDefinitionBrowser.ToString()); var allmenus = new UIContext[] { typemenu, assemblymenu, assemblyrefmenu, modulemenu, methodmenu, fieldmenu, propertymenu, eventmenu }; var membersmenus = new UIContext[] { assemblyrefmenu, typemenu, methodmenu, fieldmenu, propertymenu, eventmenu }; // Type declaration menu _items.Add(new SubMenuUIContext(typemenu, "Inject inner class", (sender, e) => Inject(InjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner interface", (sender, e) => Inject(InjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner struct", (sender, e) => Inject(InjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); _items.Add(new SubMenuUIContext(typemenu, "Inject inner enum", (sender, e) => Inject(InjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); _items.Add(new SubMenuUIContext(typemenu)); _items.Add(new SubMenuUIContext(typemenu, "Inject event", (sender, e) => Inject(InjectType.Event), browserimages.Images[(int)EBrowserImages.PublicEvent])); _items.Add(new SubMenuUIContext(typemenu, "Inject field", (sender, e) => Inject(InjectType.Field), browserimages.Images[(int)EBrowserImages.PublicField])); _items.Add(new SubMenuUIContext(typemenu, "Inject method", (sender, e) => Inject(InjectType.Method), browserimages.Images[(int)EBrowserImages.PublicMethod])); _items.Add(new SubMenuUIContext(typemenu, "Inject constructor", (sender, e) => Inject(InjectType.Constructor), browserimages.Images[(int)EBrowserImages.PublicConstructor])); _items.Add(new SubMenuUIContext(typemenu, "Inject property", (sender, e) => Inject(InjectType.Property), browserimages.Images[(int)EBrowserImages.PublicProperty])); // Shared subitems for Assembly/Module foreach (var menu in new[] { assemblymenu, modulemenu }) { _items.Add(new SubMenuUIContext(menu, "Inject class", (sender, e) => Inject(InjectType.Class), browserimages.Images[(int)EBrowserImages.PublicClass])); _items.Add(new SubMenuUIContext(menu, "Inject interface", (sender, e) => Inject(InjectType.Interface), browserimages.Images[(int)EBrowserImages.PublicInterface])); _items.Add(new SubMenuUIContext(menu, "Inject struct", (sender, e) => Inject(InjectType.Struct), browserimages.Images[(int)EBrowserImages.PublicStructure])); _items.Add(new SubMenuUIContext(menu, "Inject enum", (sender, e) => Inject(InjectType.Enum), browserimages.Images[(int)EBrowserImages.PublicEnum])); _items.Add(new SubMenuUIContext(menu, "Inject assembly reference", (sender, e) => Inject(InjectType.AssemblyReference), browserimages.Images[(int)EBrowserImages.LinkedAssembly])); _items.Add(new SubMenuUIContext(menu)); _items.Add(new SubMenuUIContext(menu, "Save as...", SaveAssembly, barimages.Images[(int)EBarImages.Save])); _items.Add(new SubMenuUIContext(menu, "Obfuscator search...", SearchObfuscator, barimages.Images[(int)EBarImages.Search])); _items.Add(new SubMenuUIContext(menu, "Reload", ReloadAssembly, barimages.Images[(int)EBarImages.Reload])); _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); _items.Add(new SubMenuUIContext(menu, "Verify", VerifyAssembly, barimages.Images[(int)EBarImages.Check])); } // Shared subitems for renaming/deleting foreach (var uiContext in membersmenus) { var menu = (MenuUIContext)uiContext; if (menu == typemenu) { _items.Add(new SubMenuUIContext(menu)); } _items.Add(new SubMenuUIContext(menu, "Rename...", RenameItem, barimages.Images[(int)EBarImages.New])); _items.Add(new SubMenuUIContext(menu, "Delete", DeleteItem, barimages.Images[(int)EBarImages.Delete])); } _items.AddRange(allmenus); } } // Main events _ab.ActiveItemChanged += ActiveItemChanged; ReflexilWindow.HandleItem(_ab.ActiveItem); }
void IHandler.HandleItem(object item) { HandleItem(PluginFactory.GetInstance().GetFieldDefinition(item)); }
/// <summary> /// Retrieve the matching assembly definition reference in the Cecil object model /// </summary> /// <param name="aloc">Reflector assembly location</param> /// <returns>Cecil assembly assembly definition (null if not found)</returns> public static AssemblyDefinition ReflectorAssemblyLocationToCecilAssemblyDefinition(IAssemblyLocation aloc) { var context = PluginFactory.GetInstance().GetAssemblyContext(aloc.Location); return(context != null ? context.AssemblyDefinition : null); }