From 8ed54e34a64c9d2f9d21e07e8c7879ce4dc122fc Mon Sep 17 00:00:00 2001 From: Bill Johnson Date: Wed, 6 Jul 2016 13:05:06 -0500 Subject: [PATCH] Added menu item to copy request to new window --- Ior/Forms/MainForm.Designer.cs | 10 +++++- Ior/Forms/MainForm.cs | 57 ++++++++++++++++++++++++++++++++-- Ior/Program.cs | 3 ++ 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/Ior/Forms/MainForm.Designer.cs b/Ior/Forms/MainForm.Designer.cs index 008dd6b..bbe0095 100644 --- a/Ior/Forms/MainForm.Designer.cs +++ b/Ior/Forms/MainForm.Designer.cs @@ -79,6 +79,7 @@ private void InitializeComponent() this.exportResponseBodyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exportPrettyResponseBodyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.duplicateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.snapshotsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -662,13 +663,13 @@ private void InitializeComponent() this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.newToolStripMenuItem, this.newWindowToolStripMenuItem, + this.duplicateToolStripMenuItem, this.openToolStripMenuItem, this.saveToolStripMenuItem, this.saveAsToolStripMenuItem, this.toolStripMenuItem1, this.exportResponseBodyToolStripMenuItem, this.exportPrettyResponseBodyToolStripMenuItem, - this.toolStripMenuItem3, this.exitToolStripMenuItem}); this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Size = new System.Drawing.Size(64, 38); @@ -739,6 +740,12 @@ private void InitializeComponent() // this.toolStripMenuItem3.Name = "toolStripMenuItem3"; this.toolStripMenuItem3.Size = new System.Drawing.Size(432, 6); + // duplicateToolStripMenuItem + // + this.duplicateToolStripMenuItem.Name = "duplicateToolStripMenuItem"; + this.duplicateToolStripMenuItem.Size = new System.Drawing.Size(200, 22); + this.duplicateToolStripMenuItem.Text = "Copy to New Window"; + this.duplicateToolStripMenuItem.Click += new System.EventHandler(this.duplicateToolStripMenuItem_Click); // // exitToolStripMenuItem // @@ -1019,6 +1026,7 @@ private void InitializeComponent() private System.Windows.Forms.SaveFileDialog requestSaveFileDialog; private System.Windows.Forms.OpenFileDialog requestOpenFileDialog; private System.Windows.Forms.ToolStripMenuItem exportResponseBodyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem duplicateToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; private System.Windows.Forms.SaveFileDialog responseBodySaveFileDialog; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; diff --git a/Ior/Forms/MainForm.cs b/Ior/Forms/MainForm.cs index 4c675ba..755ca2b 100644 --- a/Ior/Forms/MainForm.cs +++ b/Ior/Forms/MainForm.cs @@ -141,6 +141,25 @@ private void MainForm_Load(object sender, EventArgs e) bindHistorySettings(); setUpFileDialogs(); ActiveControl = txtRequestUrl; + + // If clone request, do it + string[] args = Environment.GetCommandLineArgs(); + + for (int aidx = 0; aidx < args.Length; aidx++) + { + if (args[aidx].Equals("-clone")) + { + try + { + string fileName = args[aidx + 1]; + openRequestFileFromClone(fileName); + } + catch (Exception ex) + { + MessageBox.Show("Error processing clone request: " + ex.Message); + } + } + } } catch(Exception ex) { //n.b. exceptions swallowed during main load since gui message pump not started log.Fatal(ex, "Exception in main, shutting down"); showError("Error", "Unknown error, shutting down: " + Environment.NewLine + Environment.NewLine + ex.ToString()); @@ -484,7 +503,7 @@ private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { } } - private void save(string fileName) { + private void save(string fileName, bool updateLastSaveFileName = true) { if (fileName == null) { requestSaveFileDialog.FileName = FilePathFormatter.Format(lastOpenedRequestFilePath, FilePathFormat.Short); setUpFileDialogs(); @@ -503,7 +522,9 @@ private void save(string fileName) { var requestVm = buildRequestViewModel(); requestVm.Save(fileName); - updateLastOpenedRequestFile(fileName); + + if (updateLastSaveFileName ) + updateLastOpenedRequestFile(fileName); } private void updateLastOpenedRequestFile(string fileName) { @@ -540,7 +561,7 @@ private void openRequestFile(string fileName) { requestVm = RequestViewModel.Load(fileName); } catch(Exception ex) { log.Warn(ex, "Error opening request file"); - showWarning("File Open Error", "Error opening request file"); + showWarning("File Open Error", "Error opening request file: " + ex.Message + "\r\n" + ex.StackTrace); return; } bind(ResponseModel.Empty); // clear the response. @@ -837,5 +858,35 @@ private void lblLogNotifications_Click(object sender, EventArgs e) { resetLogStats(); showLogViewer(); } + + private void duplicateToolStripMenuItem_Click(object sender, EventArgs e) + { + + string tmpFile = Path.GetTempFileName(); + save(tmpFile, false); + + String args = String.Format("-clone {0}", tmpFile); + + var info = new System.Diagnostics.ProcessStartInfo(Application.ExecutablePath, args); + System.Diagnostics.Process.Start(info); + } + + private void openRequestFileFromClone(string fileName) + { + RequestViewModel requestVm; + try + { + requestVm = RequestViewModel.Load(fileName); + } + catch + { + showWarning("File Open Error", "Error opening request file"); + return; + } + bind(ResponseModel.Empty); // clear the response. + bind(requestVm); + + File.Delete(fileName); + } } } diff --git a/Ior/Program.cs b/Ior/Program.cs index 65c75e2..6adddbc 100644 --- a/Ior/Program.cs +++ b/Ior/Program.cs @@ -36,6 +36,9 @@ static void Main() var args = Environment.GetCommandLineArgs(); var launchFilePath = args.Length >= 2 ? args[1] : null; + // If this is a "clone" request, we don't want to treat it as a normal file + if (launchFilePath != null && launchFilePath.ToLower().Equals("-clone")) launchFilePath = null; + //set default form icon to project exe icon var defaultIcon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); typeof(Form).GetField("defaultIcon", BindingFlags.NonPublic | BindingFlags.Static).SetValue(null, defaultIcon);