Beispiel #1
0
        public Control CreateControl()
        {
            var uiService  = services.RequireService <IDecompilerShellUiService>();
            var uiPrefsSvc = services.RequireService <IUiPreferencesService>();

            this.control      = new LowLevelView();
            this.Control.Font = uiPrefsSvc.DisassemblerFont ?? new Font("Lucida Console", 10F); //$TODO: use user preference
            this.Control.CurrentAddressChanged += LowLevelView_CurrentAddressChanged;

            this.Control.ImageMapView.SelectedAddressChanged += ImageMapView_SelectedAddressChanged;

            this.Control.MemoryView.SelectionChanged += MemoryView_SelectionChanged;
            this.Control.MemoryView.ContextMenu       = uiService.GetContextMenu(MenuIds.CtxMemoryControl);
            this.control.MemoryView.Services          = this.services;

            this.Control.DisassemblyView.SelectedObjectChanged += DisassemblyView_SelectedObjectChanged;
            this.Control.DisassemblyView.ContextMenu            = uiService.GetContextMenu(MenuIds.CtxDisassembler);
            this.Control.DisassemblyView.Navigate += DisassemblyControl_Navigate;

            this.Control.ToolBarGoButton.Click         += ToolBarGoButton_Click;
            this.Control.ToolBarAddressTextbox.KeyDown += ToolBarAddressTextbox_KeyDown;

            this.navInteractor = new NavigationInteractor();
            this.navInteractor.Attach(this.Control);

            typeMarker               = new TypeMarker(control.MemoryView);
            typeMarker.TextChanged  += typeMarker_FormatType;
            typeMarker.TextAccepted += typeMarker_TextAccepted;

            return(control);
        }
        public void LLI_ShowMemoryAtAddressShouldChangeMemoryControl()
        {
            var sc         = new ServiceContainer();
            var ctrl       = new LowLevelView();
            var interactor = new Mock <LowLevelViewInteractor>();
            //interactor.Expect(i => i.SelectedAddress).SetPropertyWithArgument(Address.Ptr32(0x4711));
            var uiSvc = AddStubService <IDecompilerShellUiService>(sc);

            AddStubService <IUiPreferencesService>(sc).Setup(u => u.Styles).Returns(new Dictionary <string, UiStyle>());
            Given_Program();
            uiSvc.Setup(x => x.FindDocumentWindow(It.IsAny <string>(), It.IsAny <object>()))
            .Returns((IWindowFrame)null);
            uiSvc.Setup(x => x.CreateDocumentWindow(
                            It.IsAny <string>(),
                            It.IsAny <object>(),
                            It.IsAny <string>(),
                            It.IsAny <IWindowPane>()))
            .Returns(new Mock <IWindowFrame>().Object);
            //uiSvc.Setup(x => x.SetContextMenu(null, MenuIds.CtxMemoryControl)).IgnoreArguments();
            //uiSvc.Setup(x => x.SetContextMenu(null, MenuIds.CtxMemoryControl));
            //uiSvc.Setup(x => x.GetContextMenu(MenuIds.CtxDisassembler)).Return(new ContextMenu());

            var service = new Mock <LowLevelViewServiceImpl>(sc);

            service.Setup(x => x.CreateMemoryViewInteractor()).Returns(interactor.Object);
            var image = new ByteMemoryArea(Address.Ptr32(0x1000), new byte[300]);

            interactor.Object.SetSite(sc);
            interactor.Object.CreateControl();
            service.Object.ShowMemoryAtAddress(program, Address.Ptr32(0x4711));
        }
Beispiel #3
0
        public void LLI_ShowMemoryAtAddressShouldChangeMemoryControl()
        {
            var sc         = new ServiceContainer();
            var ctrl       = new LowLevelView();
            var interactor = mr.DynamicMock <LowLevelViewInteractor>();

            interactor.Expect(i => i.SelectedAddress).SetPropertyWithArgument(Address.Ptr32(0x4711));
            var uiSvc = AddStubService <IDecompilerShellUiService>(sc);

            AddStubService <IUiPreferencesService>(sc);
            Given_Program();
            uiSvc.Stub(x => x.FindWindow(Arg <string> .Is.Anything)).Return(null);
            uiSvc.Stub(x => x.CreateWindow("", "", null))
            .IgnoreArguments()
            .Return(mr.Stub <IWindowFrame>());
            uiSvc.Stub(x => x.GetContextMenu(MenuIds.CtxMemoryControl)).Return(new ContextMenu());
            uiSvc.Stub(x => x.GetContextMenu(MenuIds.CtxDisassembler)).Return(new ContextMenu());

            var service = mr.Stub <LowLevelViewServiceImpl>(sc);

            service.Stub(x => x.CreateMemoryViewInteractor()).Return(interactor);
            var image = new LoadedImage(Address.Ptr32(0x1000), new byte[300]);

            mr.ReplayAll();

            interactor.SetSite(sc);
            interactor.CreateControl();
            service.ShowMemoryAtAddress(program, Address.Ptr32(0x4711));

            mr.VerifyAll();
        }
 private void Given_Interactor()
 {
     interactor = mr.PartialMock <LowLevelViewInteractor>();
     interactor.SetSite(sp);
     control            = (LowLevelView)interactor.CreateControl();
     interactor.Program = program;
 }
Beispiel #5
0
        public object CreateControl()
        {
            var uiService = services.RequireService <IDecompilerShellUiService>();

            this.control      = new LowLevelView();
            this.Control.Font = new Font("Lucida Console", 10F); //$TODO: use user preference
            this.Control.CurrentAddressChanged += LowLevelView_CurrentAddressChanged;

            this.Control.ImageMapView.SelectedAddressChanged += ImageMapView_SelectedAddressChanged;

            this.Control.MemoryView.SelectionChanged += MemoryView_SelectionChanged;
            uiService.SetContextMenu(this.Control.MemoryView, MenuIds.CtxMemoryControl);
            this.control.MemoryView.Services = this.services;

            this.Control.DisassemblyView.StyleClass             = UiStyles.Disassembler;
            this.Control.DisassemblyView.SelectedObjectChanged += DisassemblyView_SelectedObjectChanged;
            uiService.SetContextMenu(this.Control.DisassemblyView, MenuIds.CtxDisassembler);
            this.Control.DisassemblyView.Services  = this.services;
            this.Control.DisassemblyView.Navigate += DisassemblyControl_Navigate;

            this.Control.VisualizerControl.Services = services;
            PopulateVisualizers();
            this.Control.VisualizerList.SelectedIndexChanged += VisualizerList_SelectedIndexChanged;
            this.control.VisualizerList.SelectedIndex         = 0;

            this.Control.ToolBarGoButton.Click         += ToolBarGoButton_Click;
            this.Control.ToolBarAddressTextbox.KeyDown += ToolBarAddressTextbox_KeyDown;

            this.navInteractor = new NavigationInteractor <Address>();
            this.navInteractor.Attach(this.Control);

            typeMarker = new TypeMarker(control.MemoryView);

            return(control);
        }
Beispiel #6
0
 private void Given_Interactor()
 {
     interactor = new Mock <LowLevelViewInteractor>();
     interactor.Object.SetSite(sp);
     control = (LowLevelView)interactor.Object.CreateControl();
     interactor.Object.Program = program;
 }