From d18066580d5247ef49dcae6aec63b56e2c960ec3 Mon Sep 17 00:00:00 2001 From: Jean-Marc Couffin Date: Tue, 10 Sep 2024 10:54:16 +0200 Subject: [PATCH 1/2] Update ScriptConsole.cs OpenButtonClick event and SaveToDialog event fixes --- .../ScriptConsole.cs | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs b/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs index fdbe239ce..cc2d04b0d 100644 --- a/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs +++ b/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs @@ -835,14 +835,33 @@ private System.Windows.Shapes.Path GetAutoCollapseIcon(bool active) { } private void Save_Contents_Button_Clicked(object sender, RoutedEventArgs e) { - var saveDlg = new System.Windows.Forms.SaveFileDialog() { + var saveDlg = new System.Windows.Forms.SaveFileDialog() + { Title = "Save Output to:", Filter = "HTML|*.html" + DefaultExt = "html", + AddExtension = true, + RestoreDirectory = true }; - saveDlg.ShowDialog(); - var f = File.CreateText(saveDlg.FileName); - f.Write(GetFullHtml()); - f.Close(); + if (saveDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK && !string.IsNullOrWhiteSpace(saveDlg.FileName)) + { + try + { + using (var f = File.CreateText(saveDlg.FileName)) + { + f.Write(GetFullHtml()); + } + } + catch (Exception ex) + { + // Use WPF MessageBox instead of System.Windows.Forms.MessageBox + System.Windows.MessageBox.Show($"Error saving file: {ex.Message}", "Save Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + else + { + System.Windows.MessageBox.Show("File saving was canceled or an invalid file name was provided.", "Save Canceled", MessageBoxButton.OK, MessageBoxImage.Information); + } } private void PinButton_Click(object sender, RoutedEventArgs e) { @@ -901,8 +920,29 @@ private string SaveContentsToTemp() { return tempHtml; } - private void OpenButton_Click(object sender, RoutedEventArgs e) { - Process.Start(string.Format("file:///{0}", SaveContentsToTemp())); + private void OpenButton_Click(object sender, RoutedEventArgs e) + { + try + { + var filePath = SaveContentsToTemp(); + + // Adjust for proper URI format + var uri = new Uri(filePath).AbsoluteUri; + + // Use ProcessStartInfo to set UseShellExecute to true + var processInfo = new ProcessStartInfo() + { + FileName = uri, + UseShellExecute = true // Required in .NET Core to launch external processes + }; + + Process.Start(processInfo); + } + catch (Exception ex) + { + // Handle any exceptions and show an error message + System.Windows.MessageBox.Show($"Error opening file: {ex.Message}", "Open Error", MessageBoxButton.OK, MessageBoxImage.Error); + } } private void PrintButton_Click(object sender, RoutedEventArgs e) { From cae17c1da654b083b007abe0c6a2945b0e6ecd63 Mon Sep 17 00:00:00 2001 From: Jean-Marc Couffin Date: Tue, 10 Sep 2024 15:22:24 +0200 Subject: [PATCH 2/2] Update ScriptConsole.cs --- .../ScriptConsole.cs | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs b/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs index cc2d04b0d..05c9bc25b 100644 --- a/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs +++ b/dev/pyRevitLabs.PyRevit.Runtime/ScriptConsole.cs @@ -834,36 +834,31 @@ private System.Windows.Shapes.Path GetAutoCollapseIcon(bool active) { return MakeButtonPath("M19.92,12.08L12,20L4.08,12.08L5.5,10.67L11,16.17V2H13V16.17L18.5,10.66L19.92,12.08M12,20H2V22H22V20H12Z"); } - private void Save_Contents_Button_Clicked(object sender, RoutedEventArgs e) { - var saveDlg = new System.Windows.Forms.SaveFileDialog() + private void Save_Contents_Button_Clicked(object sender, RoutedEventArgs e) + { + var saveDlg = new System.Windows.Forms.SaveFileDialog() { Title = "Save Output to:", - Filter = "HTML|*.html" + Filter = "HTML Files|*.html", DefaultExt = "html", AddExtension = true, RestoreDirectory = true }; - if (saveDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK && !string.IsNullOrWhiteSpace(saveDlg.FileName)) + if (saveDlg.ShowDialog() != System.Windows.Forms.DialogResult.OK || string.IsNullOrWhiteSpace(saveDlg.FileName)) { - try - { - using (var f = File.CreateText(saveDlg.FileName)) - { - f.Write(GetFullHtml()); - } - } - catch (Exception ex) - { - // Use WPF MessageBox instead of System.Windows.Forms.MessageBox - System.Windows.MessageBox.Show($"Error saving file: {ex.Message}", "Save Error", MessageBoxButton.OK, MessageBoxImage.Error); - } + return; } - else + try + { + using (File.CreateText(saveDlg.FileName).Write(GetFullHtml())) { } + } + catch (Exception ex) { - System.Windows.MessageBox.Show("File saving was canceled or an invalid file name was provided.", "Save Canceled", MessageBoxButton.OK, MessageBoxImage.Information); + System.Windows.MessageBox.Show($"Error saving file: {ex.Message}", "Save Error", MessageBoxButton.OK, MessageBoxImage.Error); } } + private void PinButton_Click(object sender, RoutedEventArgs e) { var button = e.Source as Button; if (Topmost) { @@ -924,23 +919,16 @@ private void OpenButton_Click(object sender, RoutedEventArgs e) { try { - var filePath = SaveContentsToTemp(); - - // Adjust for proper URI format - var uri = new Uri(filePath).AbsoluteUri; - - // Use ProcessStartInfo to set UseShellExecute to true + var uri = new Uri(SaveContentsToTemp()).AbsoluteUri; var processInfo = new ProcessStartInfo() { FileName = uri, - UseShellExecute = true // Required in .NET Core to launch external processes + UseShellExecute = true }; - Process.Start(processInfo); } catch (Exception ex) { - // Handle any exceptions and show an error message System.Windows.MessageBox.Show($"Error opening file: {ex.Message}", "Open Error", MessageBoxButton.OK, MessageBoxImage.Error); } }