diff --git a/renderdocui/Windows/Dialogs/TextureSaveDialog.Designer.cs b/renderdocui/Windows/Dialogs/TextureSaveDialog.Designer.cs index cf54c3a17..fbd9a74dc 100644 --- a/renderdocui/Windows/Dialogs/TextureSaveDialog.Designer.cs +++ b/renderdocui/Windows/Dialogs/TextureSaveDialog.Designer.cs @@ -126,7 +126,7 @@ tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - tableLayoutPanel1.Size = new System.Drawing.Size(375, 521); + tableLayoutPanel1.Size = new System.Drawing.Size(378, 555); tableLayoutPanel1.TabIndex = 0; // // groupBox1 @@ -137,7 +137,7 @@ groupBox1.Controls.Add(flowLayoutPanel1); groupBox1.Location = new System.Drawing.Point(3, 53); groupBox1.Name = "groupBox1"; - groupBox1.Size = new System.Drawing.Size(369, 72); + groupBox1.Size = new System.Drawing.Size(372, 72); groupBox1.TabIndex = 0; groupBox1.TabStop = false; groupBox1.Text = "File Format"; @@ -152,7 +152,7 @@ flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; flowLayoutPanel1.Location = new System.Drawing.Point(3, 16); flowLayoutPanel1.Name = "flowLayoutPanel1"; - flowLayoutPanel1.Size = new System.Drawing.Size(363, 53); + flowLayoutPanel1.Size = new System.Drawing.Size(366, 53); flowLayoutPanel1.TabIndex = 0; // // label1 @@ -204,14 +204,13 @@ flowLayoutPanel2.AutoSize = true; flowLayoutPanel2.Controls.Add(this.ok); flowLayoutPanel2.Controls.Add(this.cancel); - flowLayoutPanel2.Location = new System.Drawing.Point(210, 513); + flowLayoutPanel2.Location = new System.Drawing.Point(213, 523); flowLayoutPanel2.Name = "flowLayoutPanel2"; flowLayoutPanel2.Size = new System.Drawing.Size(162, 29); flowLayoutPanel2.TabIndex = 1; // // ok // - this.ok.DialogResult = System.Windows.Forms.DialogResult.OK; this.ok.Location = new System.Drawing.Point(3, 3); this.ok.Name = "ok"; this.ok.Size = new System.Drawing.Size(75, 23); @@ -238,7 +237,7 @@ this.alphaLDRGroup.Controls.Add(flowLayoutPanel3); this.alphaLDRGroup.Location = new System.Drawing.Point(3, 428); this.alphaLDRGroup.Name = "alphaLDRGroup"; - this.alphaLDRGroup.Size = new System.Drawing.Size(369, 79); + this.alphaLDRGroup.Size = new System.Drawing.Size(372, 79); this.alphaLDRGroup.TabIndex = 2; this.alphaLDRGroup.TabStop = false; this.alphaLDRGroup.Text = "Alpha Handling"; @@ -256,7 +255,7 @@ flowLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; flowLayoutPanel3.Location = new System.Drawing.Point(3, 16); flowLayoutPanel3.Name = "flowLayoutPanel3"; - flowLayoutPanel3.Size = new System.Drawing.Size(363, 60); + flowLayoutPanel3.Size = new System.Drawing.Size(366, 60); flowLayoutPanel3.TabIndex = 0; // // label3 @@ -346,7 +345,7 @@ this.sliceGroup.Controls.Add(flowLayoutPanel6); this.sliceGroup.Location = new System.Drawing.Point(3, 304); this.sliceGroup.Name = "sliceGroup"; - this.sliceGroup.Size = new System.Drawing.Size(369, 118); + this.sliceGroup.Size = new System.Drawing.Size(372, 118); this.sliceGroup.TabIndex = 5; this.sliceGroup.TabStop = false; this.sliceGroup.Text = "Array/Depth Slices"; @@ -363,7 +362,7 @@ flowLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill; flowLayoutPanel6.Location = new System.Drawing.Point(3, 16); flowLayoutPanel6.Name = "flowLayoutPanel6"; - flowLayoutPanel6.Size = new System.Drawing.Size(363, 99); + flowLayoutPanel6.Size = new System.Drawing.Size(366, 99); flowLayoutPanel6.TabIndex = 0; // // exportAllSlices @@ -453,7 +452,7 @@ this.mipGroup.Controls.Add(flowLayoutPanel4); this.mipGroup.Location = new System.Drawing.Point(3, 131); this.mipGroup.Name = "mipGroup"; - this.mipGroup.Size = new System.Drawing.Size(369, 69); + this.mipGroup.Size = new System.Drawing.Size(372, 69); this.mipGroup.TabIndex = 3; this.mipGroup.TabStop = false; this.mipGroup.Text = "Mips"; @@ -467,7 +466,7 @@ flowLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; flowLayoutPanel4.Location = new System.Drawing.Point(3, 16); flowLayoutPanel4.Name = "flowLayoutPanel4"; - flowLayoutPanel4.Size = new System.Drawing.Size(363, 50); + flowLayoutPanel4.Size = new System.Drawing.Size(366, 50); flowLayoutPanel4.TabIndex = 0; // // exportAllMips @@ -516,7 +515,7 @@ this.sampleGroup.Controls.Add(flowLayoutPanel5); this.sampleGroup.Location = new System.Drawing.Point(3, 206); this.sampleGroup.Name = "sampleGroup"; - this.sampleGroup.Size = new System.Drawing.Size(369, 92); + this.sampleGroup.Size = new System.Drawing.Size(372, 92); this.sampleGroup.TabIndex = 6; this.sampleGroup.TabStop = false; this.sampleGroup.Text = "MSAA Samples"; @@ -531,7 +530,7 @@ flowLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill; flowLayoutPanel5.Location = new System.Drawing.Point(3, 16); flowLayoutPanel5.Name = "flowLayoutPanel5"; - flowLayoutPanel5.Size = new System.Drawing.Size(363, 73); + flowLayoutPanel5.Size = new System.Drawing.Size(366, 73); flowLayoutPanel5.TabIndex = 0; // // mapSampleArray @@ -591,7 +590,7 @@ groupBox2.Controls.Add(browse); groupBox2.Location = new System.Drawing.Point(3, 3); groupBox2.Name = "groupBox2"; - groupBox2.Size = new System.Drawing.Size(369, 44); + groupBox2.Size = new System.Drawing.Size(372, 44); groupBox2.TabIndex = 7; groupBox2.TabStop = false; groupBox2.Text = "Path"; @@ -602,13 +601,13 @@ | System.Windows.Forms.AnchorStyles.Right))); this.filename.Location = new System.Drawing.Point(9, 15); this.filename.Name = "filename"; - this.filename.Size = new System.Drawing.Size(319, 20); + this.filename.Size = new System.Drawing.Size(322, 20); this.filename.TabIndex = 1; // // browse // browse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - browse.Location = new System.Drawing.Point(334, 15); + browse.Location = new System.Drawing.Point(337, 15); browse.Name = "browse"; browse.Size = new System.Drawing.Size(26, 23); browse.TabIndex = 0; @@ -623,6 +622,7 @@ // saveTexDialog // this.saveTexDialog.DefaultExt = "dds"; + this.saveTexDialog.OverwritePrompt = false; this.saveTexDialog.Title = "Save Texture As"; // // TextureSaveDialog @@ -631,7 +631,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.ClientSize = new System.Drawing.Size(375, 521); + this.ClientSize = new System.Drawing.Size(378, 555); this.Controls.Add(tableLayoutPanel1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; diff --git a/renderdocui/Windows/Dialogs/TextureSaveDialog.cs b/renderdocui/Windows/Dialogs/TextureSaveDialog.cs index 2f9f31805..7bb8fdcd0 100644 --- a/renderdocui/Windows/Dialogs/TextureSaveDialog.cs +++ b/renderdocui/Windows/Dialogs/TextureSaveDialog.cs @@ -196,6 +196,7 @@ namespace renderdocui.Windows.Dialogs private void browse_Click(object sender, EventArgs e) { + saveTexDialog.FilterIndex = fileFormat.SelectedIndex + 1; var res = saveTexDialog.ShowDialog(); if (res == DialogResult.OK || res == DialogResult.Yes) { @@ -279,6 +280,35 @@ namespace renderdocui.Windows.Dialogs float.TryParse(blackPoint.Text, out saveData.comp.blackPoint); float.TryParse(whitePoint.Text, out saveData.comp.whitePoint); + + try + { + // use same path for non-existing path as invalid path + if (!Directory.Exists(Path.GetDirectoryName(Filename))) + throw new ArgumentException(); + + if (File.Exists(Filename)) + { + var res = MessageBox.Show(String.Format("{0} already exists.\nDo you want to replace it?", Path.GetFileName(Filename)), "Confirm Save Texture", + MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); + + if (res != DialogResult.Yes) + return; + } + } + catch(ArgumentException) + { + // invalid path or similar + + MessageBox.Show(String.Format("{0}\nPath does not exist.\nCheck the path and try again.", Filename), "Save Texture", + MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); + + return; + } + + // path is valid and either doesn't exist or user confirmed replacement + DialogResult = DialogResult.OK; + Close(); } private void blackPoint_TextChanged(object sender, EventArgs e) diff --git a/renderdocui/Windows/Dialogs/TextureSaveDialog.resx b/renderdocui/Windows/Dialogs/TextureSaveDialog.resx index f23e5fc9a..bcf335727 100644 --- a/renderdocui/Windows/Dialogs/TextureSaveDialog.resx +++ b/renderdocui/Windows/Dialogs/TextureSaveDialog.resx @@ -123,9 +123,27 @@ False + + False + + + False + + + False + False + + False + + + False + + + False + False @@ -138,6 +156,18 @@ False + + False + + + False + + + False + + + False + False @@ -150,18 +180,30 @@ False + + False + + + False + False False + + False + False False + + False + 17, 17