diff --git a/smx-config/ProgressWindow.xaml b/smx-config/ProgressWindow.xaml new file mode 100644 index 0000000..0b91671 --- /dev/null +++ b/smx-config/ProgressWindow.xaml @@ -0,0 +1,15 @@ + + + diff --git a/smx-config/ProgressWindow.xaml.cs b/smx-config/ProgressWindow.xaml.cs new file mode 100644 index 0000000..62a4869 --- /dev/null +++ b/smx-config/ProgressWindow.xaml.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Interop; + +namespace smx_config +{ + public partial class ProgressWindow: Window + { + private const int GWL_STYLE = -16; + private const int WS_SYSMENU = 0x80000; + [DllImport("user32.dll", SetLastError = true)] + private static extern int GetWindowLong(IntPtr hWnd, int nIndex); + [DllImport("user32.dll")] + private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); + + public ProgressWindow() + { + InitializeComponent(); + + // Hide the window close button, since we can't easily cancel. + Loaded += delegate(object sender, RoutedEventArgs e) { + var hwnd = new WindowInteropHelper(this).Handle; + SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU); + }; + } + + public void SetTotal(int total) + { + ProgressBar.Maximum = total; + } + + public void SetProgress(int progress) + { + ProgressBar.Value = progress; + } + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + } + } +} diff --git a/smx-config/SMXConfig.csproj b/smx-config/SMXConfig.csproj index 9e628f8..22c309a 100644 --- a/smx-config/SMXConfig.csproj +++ b/smx-config/SMXConfig.csproj @@ -105,6 +105,9 @@ + + ProgressWindow.xaml + @@ -120,6 +123,10 @@ MainWindow.xaml Code + + MSBuild:Compile + Designer +