diff --git a/CHANGELOG.md b/CHANGELOG.md index 29a328d..cb9545a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,12 @@ * (Add) Layer issue Z map paired with layer navigation tracker bar * (Change) Shortcuts: + and - to go up and down on layers were change to W and S keys. Reason: + and - are bound to zoom and can lead to problems * (Upgrade) OpenCV from 4.2 to 4.3 +* (Remove) Menu - Tools - Layer Removal and Layer clone for redudancy they now home at layer preview toolbar under "Actions" dropdown button * (Fix) CWS: Add missing Platform X,Y,Z size when converting from SL1 * (Fix) CWS: Invert XY resolution when converting from SL1 -* (Fix) Layer Preview: When selecting issues using SHIFT in the layer preview, the selected issue doesn't update in the issue list until after shift is released +* (Fix) Layer Preview: When selecting issues using SHIFT in the layer preview, the selected issue doesn't update in the issue list until after shift is released and slow operation +* (Fix) PrusaSlicer Printer: Kelant S400 Y Resolution from 1440 to 1600 and default slice settings, inverted XY resolution +* (Fix) Layer Clone window title was set to Pattern ## 04/08/2020 - v0.7.0.0 diff --git a/UVtools.GUI/Controls/TrackBarHighlight.cs b/UVtools.GUI/Controls/TrackBarHighlight.cs index 88e32da..cf466bc 100644 --- a/UVtools.GUI/Controls/TrackBarHighlight.cs +++ b/UVtools.GUI/Controls/TrackBarHighlight.cs @@ -39,7 +39,7 @@ namespace UVtools.GUI.Controls public TrackBarHighlight() { - SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true); + //SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true); } /*protected override void OnInvalidated(InvalidateEventArgs e) diff --git a/UVtools.GUI/Forms/FrmToolLayerClone.Designer.cs b/UVtools.GUI/Forms/FrmToolLayerClone.Designer.cs index 9492692..30858a4 100644 --- a/UVtools.GUI/Forms/FrmToolLayerClone.Designer.cs +++ b/UVtools.GUI/Forms/FrmToolLayerClone.Designer.cs @@ -282,7 +282,7 @@ namespace UVtools.GUI.Forms this.Name = "FrmToolLayerClone"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Pattern"; + this.Text = "Clone layer"; this.TopMost = true; ((System.ComponentModel.ISupportInitialize)(this.nmLayerRangeStart)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nmLayerRangeEnd)).EndInit(); diff --git a/UVtools.GUI/FrmMain.Designer.cs b/UVtools.GUI/FrmMain.Designer.cs index 0d93cc0..825a354 100644 --- a/UVtools.GUI/FrmMain.Designer.cs +++ b/UVtools.GUI/FrmMain.Designer.cs @@ -70,27 +70,29 @@ namespace UVtools.GUI this.scCenter = new System.Windows.Forms.SplitContainer(); this.pbLayer = new Cyotek.Windows.Forms.ImageBox(); this.tsLayer = new System.Windows.Forms.ToolStrip(); - this.tsLayerImageExport = new System.Windows.Forms.ToolStripSplitButton(); - this.tsLayerImageExportFile = new System.Windows.Forms.ToolStripMenuItem(); - this.tsLayerImageExportClipboard = new System.Windows.Forms.ToolStripMenuItem(); - this.tsLayerImageRotate = new System.Windows.Forms.ToolStripButton(); + this.btnLayerImageExport = new System.Windows.Forms.ToolStripSplitButton(); + this.btnLayerImageExportFile = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageExportClipboard = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageRotate = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImageLayerDifference = new System.Windows.Forms.ToolStripButton(); + this.btnLayerImageLayerDifference = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImageHighlightIssues = new System.Windows.Forms.ToolStripButton(); + this.btnLayerImageHighlightIssues = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImageShowCrosshairs = new System.Windows.Forms.ToolStripButton(); + this.btnLayerImageShowCrosshairs = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator25 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImageLayerOutline = new System.Windows.Forms.ToolStripSplitButton(); - this.tsLayerImageLayerOutlinePrintVolumeBounds = new System.Windows.Forms.ToolStripMenuItem(); - this.tsLayerImageLayerOutlineLayerBounds = new System.Windows.Forms.ToolStripMenuItem(); - this.tsLayerImageLayerOutlineHollowAreas = new System.Windows.Forms.ToolStripMenuItem(); - this.tsLayerImageLayerOutlineEdgeDetection = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageLayerOutline = new System.Windows.Forms.ToolStripSplitButton(); + this.btnLayerImageLayerOutlinePrintVolumeBounds = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageLayerOutlineLayerBounds = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageLayerOutlineHollowAreas = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageLayerOutlineEdgeDetection = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImagePixelEdit = new System.Windows.Forms.ToolStripButton(); + this.btnLayerImagePixelEdit = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerRmove = new System.Windows.Forms.ToolStripButton(); - this.tsLayerClone = new System.Windows.Forms.ToolStripButton(); + this.btnLayerImageActions = new System.Windows.Forms.ToolStripSplitButton(); + this.btnLayerImageActionImport = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageActionClone = new System.Windows.Forms.ToolStripMenuItem(); + this.btnLayerImageActionRemove = new System.Windows.Forms.ToolStripMenuItem(); this.tsLayerInfo = new System.Windows.Forms.ToolStrip(); this.tsLayerPreviewTime = new System.Windows.Forms.ToolStripLabel(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); @@ -535,6 +537,7 @@ namespace UVtools.GUI this.menuToolsLayerClone.Name = "menuToolsLayerClone"; this.menuToolsLayerClone.Size = new System.Drawing.Size(261, 22); this.menuToolsLayerClone.Text = "Layer &Clone"; + this.menuToolsLayerClone.Visible = false; this.menuToolsLayerClone.Click += new System.EventHandler(this.EventClick); // // menuToolsLayerRemoval @@ -544,6 +547,7 @@ namespace UVtools.GUI this.menuToolsLayerRemoval.Name = "menuToolsLayerRemoval"; this.menuToolsLayerRemoval.Size = new System.Drawing.Size(261, 22); this.menuToolsLayerRemoval.Text = "Layer Re&moval"; + this.menuToolsLayerRemoval.Visible = false; this.menuToolsLayerRemoval.Click += new System.EventHandler(this.EventClick); // // menuToolsPattern @@ -704,191 +708,190 @@ namespace UVtools.GUI // this.tsLayer.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.tsLayer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsLayerImageExport, - this.tsLayerImageRotate, + this.btnLayerImageExport, + this.btnLayerImageRotate, this.toolStripSeparator5, - this.tsLayerImageLayerDifference, + this.btnLayerImageLayerDifference, this.toolStripSeparator14, - this.tsLayerImageHighlightIssues, + this.btnLayerImageHighlightIssues, this.toolStripSeparator7, - this.tsLayerImageShowCrosshairs, + this.btnLayerImageShowCrosshairs, this.toolStripSeparator25, - this.tsLayerImageLayerOutline, + this.btnLayerImageLayerOutline, this.toolStripSeparator9, - this.tsLayerImagePixelEdit, + this.btnLayerImagePixelEdit, this.toolStripSeparator18, - this.tsLayerRmove, - this.tsLayerClone}); + this.btnLayerImageActions}); this.tsLayer.Location = new System.Drawing.Point(0, 0); this.tsLayer.Name = "tsLayer"; this.tsLayer.Size = new System.Drawing.Size(1176, 25); this.tsLayer.TabIndex = 6; this.tsLayer.Text = "Layer Menu"; // - // tsLayerImageExport + // btnLayerImageExport // - this.tsLayerImageExport.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.tsLayerImageExport.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.tsLayerImageExport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsLayerImageExportFile, - this.tsLayerImageExportClipboard}); - this.tsLayerImageExport.Image = global::UVtools.GUI.Properties.Resources.Save_16x16; - this.tsLayerImageExport.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImageExport.Name = "tsLayerImageExport"; - this.tsLayerImageExport.Size = new System.Drawing.Size(32, 22); - this.tsLayerImageExport.Text = "Save to"; - this.tsLayerImageExport.ToolTipText = "Save layer image to a file or clipboard"; - this.tsLayerImageExport.ButtonClick += new System.EventHandler(this.EventClick); + this.btnLayerImageExport.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btnLayerImageExport.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btnLayerImageExport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnLayerImageExportFile, + this.btnLayerImageExportClipboard}); + this.btnLayerImageExport.Image = global::UVtools.GUI.Properties.Resources.Save_16x16; + this.btnLayerImageExport.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImageExport.Name = "btnLayerImageExport"; + this.btnLayerImageExport.Size = new System.Drawing.Size(32, 22); + this.btnLayerImageExport.Text = "Save to"; + this.btnLayerImageExport.ToolTipText = "Save layer image to a file or clipboard"; + this.btnLayerImageExport.ButtonClick += new System.EventHandler(this.EventClick); // - // tsLayerImageExportFile + // btnLayerImageExportFile // - this.tsLayerImageExportFile.Image = global::UVtools.GUI.Properties.Resources.file_image_16x16; - this.tsLayerImageExportFile.Name = "tsLayerImageExportFile"; - this.tsLayerImageExportFile.Size = new System.Drawing.Size(141, 22); - this.tsLayerImageExportFile.Text = "To &File"; - this.tsLayerImageExportFile.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageExportFile.Image = global::UVtools.GUI.Properties.Resources.file_image_16x16; + this.btnLayerImageExportFile.Name = "btnLayerImageExportFile"; + this.btnLayerImageExportFile.Size = new System.Drawing.Size(141, 22); + this.btnLayerImageExportFile.Text = "To &File"; + this.btnLayerImageExportFile.Click += new System.EventHandler(this.EventClick); // - // tsLayerImageExportClipboard + // btnLayerImageExportClipboard // - this.tsLayerImageExportClipboard.Image = global::UVtools.GUI.Properties.Resources.clipboard_16x16; - this.tsLayerImageExportClipboard.Name = "tsLayerImageExportClipboard"; - this.tsLayerImageExportClipboard.Size = new System.Drawing.Size(141, 22); - this.tsLayerImageExportClipboard.Text = "To &Clipboard"; - this.tsLayerImageExportClipboard.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageExportClipboard.Image = global::UVtools.GUI.Properties.Resources.clipboard_16x16; + this.btnLayerImageExportClipboard.Name = "btnLayerImageExportClipboard"; + this.btnLayerImageExportClipboard.Size = new System.Drawing.Size(141, 22); + this.btnLayerImageExportClipboard.Text = "To &Clipboard"; + this.btnLayerImageExportClipboard.Click += new System.EventHandler(this.EventClick); // - // tsLayerImageRotate + // btnLayerImageRotate // - this.tsLayerImageRotate.Checked = true; - this.tsLayerImageRotate.CheckOnClick = true; - this.tsLayerImageRotate.CheckState = System.Windows.Forms.CheckState.Checked; - this.tsLayerImageRotate.Image = global::UVtools.GUI.Properties.Resources.Rotate_16x16; - this.tsLayerImageRotate.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImageRotate.Name = "tsLayerImageRotate"; - this.tsLayerImageRotate.Size = new System.Drawing.Size(117, 22); - this.tsLayerImageRotate.Text = "&Rotate Image 90º"; - this.tsLayerImageRotate.ToolTipText = "Auto rotate layer preview image at 90º (This can slow down the layer preview) [CT" + + this.btnLayerImageRotate.Checked = true; + this.btnLayerImageRotate.CheckOnClick = true; + this.btnLayerImageRotate.CheckState = System.Windows.Forms.CheckState.Checked; + this.btnLayerImageRotate.Image = global::UVtools.GUI.Properties.Resources.Rotate_16x16; + this.btnLayerImageRotate.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImageRotate.Name = "btnLayerImageRotate"; + this.btnLayerImageRotate.Size = new System.Drawing.Size(117, 22); + this.btnLayerImageRotate.Text = "&Rotate Image 90º"; + this.btnLayerImageRotate.ToolTipText = "Auto rotate layer preview image at 90º (This can slow down the layer preview) [CT" + "RL+R]"; - this.tsLayerImageRotate.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageRotate.Click += new System.EventHandler(this.EventClick); // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25); // - // tsLayerImageLayerDifference + // btnLayerImageLayerDifference // - this.tsLayerImageLayerDifference.CheckOnClick = true; - this.tsLayerImageLayerDifference.Image = global::UVtools.GUI.Properties.Resources.layers_16x16; - this.tsLayerImageLayerDifference.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImageLayerDifference.Name = "tsLayerImageLayerDifference"; - this.tsLayerImageLayerDifference.Size = new System.Drawing.Size(81, 22); - this.tsLayerImageLayerDifference.Text = "&Difference"; - this.tsLayerImageLayerDifference.ToolTipText = "Show layer differences where daker pixels were also present on previous layer and" + + this.btnLayerImageLayerDifference.CheckOnClick = true; + this.btnLayerImageLayerDifference.Image = global::UVtools.GUI.Properties.Resources.layers_16x16; + this.btnLayerImageLayerDifference.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImageLayerDifference.Name = "btnLayerImageLayerDifference"; + this.btnLayerImageLayerDifference.Size = new System.Drawing.Size(81, 22); + this.btnLayerImageLayerDifference.Text = "&Difference"; + this.btnLayerImageLayerDifference.ToolTipText = "Show layer differences where daker pixels were also present on previous layer and" + " the white pixels the difference between previous and current layer."; - this.tsLayerImageLayerDifference.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageLayerDifference.Click += new System.EventHandler(this.EventClick); // // toolStripSeparator14 // this.toolStripSeparator14.Name = "toolStripSeparator14"; this.toolStripSeparator14.Size = new System.Drawing.Size(6, 25); // - // tsLayerImageHighlightIssues + // btnLayerImageHighlightIssues // - this.tsLayerImageHighlightIssues.Checked = true; - this.tsLayerImageHighlightIssues.CheckOnClick = true; - this.tsLayerImageHighlightIssues.CheckState = System.Windows.Forms.CheckState.Checked; - this.tsLayerImageHighlightIssues.Image = global::UVtools.GUI.Properties.Resources.warning_16x16; - this.tsLayerImageHighlightIssues.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImageHighlightIssues.Name = "tsLayerImageHighlightIssues"; - this.tsLayerImageHighlightIssues.Size = new System.Drawing.Size(58, 22); - this.tsLayerImageHighlightIssues.Text = "&Issues"; - this.tsLayerImageHighlightIssues.ToolTipText = "Highlight Issues on current layer.\r\nValid only if Issues are calculated."; - this.tsLayerImageHighlightIssues.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageHighlightIssues.Checked = true; + this.btnLayerImageHighlightIssues.CheckOnClick = true; + this.btnLayerImageHighlightIssues.CheckState = System.Windows.Forms.CheckState.Checked; + this.btnLayerImageHighlightIssues.Image = global::UVtools.GUI.Properties.Resources.warning_16x16; + this.btnLayerImageHighlightIssues.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImageHighlightIssues.Name = "btnLayerImageHighlightIssues"; + this.btnLayerImageHighlightIssues.Size = new System.Drawing.Size(58, 22); + this.btnLayerImageHighlightIssues.Text = "&Issues"; + this.btnLayerImageHighlightIssues.ToolTipText = "Highlight Issues on current layer.\r\nValid only if Issues are calculated."; + this.btnLayerImageHighlightIssues.Click += new System.EventHandler(this.EventClick); // // toolStripSeparator7 // this.toolStripSeparator7.Name = "toolStripSeparator7"; this.toolStripSeparator7.Size = new System.Drawing.Size(6, 25); // - // tsLayerImageShowCrosshairs + // btnLayerImageShowCrosshairs // - this.tsLayerImageShowCrosshairs.Checked = true; - this.tsLayerImageShowCrosshairs.CheckOnClick = true; - this.tsLayerImageShowCrosshairs.CheckState = System.Windows.Forms.CheckState.Checked; - this.tsLayerImageShowCrosshairs.Image = global::UVtools.GUI.Properties.Resources.crosshairs_16x16; - this.tsLayerImageShowCrosshairs.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImageShowCrosshairs.Name = "tsLayerImageShowCrosshairs"; - this.tsLayerImageShowCrosshairs.Size = new System.Drawing.Size(81, 22); - this.tsLayerImageShowCrosshairs.Text = "&Crosshairs"; - this.tsLayerImageShowCrosshairs.ToolTipText = "Show crosshairs for selected issues on the current layer."; - this.tsLayerImageShowCrosshairs.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageShowCrosshairs.Checked = true; + this.btnLayerImageShowCrosshairs.CheckOnClick = true; + this.btnLayerImageShowCrosshairs.CheckState = System.Windows.Forms.CheckState.Checked; + this.btnLayerImageShowCrosshairs.Image = global::UVtools.GUI.Properties.Resources.crosshairs_16x16; + this.btnLayerImageShowCrosshairs.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImageShowCrosshairs.Name = "btnLayerImageShowCrosshairs"; + this.btnLayerImageShowCrosshairs.Size = new System.Drawing.Size(81, 22); + this.btnLayerImageShowCrosshairs.Text = "&Crosshairs"; + this.btnLayerImageShowCrosshairs.ToolTipText = "Show crosshairs for selected issues on the current layer."; + this.btnLayerImageShowCrosshairs.Click += new System.EventHandler(this.EventClick); // // toolStripSeparator25 // this.toolStripSeparator25.Name = "toolStripSeparator25"; this.toolStripSeparator25.Size = new System.Drawing.Size(6, 25); // - // tsLayerImageLayerOutline + // btnLayerImageLayerOutline // - this.tsLayerImageLayerOutline.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsLayerImageLayerOutlinePrintVolumeBounds, - this.tsLayerImageLayerOutlineLayerBounds, - this.tsLayerImageLayerOutlineHollowAreas, - this.tsLayerImageLayerOutlineEdgeDetection}); - this.tsLayerImageLayerOutline.Image = global::UVtools.GUI.Properties.Resources.Geometry_16x16; - this.tsLayerImageLayerOutline.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImageLayerOutline.Name = "tsLayerImageLayerOutline"; - this.tsLayerImageLayerOutline.Size = new System.Drawing.Size(78, 22); - this.tsLayerImageLayerOutline.Text = "&Outline"; - this.tsLayerImageLayerOutline.ButtonClick += new System.EventHandler(this.EventClick); + this.btnLayerImageLayerOutline.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnLayerImageLayerOutlinePrintVolumeBounds, + this.btnLayerImageLayerOutlineLayerBounds, + this.btnLayerImageLayerOutlineHollowAreas, + this.btnLayerImageLayerOutlineEdgeDetection}); + this.btnLayerImageLayerOutline.Image = global::UVtools.GUI.Properties.Resources.Geometry_16x16; + this.btnLayerImageLayerOutline.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImageLayerOutline.Name = "btnLayerImageLayerOutline"; + this.btnLayerImageLayerOutline.Size = new System.Drawing.Size(78, 22); + this.btnLayerImageLayerOutline.Text = "&Outline"; + this.btnLayerImageLayerOutline.ButtonClick += new System.EventHandler(this.EventClick); // - // tsLayerImageLayerOutlinePrintVolumeBounds + // btnLayerImageLayerOutlinePrintVolumeBounds // - this.tsLayerImageLayerOutlinePrintVolumeBounds.CheckOnClick = true; - this.tsLayerImageLayerOutlinePrintVolumeBounds.Name = "tsLayerImageLayerOutlinePrintVolumeBounds"; - this.tsLayerImageLayerOutlinePrintVolumeBounds.Size = new System.Drawing.Size(185, 22); - this.tsLayerImageLayerOutlinePrintVolumeBounds.Text = "Print Volume Bounds"; - this.tsLayerImageLayerOutlinePrintVolumeBounds.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageLayerOutlinePrintVolumeBounds.CheckOnClick = true; + this.btnLayerImageLayerOutlinePrintVolumeBounds.Name = "btnLayerImageLayerOutlinePrintVolumeBounds"; + this.btnLayerImageLayerOutlinePrintVolumeBounds.Size = new System.Drawing.Size(185, 22); + this.btnLayerImageLayerOutlinePrintVolumeBounds.Text = "Print Volume Bounds"; + this.btnLayerImageLayerOutlinePrintVolumeBounds.Click += new System.EventHandler(this.EventClick); // - // tsLayerImageLayerOutlineLayerBounds + // btnLayerImageLayerOutlineLayerBounds // - this.tsLayerImageLayerOutlineLayerBounds.CheckOnClick = true; - this.tsLayerImageLayerOutlineLayerBounds.Name = "tsLayerImageLayerOutlineLayerBounds"; - this.tsLayerImageLayerOutlineLayerBounds.Size = new System.Drawing.Size(185, 22); - this.tsLayerImageLayerOutlineLayerBounds.Text = "Layer Bounds"; - this.tsLayerImageLayerOutlineLayerBounds.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageLayerOutlineLayerBounds.CheckOnClick = true; + this.btnLayerImageLayerOutlineLayerBounds.Name = "btnLayerImageLayerOutlineLayerBounds"; + this.btnLayerImageLayerOutlineLayerBounds.Size = new System.Drawing.Size(185, 22); + this.btnLayerImageLayerOutlineLayerBounds.Text = "Layer Bounds"; + this.btnLayerImageLayerOutlineLayerBounds.Click += new System.EventHandler(this.EventClick); // - // tsLayerImageLayerOutlineHollowAreas + // btnLayerImageLayerOutlineHollowAreas // - this.tsLayerImageLayerOutlineHollowAreas.CheckOnClick = true; - this.tsLayerImageLayerOutlineHollowAreas.Name = "tsLayerImageLayerOutlineHollowAreas"; - this.tsLayerImageLayerOutlineHollowAreas.Size = new System.Drawing.Size(185, 22); - this.tsLayerImageLayerOutlineHollowAreas.Text = "Hollow Areas"; - this.tsLayerImageLayerOutlineHollowAreas.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageLayerOutlineHollowAreas.CheckOnClick = true; + this.btnLayerImageLayerOutlineHollowAreas.Name = "btnLayerImageLayerOutlineHollowAreas"; + this.btnLayerImageLayerOutlineHollowAreas.Size = new System.Drawing.Size(185, 22); + this.btnLayerImageLayerOutlineHollowAreas.Text = "Hollow Areas"; + this.btnLayerImageLayerOutlineHollowAreas.Click += new System.EventHandler(this.EventClick); // - // tsLayerImageLayerOutlineEdgeDetection + // btnLayerImageLayerOutlineEdgeDetection // - this.tsLayerImageLayerOutlineEdgeDetection.CheckOnClick = true; - this.tsLayerImageLayerOutlineEdgeDetection.Name = "tsLayerImageLayerOutlineEdgeDetection"; - this.tsLayerImageLayerOutlineEdgeDetection.Size = new System.Drawing.Size(185, 22); - this.tsLayerImageLayerOutlineEdgeDetection.Text = "&Edge Detection"; - this.tsLayerImageLayerOutlineEdgeDetection.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageLayerOutlineEdgeDetection.CheckOnClick = true; + this.btnLayerImageLayerOutlineEdgeDetection.Name = "btnLayerImageLayerOutlineEdgeDetection"; + this.btnLayerImageLayerOutlineEdgeDetection.Size = new System.Drawing.Size(185, 22); + this.btnLayerImageLayerOutlineEdgeDetection.Text = "&Edge Detection"; + this.btnLayerImageLayerOutlineEdgeDetection.Click += new System.EventHandler(this.EventClick); // // toolStripSeparator9 // this.toolStripSeparator9.Name = "toolStripSeparator9"; this.toolStripSeparator9.Size = new System.Drawing.Size(6, 25); // - // tsLayerImagePixelEdit + // btnLayerImagePixelEdit // - this.tsLayerImagePixelEdit.CheckOnClick = true; - this.tsLayerImagePixelEdit.Image = global::UVtools.GUI.Properties.Resources.pixel_16x16; - this.tsLayerImagePixelEdit.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerImagePixelEdit.Name = "tsLayerImagePixelEdit"; - this.tsLayerImagePixelEdit.Size = new System.Drawing.Size(75, 22); - this.tsLayerImagePixelEdit.Text = "Pixel &Edit"; - this.tsLayerImagePixelEdit.ToolTipText = "Edit layer image: Draw pixels, add supports and/or drain holes"; - this.tsLayerImagePixelEdit.Click += new System.EventHandler(this.EventClick); + this.btnLayerImagePixelEdit.CheckOnClick = true; + this.btnLayerImagePixelEdit.Image = global::UVtools.GUI.Properties.Resources.pixel_16x16; + this.btnLayerImagePixelEdit.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnLayerImagePixelEdit.Name = "btnLayerImagePixelEdit"; + this.btnLayerImagePixelEdit.Size = new System.Drawing.Size(75, 22); + this.btnLayerImagePixelEdit.Text = "Pixel &Edit"; + this.btnLayerImagePixelEdit.ToolTipText = "Edit layer image: Draw pixels, add supports and/or drain holes"; + this.btnLayerImagePixelEdit.Click += new System.EventHandler(this.EventClick); // // toolStripSeparator18 // @@ -896,27 +899,45 @@ namespace UVtools.GUI this.toolStripSeparator18.Name = "toolStripSeparator18"; this.toolStripSeparator18.Size = new System.Drawing.Size(6, 25); // - // tsLayerRmove + // btnLayerImageActions // - this.tsLayerRmove.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.tsLayerRmove.Image = global::UVtools.GUI.Properties.Resources.trash_16x16; - this.tsLayerRmove.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerRmove.Name = "tsLayerRmove"; - this.tsLayerRmove.Size = new System.Drawing.Size(101, 22); - this.tsLayerRmove.Text = "Remove Layer"; - this.tsLayerRmove.ToolTipText = "Delete current layer"; - this.tsLayerRmove.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageActions.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btnLayerImageActions.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnLayerImageActionImport, + this.btnLayerImageActionClone, + this.btnLayerImageActionRemove}); + this.btnLayerImageActions.Image = global::UVtools.GUI.Properties.Resources.layers_alt_16x16; + this.btnLayerImageActions.Name = "btnLayerImageActions"; + this.btnLayerImageActions.Size = new System.Drawing.Size(79, 22); + this.btnLayerImageActions.Text = "Actions"; + this.btnLayerImageActions.ButtonClick += new System.EventHandler(this.EventClick); // - // tsLayerClone + // btnLayerImageActionImport // - this.tsLayerClone.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.tsLayerClone.Image = global::UVtools.GUI.Properties.Resources.copy_16x16; - this.tsLayerClone.ImageTransparentColor = System.Drawing.Color.Magenta; - this.tsLayerClone.Name = "tsLayerClone"; - this.tsLayerClone.Size = new System.Drawing.Size(89, 22); - this.tsLayerClone.Text = "Clone Layer"; - this.tsLayerClone.ToolTipText = "Clone current layer"; - this.tsLayerClone.Click += new System.EventHandler(this.EventClick); + this.btnLayerImageActionImport.Image = global::UVtools.GUI.Properties.Resources.file_import_16x16; + this.btnLayerImageActionImport.Name = "btnLayerImageActionImport"; + this.btnLayerImageActionImport.Size = new System.Drawing.Size(191, 22); + this.btnLayerImageActionImport.Text = "&Import layers from file"; + this.btnLayerImageActionImport.ToolTipText = "Imports layer images at current height"; + this.btnLayerImageActionImport.Click += new System.EventHandler(this.EventClick); + // + // btnLayerImageActionClone + // + this.btnLayerImageActionClone.Image = global::UVtools.GUI.Properties.Resources.copy_16x16; + this.btnLayerImageActionClone.Name = "btnLayerImageActionClone"; + this.btnLayerImageActionClone.Size = new System.Drawing.Size(191, 22); + this.btnLayerImageActionClone.Text = "&Clone layer"; + this.btnLayerImageActionClone.ToolTipText = "Clone current layer"; + this.btnLayerImageActionClone.Click += new System.EventHandler(this.EventClick); + // + // btnLayerImageActionRemove + // + this.btnLayerImageActionRemove.Image = global::UVtools.GUI.Properties.Resources.trash_16x16; + this.btnLayerImageActionRemove.Name = "btnLayerImageActionRemove"; + this.btnLayerImageActionRemove.Size = new System.Drawing.Size(191, 22); + this.btnLayerImageActionRemove.Text = "&Remove layer(s)"; + this.btnLayerImageActionRemove.ToolTipText = "Remove current layer"; + this.btnLayerImageActionRemove.Click += new System.EventHandler(this.EventClick); // // tsLayerInfo // @@ -3057,12 +3078,12 @@ namespace UVtools.GUI private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; private System.Windows.Forms.ToolStripLabel tsPropertiesLabelGroups; private System.Windows.Forms.ToolStripMenuItem menuFileOpenNewWindow; - private System.Windows.Forms.ToolStripButton tsLayerImageRotate; + private System.Windows.Forms.ToolStripButton btnLayerImageRotate; private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; - private System.Windows.Forms.ToolStripButton tsLayerImageLayerDifference; + private System.Windows.Forms.ToolStripButton btnLayerImageLayerDifference; private Cyotek.Windows.Forms.ImageBox pbLayer; private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; - private System.Windows.Forms.ToolStripButton tsLayerImagePixelEdit; + private System.Windows.Forms.ToolStripButton btnLayerImagePixelEdit; private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; private System.Windows.Forms.ToolStripMenuItem menuMutate; private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; @@ -3079,8 +3100,8 @@ namespace UVtools.GUI private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; private System.Windows.Forms.ToolStripButton tsIssuesRepair; private System.Windows.Forms.ToolStripSeparator toolStripSeparator14; - private System.Windows.Forms.ToolStripButton tsLayerImageHighlightIssues; - private System.Windows.Forms.ToolStripButton tsLayerImageShowCrosshairs; + private System.Windows.Forms.ToolStripButton btnLayerImageHighlightIssues; + private System.Windows.Forms.ToolStripButton btnLayerImageShowCrosshairs; private System.Windows.Forms.ToolStripSeparator toolStripSeparator25; private TrackBarHighlight tbLayer; private System.Windows.Forms.TableLayoutPanel tlRight; @@ -3098,20 +3119,20 @@ namespace UVtools.GUI private System.Windows.Forms.Timer layerScrollTimer; private System.Windows.Forms.Timer layerZoomTimer; private System.Windows.Forms.Timer issueScrollTimer; - private System.Windows.Forms.ToolStripSplitButton tsLayerImageExport; - private System.Windows.Forms.ToolStripMenuItem tsLayerImageExportFile; - private System.Windows.Forms.ToolStripMenuItem tsLayerImageExportClipboard; + private System.Windows.Forms.ToolStripSplitButton btnLayerImageExport; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageExportFile; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageExportClipboard; private System.Windows.Forms.ToolStripMenuItem menuNewVersion; private System.Windows.Forms.ToolStripMenuItem menuFileSettings; private System.Windows.Forms.ToolStripSeparator toolStripSeparator15; private System.Windows.Forms.ToolStripSplitButton tsIssuesDetect; private System.Windows.Forms.ToolStripMenuItem tsIssuesDetectIslands; private System.Windows.Forms.ToolStripMenuItem tsIssuesDetectResinTraps; - private System.Windows.Forms.ToolStripSplitButton tsLayerImageLayerOutline; - private System.Windows.Forms.ToolStripMenuItem tsLayerImageLayerOutlineEdgeDetection; - private System.Windows.Forms.ToolStripMenuItem tsLayerImageLayerOutlinePrintVolumeBounds; - private System.Windows.Forms.ToolStripMenuItem tsLayerImageLayerOutlineLayerBounds; - private System.Windows.Forms.ToolStripMenuItem tsLayerImageLayerOutlineHollowAreas; + private System.Windows.Forms.ToolStripSplitButton btnLayerImageLayerOutline; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageLayerOutlineEdgeDetection; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageLayerOutlinePrintVolumeBounds; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageLayerOutlineLayerBounds; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageLayerOutlineHollowAreas; private System.Windows.Forms.ToolStripMenuItem menuToolsPattern; private System.Windows.Forms.ToolStripSplitButton tsThumbnailsExport; private System.Windows.Forms.ToolStripMenuItem tsThumbnailsExportFile; @@ -3147,7 +3168,6 @@ namespace UVtools.GUI private System.Windows.Forms.NumericUpDown nmPixelEditorDrainHoleDiameter; private System.Windows.Forms.Label label14; private System.Windows.Forms.ToolStripButton btnPixelHistoryRemove; - private System.Windows.Forms.ToolStripButton tsLayerRmove; private System.Windows.Forms.ToolStripSeparator toolStripSeparator18; private System.Windows.Forms.ToolStripMenuItem menuToolsLayerRemoval; private System.Windows.Forms.ToolStripSeparator toolStripSeparator19; @@ -3235,7 +3255,6 @@ namespace UVtools.GUI private System.Windows.Forms.ToolStripLabel tsLayerImagePixelCount; private System.Windows.Forms.ToolStripSeparator toolStripSeparator17; private System.Windows.Forms.ToolStripLabel tsLayerBounds; - private System.Windows.Forms.ToolStripButton tsLayerClone; private System.Windows.Forms.ToolStripMenuItem menuToolsLayerClone; private System.Windows.Forms.ToolStripMenuItem menuHelpBenchmark; private System.Windows.Forms.ToolStripSeparator toolStripSeparator24; @@ -3245,6 +3264,10 @@ namespace UVtools.GUI private System.Windows.Forms.ToolStripMenuItem tsIssuesDetectEmptyLayers; private System.Windows.Forms.ToolStripMenuItem tsIssuesDetectTouchingBounds; private System.Windows.Forms.PictureBox pbTrackerIssues; + private System.Windows.Forms.ToolStripSplitButton btnLayerImageActions; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageActionClone; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageActionRemove; + private System.Windows.Forms.ToolStripMenuItem btnLayerImageActionImport; } } diff --git a/UVtools.GUI/FrmMain.cs b/UVtools.GUI/FrmMain.cs index 8b0a55e..d4cd8a5 100644 --- a/UVtools.GUI/FrmMain.cs +++ b/UVtools.GUI/FrmMain.cs @@ -221,14 +221,14 @@ namespace UVtools.GUI Clear(); - tsLayerImageLayerDifference.Checked = Settings.Default.LayerDifferenceDefault; + btnLayerImageLayerDifference.Checked = Settings.Default.LayerDifferenceDefault; tsIssuesDetectIslands.Checked = Settings.Default.ComputeIslands; tsIssuesDetectResinTraps.Checked = Settings.Default.ComputeResinTraps; tsIssuesDetectTouchingBounds.Checked = Settings.Default.ComputeTouchingBounds; tsIssuesDetectEmptyLayers.Checked = Settings.Default.ComputeEmptyLayers; - tsLayerImageLayerOutlinePrintVolumeBounds.Checked = Settings.Default.OutlinePrintVolumeBounds; - tsLayerImageLayerOutlineLayerBounds.Checked = Settings.Default.OutlineLayerBounds; - tsLayerImageLayerOutlineHollowAreas.Checked = Settings.Default.OutlineHollowAreas; + btnLayerImageLayerOutlinePrintVolumeBounds.Checked = Settings.Default.OutlinePrintVolumeBounds; + btnLayerImageLayerOutlineLayerBounds.Checked = Settings.Default.OutlineLayerBounds; + btnLayerImageLayerOutlineHollowAreas.Checked = Settings.Default.OutlineHollowAreas; // Initialize pbLayer zoom levels to use the discrete factors from ZoomLevels pbLayer.ZoomLevels = new Cyotek.Windows.Forms.ZoomLevelCollection(ZoomLevels); @@ -303,8 +303,6 @@ namespace UVtools.GUI flvProperties.ShowGroups = true; flvProperties.AlwaysGroupByColumn = flvProperties.AllColumns[2]; - panelLayerNavigation.Paint += (sender, args) => Debug.WriteLine("Panel Paint"); - if (Settings.Default.CheckForUpdatesOnStartup) { Task.Factory.StartNew(AppLoadTask); @@ -411,7 +409,7 @@ namespace UVtools.GUI if (e.KeyCode == Keys.R) { - tsLayerImageRotate.PerformClick(); + btnLayerImageRotate.PerformClick(); e.Handled = true; return; } @@ -472,14 +470,18 @@ namespace UVtools.GUI private void EventClick(object sender, EventArgs e) { - if (sender.GetType() == typeof(ToolStripMenuItem)) + if (sender is ToolStripSplitButton splitButton && !ReferenceEquals(sender, tsIssuesDetect)) + { + splitButton.ShowDropDown(); + return; + } + if (sender is ToolStripMenuItem menuItem) { - ToolStripMenuItem item = (ToolStripMenuItem) sender; /******************* * Main Menu * ******************/ // File - if (ReferenceEquals(sender, menuFileOpen)) + if (ReferenceEquals(menuItem, menuFileOpen)) { using (OpenFileDialog openFile = new OpenFileDialog()) { @@ -505,7 +507,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuFileOpenNewWindow)) + if (ReferenceEquals(menuItem, menuFileOpenNewWindow)) { using (OpenFileDialog openFile = new OpenFileDialog()) { @@ -522,13 +524,13 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuFileReload)) + if (ReferenceEquals(menuItem, menuFileReload)) { ProcessFile(ActualLayer); return; } - if (ReferenceEquals(sender, menuFileSave)) + if (ReferenceEquals(menuItem, menuFileSave)) { if (SavesCount == 0 && Settings.Default.FileSavePromptOverwrite) { @@ -580,7 +582,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuFileSaveAs)) + if (ReferenceEquals(menuItem, menuFileSaveAs)) { using (SaveFileDialog dialog = new SaveFileDialog()) { @@ -640,7 +642,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuFileClose)) + if (ReferenceEquals(menuItem, menuFileClose)) { if (menuFileSave.Enabled) { @@ -656,7 +658,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuFileSettings)) + if (ReferenceEquals(menuItem, menuFileSettings)) { using (FrmSettings frmSettings = new FrmSettings()) { @@ -666,7 +668,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuFileExit)) + if (ReferenceEquals(menuItem, menuFileExit)) { if (menuFileSave.Enabled) { @@ -683,7 +685,7 @@ namespace UVtools.GUI } - if (ReferenceEquals(sender, menuFileExtract)) + if (ReferenceEquals(menuItem, menuFileExtract)) { using (FolderBrowserDialog folder = new FolderBrowserDialog()) { @@ -751,11 +753,11 @@ namespace UVtools.GUI } // Edit & mutate - if (!ReferenceEquals(item.Tag, null)) + if (!ReferenceEquals(menuItem.Tag, null)) { - if (item.Tag.GetType() == typeof(FileFormat.PrintParameterModifier)) + if (menuItem.Tag.GetType() == typeof(FileFormat.PrintParameterModifier)) { - FileFormat.PrintParameterModifier modifier = (FileFormat.PrintParameterModifier) item.Tag; + FileFormat.PrintParameterModifier modifier = (FileFormat.PrintParameterModifier) menuItem.Tag; using (FrmInputBox inputBox = new FrmInputBox(modifier, decimal.Parse(SlicerFile.GetValueFromPrintParameterModifier(modifier).ToString()))) { @@ -780,9 +782,9 @@ namespace UVtools.GUI } - if (item.Tag.GetType() == typeof(LayerManager.Mutate)) + if (menuItem.Tag.GetType() == typeof(LayerManager.Mutate)) { - LayerManager.Mutate mutate = (LayerManager.Mutate) item.Tag; + LayerManager.Mutate mutate = (LayerManager.Mutate) menuItem.Tag; MutateLayers(mutate); return; } @@ -791,7 +793,7 @@ namespace UVtools.GUI // View // Tools - if (ReferenceEquals(sender, menuToolsRepairLayers)) + if (ReferenceEquals(menuItem, menuToolsRepairLayers)) { uint layerStart; uint layerEnd; @@ -879,7 +881,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuToolsChangeResolution)) + if (ReferenceEquals(menuItem, menuToolsChangeResolution)) { uint newResolutionX; uint newResolutionY; @@ -930,7 +932,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuToolsLayerReHeight)) + if (ReferenceEquals(menuItem, menuToolsLayerReHeight)) { OperationLayerReHeight operation = null; using (var frm = new FrmToolLayerReHeight(SlicerFile.LayerCount, SlicerFile.LayerHeight)) @@ -978,9 +980,9 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuToolsLayerRemoval)) + if (ReferenceEquals(menuItem, menuToolsLayerRemoval)) { - using (var frm = new FrmToolEmpty(ActualLayer, "Layer Removal", "Removes layer(s) in a given range", "Remove")) + using (var frm = new FrmToolEmpty(ActualLayer, "Remove Layer(s)", "Removes layer(s) in a given range", "Remove")) { if (frm.ShowDialog() != DialogResult.OK) return; @@ -1024,7 +1026,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuToolsPattern)) + if (ReferenceEquals(menuItem, menuToolsPattern)) { OperationPattern operation = new OperationPattern(SlicerFile.LayerManager.BoundingRectangle, (uint)ActualLayerImage.Width, (uint)ActualLayerImage.Height); @@ -1082,13 +1084,13 @@ namespace UVtools.GUI } // About - if (ReferenceEquals(sender, menuHelpAbout)) + if (ReferenceEquals(menuItem, menuHelpAbout)) { Program.FrmAbout.ShowDialog(); return; } - if (ReferenceEquals(sender, menuHelpWebsite)) + if (ReferenceEquals(menuItem, menuHelpWebsite)) { using (Process.Start(About.Website)) { @@ -1097,7 +1099,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuHelpDonate)) + if (ReferenceEquals(menuItem, menuHelpDonate)) { MessageBox.Show( "All my work here is given for free (OpenSource), it took some hours to build, test and polish the program.\n" + @@ -1111,7 +1113,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuHelpBenchmark)) + if (ReferenceEquals(menuItem, menuHelpBenchmark)) { using (var frmBenchmark = new FrmBenchmark()) { @@ -1120,7 +1122,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, menuHelpInstallPrinters)) + if (ReferenceEquals(menuItem, menuHelpInstallPrinters)) { var PEFolder = $"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}{Path.DirectorySeparatorChar}{Path.DirectorySeparatorChar}PrusaSlicer"; @@ -1155,9 +1157,9 @@ namespace UVtools.GUI } } - if (ReferenceEquals(sender, menuToolsLayerClone) || ReferenceEquals(sender, tsLayerClone)) + if (ReferenceEquals(sender, menuToolsLayerClone) || ReferenceEquals(sender, btnLayerImageActionClone)) { - using (var frm = new FrmToolLayerClone(ReferenceEquals(sender, menuToolsLayerClone) ? -1 : (int)ActualLayer)) + using (var frm = new FrmToolLayerClone((int)ActualLayer)) { if (frm.ShowDialog() != DialogResult.OK) return; @@ -1293,12 +1295,6 @@ namespace UVtools.GUI } } - if (ReferenceEquals(sender, tsThumbnailsExport)) - { - tsThumbnailsExport.ShowDropDown(); - return; - } - if (ReferenceEquals(sender, tsThumbnailsExportFile)) { using (SaveFileDialog dialog = new SaveFileDialog()) @@ -1332,12 +1328,6 @@ namespace UVtools.GUI /************************ * Properties Menu * ***********************/ - if (ReferenceEquals(sender, tsPropertiesExport)) - { - tsPropertiesExport.ShowDropDown(); - return; - } - if (ReferenceEquals(sender, tsPropertiesExportFile)) { using (SaveFileDialog dialog = new SaveFileDialog()) @@ -1407,11 +1397,7 @@ namespace UVtools.GUI UpdateGCode(); return; } - if (ReferenceEquals(sender, btnGCodeSave)) - { - btnGCodeSave.ShowDropDown(); - return; - } + if (ReferenceEquals(sender, btnGCodeSaveFile)) { using (SaveFileDialog dialog = new SaveFileDialog()) @@ -1664,9 +1650,9 @@ namespace UVtools.GUI { if (!btnPixelHistoryRemove.Enabled) return; if (flvPixelHistory.SelectedIndices.Count == 0) return; - foreach (PixelOperation item in flvPixelHistory.SelectedObjects) + foreach (PixelOperation operation in flvPixelHistory.SelectedObjects) { - PixelHistory.Items.Remove(item); + PixelHistory.Items.Remove(operation); } RefreshPixelHistory(); @@ -1709,34 +1695,28 @@ namespace UVtools.GUI /************************ * Layer Menu * ***********************/ - if (ReferenceEquals(sender, tsLayerImageRotate) || - ReferenceEquals(sender, tsLayerImageLayerDifference) || - ReferenceEquals(sender, tsLayerImageHighlightIssues) || - ReferenceEquals(sender, tsLayerImageShowCrosshairs) || - ReferenceEquals(sender, tsLayerImageLayerOutlinePrintVolumeBounds) || - ReferenceEquals(sender, tsLayerImageLayerOutlineLayerBounds) || - ReferenceEquals(sender, tsLayerImageLayerOutlineHollowAreas) || - ReferenceEquals(sender, tsLayerImageLayerOutlineEdgeDetection) + if (ReferenceEquals(sender, btnLayerImageRotate) || + ReferenceEquals(sender, btnLayerImageLayerDifference) || + ReferenceEquals(sender, btnLayerImageHighlightIssues) || + ReferenceEquals(sender, btnLayerImageShowCrosshairs) || + ReferenceEquals(sender, btnLayerImageLayerOutlinePrintVolumeBounds) || + ReferenceEquals(sender, btnLayerImageLayerOutlineLayerBounds) || + ReferenceEquals(sender, btnLayerImageLayerOutlineHollowAreas) || + ReferenceEquals(sender, btnLayerImageLayerOutlineEdgeDetection) ) { ShowLayer(); - if (ReferenceEquals(sender, tsLayerImageRotate)) + if (ReferenceEquals(sender, btnLayerImageRotate)) { ZoomToFit(); } return; } - if (ReferenceEquals(sender, tsLayerImageLayerOutline)) + if (ReferenceEquals(sender, btnLayerImagePixelEdit)) { - tsLayerImageLayerOutline.ShowDropDown(); - return; - } - - if (ReferenceEquals(sender, tsLayerImagePixelEdit)) - { - if (tsLayerImagePixelEdit.Checked) + if (btnLayerImagePixelEdit.Checked) { tabControlLeft.TabPages.Add(tabPagePixelEditor); tabControlLeft.SelectedTab = tabPagePixelEditor; @@ -1749,27 +1729,24 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, tsLayerRmove)) + if (ReferenceEquals(sender, btnLayerImageActionRemove)) { - if (MessageBox.Show("Are you sure you want to remove current layer?\nThis operation is irreversible!", + /*if (MessageBox.Show("Are you sure you want to remove current layer?\nThis operation is irreversible!", "Remove current layer?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != - DialogResult.Yes) return; + DialogResult.Yes) return;*/ - SlicerFile.LayerManager.RemoveLayer(ActualLayer); + /*SlicerFile.LayerManager.RemoveLayer(ActualLayer); UpdateLayerLimits(); RefreshInfo(); ShowLayer(); - menuFileSave.Enabled = menuFileSaveAs.Enabled = true; + menuFileSave.Enabled = menuFileSaveAs.Enabled = true;*/ + + EventClick(menuToolsLayerRemoval, EventArgs.Empty); return; } - if (ReferenceEquals(sender, tsLayerImageExport)) - { - tsLayerImageExport.ShowDropDown(); - return; - } - if (ReferenceEquals(sender, tsLayerImageExportFile)) + if (ReferenceEquals(sender, btnLayerImageExportFile)) { using (SaveFileDialog dialog = new SaveFileDialog()) { @@ -1791,7 +1768,7 @@ namespace UVtools.GUI return; } - if (ReferenceEquals(sender, tsLayerImageExportClipboard)) + if (ReferenceEquals(sender, btnLayerImageExportClipboard)) { if (ReferenceEquals(pbLayer, null)) { @@ -1947,7 +1924,7 @@ namespace UVtools.GUI } // Refresh the layer to properly render the crosshair at various zoom transitions - if (tsLayerImageShowCrosshairs.Checked && + if (btnLayerImageShowCrosshairs.Checked && !ReferenceEquals(Issues, null) && (e.OldZoom < 50 && e.NewZoom >= 50 // Trigger refresh as crosshair thickness increases at lower zoom levels || e.OldZoom > 100 && e.NewZoom <= 100 @@ -1992,7 +1969,7 @@ namespace UVtools.GUI // Bail here if we're not in a draw operation, if the mouse button is not either // left or right, or if the location of the mouse pointer is not within the image. if (tabControlPixelEditor.SelectedIndex != (int) PixelOperation.PixelOperationType.Drawing) return; - if (!tsLayerImagePixelEdit.Checked || (e.Button & MouseButtons.Middle) != 0) return; + if (!btnLayerImagePixelEdit.Checked || (e.Button & MouseButtons.Middle) != 0) return; if (!pbLayer.IsPointInImage(e.Location)) return; if (e.Button == MouseButtons.Right) @@ -2231,7 +2208,7 @@ namespace UVtools.GUI btnLastLayer.Enabled = btnFindLayer.Enabled = - tsLayerImagePixelEdit.Checked = + btnLayerImagePixelEdit.Checked = false; @@ -2349,7 +2326,7 @@ namespace UVtools.GUI if (Settings.Default.LayerAutoRotateBestView) { - tsLayerImageRotate.Checked = ActualLayerImage.Height > ActualLayerImage.Width; + btnLayerImageRotate.Checked = ActualLayerImage.Height > ActualLayerImage.Width; } if (!ReferenceEquals(SlicerFile.ConvertToFormats, null)) @@ -2703,7 +2680,7 @@ namespace UVtools.GUI var imageBgrSpan = ActualLayerImageBgr.GetPixelSpan(); - if (tsLayerImageLayerOutlineEdgeDetection.Checked) + if (btnLayerImageLayerOutlineEdgeDetection.Checked) { using (var grayscale = new Mat()) { @@ -2711,7 +2688,7 @@ namespace UVtools.GUI CvInvoke.CvtColor(grayscale, ActualLayerImageBgr, ColorConversion.Gray2Bgr); } } - else if (tsLayerImageLayerDifference.Checked) + else if (btnLayerImageLayerDifference.Checked) { if (layerNum > 0 && layerNum < SlicerFile.LayerCount-1) { @@ -2808,7 +2785,7 @@ namespace UVtools.GUI var selectedIssues = flvIssues.SelectedObjects; //List selectedIssues = (from object t in selectedIssuesRaw where ((LayerIssue) t).LayerIndex == ActualLayer select (LayerIssue) t).ToList(); - if (tsLayerImageHighlightIssues.Checked && + if (btnLayerImageHighlightIssues.Checked && !ReferenceEquals(Issues, null)) { foreach (var issue in Issues) @@ -2832,7 +2809,7 @@ namespace UVtools.GUI //CvInvoke.DrawContours(ActualLayerImageBgr, new VectorOfVectorOfPoint(new VectorOfPoint(issue.Pixels)), -1, new MCvScalar(0, 0, 255), 1); } - if (tsLayerImageShowCrosshairs.Checked && !Settings.Default.CrosshairShowOnlyOnSelectedIssues && pbLayer.Zoom <= CrosshairFadeLevel) + if (btnLayerImageShowCrosshairs.Checked && !Settings.Default.CrosshairShowOnlyOnSelectedIssues && pbLayer.Zoom <= CrosshairFadeLevel) { DrawCrosshair(issue.BoundingRectangle); } @@ -2846,7 +2823,7 @@ namespace UVtools.GUI color = selectedIssues.Contains(issue) ? Settings.Default.IslandHLColor : Settings.Default.IslandColor; - if (tsLayerImageShowCrosshairs.Checked && !Settings.Default.CrosshairShowOnlyOnSelectedIssues && pbLayer.Zoom <= CrosshairFadeLevel) + if (btnLayerImageShowCrosshairs.Checked && !Settings.Default.CrosshairShowOnlyOnSelectedIssues && pbLayer.Zoom <= CrosshairFadeLevel) { DrawCrosshair(issue.BoundingRectangle); } @@ -2873,19 +2850,19 @@ namespace UVtools.GUI } } - if (tsLayerImageLayerOutlinePrintVolumeBounds.Checked) + if (btnLayerImageLayerOutlinePrintVolumeBounds.Checked) { CvInvoke.Rectangle(ActualLayerImageBgr, SlicerFile.LayerManager.BoundingRectangle, new MCvScalar(Settings.Default.OutlinePrintVolumeBoundsColor.B, Settings.Default.OutlinePrintVolumeBoundsColor.G, Settings.Default.OutlinePrintVolumeBoundsColor.R), Settings.Default.OutlinePrintVolumeBoundsLineThickness); } - if (tsLayerImageLayerOutlineLayerBounds.Checked) + if (btnLayerImageLayerOutlineLayerBounds.Checked) { CvInvoke.Rectangle(ActualLayerImageBgr, SlicerFile[layerNum].BoundingRectangle, new MCvScalar(Settings.Default.OutlineLayerBoundsColor.B, Settings.Default.OutlineLayerBoundsColor.G, Settings.Default.OutlineLayerBoundsColor.R), Settings.Default.OutlineLayerBoundsLineThickness); } - if (tsLayerImageLayerOutlineHollowAreas.Checked) + if (btnLayerImageLayerOutlineHollowAreas.Checked) { //CvInvoke.Threshold(ActualLayerImage, grayscale, 1, 255, ThresholdType.Binary); initContours(); @@ -3004,12 +2981,12 @@ namespace UVtools.GUI // Show crosshairs for selected issues if crosshair mode is enabled via toolstrip button. // Even when enabled, crosshairs are hidden in pixel edit mode when SHIFT is pressed. - if (tsLayerImageShowCrosshairs.Checked && + if (btnLayerImageShowCrosshairs.Checked && Settings.Default.CrosshairShowOnlyOnSelectedIssues && !ReferenceEquals(Issues, null) && flvIssues.SelectedIndices.Count > 0 && pbLayer.Zoom <= CrosshairFadeLevel && // Only draw crosshairs when zoom level is below the configurable crosshair fade threshold. - !(tsLayerImagePixelEdit.Checked && (ModifierKeys & Keys.Shift) != 0)) + !(btnLayerImagePixelEdit.Checked && (ModifierKeys & Keys.Shift) != 0)) { @@ -3024,7 +3001,7 @@ namespace UVtools.GUI } } - if (tsLayerImageRotate.Checked) + if (btnLayerImageRotate.Checked) { CvInvoke.Rotate(ActualLayerImageBgr, ActualLayerImageBgr, RotateFlags.Rotate90Clockwise); } @@ -3183,7 +3160,7 @@ namespace UVtools.GUI pbLayer.ClientRectangle.Contains(pbLayer.PointToClient(MousePosition))) { - pbLayer.Cursor = tsLayerImagePixelEdit.Checked ? Cursors.Cross : Cursors.Hand; + pbLayer.Cursor = btnLayerImagePixelEdit.Checked ? Cursors.Cross : Cursors.Hand; pbLayer.PanMode = Cyotek.Windows.Forms.ImageBoxPanMode.None; //if (!ReferenceEquals(SlicerFile, null)) ShowLayer(); // Not needed? } @@ -3388,7 +3365,7 @@ namespace UVtools.GUI mouseHoldTimer.Stop(); // Shift must be pressed for any pixel edit action, middle button is ignored. - if (!tsLayerImagePixelEdit.Checked || (e.Button & MouseButtons.Middle) != 0 || + if (!btnLayerImagePixelEdit.Checked || (e.Button & MouseButtons.Middle) != 0 || (ModifierKeys & Keys.Shift) == 0) return; if (!pbLayer.IsPointInImage(e.Location)) return; var location = pbLayer.PointToImage(e.Location); @@ -4098,7 +4075,7 @@ namespace UVtools.GUI public Point GetTransposedPoint(Point point, bool clockWise = true) { - if (!tsLayerImageRotate.Checked) return point; + if (!btnLayerImageRotate.Checked) return point; return clockWise ? new Point(point.Y, ActualLayerImage.Height - 1 - point.X) : new Point(ActualLayerImage.Height - 1 - point.Y, point.X); @@ -4106,7 +4083,7 @@ namespace UVtools.GUI public Rectangle GetTransposedRectangle(Rectangle rectangle) { - return tsLayerImageRotate.Checked ? new Rectangle(ActualLayerImage.Height - rectangle.Bottom, + return btnLayerImageRotate.Checked ? new Rectangle(ActualLayerImage.Height - rectangle.Bottom, rectangle.X, rectangle.Height, rectangle.Width) : rectangle; } @@ -4118,7 +4095,7 @@ namespace UVtools.GUI /// private Rectangle GetTransposedIssueBounds(LayerIssue issue) { - if (issue.X >= 0 && issue.Y >= 0 && (issue.BoundingRectangle.IsEmpty || issue.Size == 1) && tsLayerImageRotate.Checked) + if (issue.X >= 0 && issue.Y >= 0 && (issue.BoundingRectangle.IsEmpty || issue.Size == 1) && btnLayerImageRotate.Checked) return new Rectangle(ActualLayerImage.Height - 1 - issue.Y, issue.X, 1, 1); @@ -4220,7 +4197,7 @@ namespace UVtools.GUI // zoom to plate vs. zoom to print bounds will be inverted. if (Settings.Default.ZoomToFitPrintVolumeBounds ^ (ModifierKeys & Keys.Alt) != 0) { - if (!tsLayerImageRotate.Checked) + if (!btnLayerImageRotate.Checked) { pbLayer.ZoomToRegion(SlicerFile.LayerManager.BoundingRectangle); } @@ -4332,7 +4309,7 @@ namespace UVtools.GUI if (result == DialogResult.Cancel) { - tsLayerImagePixelEdit.Checked = true; + btnLayerImagePixelEdit.Checked = true; return; } if (result == DialogResult.Yes) diff --git a/UVtools.GUI/FrmMain.resx b/UVtools.GUI/FrmMain.resx index 3ea8bb3..845ef67 100644 --- a/UVtools.GUI/FrmMain.resx +++ b/UVtools.GUI/FrmMain.resx @@ -158,7 +158,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk - FAAAAk1TRnQBSQFMAgEBBgEAAegBCQHoAQkBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + FAAAAk1TRnQBSQFMAgEBBgEAASgBCgEoAQoBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUDMAAQEDJAE2AysBQqwAAyIBMQNWAbkDXQHi AwAB/wMAAf8BKgEtASgB/gNTAawDTQGVAwABARgAAwkBDAMzAVIDUAGdA1cB6AMAAf4DKwH8Ay8BSqQA AyEBMANZAewBKwEuASkB+gNRAfcDUgH0A1MB8QNIAfYDQQH5AwAB/wNPAZsDAAEBCAADFQEdAz8BbgNV diff --git a/UVtools.GUI/Images/file-import-16x16.png b/UVtools.GUI/Images/file-import-16x16.png new file mode 100644 index 0000000..1712317 Binary files /dev/null and b/UVtools.GUI/Images/file-import-16x16.png differ diff --git a/UVtools.GUI/Properties/Resources.Designer.cs b/UVtools.GUI/Properties/Resources.Designer.cs index 004c7a4..b921395 100644 --- a/UVtools.GUI/Properties/Resources.Designer.cs +++ b/UVtools.GUI/Properties/Resources.Designer.cs @@ -430,6 +430,16 @@ namespace UVtools.GUI.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap file_import_16x16 { + get { + object obj = ResourceManager.GetObject("file-import-16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/UVtools.GUI/Properties/Resources.resx b/UVtools.GUI/Properties/Resources.resx index 632a45d..400d008 100644 --- a/UVtools.GUI/Properties/Resources.resx +++ b/UVtools.GUI/Properties/Resources.resx @@ -136,15 +136,15 @@ ..\Images\island-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\ladder-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\layers-alt-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\mask-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Back-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\move-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -154,6 +154,9 @@ ..\Images\Cancel-32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Lock-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\crop-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -208,6 +211,9 @@ ..\Images\SaveAs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\pixel-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\gui\mutation_tophat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -262,15 +268,21 @@ ..\Images\trash-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\accept-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\file-image-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\refresh-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\crosshairs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\microchip_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\eye-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -286,9 +298,6 @@ ..\Images\square-solid-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\chessboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\burn-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -331,8 +340,8 @@ ..\Images\expand-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\accept-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\copy_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -352,22 +361,16 @@ ..\Images\eye-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\pixel-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\ladder-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Back-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\chessboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\expand-alt-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\microchip_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Images\crosshairs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Images\Lock-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\file-import-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/UVtools.GUI/UVtools.GUI.csproj b/UVtools.GUI/UVtools.GUI.csproj index d81347b..d20953c 100644 --- a/UVtools.GUI/UVtools.GUI.csproj +++ b/UVtools.GUI/UVtools.GUI.csproj @@ -445,6 +445,7 @@ +