CreateNodeXLVisual ( GeneralUserSettings oGeneralUserSettings ) { Debug.Assert(oGeneralUserSettings != null); AssertValid(); NodeXLVisual oNodeXLVisual = new NodeXLVisual(); GraphDrawer oGraphDrawer = oNodeXLVisual.GraphDrawer; VertexDrawer oVertexDrawer = oGraphDrawer.VertexDrawer; EdgeDrawer oEdgeDrawer = oGraphDrawer.EdgeDrawer; oGeneralUserSettings.TransferToGraphDrawer(oGraphDrawer); // Override some of the user's settings. oVertexDrawer.Shape = VertexShape.Disk; oVertexDrawer.Radius = 2.0; oEdgeDrawer.Width = 1; return(oNodeXLVisual); }
public LayoutControl() { InitializeComponent(); GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); oGeneralUserSettings.NotUseWorkbookSettings(); LayoutUserSettings oLayoutUserSettings = new LayoutUserSettings(); oLayoutUserSettings.NotUseWorkbookSettings(); LayoutType eInitialLayout = oLayoutUserSettings.Layout; // LayoutType eInitialLayout = LayoutType.FruchtermanReingold; // Instantiate an object that populates the tssbLayout // ToolStripSplitButton and handles its LayoutChanged event. m_oLayoutManagerForToolStripSplitButton = new LayoutManagerForToolStripSplitButton(); m_oLayoutManagerForToolStripSplitButton.AddItems(this.tssbLayout); m_oLayoutManagerForToolStripSplitButton.Layout = eInitialLayout; m_oLayoutManagerForToolStripSplitButton.LayoutChanged += new EventHandler( this.LayoutManagerForToolStripSplitButton_LayoutChanged); CreateNodeXLControl(); CreateGraphZoomAndScaleControl(); // ApplyGeneralUserSettings(oGeneralUserSettings); ApplyLayoutUserSettings(oLayoutUserSettings); AssertValid(); }
CreateGraphDrawingContext ( Rectangle oSubgraphRectangle, GeneralUserSettings oGeneralUserSettings ) { Debug.Assert(oGeneralUserSettings != null); AssertValid(); return(new GraphDrawingContext( WpfGraphicsUtil.RectangleToRect(oSubgraphRectangle), Margin, WpfGraphicsUtil.ColorToWpfColor(oGeneralUserSettings.BackColor) )); }
CreateSubgraphImagesAsync ( IGraph graph, ICollection <IVertex> selectedVertices, Decimal levels, Boolean saveToFolder, String folder, Size imageSizePx, ImageFormat imageFormat, Boolean createThumbnails, Size thumbnailSizePx, Boolean selectedVerticesOnly, Boolean selectVertex, Boolean selectIncidentEdges, GeneralUserSettings generalUserSettings, LayoutUserSettings layoutUserSettings ) { Debug.Assert(graph != null); Debug.Assert(selectedVertices != null); Debug.Assert(levels >= 0); Debug.Assert(Decimal.Remainder(levels, 0.5M) == 0M); Debug.Assert(!saveToFolder || !String.IsNullOrEmpty(folder)); Debug.Assert(!saveToFolder || imageSizePx.Width > 0); Debug.Assert(!saveToFolder || imageSizePx.Height > 0); Debug.Assert(!createThumbnails || thumbnailSizePx.Width > 0); Debug.Assert(!createThumbnails || thumbnailSizePx.Height > 0); Debug.Assert(generalUserSettings != null); AssertValid(); const String MethodName = "CreateSubgraphImagesAsync"; if (this.IsBusy) { throw new InvalidOperationException(String.Format( "{0}:{1}: An asynchronous operation is already in progress." , this.ClassName, MethodName )); } // Wrap the arguments in an object that can be passed to // BackgroundWorker.RunWorkerAsync(). CreateSubgraphImagesAsyncArgs oCreateSubgraphImagesAsyncArgs = new CreateSubgraphImagesAsyncArgs(); oCreateSubgraphImagesAsyncArgs.Graph = graph; oCreateSubgraphImagesAsyncArgs.SelectedVertices = selectedVertices; oCreateSubgraphImagesAsyncArgs.Levels = levels; oCreateSubgraphImagesAsyncArgs.SaveToFolder = saveToFolder; oCreateSubgraphImagesAsyncArgs.Folder = folder; oCreateSubgraphImagesAsyncArgs.ImageSizePx = imageSizePx; oCreateSubgraphImagesAsyncArgs.ImageFormat = imageFormat; oCreateSubgraphImagesAsyncArgs.CreateThumbnails = createThumbnails; oCreateSubgraphImagesAsyncArgs.ThumbnailSizePx = thumbnailSizePx; oCreateSubgraphImagesAsyncArgs.SelectedVerticesOnly = selectedVerticesOnly; oCreateSubgraphImagesAsyncArgs.SelectVertex = selectVertex; oCreateSubgraphImagesAsyncArgs.SelectIncidentEdges = selectIncidentEdges; oCreateSubgraphImagesAsyncArgs.GeneralUserSettings = generalUserSettings; oCreateSubgraphImagesAsyncArgs.Layout = CreateLayout(layoutUserSettings); oCreateSubgraphImagesAsyncArgs.Layout.Margin = Margin; // Note: the NodeXLVisual object can't be created yet, because it must // be created on the same thread that uses it. It will get created by // BackgroundWorker_DoWork(). oCreateSubgraphImagesAsyncArgs.NodeXLVisual = null; // Create a BackgroundWorker and handle its events. m_oBackgroundWorker = new BackgroundWorker(); m_oBackgroundWorker.WorkerReportsProgress = true; m_oBackgroundWorker.WorkerSupportsCancellation = true; m_oBackgroundWorker.DoWork += new DoWorkEventHandler( BackgroundWorker_DoWork); m_oBackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(BackgroundWorker_ProgressChanged); m_oBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler( BackgroundWorker_RunWorkerCompleted); m_oBackgroundWorker.RunWorkerAsync(oCreateSubgraphImagesAsyncArgs); }
ReadWorkbook ( Boolean bLayOutGraph ) { AssertValid(); if (oNodeXLControl.IsLayingOutGraph) { return; } RemoveSplashScreen(); if ( !this.NonEmptyWorkbookRead && this.LayoutIsNull && !ShowLayoutTypeIsNullNotification() ) { return; } // This is in case another open workbook has modified the user // settings. GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); GroupUserSettings oGroupUserSettings = new GroupUserSettings(); ApplyGeneralUserSettings(oGeneralUserSettings); ApplyLayoutUserSettings( new LayoutUserSettings() ); ReadWorkbookContext oReadWorkbookContext = new ReadWorkbookContext(); oReadWorkbookContext.IgnoreVertexLocations = false; oReadWorkbookContext.GraphRectangle = this.GraphRectangle; oReadWorkbookContext.FillIDColumns = true; oReadWorkbookContext.ReadGroups = oGroupUserSettings.ReadGroups; oReadWorkbookContext.ReadEdgeWeights = true; oReadWorkbookContext.ReadVertexColorFromGroups = oGroupUserSettings.ReadVertexColorFromGroups; oReadWorkbookContext.ReadVertexShapeFromGroups = oGroupUserSettings.ReadVertexShapeFromGroups; oReadWorkbookContext.ReadVertexLabels = m_oRibbon.ReadVertexLabels; oReadWorkbookContext.ReadEdgeLabels = m_oRibbon.ReadEdgeLabels; oReadWorkbookContext.ReadGroupLabels = m_oRibbon.ReadGroupLabels; oReadWorkbookContext.ReadVertexImages = true; oReadWorkbookContext.DefaultVertexImageSize = oGeneralUserSettings.VertexImageSize; oReadWorkbookContext.DefaultVertexShape = oGeneralUserSettings.VertexShape; // Populate the vertex worksheet. This isn't strictly necessary, but // it does enable the vertex worksheet to be updated when the user // edits vertex attributes in the NodeXL graph. (If the vertex // worksheet is missing, vertex attributes can still be edited in the // graph; the edits just won't get saved in the workbook.) oReadWorkbookContext.PopulateVertexWorksheet = true; WorkbookReader oWorkbookReader = new WorkbookReader(); m_oEdgeRowIDDictionary = null; m_oVertexRowIDDictionary = null; EnableGraphControls(false); try { // Read the workbook into a Graph object. IGraph oGraph = oWorkbookReader.ReadWorkbook( m_oWorkbook, oReadWorkbookContext); // Save the edge and vertex dictionaries that were created by // WorkbookReader. m_oEdgeRowIDDictionary = oReadWorkbookContext.EdgeRowIDDictionary; m_oVertexRowIDDictionary = oReadWorkbookContext.VertexRowIDDictionary; // Load the NodeXLControl with the resulting graph. oNodeXLControl.Graph = oGraph; // Collapse any groups that are supposed to be collapsed. CollapseOrExpandGroups(GetGroupNamesToCollapse(oGraph), true, false); // Enable tooltips in case tooltips were specified in the workbook. oNodeXLControl.ShowVertexToolTips = true; // If the dynamic filter dialog is open, read the dynamic filter // columns it filled in. if (m_oDynamicFilterDialog != null) { ReadDynamicFilterColumns(false); DynamicFilterHandler.ReadFilteredAlpha(m_oDynamicFilterDialog, oNodeXLControl, false); } oNodeXLControl.DrawGraph(bLayOutGraph); PerWorkbookSettings oPerWorkbookSettings = this.PerWorkbookSettings; UpdateAutoFillResultsLegend(oPerWorkbookSettings); UpdateDynamicFiltersLegend(); UpdateAxes(oPerWorkbookSettings); UpdateGraphHistory(oPerWorkbookSettings); } catch (Exception oException) { // If exceptions aren't caught here, Excel consumes them without // indicating that anything is wrong. This can result in the graph // controls remaining disabled, among other problems. ErrorUtil.OnException(oException); } finally { EnableGraphControls(true); } // Change the button text to indicate that if any of the buttons is // clicked again, the graph will be read again. tsbReadWorkbook.Text = msiContextReadWorkbook.Text = m_oRibbon.ReadWorkbookButtonText = "Refresh Graph"; }
//************************************************************************* // Constructor: TaskPane() // /// <summary> /// Initializes a new instance of the <see cref="TaskPane" /> class. /// </summary> /// /// <param name="thisWorkbook"> /// The workbook. /// </param> /// /// <param name="ribbon"> /// The application's ribbon. /// </param> //************************************************************************* public TaskPane ( ThisWorkbook thisWorkbook, Ribbon ribbon ) { Debug.Assert(thisWorkbook != null); Debug.Assert(ribbon != null); InitializeComponent(); InitializeSplashScreen(); m_oThisWorkbook = thisWorkbook; m_oWorkbook = thisWorkbook.InnerObject; m_oRibbon = ribbon; // The WpfImageUtil uses the screen DPI in its image handling. Graphics oGraphics = this.CreateGraphics(); WpfImageUtil.ScreenDpi = oGraphics.DpiX; oGraphics.Dispose(); // Get the template version from the per-workbook settings. PerWorkbookSettings oPerWorkbookSettings = this.PerWorkbookSettings; m_iTemplateVersion = oPerWorkbookSettings.TemplateVersion; m_bHandlingLayoutChanged = false; m_iEnableGraphControlsCount = 0; m_oEdgeRowIDDictionary = null; m_oVertexRowIDDictionary = null; m_oSaveGraphImageFileDialog = null; m_oDynamicFilterDialog = null; m_oReadabilityMetricsDialog = null; GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); LayoutUserSettings oLayoutUserSettings = new LayoutUserSettings(); LayoutType eInitialLayout = oLayoutUserSettings.Layout; // Instantiate an object that populates the tssbLayout // ToolStripSplitButton and handles its LayoutChanged event. m_oLayoutManagerForToolStripSplitButton = new LayoutManagerForToolStripSplitButton(); m_oLayoutManagerForToolStripSplitButton.AddItems(this.tssbLayout); m_oLayoutManagerForToolStripSplitButton.Layout = eInitialLayout; // Instantiate an object that populates the msiContextLayout // context menu and handles the Clicked events on the child menu items. m_oLayoutManagerForContextMenu = new LayoutManagerForMenu(); m_oLayoutManagerForContextMenu.AddMenuItems(this.msiContextLayout); m_oLayoutManagerForContextMenu.Layout = eInitialLayout; m_oLayoutManagerForToolStripSplitButton.LayoutChanged += new EventHandler( this.LayoutManagerForToolStripSplitButton_LayoutChanged); m_oLayoutManagerForContextMenu.LayoutChanged += new EventHandler(this.LayoutManagerForContextMenu_LayoutChanged); // The context menu for groups should be enabled only if the template // supports groups. MenuUtil.EnableToolStripMenuItems( m_iTemplateVersion > GroupManager.MinimumTemplateVersionForGroups, msiContextGroups); thisWorkbook.VisualAttributeSetInWorkbook += new EventHandler(ThisWorkbook_VisualAttributeSetInWorkbook); thisWorkbook.WorksheetContextMenuManager.RequestVertexCommandEnable += new RequestVertexCommandEnableEventHandler( WorksheetContextMenuManager_RequestVertexCommandEnable); thisWorkbook.WorksheetContextMenuManager.RequestEdgeCommandEnable += new RequestEdgeCommandEnableEventHandler( WorksheetContextMenuManager_RequestEdgeCommandEnable); m_oRibbon.Layout = eInitialLayout; CreateNodeXLControl(); CreateGraphZoomAndScaleControl(); ApplyGeneralUserSettings(oGeneralUserSettings); ApplyLayoutUserSettings(oLayoutUserSettings); // Don't show the legend now. If it is supposed to be shown, the // Ribbon, which is responsible for maintaining the visibility of the // legend, will send a NoParamCommand.ShowGraphLegend command to the // TaskPane later. this.ShowGraphLegend = false; UpdateAutoFillResultsLegend(oPerWorkbookSettings); UpdateDynamicFiltersLegend(); UpdateAxes(oPerWorkbookSettings); CommandDispatcher.CommandSent += new RunCommandEventHandler(this.CommandDispatcher_CommandSent); AssertValid(); }
ApplyGeneralUserSettings ( GeneralUserSettings oGeneralUserSettings ) { Debug.Assert(oGeneralUserSettings != null); AssertValid(); oGeneralUserSettings.TransferToNodeXLWithAxesControl( m_oNodeXLWithAxesControl); }
EditGeneralUserSettings() { AssertValid(); if (oNodeXLControl.IsLayingOutGraph) { return; } GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); GeneralUserSettingsDialog oGeneralUserSettingsDialog = new GeneralUserSettingsDialog(oGeneralUserSettings, m_oWorkbook); if (oGeneralUserSettingsDialog.ShowDialog() == DialogResult.OK) { oGeneralUserSettings.Save(); ApplyGeneralUserSettings(oGeneralUserSettings); oNodeXLControl.DrawGraph(); } }
LoadUserSettings() { AssertValid(); GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); this.ReadVertexLabels = oGeneralUserSettings.ReadVertexLabels; this.ReadEdgeLabels = oGeneralUserSettings.ReadEdgeLabels; this.ReadGroupLabels = oGeneralUserSettings.ReadGroupLabels; this.ShowGraphLegend = oGeneralUserSettings.ShowGraphLegend; this.ShowGraphAxes = oGeneralUserSettings.ShowGraphAxes; }
protected void ShowGraph(Boolean bLayOutGraph) { AssertValid(); if (m_oNodeXLControl.IsLayingOutGraph) { return; } GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); oGeneralUserSettings.NotUseWorkbookSettings(); LayoutUserSettings oLayoutUserSettings = new LayoutUserSettings(); oLayoutUserSettings.NotUseWorkbookSettings(); ApplyGeneralUserSettings(oGeneralUserSettings); ApplyLayoutUserSettings(oLayoutUserSettings); EnableGraphControls(false); try { IGraphAdapter oGraphAdapter = new SimpleGraphAdapter(); m_oNodeXLControl.Graph = oGraphAdapter.LoadGraphFromFile( "..\\..\\SampleGraph.txt"); //IGraph oGraph = oWorkbookReader.ReadWorkbook( // m_oWorkbook, oReadWorkbookContext); // Load the NodeXLControl with the resulting graph. //m_oNodeXLControl.Graph = oGraph; // Collapse any groups that are supposed to be collapsed. //CollapseOrExpandGroups(GetGroupNamesToCollapse(oGraph), true, // false); // Enable tooltips in case tooltips were specified in the workbook. m_oNodeXLControl.ShowVertexToolTips = true; // If the dynamic filter dialog is open, read the dynamic filter // columns it filled in. m_oNodeXLControl.DrawGraph(bLayOutGraph); } catch (Exception oException) { // If exceptions aren't caught here, Excel consumes them without // indicating that anything is wrong. This can result in the graph // controls remaining disabled, among other problems. ErrorUtil.OnException(oException); } finally { EnableGraphControls(true); } // Change the button text to indicate that if any of the buttons is // clicked again, the graph will be read again. tsbShowGraph.Text = "Refresh Graph"; }
//************************************************************************* // Constructor: GeneralUserSettingsDialog() // /// <summary> /// Initializes a new instance of the <see /// cref="GeneralUserSettingsDialog" /> class. /// </summary> /// /// <param name="generalUserSettings"> /// The object being edited. /// </param> /// /// <param name="workbook"> /// Workbook containing the graph data. /// </param> //************************************************************************* public GeneralUserSettingsDialog ( GeneralUserSettings generalUserSettings, Microsoft.Office.Interop.Excel.Workbook workbook ) { Debug.Assert(generalUserSettings != null); Debug.Assert(workbook != null); generalUserSettings.AssertValid(); m_oGeneralUserSettings = generalUserSettings; m_oWorkbook = workbook; m_oAxisFont = m_oGeneralUserSettings.AxisFont; m_oLabelUserSettings = m_oGeneralUserSettings.LabelUserSettings; m_oOpenFileDialog = new OpenFileDialog(); m_oOpenFileDialog.Filter = "All files (*.*)|*.*|" + SaveableImageFormats.Filter ; m_oOpenFileDialog.Title = "Browse for Background Image"; // Instantiate an object that saves and retrieves the position of this // dialog. Note that the object automatically saves the settings when // the form closes. m_oGeneralUserSettingsDialogUserSettings = new GeneralUserSettingsDialogUserSettings(this); InitializeComponent(); nudEdgeWidth.Minimum = (Decimal)EdgeWidthConverter.MinimumWidthWorkbook; nudEdgeWidth.Maximum = (Decimal)EdgeWidthConverter.MaximumWidthWorkbook; nudRelativeArrowSize.Minimum = (Decimal)EdgeDrawer.MinimumRelativeArrowSize; nudRelativeArrowSize.Maximum = (Decimal)EdgeDrawer.MaximumRelativeArrowSize; cbxEdgeBezierDisplacementFactor.PopulateWithObjectsAndText( 0.1, "Low", 0.2, "Medium", 0.6, "High", 1.2, "Very High" ); cbxEdgeBundlerStraightening.PopulateWithObjectsAndText( 0.15F, "Tight", 0.40F, "Medium", 0.60F, "Loose" ); nudVertexRadius.Minimum = nudVertexImageSize.Minimum = (Decimal)VertexRadiusConverter.MinimumRadiusWorkbook; nudVertexRadius.Maximum = nudVertexImageSize.Maximum = (Decimal)VertexRadiusConverter.MaximumRadiusWorkbook; (new VertexShapeConverter()).PopulateComboBox(cbxVertexShape, false); nudVertexAlpha.Minimum = nudEdgeAlpha.Minimum = (Decimal)AlphaConverter.MinimumAlphaWorkbook; nudVertexAlpha.Maximum = nudEdgeAlpha.Maximum = (Decimal)AlphaConverter.MaximumAlphaWorkbook; nudVertexRelativeOuterGlowSize.Minimum = (Decimal)VertexDrawer.MinimumRelativeOuterGlowSize; nudVertexRelativeOuterGlowSize.Maximum = (Decimal)VertexDrawer.MaximumRelativeOuterGlowSize; DoDataExchange(false); AssertValid(); }
CreateGraphDrawingContext ( Rectangle oSubgraphRectangle, GeneralUserSettings oGeneralUserSettings ) { Debug.Assert(oGeneralUserSettings != null); AssertValid(); return ( new GraphDrawingContext( WpfGraphicsUtil.RectangleToRect(oSubgraphRectangle), Margin, WpfGraphicsUtil.ColorToWpfColor(oGeneralUserSettings.BackColor) ) ); }
CreateNodeXLVisual ( GeneralUserSettings oGeneralUserSettings ) { Debug.Assert(oGeneralUserSettings != null); AssertValid(); NodeXLVisual oNodeXLVisual = new NodeXLVisual(); GraphDrawer oGraphDrawer = oNodeXLVisual.GraphDrawer; VertexDrawer oVertexDrawer = oGraphDrawer.VertexDrawer; EdgeDrawer oEdgeDrawer = oGraphDrawer.EdgeDrawer; oGeneralUserSettings.TransferToGraphDrawer(oGraphDrawer); // Override some of the user's settings. oVertexDrawer.Shape = VertexShape.Disk; oVertexDrawer.Radius = 2.0; oEdgeDrawer.Width = 1; return (oNodeXLVisual); }
CreateSubgraphImagesAsync ( IGraph graph, ICollection<IVertex> selectedVertices, Decimal levels, Boolean saveToFolder, String folder, Size imageSizePx, ImageFormat imageFormat, Boolean createThumbnails, Size thumbnailSizePx, Boolean selectedVerticesOnly, Boolean selectVertex, Boolean selectIncidentEdges, GeneralUserSettings generalUserSettings, LayoutUserSettings layoutUserSettings ) { Debug.Assert(graph != null); Debug.Assert(selectedVertices != null); Debug.Assert(levels >= 0); Debug.Assert(Decimal.Remainder(levels, 0.5M) == 0M); Debug.Assert( !saveToFolder || !String.IsNullOrEmpty(folder) ); Debug.Assert( !saveToFolder || imageSizePx.Width > 0); Debug.Assert( !saveToFolder || imageSizePx.Height > 0); Debug.Assert( !createThumbnails || thumbnailSizePx.Width > 0); Debug.Assert( !createThumbnails || thumbnailSizePx.Height > 0); Debug.Assert(generalUserSettings != null); AssertValid(); const String MethodName = "CreateSubgraphImagesAsync"; if (this.IsBusy) { throw new InvalidOperationException( String.Format( "{0}:{1}: An asynchronous operation is already in progress." , this.ClassName, MethodName ) ); } // Wrap the arguments in an object that can be passed to // BackgroundWorker.RunWorkerAsync(). CreateSubgraphImagesAsyncArgs oCreateSubgraphImagesAsyncArgs = new CreateSubgraphImagesAsyncArgs(); oCreateSubgraphImagesAsyncArgs.Graph = graph; oCreateSubgraphImagesAsyncArgs.SelectedVertices = selectedVertices; oCreateSubgraphImagesAsyncArgs.Levels = levels; oCreateSubgraphImagesAsyncArgs.SaveToFolder = saveToFolder; oCreateSubgraphImagesAsyncArgs.Folder = folder; oCreateSubgraphImagesAsyncArgs.ImageSizePx = imageSizePx; oCreateSubgraphImagesAsyncArgs.ImageFormat = imageFormat; oCreateSubgraphImagesAsyncArgs.CreateThumbnails = createThumbnails; oCreateSubgraphImagesAsyncArgs.ThumbnailSizePx = thumbnailSizePx; oCreateSubgraphImagesAsyncArgs.SelectedVerticesOnly = selectedVerticesOnly; oCreateSubgraphImagesAsyncArgs.SelectVertex = selectVertex; oCreateSubgraphImagesAsyncArgs.SelectIncidentEdges = selectIncidentEdges; oCreateSubgraphImagesAsyncArgs.GeneralUserSettings = generalUserSettings; oCreateSubgraphImagesAsyncArgs.Layout = CreateLayout(layoutUserSettings); oCreateSubgraphImagesAsyncArgs.Layout.Margin = Margin; // Note: the NodeXLVisual object can't be created yet, because it must // be created on the same thread that uses it. It will get created by // BackgroundWorker_DoWork(). oCreateSubgraphImagesAsyncArgs.NodeXLVisual = null; // Create a BackgroundWorker and handle its events. m_oBackgroundWorker = new BackgroundWorker(); m_oBackgroundWorker.WorkerReportsProgress = true; m_oBackgroundWorker.WorkerSupportsCancellation = true; m_oBackgroundWorker.DoWork += new DoWorkEventHandler( BackgroundWorker_DoWork); m_oBackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(BackgroundWorker_ProgressChanged); m_oBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler( BackgroundWorker_RunWorkerCompleted); m_oBackgroundWorker.RunWorkerAsync(oCreateSubgraphImagesAsyncArgs); }
SaveUserSettings() { AssertValid(); GeneralUserSettings oGeneralUserSettings = new GeneralUserSettings(); oGeneralUserSettings.ReadVertexLabels = this.ReadVertexLabels; oGeneralUserSettings.ReadEdgeLabels = this.ReadEdgeLabels; oGeneralUserSettings.ReadGroupLabels = this.ReadGroupLabels; oGeneralUserSettings.ShowGraphLegend = this.ShowGraphLegend; oGeneralUserSettings.ShowGraphAxes = this.ShowGraphAxes; oGeneralUserSettings.Save(); }
btnOptions_Click ( object sender, EventArgs e ) { AssertValid(); // These are shared by several cases below. Form oUserSettingsDialog = null; NodeXLApplicationSettingsBase oUserSettings = null; switch ( (AutomationTasks)clbTasksToRun.SelectedValue ) { case AutomationTasks.MergeDuplicateEdges: oUserSettings = new MergeDuplicateEdgesUserSettings(); oUserSettingsDialog = new MergeDuplicateEdgesUserSettingsDialog( MergeDuplicateEdgesUserSettingsDialog.DialogMode.EditOnly, (MergeDuplicateEdgesUserSettings)oUserSettings, m_oThisWorkbook.InnerObject); break; case AutomationTasks.CalculateClusters: oUserSettings = new ClusterUserSettings(); oUserSettingsDialog = new ClusterUserSettingsDialog( ClusterUserSettingsDialog.DialogMode.EditOnly, (ClusterUserSettings)oUserSettings); break; case AutomationTasks.CalculateGraphMetrics: ( new GraphMetricsDialog( GraphMetricsDialog.DialogMode.EditOnly, m_oThisWorkbook.InnerObject) ).ShowDialog(); break; case AutomationTasks.AutoFillWorkbook: // ThisWorkbook manages the modeless AutoFillWorkbookDialog, so // tell ThisWorkbook to open the dialog. m_oThisWorkbook.AutoFillWorkbook( AutoFillWorkbookDialog.DialogMode.EditOnly); break; case AutomationTasks.CreateSubgraphImages: ( new CreateSubgraphImagesDialog( CreateSubgraphImagesDialog.DialogMode.EditOnly, null, null) ).ShowDialog(); break; case AutomationTasks.ReadWorkbook: oUserSettings = new GeneralUserSettings(); oUserSettingsDialog = new GeneralUserSettingsDialog( (GeneralUserSettings)oUserSettings, m_oThisWorkbook.InnerObject); break; case AutomationTasks.SaveWorkbookIfNeverSaved: EditFolderToSaveWorkbookTo(); break; case AutomationTasks.SaveGraphImageFile: oUserSettings = new AutomatedGraphImageUserSettings(); oUserSettingsDialog = new AutomatedGraphImageUserSettingsDialog( (AutomatedGraphImageUserSettings)oUserSettings); break; case AutomationTasks.ExportToNodeXLGraphGallery: ( new ExportToNodeXLGraphGalleryDialog( ExportToNodeXLGraphGalleryDialog.DialogMode.EditOnly, m_oThisWorkbook.InnerObject, null) ).ShowDialog(); break; case AutomationTasks.ExportToEmail: ( new ExportToEmailDialog( ExportToEmailDialog.DialogMode.EditOnly, m_oThisWorkbook.InnerObject, null) ).ShowDialog(); break; default: Debug.Assert(false); break; } if (oUserSettingsDialog != null) { Debug.Assert(oUserSettings != null); if (oUserSettingsDialog.ShowDialog() == DialogResult.OK) { oUserSettings.Save(); } } }
//************************************************************************* // Constructor: GeneralUserSettingsDialog() // /// <summary> /// Initializes a new instance of the <see /// cref="GeneralUserSettingsDialog" /> class. /// </summary> /// /// <param name="generalUserSettings"> /// The object being edited. /// </param> /// /// <param name="workbook"> /// Workbook containing the graph data. /// </param> //************************************************************************* public GeneralUserSettingsDialog ( GeneralUserSettings generalUserSettings, Microsoft.Office.Interop.Excel.Workbook workbook ) { Debug.Assert(generalUserSettings != null); Debug.Assert(workbook != null); generalUserSettings.AssertValid(); m_oGeneralUserSettings = generalUserSettings; m_oWorkbook = workbook; m_oAxisFont = m_oGeneralUserSettings.AxisFont; m_oLabelUserSettings = m_oGeneralUserSettings.LabelUserSettings; m_oOpenFileDialog = new OpenFileDialog(); m_oOpenFileDialog.Filter = "All files (*.*)|*.*|" + SaveableImageFormats.Filter ; m_oOpenFileDialog.Title = "Browse for Background Image"; // Instantiate an object that saves and retrieves the position of this // dialog. Note that the object automatically saves the settings when // the form closes. m_oGeneralUserSettingsDialogUserSettings = new GeneralUserSettingsDialogUserSettings(this); InitializeComponent(); nudEdgeWidth.Minimum = (Decimal)EdgeWidthConverter.MinimumWidthWorkbook; nudEdgeWidth.Maximum = (Decimal)EdgeWidthConverter.MaximumWidthWorkbook; nudRelativeArrowSize.Minimum = (Decimal)EdgeDrawer.MinimumRelativeArrowSize; nudRelativeArrowSize.Maximum = (Decimal)EdgeDrawer.MaximumRelativeArrowSize; cbxEdgeBezierDisplacementFactor.PopulateWithObjectsAndText( 0.1, "Low", 0.2, "Medium", 0.6, "High", 1.2, "Very High" ); cbxEdgeBundlerStraightening.PopulateWithObjectsAndText( 0.15F, "Tight", 0.40F, "Medium", 0.60F, "Loose" ); nudVertexRadius.Minimum = nudVertexImageSize.Minimum = (Decimal)VertexRadiusConverter.MinimumRadiusWorkbook; nudVertexRadius.Maximum = nudVertexImageSize.Maximum = (Decimal)VertexRadiusConverter.MaximumRadiusWorkbook; ( new VertexShapeConverter() ).PopulateComboBox(cbxVertexShape, false); nudVertexAlpha.Minimum = nudEdgeAlpha.Minimum = (Decimal)AlphaConverter.MinimumAlphaWorkbook; nudVertexAlpha.Maximum = nudEdgeAlpha.Maximum = (Decimal)AlphaConverter.MaximumAlphaWorkbook; nudVertexRelativeOuterGlowSize.Minimum = (Decimal)VertexDrawer.MinimumRelativeOuterGlowSize; nudVertexRelativeOuterGlowSize.Maximum = (Decimal)VertexDrawer.MaximumRelativeOuterGlowSize; DoDataExchange(false); AssertValid(); }
btnOptions_Click ( object sender, EventArgs e ) { AssertValid(); // These are shared by several cases below. Form oUserSettingsDialog = null; NodeXLApplicationSettingsBase oUserSettings = null; switch ((AutomationTasks)clbTasksToRun.SelectedValue) { case AutomationTasks.MergeDuplicateEdges: oUserSettings = new MergeDuplicateEdgesUserSettings(); oUserSettingsDialog = new MergeDuplicateEdgesUserSettingsDialog( MergeDuplicateEdgesUserSettingsDialog.DialogMode.EditOnly, (MergeDuplicateEdgesUserSettings)oUserSettings, m_oThisWorkbook.InnerObject); break; case AutomationTasks.CalculateClusters: oUserSettings = new ClusterUserSettings(); oUserSettingsDialog = new ClusterUserSettingsDialog( ClusterUserSettingsDialog.DialogMode.EditOnly, (ClusterUserSettings)oUserSettings); break; case AutomationTasks.CalculateGraphMetrics: (new GraphMetricsDialog( GraphMetricsDialog.DialogMode.EditOnly, m_oThisWorkbook.InnerObject)).ShowDialog(); break; case AutomationTasks.AutoFillWorkbook: // ThisWorkbook manages the modeless AutoFillWorkbookDialog, so // tell ThisWorkbook to open the dialog. m_oThisWorkbook.AutoFillWorkbook( AutoFillWorkbookDialog.DialogMode.EditOnly); break; case AutomationTasks.CreateSubgraphImages: (new CreateSubgraphImagesDialog( CreateSubgraphImagesDialog.DialogMode.EditOnly, null, null)).ShowDialog(); break; case AutomationTasks.ReadWorkbook: oUserSettings = new GeneralUserSettings(); oUserSettingsDialog = new GeneralUserSettingsDialog( (GeneralUserSettings)oUserSettings, m_oThisWorkbook.InnerObject); break; case AutomationTasks.SaveWorkbookIfNeverSaved: EditFolderToSaveWorkbookTo(); break; case AutomationTasks.SaveGraphImageFile: oUserSettings = new AutomatedGraphImageUserSettings(); oUserSettingsDialog = new AutomatedGraphImageUserSettingsDialog( (AutomatedGraphImageUserSettings)oUserSettings); break; case AutomationTasks.ExportToNodeXLGraphGallery: (new ExportToNodeXLGraphGalleryDialog( ExportToNodeXLGraphGalleryDialog.DialogMode.EditOnly, m_oThisWorkbook.InnerObject, null)).ShowDialog(); break; case AutomationTasks.ExportToEmail: (new ExportToEmailDialog( ExportToEmailDialog.DialogMode.EditOnly, m_oThisWorkbook.InnerObject, null)).ShowDialog(); break; default: Debug.Assert(false); break; } if (oUserSettingsDialog != null) { Debug.Assert(oUserSettings != null); if (oUserSettingsDialog.ShowDialog() == DialogResult.OK) { oUserSettings.Save(); } } }