예제 #1
0
			EditMenuCommand(Lazy<IUndoCommandService> undoCommandService, Lazy<IAddUpdatedNodesHelperProvider> addUpdatedNodesHelperProvider, IAppService appService, IPickFilename pickFilename)
				: base(appService.DocumentTreeView) {
				this.undoCommandService = undoCommandService;
				this.addUpdatedNodesHelperProvider = addUpdatedNodesHelperProvider;
				this.appService = appService;
				this.pickFilename = pickFilename;
			}
예제 #2
0
		AppSettingsPageProvider(IBackgroundImageSettingsService backgroundImageSettingsService, IPickFilename pickFilename, IPickDirectory pickDirectory) {
			this.backgroundImageSettingsService = backgroundImageSettingsService;
			this.pickFilename = pickFilename;
			this.pickDirectory = pickDirectory;
		}
예제 #3
0
		public AppSettingsPageImpl(IBackgroundImageSettingsService backgroundImageSettingsService, IPickFilename pickFilename, IPickDirectory pickDirectory, ImageSettingsInfo[] settings) {
			if (backgroundImageSettingsService == null)
				throw new ArgumentNullException(nameof(backgroundImageSettingsService));
			if (pickFilename == null)
				throw new ArgumentNullException(nameof(pickFilename));
			if (pickDirectory == null)
				throw new ArgumentNullException(nameof(pickDirectory));
			if (settings == null)
				throw new ArgumentNullException(nameof(settings));
			if (settings.Length == 0)
				throw new ArgumentException();
			Debug.Assert(settings.All(a => a.Lazy.Value.UserVisible));
			this.backgroundImageSettingsService = backgroundImageSettingsService;
			this.pickFilename = pickFilename;
			this.pickDirectory = pickDirectory;
			Settings = new ObservableCollection<Settings>(settings.OrderBy(a => a.Lazy.Value.UIOrder).Select(a => new Settings(a)));
			stretchVM = new EnumListVM(EnumVM.Create(false, typeof(Stretch)), (a, b) => currentItem.RawSettings.Stretch = (Stretch)stretchVM.SelectedItem);
			stretchDirectionVM = new EnumListVM(stretchDirectionList, (a, b) => currentItem.RawSettings.StretchDirection = (StretchDirection)stretchDirectionVM.SelectedItem);
			imagePlacementVM = new EnumListVM(imagePlacementList, (a, b) => currentItem.RawSettings.ImagePlacement = (ImagePlacement)imagePlacementVM.SelectedItem);
			opacityVM = new DoubleVM(a => { if (!opacityVM.HasError) currentItem.RawSettings.Opacity = FilterOpacity(opacityVM.Value); });
			horizontalOffsetVM = new DoubleVM(a => { if (!horizontalOffsetVM.HasError) currentItem.RawSettings.HorizontalOffset = FilterOffset(horizontalOffsetVM.Value); });
			verticalOffsetVM = new DoubleVM(a => { if (!verticalOffsetVM.HasError) currentItem.RawSettings.VerticalOffset = FilterOffset(verticalOffsetVM.Value); });
			leftMarginWidthPercentVM = new DoubleVM(a => { if (!leftMarginWidthPercentVM.HasError) currentItem.RawSettings.LeftMarginWidthPercent = FilterMarginPercent(leftMarginWidthPercentVM.Value); });
			rightMarginWidthPercentVM = new DoubleVM(a => { if (!rightMarginWidthPercentVM.HasError) currentItem.RawSettings.RightMarginWidthPercent = FilterMarginPercent(rightMarginWidthPercentVM.Value); });
			topMarginHeightPercentVM = new DoubleVM(a => { if (!topMarginHeightPercentVM.HasError) currentItem.RawSettings.TopMarginHeightPercent = FilterMarginPercent(topMarginHeightPercentVM.Value); });
			bottomMarginHeightPercentVM = new DoubleVM(a => { if (!bottomMarginHeightPercentVM.HasError) currentItem.RawSettings.BottomMarginHeightPercent = FilterMarginPercent(bottomMarginHeightPercentVM.Value); });
			maxHeightVM = new DoubleVM(a => { if (!maxHeightVM.HasError) currentItem.RawSettings.MaxHeight = FilterLength(maxHeightVM.Value); });
			maxWidthVM = new DoubleVM(a => { if (!maxWidthVM.HasError) currentItem.RawSettings.MaxWidth = FilterLength(maxWidthVM.Value); });
			zoomVM = new DoubleVM(a => { if (!zoomVM.HasError) currentItem.RawSettings.Zoom = FilterZoom(zoomVM.Value); });
			intervalVM = new DefaultConverterVM<TimeSpan>(a => { if (!intervalVM.HasError) currentItem.RawSettings.Interval = intervalVM.Value; });
			CurrentItem = Settings.FirstOrDefault(a => a.Id == backgroundImageSettingsService.LastSelectedId) ?? Settings[0];
		}
예제 #4
0
		public DebuggerSettingsVM(IPickFilename pickFilename) {
			if (pickFilename == null)
				throw new ArgumentNullException();
			this.pickFilename = pickFilename;
		}
예제 #5
0
		public DebuggerAppSettingsPage(DebuggerSettingsImpl debuggerSettingsImpl, IPickFilename pickFilename) {
			_global_settings = debuggerSettingsImpl;
			Settings = debuggerSettingsImpl.Clone();
			BreakProcessKind = debuggerSettingsImpl.BreakProcessKind;
			this.pickFilename = pickFilename;
		}
예제 #6
0
		DebuggerAppSettingsPageProvider(DebuggerSettingsImpl debuggerSettingsImpl, IPickFilename pickFilename) {
			this.debuggerSettingsImpl = debuggerSettingsImpl;
		}
예제 #7
0
		public DebuggerAppSettingsTab(DebuggerSettingsImpl debuggerSettingsImpl, IPickFilename pickFilename) {
			this._global_settings = debuggerSettingsImpl;
			this.debuggerSettings = debuggerSettingsImpl.Clone();
			this.BreakProcessType = debuggerSettingsImpl.BreakProcessType;
			this.pickFilename = pickFilename;
		}
예제 #8
0
			DocumentsCommand(Lazy<IUndoCommandService> undoCommandService, Lazy<IAddUpdatedNodesHelperProvider> addUpdatedNodesHelperProvider, IAppService appService, IPickFilename pickFilename) {
				this.undoCommandService = undoCommandService;
				this.addUpdatedNodesHelperProvider = addUpdatedNodesHelperProvider;
				this.appService = appService;
				this.pickFilename = pickFilename;
			}
예제 #9
0
		static void Execute(IPickFilename pickFilename, Lazy<IAddUpdatedNodesHelperProvider> addUpdatedNodesHelperProvider, Lazy<IUndoCommandService> undoCommandService, IAppService appService, DocumentTreeNodeData[] nodes) {
			if (!CanExecute(nodes))
				return;

			var asmNode = nodes[0] as AssemblyDocumentNode;
			ModuleDocumentNode modNode;
			if (asmNode != null) {
				asmNode.TreeNode.EnsureChildrenLoaded();
				modNode = asmNode.TreeNode.DataChildren.FirstOrDefault() as ModuleDocumentNode;
			}
			else
				modNode = nodes[0].GetModuleNode();
			Debug.Assert(modNode != null);
			if (modNode == null)
				return;
			var module = modNode.Document.ModuleDef;
			Debug.Assert(module != null);
			if (module == null)
				throw new InvalidOperationException();

			var filename = pickFilename.GetFilename(null, "dll", PickFilenameConstants.DotNetAssemblyOrModuleFilter);
			var result = GetModuleBytes(filename);
			if (result == null)
				return;

			// This is a basic assembly merger, we don't support merging dependencies. It would require
			// fixing all refs to the dep and redirect them to the new defs that now exist in 'module'.
			var asm = module.Assembly;
			if (asm != null && result.Value.Assembly != null) {
				if (IsNonSupportedAssembly(module, asm, result.Value.Assembly)) {
					Contracts.App.MsgBox.Instance.Show($"Can't merge with {result.Value.Assembly} because it's a dependency");
					return;
				}
			}

			var importer = new ModuleImporter(module, EditCodeVM.makeEverythingPublic);
			try {
				importer.Import(result.Value.RawBytes, result.Value.DebugFile, ModuleImporterOptions.None);
			}
			catch (Exception ex) {
				Contracts.App.MsgBox.Instance.Show(ex);
				return;
			}

			undoCommandService.Value.Add(new MergeWithAssemblyCommand(addUpdatedNodesHelperProvider, modNode, importer));
		}
예제 #10
0
 CodeCommand(Lazy <IUndoCommandService> undoCommandService, Lazy <IAddUpdatedNodesHelperProvider> addUpdatedNodesHelperProvider, IAppService appService, IPickFilename pickFilename)
     : base(appService.DocumentTreeView)
 {
     this.undoCommandService            = undoCommandService;
     this.addUpdatedNodesHelperProvider = addUpdatedNodesHelperProvider;
     this.appService   = appService;
     this.pickFilename = pickFilename;
 }
예제 #11
0
 BookmarksOperationsImpl(IBookmarksVM bookmarksVM, BookmarkDisplaySettings bookmarkDisplaySettings, Lazy <BookmarksService> bookmarksService, Lazy <BookmarkLocationSerializerService> bookmarkLocationSerializerService, Lazy <ISettingsServiceFactory> settingsServiceFactory, IPickFilename pickFilename, IMessageBoxService messageBoxService, Lazy <BookmarkSerializerService> bookmarkSerializerService, Lazy <TextViewBookmarkService> textViewBookmarkService, Lazy <ReferenceNavigatorService> referenceNavigatorService, Lazy <BookmarkNavigator> bookmarkNavigator)
 {
     this.bookmarksVM                       = bookmarksVM;
     this.bookmarkDisplaySettings           = bookmarkDisplaySettings;
     this.bookmarksService                  = bookmarksService;
     this.bookmarkLocationSerializerService = bookmarkLocationSerializerService;
     this.settingsServiceFactory            = settingsServiceFactory;
     this.pickFilename                      = pickFilename;
     this.messageBoxService                 = messageBoxService;
     this.bookmarkSerializerService         = bookmarkSerializerService;
     this.textViewBookmarkService           = textViewBookmarkService;
     this.referenceNavigatorService         = referenceNavigatorService;
     this.bookmarkNavigator                 = bookmarkNavigator;
 }
예제 #12
0
 DebuggerAppSettingsPageProvider(DebuggerSettingsImpl debuggerSettingsImpl, IPickFilename pickFilename)
 {
     this.debuggerSettingsImpl = debuggerSettingsImpl;
 }
예제 #13
0
        static void Execute(IPickFilename pickFilename, Lazy <IAddUpdatedNodesHelperProvider> addUpdatedNodesHelperProvider, Lazy <IUndoCommandService> undoCommandService, IAppService appService, DocumentTreeNodeData[] nodes)
        {
            if (!CanExecute(nodes))
            {
                return;
            }

            var asmNode = nodes[0] as AssemblyDocumentNode;
            ModuleDocumentNode modNode;

            if (asmNode != null)
            {
                asmNode.TreeNode.EnsureChildrenLoaded();
                modNode = asmNode.TreeNode.DataChildren.FirstOrDefault() as ModuleDocumentNode;
            }
            else
            {
                modNode = nodes[0].GetModuleNode();
            }
            Debug.Assert(modNode != null);
            if (modNode == null)
            {
                return;
            }
            var module = modNode.Document.ModuleDef;

            Debug.Assert(module != null);
            if (module == null)
            {
                throw new InvalidOperationException();
            }

            var filename = pickFilename.GetFilename(null, "dll", PickFilenameConstants.DotNetAssemblyOrModuleFilter);
            var result   = GetModuleBytes(filename);

            if (result == null)
            {
                return;
            }

            // This is a basic assembly merger, we don't support merging dependencies. It would require
            // fixing all refs to the dep and redirect them to the new defs that now exist in 'module'.
            var asm = module.Assembly;

            if (asm != null && result.Value.Assembly != null)
            {
                if (IsNonSupportedAssembly(module, asm, result.Value.Assembly))
                {
                    Contracts.App.MsgBox.Instance.Show($"Can't merge with {result.Value.Assembly} because it's a dependency");
                    return;
                }
            }

            var importer = new ModuleImporter(module);

            try {
                importer.Import(result.Value.RawBytes, result.Value.DebugFile, ModuleImporterOptions.None);
            }
            catch (Exception ex) {
                Contracts.App.MsgBox.Instance.Show(ex);
                return;
            }

            undoCommandService.Value.Add(new MergeWithAssemblyCommand(addUpdatedNodesHelperProvider, modNode, importer));
        }