-
This commit is contained in:
@@ -17,7 +17,7 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.Composition;
|
using System.ComponentModel.Composition;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
using Microsoft.VisualBasic.FileIO;
|
using Microsoft.VisualBasic.FileIO;
|
||||||
|
|
||||||
using mpvnet;
|
using mpvnet;
|
||||||
@@ -91,7 +91,8 @@ namespace RatingExtension // the assembly name must end with 'Extension'
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (args[1] == "about")
|
else if (args[1] == "about")
|
||||||
Msg.Show("Rating Extension", "This extension writes a rating to the filename of rated videos when mpv.net shuts down.\n\nThe input.conf defaults contain key bindings for this extension to set ratings.");
|
MessageBox.Show("This extension writes a rating to the filename of rated videos when mpv.net shuts down.\n\nThe input.conf defaults contain key bindings for this extension to set ratings.",
|
||||||
|
"Rating Extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Delete(int rating)
|
void Delete(int rating)
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ComponentModel.Composition" />
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using System.Windows.Forms;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using static mpvnet.Core;
|
using static mpvnet.Core;
|
||||||
|
using static TaskDialog.Msg;
|
||||||
|
|
||||||
namespace mpvnet
|
namespace mpvnet
|
||||||
{
|
{
|
||||||
@@ -116,7 +117,7 @@ namespace mpvnet
|
|||||||
if (IsStartedFromTerminal)
|
if (IsStartedFromTerminal)
|
||||||
ConsoleHelp.WriteError(obj.ToString());
|
ConsoleHelp.WriteError(obj.ToString());
|
||||||
else
|
else
|
||||||
Msg.ShowError(obj.ToString());
|
MsgError(obj.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,7 +207,7 @@ namespace mpvnet
|
|||||||
|
|
||||||
Commands.Execute("show-setup-dialog");
|
Commands.Execute("show-setup-dialog");
|
||||||
else
|
else
|
||||||
Msg.Show("The setup dialog can be found in the context menu at:\n\nTools > Setup");
|
MsgInfo("The setup dialog can be found in the context menu at:\n\nTools > Setup");
|
||||||
|
|
||||||
RegistryHelp.SetValue(RegistryHelp.ApplicationKey, Folder.Startup, 1);
|
RegistryHelp.SetValue(RegistryHelp.ApplicationKey, Folder.Startup, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ using System.Text.RegularExpressions;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
using static mpvnet.Core;
|
using static mpvnet.Core;
|
||||||
|
using static TaskDialog.Msg;
|
||||||
|
|
||||||
namespace mpvnet
|
namespace mpvnet
|
||||||
{
|
{
|
||||||
@@ -39,7 +40,7 @@ namespace mpvnet
|
|||||||
if (onlineVersion <= currentVersion)
|
if (onlineVersion <= currentVersion)
|
||||||
{
|
{
|
||||||
if (showUpToDateMessage)
|
if (showUpToDateMessage)
|
||||||
Msg.Show($"{Application.ProductName} is up to date.");
|
MsgInfo($"{Application.ProductName} is up to date.");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,16 +82,20 @@ public class Msg
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ShowWarning(string mainInstruction,
|
public static void ShowWarning(
|
||||||
string content = null,
|
string mainInstruction,
|
||||||
bool onlyOnce = false)
|
string content = null,
|
||||||
|
bool onlyOnce = false)
|
||||||
{
|
{
|
||||||
if (onlyOnce && Msg.ShownMessages != null &&
|
if (onlyOnce && Msg.ShownMessages != null &&
|
||||||
Msg.ShownMessages.Contains(mainInstruction + content))
|
Msg.ShownMessages.Contains(mainInstruction + content))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Msg.Show(mainInstruction, content, MsgIcon.Warning, MsgButtons.Ok, MsgResult.None);
|
Msg.Show(mainInstruction, content, MsgIcon.Warning, MsgButtons.Ok, MsgResult.None);
|
||||||
if (!onlyOnce) return;
|
|
||||||
|
if (!onlyOnce)
|
||||||
|
return;
|
||||||
|
|
||||||
Msg.ShownMessages += mainInstruction + content;
|
Msg.ShownMessages += mainInstruction + content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using System.Windows.Input;
|
|||||||
|
|
||||||
using DynamicGUI;
|
using DynamicGUI;
|
||||||
|
|
||||||
|
using static TaskDialog.Msg;
|
||||||
using static mpvnet.Core;
|
using static mpvnet.Core;
|
||||||
|
|
||||||
namespace mpvnet
|
namespace mpvnet
|
||||||
@@ -75,7 +76,7 @@ namespace mpvnet
|
|||||||
|
|
||||||
File.WriteAllText(core.ConfPath, GetContent("mpv"));
|
File.WriteAllText(core.ConfPath, GetContent("mpv"));
|
||||||
File.WriteAllText(App.ConfPath, GetContent("mpvnet"));
|
File.WriteAllText(App.ConfPath, GetContent("mpvnet"));
|
||||||
Msg.Show("Changes will be available on next mpv.net startup.");
|
MsgInfo("Changes will be available on next mpv.net startup.");
|
||||||
}
|
}
|
||||||
|
|
||||||
string GetCompareString()
|
string GetCompareString()
|
||||||
@@ -297,7 +298,7 @@ namespace mpvnet
|
|||||||
|
|
||||||
void PreviewTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
|
void PreviewTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
|
||||||
{
|
{
|
||||||
Msg.Show("mpv.conf Preview", GetContent("mpv"));
|
MsgInfo("mpv.conf Preview", GetContent("mpv"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowManualTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
|
void ShowManualTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using System.Windows.Data;
|
|||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
|
||||||
using static mpvnet.Core;
|
using static mpvnet.Core;
|
||||||
|
using static TaskDialog.Msg;
|
||||||
|
|
||||||
namespace mpvnet
|
namespace mpvnet
|
||||||
{
|
{
|
||||||
@@ -37,7 +38,7 @@ namespace mpvnet
|
|||||||
if (SearchControl.SearchTextBox.Text == "?")
|
if (SearchControl.SearchTextBox.Text == "?")
|
||||||
{
|
{
|
||||||
SearchControl.SearchTextBox.Text = "";
|
SearchControl.SearchTextBox.Text = "";
|
||||||
Msg.Show("Filtering", "Reduce the filter scope with:\n\ni input\n\nm menu\n\nc command\n\nIf only one character is entered input search is performed.");
|
MsgInfo("Filtering", "Reduce the filter scope with:\n\ni input\n\nm menu\n\nc command\n\nIf only one character is entered input search is performed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +86,7 @@ namespace mpvnet
|
|||||||
|
|
||||||
foreach (CommandItem i in CommandItem.Items)
|
foreach (CommandItem i in CommandItem.Items)
|
||||||
if (items.ContainsKey(i.Input) && i.Input != "")
|
if (items.ContainsKey(i.Input) && i.Input != "")
|
||||||
Msg.Show($"Duplicate found:\n\n{i.Input}: {i.Path}\n\n{items[i.Input].Input}: {items[i.Input].Path}\n\nPlease note that you can chain multiple commands in the same line by using a semicolon as separator.", "Duplicate Found");
|
MsgInfo($"Duplicate found:\n\n{i.Input}: {i.Path}\n\n{items[i.Input].Input}: {items[i.Input].Path}\n\nPlease note that you can chain multiple commands in the same line by using a semicolon as separator.", "Duplicate Found");
|
||||||
else
|
else
|
||||||
items[i.Input] = i;
|
items[i.Input] = i;
|
||||||
}
|
}
|
||||||
@@ -124,9 +125,11 @@ namespace mpvnet
|
|||||||
|
|
||||||
void Window_Closed(object sender, EventArgs e)
|
void Window_Closed(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (InitialInputConfContent == GetInputConfContent()) return;
|
if (InitialInputConfContent == GetInputConfContent())
|
||||||
|
return;
|
||||||
|
|
||||||
File.WriteAllText(core.InputConfPath, GetInputConfContent());
|
File.WriteAllText(core.InputConfPath, GetInputConfContent());
|
||||||
Msg.Show("Changes will be available on next mpv.net startup.");
|
MsgInfo("Changes will be available on next mpv.net startup.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ using System.Windows;
|
|||||||
using WinForms = System.Windows.Forms;
|
using WinForms = System.Windows.Forms;
|
||||||
|
|
||||||
using static StockIcon;
|
using static StockIcon;
|
||||||
|
using static TaskDialog.Msg;
|
||||||
|
|
||||||
namespace mpvnet
|
namespace mpvnet
|
||||||
{
|
{
|
||||||
@@ -44,7 +45,7 @@ namespace mpvnet
|
|||||||
proc.WaitForExit();
|
proc.WaitForExit();
|
||||||
|
|
||||||
if (proc.ExitCode == 0)
|
if (proc.ExitCode == 0)
|
||||||
Msg.Show("File associations successfully created.");
|
MsgInfo("File associations successfully created.");
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using System.Globalization;
|
|||||||
|
|
||||||
using static mpvnet.Core;
|
using static mpvnet.Core;
|
||||||
using static Native;
|
using static Native;
|
||||||
|
using static TaskDialog.Msg;
|
||||||
|
|
||||||
namespace mpvnet
|
namespace mpvnet
|
||||||
{
|
{
|
||||||
@@ -957,6 +958,7 @@ namespace mpvnet
|
|||||||
CSharpScriptHost.ExecuteScriptsInFolder(core.ConfigFolder + "scripts-cs");
|
CSharpScriptHost.ExecuteScriptsInFolder(core.ConfigFolder + "scripts-cs");
|
||||||
ShownTickCount = Environment.TickCount;
|
ShownTickCount = Environment.TickCount;
|
||||||
App.ShowSetup();
|
App.ShowSetup();
|
||||||
|
MsgError("aaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbb");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnActivated(EventArgs e)
|
protected override void OnActivated(EventArgs e)
|
||||||
|
|||||||
70
src/WinForms/TaskDialog/CheckBoxRendererEx.vb
Normal file
70
src/WinForms/TaskDialog/CheckBoxRendererEx.vb
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
|
||||||
|
Imports System.Drawing
|
||||||
|
Imports System.Drawing.Drawing2D
|
||||||
|
Imports System.Windows.Forms
|
||||||
|
Imports System.Windows.Forms.VisualStyles
|
||||||
|
|
||||||
|
Public Class CheckBoxRendererEx
|
||||||
|
Public Shared Sub DrawCheckBox(g As Graphics, glyphLocation As Point, state As CheckBoxState)
|
||||||
|
DrawCheckBox(g, New Rectangle(glyphLocation, GetGlyphSize(g, state)), state)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Sub DrawCheckBox(g As Graphics, rect As Rectangle, state As CheckBoxState)
|
||||||
|
'Dim smoothingModeBackup = g.SmoothingMode
|
||||||
|
'g.SmoothingMode = SmoothingMode.AntiAlias
|
||||||
|
|
||||||
|
'If ThemeManager.CurrentTheme.UsesSystemColors OrElse DesignHelp.IsDesignMode Then
|
||||||
|
' CheckBoxRenderer.DrawCheckBox(g, rect.Location, state)
|
||||||
|
' Return
|
||||||
|
'End If
|
||||||
|
|
||||||
|
'Dim theme = ThemeManager.CurrentTheme.General.Controls.CheckBox
|
||||||
|
'Dim checked = state = CheckBoxState.CheckedDisabled OrElse state = CheckBoxState.CheckedHot OrElse state = CheckBoxState.CheckedNormal OrElse state = CheckBoxState.CheckedPressed
|
||||||
|
'Dim backColor = If(checked, theme.BoxCheckedColor, theme.BoxColor)
|
||||||
|
'Dim borderColor = If(checked, theme.BorderCheckedColor, theme.BorderColor)
|
||||||
|
'Dim borderStrength = 2
|
||||||
|
'Dim checkmarkColor = theme.CheckmarkColor
|
||||||
|
'Dim checkmarkStrength = rect.Width \ 5
|
||||||
|
|
||||||
|
'Select Case state
|
||||||
|
' Case CheckBoxState.CheckedNormal
|
||||||
|
' Using brush As New SolidBrush(backColor)
|
||||||
|
' Using pen As New Pen(borderColor, borderStrength)
|
||||||
|
' g.FillRectangle(brush, rect)
|
||||||
|
' g.DrawRectangle(pen, rect)
|
||||||
|
' End Using
|
||||||
|
' End Using
|
||||||
|
|
||||||
|
' Dim startX1 = rect.Left + rect.Width / 4.5F
|
||||||
|
' Dim startY1 = rect.Top + rect.Height / 2.75F
|
||||||
|
' Dim endX1 = rect.Left + rect.Width / 3.0F
|
||||||
|
' Dim endY1 = rect.Top + rect.Height / 1.2F
|
||||||
|
|
||||||
|
' Dim startX2 = rect.Left + rect.Width / 3.6F
|
||||||
|
' Dim startY2 = rect.Top + rect.Height / 1.3F
|
||||||
|
' Dim endX2 = rect.Left + rect.Width / 1.2F
|
||||||
|
' Dim endY2 = rect.Top + rect.Height / 5.0F
|
||||||
|
|
||||||
|
' Using pen As New Pen(checkmarkColor, checkmarkStrength)
|
||||||
|
' g.DrawLine(pen, startX1, startY1, endX1, endY1)
|
||||||
|
' g.DrawLine(pen, startX2, startY2, endX2, endY2)
|
||||||
|
' End Using
|
||||||
|
|
||||||
|
' Case CheckBoxState.UncheckedNormal
|
||||||
|
' Using brush As New SolidBrush(backColor)
|
||||||
|
' Using pen As New Pen(borderColor, borderStrength)
|
||||||
|
' g.FillRectangle(brush, rect)
|
||||||
|
' g.DrawRectangle(pen, rect)
|
||||||
|
' End Using
|
||||||
|
' End Using
|
||||||
|
'End Select
|
||||||
|
|
||||||
|
'g.SmoothingMode = smoothingModeBackup
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Shared Function GetGlyphSize(g As Graphics, state As CheckBoxState) As Size
|
||||||
|
Dim defaultSize = CheckBoxRenderer.GetGlyphSize(g, state)
|
||||||
|
Dim uiSize = New Size(CInt(defaultSize.Width), CInt(defaultSize.Height))
|
||||||
|
Return uiSize
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
164
src/WinForms/TaskDialog/ColorHSL.vb
Normal file
164
src/WinForms/TaskDialog/ColorHSL.vb
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
Imports System.Drawing
|
||||||
|
|
||||||
|
<Serializable>
|
||||||
|
Public Structure ColorHSL
|
||||||
|
Private ReadOnly _h As Integer
|
||||||
|
Private ReadOnly _s As Single
|
||||||
|
Private ReadOnly _l As Single
|
||||||
|
Private ReadOnly _a As Single
|
||||||
|
|
||||||
|
|
||||||
|
Public ReadOnly Property H As Integer
|
||||||
|
Get
|
||||||
|
Return _h
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property S As Single
|
||||||
|
Get
|
||||||
|
Return _s
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property L As Single
|
||||||
|
Get
|
||||||
|
Return _l
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property A As Single
|
||||||
|
Get
|
||||||
|
Return _a
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public Sub New(h As Integer, s As Single, l As Single, Optional a As Single = 1.0F)
|
||||||
|
Dim newHue = h Mod 360
|
||||||
|
_h = Mathf.Clamp(If(newHue < 0, newHue + 360, newHue), 0, 359)
|
||||||
|
_s = Mathf.Clamp01(s)
|
||||||
|
_l = Mathf.Clamp01(l)
|
||||||
|
_a = Mathf.Clamp01(a)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Widening Operator CType(colorHSL As ColorHSL) As Color
|
||||||
|
Dim hue As Integer = Mathf.Clamp(colorHSL.H Mod 360, 0, 359)
|
||||||
|
Dim saturation As Single = Mathf.Clamp01(colorHSL.S)
|
||||||
|
Dim lightness As Single = Mathf.Clamp01(colorHSL.L)
|
||||||
|
Dim alpha As Single = Mathf.Clamp01(colorHSL.A)
|
||||||
|
Dim c As Single = (1.0F - Math.Abs(2.0F * lightness - 1.0F)) * saturation
|
||||||
|
Dim x As Single = c * (1.0F - Math.Abs((hue / 60.0F) Mod 2.0F - 1.0F))
|
||||||
|
Dim m As Single = lightness - c / 2.0F
|
||||||
|
Dim r As Single = c
|
||||||
|
Dim g As Single = 0
|
||||||
|
Dim b As Single = x
|
||||||
|
|
||||||
|
If hue < 300 Then
|
||||||
|
r = x
|
||||||
|
g = 0
|
||||||
|
b = c
|
||||||
|
End If
|
||||||
|
|
||||||
|
If hue < 240 Then
|
||||||
|
r = 0
|
||||||
|
g = x
|
||||||
|
b = c
|
||||||
|
End If
|
||||||
|
|
||||||
|
If hue < 180 Then
|
||||||
|
r = 0
|
||||||
|
g = c
|
||||||
|
b = x
|
||||||
|
End If
|
||||||
|
|
||||||
|
If hue < 120 Then
|
||||||
|
r = x
|
||||||
|
g = c
|
||||||
|
b = 0
|
||||||
|
End If
|
||||||
|
|
||||||
|
If hue < 60 Then
|
||||||
|
r = c
|
||||||
|
g = x
|
||||||
|
b = 0
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return Color.FromArgb(CType(alpha * 255.0F, Byte), CType(Mathf.Clamp01(r + m) * 255.0F, Byte), CType(Mathf.Clamp01(g + m) * 255.0F, Byte), CType(Mathf.Clamp01(b + m) * 255.0F, Byte))
|
||||||
|
End Operator
|
||||||
|
|
||||||
|
Public Shared Widening Operator CType(color As Color) As ColorHSL
|
||||||
|
Dim r As Single = color.R / 255.0F
|
||||||
|
Dim g As Single = color.G / 255.0F
|
||||||
|
Dim b As Single = color.B / 255.0F
|
||||||
|
Dim max As Single = Mathf.Max(r, g, b)
|
||||||
|
Dim min As Single = Mathf.Min(r, g, b)
|
||||||
|
Dim delta As Single = max - min
|
||||||
|
Dim alpha As Single = color.A / 255.0F
|
||||||
|
Dim lightness As Single = (min + max) / 2
|
||||||
|
Dim saturation As Single = 0F
|
||||||
|
saturation = If(delta <> 0F, (delta / (1 - Math.Abs(2 * lightness - 1))), saturation)
|
||||||
|
Dim hue As Single = 0F
|
||||||
|
If delta <> 0F Then
|
||||||
|
hue = If(max = r, 60.0F * (((g - b) / delta) Mod 6.0F), hue)
|
||||||
|
hue = If(max = g, 60.0F * (((b - r) / delta) + 2.0F), hue)
|
||||||
|
hue = If(max = b, 60.0F * (((r - g) / delta) + 4.0F), hue)
|
||||||
|
End If
|
||||||
|
Return New ColorHSL(Mathf.RoundToInt(hue), saturation, lightness, alpha)
|
||||||
|
End Operator
|
||||||
|
|
||||||
|
Public Shared Operator =(colorA As ColorHSL, colorB As ColorHSL) As Boolean
|
||||||
|
Return colorA.Equals(colorB)
|
||||||
|
End Operator
|
||||||
|
|
||||||
|
Public Shared Operator <>(colorA As ColorHSL, colorB As ColorHSL) As Boolean
|
||||||
|
Return Not colorA.Equals(colorB)
|
||||||
|
End Operator
|
||||||
|
|
||||||
|
Public Function AddHue(offset As Integer) As ColorHSL
|
||||||
|
Return New ColorHSL(H + offset, S, L, A)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function AddSaturation(offset As Single) As ColorHSL
|
||||||
|
Return New ColorHSL(H, S + offset, L, A)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function AddLuminance(offset As Single) As ColorHSL
|
||||||
|
Return New ColorHSL(H, S, L + offset, A)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function AddAlpha(offset As Single) As ColorHSL
|
||||||
|
Return New ColorHSL(H, S, L, A + offset)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Overrides Function Equals(obj As Object) As Boolean
|
||||||
|
Dim objColor = CType(obj, ColorHSL)
|
||||||
|
Return H = objColor.H AndAlso S = objColor.S AndAlso L = objColor.L AndAlso A = objColor.A
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SetHue(value As Integer) As ColorHSL
|
||||||
|
Return New ColorHSL(value, S, L, A)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SetSaturation(value As Single) As ColorHSL
|
||||||
|
Return New ColorHSL(H, value, L, A)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SetLuminance(value As Single) As ColorHSL
|
||||||
|
Return New ColorHSL(H, S, value, A)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SetAlpha(value As Single) As ColorHSL
|
||||||
|
Return New ColorHSL(H, S, L, value)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function ToColor() As Color
|
||||||
|
Return CType(Me, Color)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function ToHTML() As String
|
||||||
|
Return ColorTranslator.ToHtml(Me)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Overrides Function ToString() As String
|
||||||
|
Return String.Format($"HSLA({H:0}, {S:0.00}, {L:0.00}, {A:0.00})")
|
||||||
|
End Function
|
||||||
|
End Structure
|
||||||
116
src/WinForms/TaskDialog/Mathf.vb
Normal file
116
src/WinForms/TaskDialog/Mathf.vb
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
Public Class Mathf
|
||||||
|
Public Shared Function Clamp(value As Integer, min As Integer, max As Integer) As Integer
|
||||||
|
If value < min Then
|
||||||
|
value = min
|
||||||
|
ElseIf value > max Then
|
||||||
|
value = max
|
||||||
|
End If
|
||||||
|
Return value
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Clamp(value As Single, min As Single, max As Single) As Single
|
||||||
|
If value < min Then
|
||||||
|
value = min
|
||||||
|
ElseIf value > max Then
|
||||||
|
value = max
|
||||||
|
End If
|
||||||
|
Return value
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Clamp01(value As Single) As Single
|
||||||
|
If value < 0F Then
|
||||||
|
value = 0F
|
||||||
|
ElseIf value > 1.0F Then
|
||||||
|
value = 1.0F
|
||||||
|
End If
|
||||||
|
Return value
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Min(a As Single, b As Single) As Single
|
||||||
|
Return If((a >= b), b, a)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Min(ParamArray values As Single()) As Single
|
||||||
|
Dim num As Integer = values.Length
|
||||||
|
Dim result As Single
|
||||||
|
If num = 0 Then
|
||||||
|
result = 0F
|
||||||
|
Else
|
||||||
|
Dim num2 As Single = values(0)
|
||||||
|
For i As Integer = 1 To num - 1
|
||||||
|
If values(i) < num2 Then
|
||||||
|
num2 = values(i)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
result = num2
|
||||||
|
End If
|
||||||
|
Return result
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Min(a As Integer, b As Integer) As Integer
|
||||||
|
Return If((a >= b), b, a)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Min(ParamArray values As Integer()) As Integer
|
||||||
|
Dim num As Integer = values.Length
|
||||||
|
Dim result As Integer
|
||||||
|
If num = 0 Then
|
||||||
|
result = 0
|
||||||
|
Else
|
||||||
|
Dim num2 As Integer = values(0)
|
||||||
|
For i As Integer = 1 To num - 1
|
||||||
|
If values(i) < num2 Then
|
||||||
|
num2 = values(i)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
result = num2
|
||||||
|
End If
|
||||||
|
Return result
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Max(a As Single, b As Single) As Single
|
||||||
|
Return If((a <= b), b, a)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Max(ParamArray values As Single()) As Single
|
||||||
|
Dim num As Integer = values.Length
|
||||||
|
Dim result As Single
|
||||||
|
If num = 0 Then
|
||||||
|
result = 0F
|
||||||
|
Else
|
||||||
|
Dim num2 As Single = values(0)
|
||||||
|
For i As Integer = 1 To num - 1
|
||||||
|
If values(i) > num2 Then
|
||||||
|
num2 = values(i)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
result = num2
|
||||||
|
End If
|
||||||
|
Return result
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Max(a As Integer, b As Integer) As Integer
|
||||||
|
Return If((a <= b), b, a)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function Max(ParamArray values As Integer()) As Integer
|
||||||
|
Dim num As Integer = values.Length
|
||||||
|
Dim result As Integer
|
||||||
|
If num = 0 Then
|
||||||
|
result = 0
|
||||||
|
Else
|
||||||
|
Dim num2 As Integer = values(0)
|
||||||
|
For i As Integer = 1 To num - 1
|
||||||
|
If values(i) > num2 Then
|
||||||
|
num2 = values(i)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
result = num2
|
||||||
|
End If
|
||||||
|
Return result
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function RoundToInt(value As Single) As Integer
|
||||||
|
Return CInt(Math.Round(value))
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
69
src/WinForms/TaskDialog/Misc.vb
Normal file
69
src/WinForms/TaskDialog/Misc.vb
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
Imports System.IO
|
||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
Imports System.Text
|
||||||
|
Imports System.Windows.Forms
|
||||||
|
|
||||||
|
Public Class StringHelp
|
||||||
|
Shared Function Base(instance As String) As String
|
||||||
|
If instance = "" Then
|
||||||
|
Return ""
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim ret = instance
|
||||||
|
|
||||||
|
If ret.Contains(Path.DirectorySeparatorChar) Then
|
||||||
|
ret = RightLast(ret, Path.DirectorySeparatorChar)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ret.Contains(".") Then
|
||||||
|
ret = LeftLast(ret, ".")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return ret
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function RightLast(value As String, start As String) As String
|
||||||
|
If value = "" OrElse start = "" Then
|
||||||
|
Return ""
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not value.Contains(start) Then
|
||||||
|
Return ""
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return value.Substring(value.LastIndexOf(start) + start.Length)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function LeftLast(value As String, start As String) As String
|
||||||
|
If Not value.Contains(start) Then
|
||||||
|
Return ""
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return value.Substring(0, value.LastIndexOf(start))
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Class Native
|
||||||
|
<DllImport("user32.dll")>
|
||||||
|
Shared Function GetForegroundWindow() As IntPtr
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("user32.dll", CharSet:=CharSet.Unicode)>
|
||||||
|
Shared Function GetWindowModuleFileName(
|
||||||
|
hwnd As IntPtr,
|
||||||
|
lpszFileName As StringBuilder,
|
||||||
|
cchFileNameMax As UInteger) As UInteger
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("user32.dll")>
|
||||||
|
Shared Function SetWindowPos(
|
||||||
|
hWnd As IntPtr,
|
||||||
|
hWndInsertAfter As IntPtr,
|
||||||
|
X As Integer,
|
||||||
|
Y As Integer,
|
||||||
|
cx As Integer,
|
||||||
|
cy As Integer,
|
||||||
|
uFlags As UInteger) As Boolean
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
82
src/WinForms/TaskDialog/Msg.vb
Normal file
82
src/WinForms/TaskDialog/Msg.vb
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
Imports System.Windows.Forms
|
||||||
|
|
||||||
|
Public Class Msg
|
||||||
|
Shared Sub MsgInfo(title As Object, Optional content As Object = Nothing)
|
||||||
|
Dim title1 = title?.ToString
|
||||||
|
Dim content1 = content?.ToString
|
||||||
|
Msg(title1, content1, TaskIcon.Info, TaskButton.OK)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Shared Sub MsgError(title As String, Optional content As String = Nothing)
|
||||||
|
MsgError(title, content, IntPtr.Zero)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Shared Sub MsgError(title As String, content As String, handle As IntPtr)
|
||||||
|
If title = "" Then
|
||||||
|
title = content
|
||||||
|
End If
|
||||||
|
|
||||||
|
If title = "" Then
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
|
||||||
|
Using td As New TaskDialog(Of String)
|
||||||
|
td.Title = title
|
||||||
|
td.Content = content
|
||||||
|
td.Owner = handle
|
||||||
|
td.Icon = TaskIcon.Error
|
||||||
|
td.ShowCopyButton = True
|
||||||
|
td.AddButton("OK")
|
||||||
|
td.Show()
|
||||||
|
End Using
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Shared ShownMessages As String
|
||||||
|
|
||||||
|
Shared Sub MsgWarn(text As String, Optional content As String = Nothing, Optional onlyOnce As Boolean = False)
|
||||||
|
If onlyOnce AndAlso ShownMessages?.Contains(text + content) Then
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
|
||||||
|
Msg(text, content, TaskIcon.Warning, TaskButton.OK)
|
||||||
|
|
||||||
|
If onlyOnce Then
|
||||||
|
ShownMessages += text + content
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Shared Function MsgOK(title As String) As Boolean
|
||||||
|
Return Msg(title, Nothing, TaskIcon.Question, TaskButton.OkCancel) = DialogResult.OK
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function MsgQuestion(
|
||||||
|
title As String,
|
||||||
|
Optional buttons As TaskButton = TaskButton.OkCancel) As DialogResult
|
||||||
|
|
||||||
|
Return Msg(title, Nothing, TaskIcon.Question, buttons)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function MsgQuestion(
|
||||||
|
title As String,
|
||||||
|
content As String,
|
||||||
|
Optional buttons As TaskButton = TaskButton.OkCancel) As DialogResult
|
||||||
|
|
||||||
|
Return Msg(title, content, TaskIcon.Question, buttons)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function Msg(
|
||||||
|
title As String,
|
||||||
|
content As String,
|
||||||
|
icon As TaskIcon,
|
||||||
|
buttons As TaskButton) As DialogResult
|
||||||
|
|
||||||
|
Using td As New TaskDialog(Of DialogResult)
|
||||||
|
td.Icon = icon
|
||||||
|
td.Title = title
|
||||||
|
td.Content = content
|
||||||
|
td.Buttons = buttons
|
||||||
|
Return td.Show()
|
||||||
|
End Using
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
13
src/WinForms/TaskDialog/My Project/Application.Designer.vb
generated
Normal file
13
src/WinForms/TaskDialog/My Project/Application.Designer.vb
generated
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
'------------------------------------------------------------------------------
|
||||||
|
' <auto-generated>
|
||||||
|
' This code was generated by a tool.
|
||||||
|
' Runtime Version:4.0.30319.42000
|
||||||
|
'
|
||||||
|
' Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
' the code is regenerated.
|
||||||
|
' </auto-generated>
|
||||||
|
'------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Option Strict On
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
10
src/WinForms/TaskDialog/My Project/Application.myapp
Normal file
10
src/WinForms/TaskDialog/My Project/Application.myapp
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<MySubMain>false</MySubMain>
|
||||||
|
<SingleInstance>false</SingleInstance>
|
||||||
|
<ShutdownMode>0</ShutdownMode>
|
||||||
|
<EnableVisualStyles>true</EnableVisualStyles>
|
||||||
|
<AuthenticationMode>0</AuthenticationMode>
|
||||||
|
<ApplicationType>2</ApplicationType>
|
||||||
|
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||||
|
</MyApplicationData>
|
||||||
35
src/WinForms/TaskDialog/My Project/AssemblyInfo.vb
Normal file
35
src/WinForms/TaskDialog/My Project/AssemblyInfo.vb
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
Imports System
|
||||||
|
Imports System.Reflection
|
||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
|
||||||
|
' General Information about an assembly is controlled through the following
|
||||||
|
' set of attributes. Change these attribute values to modify the information
|
||||||
|
' associated with an assembly.
|
||||||
|
|
||||||
|
' Review the values of the assembly attributes
|
||||||
|
|
||||||
|
<Assembly: AssemblyTitle("TaskDialog")>
|
||||||
|
<Assembly: AssemblyDescription("")>
|
||||||
|
<Assembly: AssemblyCompany("")>
|
||||||
|
<Assembly: AssemblyProduct("TaskDialog")>
|
||||||
|
<Assembly: AssemblyCopyright("Copyright © 2021")>
|
||||||
|
<Assembly: AssemblyTrademark("")>
|
||||||
|
|
||||||
|
<Assembly: ComVisible(False)>
|
||||||
|
|
||||||
|
'The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
<Assembly: Guid("f93669b6-6d35-4b9b-8336-ba229135de4d")>
|
||||||
|
|
||||||
|
' Version information for an assembly consists of the following four values:
|
||||||
|
'
|
||||||
|
' Major Version
|
||||||
|
' Minor Version
|
||||||
|
' Build Number
|
||||||
|
' Revision
|
||||||
|
'
|
||||||
|
' You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
' by using the '*' as shown below:
|
||||||
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
|
<Assembly: AssemblyVersion("1.0.0.0")>
|
||||||
|
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||||
63
src/WinForms/TaskDialog/My Project/Resources.Designer.vb
generated
Normal file
63
src/WinForms/TaskDialog/My Project/Resources.Designer.vb
generated
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
'------------------------------------------------------------------------------
|
||||||
|
' <auto-generated>
|
||||||
|
' This code was generated by a tool.
|
||||||
|
' Runtime Version:4.0.30319.42000
|
||||||
|
'
|
||||||
|
' Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
' the code is regenerated.
|
||||||
|
' </auto-generated>
|
||||||
|
'------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Option Strict On
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
|
Imports System
|
||||||
|
|
||||||
|
Namespace My.Resources
|
||||||
|
|
||||||
|
'This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
'class via a tool like ResGen or Visual Studio.
|
||||||
|
'To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
'with the /str option, or rebuild your VS project.
|
||||||
|
'''<summary>
|
||||||
|
''' A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
'''</summary>
|
||||||
|
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0"), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||||
|
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
|
||||||
|
Friend Module Resources
|
||||||
|
|
||||||
|
Private resourceMan As Global.System.Resources.ResourceManager
|
||||||
|
|
||||||
|
Private resourceCulture As Global.System.Globalization.CultureInfo
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Returns the cached ResourceManager instance used by this class.
|
||||||
|
'''</summary>
|
||||||
|
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
|
||||||
|
Get
|
||||||
|
If Object.ReferenceEquals(resourceMan, Nothing) Then
|
||||||
|
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("TaskDialog.Resources", GetType(Resources).Assembly)
|
||||||
|
resourceMan = temp
|
||||||
|
End If
|
||||||
|
Return resourceMan
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Overrides the current thread's CurrentUICulture property for all
|
||||||
|
''' resource lookups using this strongly typed resource class.
|
||||||
|
'''</summary>
|
||||||
|
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Friend Property Culture() As Global.System.Globalization.CultureInfo
|
||||||
|
Get
|
||||||
|
Return resourceCulture
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
resourceCulture = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
End Module
|
||||||
|
End Namespace
|
||||||
117
src/WinForms/TaskDialog/My Project/Resources.resx
Normal file
117
src/WinForms/TaskDialog/My Project/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
73
src/WinForms/TaskDialog/My Project/Settings.Designer.vb
generated
Normal file
73
src/WinForms/TaskDialog/My Project/Settings.Designer.vb
generated
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
'------------------------------------------------------------------------------
|
||||||
|
' <auto-generated>
|
||||||
|
' This code was generated by a tool.
|
||||||
|
' Runtime Version:4.0.30319.42000
|
||||||
|
'
|
||||||
|
' Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
' the code is regenerated.
|
||||||
|
' </auto-generated>
|
||||||
|
'------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Option Strict On
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
|
|
||||||
|
Namespace My
|
||||||
|
|
||||||
|
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||||
|
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0"), _
|
||||||
|
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Partial Friend NotInheritable Class MySettings
|
||||||
|
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||||
|
|
||||||
|
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
|
||||||
|
|
||||||
|
#Region "My.Settings Auto-Save Functionality"
|
||||||
|
#If _MyType = "WindowsForms" Then
|
||||||
|
Private Shared addedHandler As Boolean
|
||||||
|
|
||||||
|
Private Shared addedHandlerLockObject As New Object
|
||||||
|
|
||||||
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
|
||||||
|
If My.Application.SaveMySettingsOnExit Then
|
||||||
|
My.Settings.Save()
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
#End If
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
Public Shared ReadOnly Property [Default]() As MySettings
|
||||||
|
Get
|
||||||
|
|
||||||
|
#If _MyType = "WindowsForms" Then
|
||||||
|
If Not addedHandler Then
|
||||||
|
SyncLock addedHandlerLockObject
|
||||||
|
If Not addedHandler Then
|
||||||
|
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
|
||||||
|
addedHandler = True
|
||||||
|
End If
|
||||||
|
End SyncLock
|
||||||
|
End If
|
||||||
|
#End If
|
||||||
|
Return defaultInstance
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
|
||||||
|
Namespace My
|
||||||
|
|
||||||
|
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
|
||||||
|
Friend Module MySettingsProperty
|
||||||
|
|
||||||
|
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
|
||||||
|
Friend ReadOnly Property Settings() As Global.TaskDialog.My.MySettings
|
||||||
|
Get
|
||||||
|
Return Global.TaskDialog.My.MySettings.Default
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
End Module
|
||||||
|
End Namespace
|
||||||
7
src/WinForms/TaskDialog/My Project/Settings.settings
Normal file
7
src/WinForms/TaskDialog/My Project/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
||||||
144
src/WinForms/TaskDialog/StockIcon.vb
Normal file
144
src/WinForms/TaskDialog/StockIcon.vb
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
|
||||||
|
Imports System.Drawing
|
||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
|
||||||
|
<Flags()>
|
||||||
|
Enum StockIconOptions As UInteger
|
||||||
|
Small = &H1
|
||||||
|
ShellSize = &H4
|
||||||
|
Handle = &H100
|
||||||
|
SystemIndex = &H4000
|
||||||
|
LinkOverlay = &H8000
|
||||||
|
Selected = &H10000
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Enum StockIconIdentifier As UInteger
|
||||||
|
DocumentNotAssociated = 0
|
||||||
|
DocumentAssociated = 1
|
||||||
|
Application = 2
|
||||||
|
Folder = 3
|
||||||
|
FolderOpen = 4
|
||||||
|
Drive525 = 5
|
||||||
|
Drive35 = 6
|
||||||
|
DriveRemove = 7
|
||||||
|
DriveFixed = 8
|
||||||
|
DriveNetwork = 9
|
||||||
|
DriveNetworkDisabled = 10
|
||||||
|
DriveCD = 11
|
||||||
|
DriveRAM = 12
|
||||||
|
World = 13
|
||||||
|
Server = 15
|
||||||
|
Printer = 16
|
||||||
|
MyNetwork = 17
|
||||||
|
Find = 22
|
||||||
|
Help = 23
|
||||||
|
Share = 28
|
||||||
|
Link = 29
|
||||||
|
SlowFile = 30
|
||||||
|
Recycler = 31
|
||||||
|
RecyclerFull = 32
|
||||||
|
MediaCDAudio = 40
|
||||||
|
Lock = 47
|
||||||
|
AutoList = 49
|
||||||
|
PrinterNet = 50
|
||||||
|
ServerShare = 51
|
||||||
|
PrinterFax = 52
|
||||||
|
PrinterFaxNet = 53
|
||||||
|
PrinterFile = 54
|
||||||
|
Stack = 55
|
||||||
|
MediaSVCD = 56
|
||||||
|
StuffedFolder = 57
|
||||||
|
DriveUnknown = 58
|
||||||
|
DriveDVD = 59
|
||||||
|
MediaDVD = 60
|
||||||
|
MediaDVDRAM = 61
|
||||||
|
MediaDVDRW = 62
|
||||||
|
MediaDVDR = 63
|
||||||
|
MediaDVDROM = 64
|
||||||
|
MediaCDAudioPlus = 65
|
||||||
|
MediaCDRW = 66
|
||||||
|
MediaCDR = 67
|
||||||
|
MediaCDBurn = 68
|
||||||
|
MediaBlankCD = 69
|
||||||
|
MediaCDROM = 70
|
||||||
|
AudioFiles = 71
|
||||||
|
ImageFiles = 72
|
||||||
|
VideoFiles = 73
|
||||||
|
MixedFiles = 74
|
||||||
|
FolderBack = 75
|
||||||
|
FolderFront = 76
|
||||||
|
Shield = 77
|
||||||
|
Warning = 78
|
||||||
|
Info = 79
|
||||||
|
[Error] = 80
|
||||||
|
Key = 81
|
||||||
|
Software = 82
|
||||||
|
Rename = 83
|
||||||
|
Delete = 84
|
||||||
|
MediaAudioDVD = 85
|
||||||
|
MediaMovieDVD = 86
|
||||||
|
MediaEnhancedCD = 87
|
||||||
|
MediaEnhancedDVD = 88
|
||||||
|
MediaHDDVD = 89
|
||||||
|
MediaBluRay = 90
|
||||||
|
MediaVCD = 91
|
||||||
|
MediaDVDPlusR = 92
|
||||||
|
MediaDVDPlusRW = 93
|
||||||
|
DesktopPC = 94
|
||||||
|
MobilePC = 95
|
||||||
|
Users = 96
|
||||||
|
MediaSmartMedia = 97
|
||||||
|
MediaCompactFlash = 98
|
||||||
|
DeviceCellPhone = 99
|
||||||
|
DeviceCamera = 100
|
||||||
|
DeviceVideoCamera = 101
|
||||||
|
DeviceAudioPlayer = 102
|
||||||
|
NetworkConnect = 103
|
||||||
|
Internet = 104
|
||||||
|
ZipFile = 105
|
||||||
|
Settings = 106
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Class StockIcon
|
||||||
|
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
|
||||||
|
Structure StockIconInfo
|
||||||
|
Friend StuctureSize As UInt32
|
||||||
|
Friend Handle As IntPtr
|
||||||
|
Friend ImageIndex As Int32
|
||||||
|
Friend Identifier As Int32
|
||||||
|
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)>
|
||||||
|
Friend Path As String
|
||||||
|
End Structure
|
||||||
|
|
||||||
|
<DllImport("shell32.dll")>
|
||||||
|
Shared Function SHGetStockIconInfo(
|
||||||
|
identifier As StockIconIdentifier,
|
||||||
|
flags As StockIconOptions,
|
||||||
|
ByRef info As StockIconInfo) As Integer
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("user32.dll")>
|
||||||
|
Shared Function DestroyIcon(handle As IntPtr) As Boolean
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function GetSmallImage(identifier As StockIconIdentifier) As Bitmap
|
||||||
|
Dim ptr = GetIcon(identifier, StockIconOptions.Handle Or StockIconOptions.Small)
|
||||||
|
Dim bmp = Icon.FromHandle(ptr).ToBitmap
|
||||||
|
DestroyIcon(ptr)
|
||||||
|
Return bmp
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function GetImage(identifier As StockIconIdentifier) As Image
|
||||||
|
Dim ptr = GetIcon(identifier, StockIconOptions.Handle Or StockIconOptions.ShellSize)
|
||||||
|
Dim bmp = Icon.FromHandle(ptr).ToBitmap
|
||||||
|
DestroyIcon(ptr)
|
||||||
|
Return bmp
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function GetIcon(identifier As StockIconIdentifier, flags As StockIconOptions) As IntPtr
|
||||||
|
Dim info As New StockIconInfo()
|
||||||
|
info.StuctureSize = CType(Marshal.SizeOf(GetType(StockIconInfo)), UInt32)
|
||||||
|
Marshal.ThrowExceptionForHR(SHGetStockIconInfo(identifier, flags, info))
|
||||||
|
Return info.Handle
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
2059
src/WinForms/TaskDialog/Symbol.vb
Normal file
2059
src/WinForms/TaskDialog/Symbol.vb
Normal file
File diff suppressed because it is too large
Load Diff
25
src/WinForms/TaskDialog/TaskDialog.sln
Normal file
25
src/WinForms/TaskDialog/TaskDialog.sln
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.31229.75
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TaskDialog", "TaskDialog.vbproj", "{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {A25E6589-5D38-46A2-B480-5B0FFCAC64D7}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
486
src/WinForms/TaskDialog/TaskDialog.vb
Normal file
486
src/WinForms/TaskDialog/TaskDialog.vb
Normal file
@@ -0,0 +1,486 @@
|
|||||||
|
|
||||||
|
Imports System.Drawing
|
||||||
|
Imports System.Text
|
||||||
|
Imports System.Threading
|
||||||
|
Imports System.Windows.Forms
|
||||||
|
|
||||||
|
Imports TaskDialog.Msg
|
||||||
|
|
||||||
|
Public Class TaskDialog(Of T)
|
||||||
|
Inherits TaskDialogBaseForm
|
||||||
|
|
||||||
|
Property CommandDefinitions As New List(Of CommandDefinition)
|
||||||
|
Property ButtonDefinitions As New List(Of ButtonDefinition)
|
||||||
|
Property SelectedValue As T
|
||||||
|
Property SelectedText As String
|
||||||
|
Property Title As String
|
||||||
|
Property Timeout As Integer
|
||||||
|
Property Content As String
|
||||||
|
Property ContentLabel As LabelEx
|
||||||
|
Property ExpandedContent As String
|
||||||
|
Property ExpandedContentLabel As LabelEx
|
||||||
|
|
||||||
|
Overloads Property Icon As TaskIcon
|
||||||
|
Overloads Property Owner As IntPtr
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub New()
|
||||||
|
MyBase.New()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub New(defaultValue As T)
|
||||||
|
MyClass.New()
|
||||||
|
SelectedValue = defaultValue
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub New(defaultText As String, defaultValue As T)
|
||||||
|
MyClass.New(defaultValue)
|
||||||
|
SelectedText = defaultText
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Init()
|
||||||
|
ShowInTaskbar = False
|
||||||
|
Width = FontHeight * 22
|
||||||
|
|
||||||
|
If Content = "" AndAlso Title?.Length > 80 Then
|
||||||
|
Content = Title
|
||||||
|
Title = ""
|
||||||
|
End If
|
||||||
|
|
||||||
|
If MenuButton.Items.Count > 0 Then
|
||||||
|
MenuButton.Visible = True
|
||||||
|
|
||||||
|
For Each i In MenuButton.Items
|
||||||
|
Dim textWidth = TextRenderer.MeasureText(i.ToString, Font).Width + FontHeight * 3
|
||||||
|
|
||||||
|
If MenuButton.Width < textWidth Then
|
||||||
|
Width += textWidth - MenuButton.Width
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Content?.Length > 1000 OrElse ExpandedContent?.Length > 1000 Then
|
||||||
|
Width = FontHeight * 35
|
||||||
|
End If
|
||||||
|
|
||||||
|
ShowIcon = False
|
||||||
|
StartPosition = FormStartPosition.CenterScreen
|
||||||
|
|
||||||
|
If Icon <> TaskIcon.None Then
|
||||||
|
pbIcon.Visible = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
Select Case Icon
|
||||||
|
Case TaskIcon.Warning
|
||||||
|
pbIcon.Image = StockIcon.GetImage(StockIconIdentifier.Warning)
|
||||||
|
Case TaskIcon.Error
|
||||||
|
pbIcon.Image = StockIcon.GetImage(StockIconIdentifier.Error)
|
||||||
|
Case TaskIcon.Info
|
||||||
|
pbIcon.Image = StockIcon.GetImage(StockIconIdentifier.Info)
|
||||||
|
Case TaskIcon.Shield
|
||||||
|
pbIcon.Image = StockIcon.GetImage(StockIconIdentifier.Shield)
|
||||||
|
Case TaskIcon.Question
|
||||||
|
pbIcon.Image = StockIcon.GetImage(StockIconIdentifier.Help)
|
||||||
|
End Select
|
||||||
|
|
||||||
|
TitleLabel.Font = New Font("Segoe UI", 11)
|
||||||
|
TitleLabel.Text = Title
|
||||||
|
|
||||||
|
If Content <> "" Then
|
||||||
|
ContentLabel = New LabelEx
|
||||||
|
ContentLabel.Margin = New Padding(0)
|
||||||
|
ContentLabel.BorderStyle = BorderStyle.None
|
||||||
|
ContentLabel.Text = Content
|
||||||
|
paMain.Controls.Add(ContentLabel)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ExpandedContent <> "" Then
|
||||||
|
ExpandedContentLabel = New LabelEx
|
||||||
|
ExpandedContentLabel.Margin = New Padding(0)
|
||||||
|
ExpandedContentLabel.BorderStyle = BorderStyle.None
|
||||||
|
ExpandedContentLabel.Text = ExpandedContent
|
||||||
|
ExpandedContentLabel.Name = "ExpandedInformation"
|
||||||
|
blDetails.Visible = True
|
||||||
|
paMain.Controls.Add(ExpandedContentLabel)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim firstCommandButton As CommandButton = Nothing
|
||||||
|
|
||||||
|
For Each cmd In CommandDefinitions
|
||||||
|
Dim cb As New CommandButton
|
||||||
|
cb.Title = cmd.Text
|
||||||
|
cb.Description = cmd.Description
|
||||||
|
cb.Tag = cmd
|
||||||
|
|
||||||
|
If TypeOf cmd.Value Is FontFamily Then
|
||||||
|
cb.Font = New Font(cmd.Text, Font.Size)
|
||||||
|
End If
|
||||||
|
|
||||||
|
AddHandler cb.Click, AddressOf CommandClick
|
||||||
|
paMain.Controls.Add(cb)
|
||||||
|
|
||||||
|
If firstCommandButton Is Nothing Then
|
||||||
|
firstCommandButton = cb
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
For Each i In ButtonDefinitions
|
||||||
|
If Not flpButtons.Visible Then
|
||||||
|
flpButtons.Visible = True
|
||||||
|
flpButtons.AutoSize = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim b As New ButtonEx
|
||||||
|
b.Text = i.Text
|
||||||
|
b.Tag = i.Value
|
||||||
|
|
||||||
|
If AcceptButton Is Nothing AndAlso i.Text = "OK" Then
|
||||||
|
AcceptButton = b
|
||||||
|
End If
|
||||||
|
|
||||||
|
flpButtons.Controls.Add(b)
|
||||||
|
i.Button = b
|
||||||
|
AddHandler b.Click, AddressOf ButtonClick
|
||||||
|
Next
|
||||||
|
|
||||||
|
If Timeout > 0 Then
|
||||||
|
Task.Run(Sub()
|
||||||
|
Thread.Sleep(Timeout * 1000)
|
||||||
|
|
||||||
|
If Not IsDisposingOrDisposed Then
|
||||||
|
Invoke(Sub() Close())
|
||||||
|
End If
|
||||||
|
End Sub)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If TypeOf SelectedValue Is DialogResult Then
|
||||||
|
If SelectedValue.Equals(DialogResult.None) Then
|
||||||
|
If ButtonDefinitions.Where(Function(i) i.Value.Equals(DialogResult.No)).Any Then
|
||||||
|
SelectedValue = CType(CObj(DialogResult.No), T)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ButtonDefinitions.Where(Function(i) i.Value.Equals(DialogResult.Cancel)).Any Then
|
||||||
|
SelectedValue = CType(CObj(DialogResult.Cancel), T)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim ok = ButtonDefinitions.Where(Function(i) i.Value.Equals(DialogResult.OK)).FirstOrDefault
|
||||||
|
|
||||||
|
If Not ok Is Nothing Then
|
||||||
|
ActiveControl = ok.Button
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ActiveControl Is Nothing Then
|
||||||
|
Dim yes = ButtonDefinitions.Where(Function(i) i.Value.Equals(DialogResult.Yes)).FirstOrDefault
|
||||||
|
|
||||||
|
If Not yes Is Nothing Then
|
||||||
|
ActiveControl = yes.Button
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ActiveControl Is Nothing Then
|
||||||
|
If firstCommandButton Is Nothing Then
|
||||||
|
ActiveControl = TitleLabel
|
||||||
|
Else
|
||||||
|
ActiveControl = firstCommandButton
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Owner = IntPtr.Zero Then
|
||||||
|
Owner = GetHandle()
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddCommand(value As T)
|
||||||
|
AddCommand(value.ToString, Nothing, value)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddCommand(text As String, Optional value As T = Nothing)
|
||||||
|
AddCommand(text, Nothing, value)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddCommand(text As String, description As String, value As T)
|
||||||
|
If value Is Nothing Then
|
||||||
|
value = CType(CObj(text), T)
|
||||||
|
End If
|
||||||
|
|
||||||
|
CommandDefinitions.Add(New CommandDefinition With {.Text = text, .Description = description, .Value = value})
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddCommands(values As IEnumerable(Of T))
|
||||||
|
For Each i In values
|
||||||
|
AddCommand(i)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddButton(text As String)
|
||||||
|
AddButton(text, CType(CObj(text), T))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddButton(text As String, value As T)
|
||||||
|
ButtonDefinitions.Add(New ButtonDefinition With {.Text = text, .Value = value})
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddButton(value As T)
|
||||||
|
ButtonDefinitions.Add(New ButtonDefinition With {.Text = value.ToString, .Value = value})
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AddButtons(values As IEnumerable(Of T))
|
||||||
|
For Each i In values
|
||||||
|
AddButton(i)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
WriteOnly Property Buttons As TaskButton
|
||||||
|
Set(value As TaskButton)
|
||||||
|
For Each i In {TaskButton.OK, TaskButton.Yes, TaskButton.No,
|
||||||
|
TaskButton.Cancel, TaskButton.Retry, TaskButton.Close}
|
||||||
|
|
||||||
|
If value.HasFlag(i) Then
|
||||||
|
AddButton(i.ToString, CType(CObj(GetDialogResultFromButton(i)), T))
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Sub CommandClick(sender As Object, e As EventArgs)
|
||||||
|
Dim tag = DirectCast(sender, CommandButton).Tag
|
||||||
|
Dim cmd = DirectCast(tag, CommandDefinition)
|
||||||
|
SelectedText = If(cmd.Text = "", cmd.Description, cmd.Text)
|
||||||
|
SelectedValue = cmd.Value
|
||||||
|
Close()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ButtonClick(sender As Object, e As EventArgs)
|
||||||
|
Dim button = DirectCast(sender, ButtonEx)
|
||||||
|
SelectedText = button.Text
|
||||||
|
SelectedValue = DirectCast(button.Tag, T)
|
||||||
|
Close()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Overrides Sub AdjustSize()
|
||||||
|
Dim h = tlpTop.Height + tlpTop.Margin.Vertical
|
||||||
|
|
||||||
|
If paMain.Controls.Count > 0 Then
|
||||||
|
Dim last = paMain.Controls(paMain.Controls.Count - 1)
|
||||||
|
h += last.Top + last.Height + last.Margin.Vertical
|
||||||
|
End If
|
||||||
|
|
||||||
|
h += spBottom.Height
|
||||||
|
|
||||||
|
If spBottom.Controls.OfType(Of Control).Where(Function(i) i.Visible).Count > 0 Then
|
||||||
|
h += spBottom.Margin.Vertical
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim fh = FontHeight
|
||||||
|
h += CInt(fh * 0.7)
|
||||||
|
|
||||||
|
Dim nonClientHeight = Height - ClientSize.Height
|
||||||
|
Dim workingArea = Screen.FromControl(Me).WorkingArea
|
||||||
|
Dim maxHeight = workingArea.Height
|
||||||
|
Dim w = ClientSize.Width
|
||||||
|
Dim secondLongestLine = GetSecondLongestLineLength()
|
||||||
|
Dim predictedWidth = CInt(secondLongestLine * fh * 0.45)
|
||||||
|
|
||||||
|
If predictedWidth > Width Then
|
||||||
|
w = predictedWidth
|
||||||
|
End If
|
||||||
|
|
||||||
|
If w > fh * 40 Then
|
||||||
|
w = fh * 40
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim ncx = Width - ClientSize.Width
|
||||||
|
Dim ncy = Height - ClientSize.Height
|
||||||
|
|
||||||
|
w += ncx
|
||||||
|
h += ncy
|
||||||
|
|
||||||
|
If h > maxHeight Then
|
||||||
|
h = maxHeight
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim l = (workingArea.Width - w) \ 2
|
||||||
|
Dim t = (workingArea.Height - h) \ 2
|
||||||
|
|
||||||
|
Native.SetWindowPos(Handle, IntPtr.Zero, l, t, w, h, 64)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Function GetSecondLongestLineLength() As Integer
|
||||||
|
Dim list As New List(Of Integer)({51, 52})
|
||||||
|
|
||||||
|
If Content <> "" Then
|
||||||
|
For Each line In Content.Split(vbLf)
|
||||||
|
list.Add(line.Length)
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ExpandedContent <> "" AndAlso ExpandedContentLabel?.Height > 0 Then
|
||||||
|
For Each line In ExpandedContent.Split(vbLf)
|
||||||
|
list.Add(line.Length)
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
For Each def In CommandDefinitions
|
||||||
|
If def.Description <> "" Then
|
||||||
|
For Each line In def.Description.Split(vbLf)
|
||||||
|
list.Add(line.Length)
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
For Each def In CommandDefinitions
|
||||||
|
If def.Text <> "" Then
|
||||||
|
For Each line In def.Text.Split(vbLf)
|
||||||
|
list.Add(CInt(line.Length / 11 * 9))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
list.Sort()
|
||||||
|
list.Reverse()
|
||||||
|
Return list(1)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
WriteOnly Property ShowCopyButton As Boolean
|
||||||
|
Set(value As Boolean)
|
||||||
|
If value Then
|
||||||
|
blCopyMessage.Text = "Copy Message"
|
||||||
|
blCopyMessage.Visible = True
|
||||||
|
blCopyMessage.ClickAction = Sub()
|
||||||
|
Clipboard.SetText(GetText)
|
||||||
|
MsgInfo("Message was copied to clipboard.")
|
||||||
|
End Sub
|
||||||
|
End If
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Function GetHandle() As IntPtr
|
||||||
|
Dim sb As New StringBuilder(500)
|
||||||
|
Dim handle = Native.GetForegroundWindow
|
||||||
|
Native.GetWindowModuleFileName(handle, sb, CUInt(sb.Capacity))
|
||||||
|
|
||||||
|
If StringHelp.Base(sb.ToString.Replace(".vshost", "")) = StringHelp.Base(Application.ExecutablePath) Then
|
||||||
|
Return handle
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function GetText() As String
|
||||||
|
Dim ret = TitleLabel.Text
|
||||||
|
|
||||||
|
If Content <> "" Then
|
||||||
|
ret += BR2 + Content
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ExpandedContent <> "" Then
|
||||||
|
ret += BR2 + ExpandedContent
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return ret
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Shared Function GetDialogResultFromButton(button As TaskButton) As DialogResult
|
||||||
|
Select Case button
|
||||||
|
Case TaskButton.OK
|
||||||
|
Return DialogResult.OK
|
||||||
|
Case TaskButton.Cancel, TaskButton.Close
|
||||||
|
Return DialogResult.Cancel
|
||||||
|
Case TaskButton.Yes
|
||||||
|
Return DialogResult.Yes
|
||||||
|
Case TaskButton.No
|
||||||
|
Return DialogResult.No
|
||||||
|
Case TaskButton.None
|
||||||
|
Return DialogResult.None
|
||||||
|
Case TaskButton.Retry
|
||||||
|
Return DialogResult.Retry
|
||||||
|
End Select
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Protected Overrides Sub OnLoad(args As EventArgs)
|
||||||
|
MyBase.OnLoad(args)
|
||||||
|
Font = New Font("Segoe UI", 9)
|
||||||
|
Dim fh = FontHeight
|
||||||
|
|
||||||
|
For Each i As ButtonEx In flpButtons.Controls
|
||||||
|
i.Height = CInt(fh * 1.5)
|
||||||
|
i.Width = fh * 5
|
||||||
|
|
||||||
|
Using g = i.CreateGraphics
|
||||||
|
Dim minWidth = CInt(g.MeasureString(i.Text, i.Font).Width + fh)
|
||||||
|
|
||||||
|
If i.Width < minWidth Then
|
||||||
|
i.Width = minWidth
|
||||||
|
End If
|
||||||
|
End Using
|
||||||
|
|
||||||
|
i.Margin = New Padding(CInt(fh * 0.4), 0, 0, 0)
|
||||||
|
Next
|
||||||
|
|
||||||
|
MenuButton.Margin = New Padding(CInt(fh * 0.7), MenuButton.Margin.Top, CInt(fh * 0.7), MenuButton.Margin.Bottom)
|
||||||
|
InputTextEdit.Margin = MenuButton.Margin
|
||||||
|
flpButtons.Margin = New Padding(0, 0, CInt(fh * 0.7), 0)
|
||||||
|
|
||||||
|
If InputTextEdit.Visible Then
|
||||||
|
ActiveControl = InputTextEdit
|
||||||
|
InputTextEdit.TextBox.SelectAll()
|
||||||
|
End If
|
||||||
|
|
||||||
|
AdjustSize()
|
||||||
|
AdjustSize()
|
||||||
|
|
||||||
|
If Owner <> IntPtr.Zero Then
|
||||||
|
Dim GWLP_HWNDPARENT = -8
|
||||||
|
SetWindowLongPtr(Handle, GWLP_HWNDPARENT, Owner)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Overloads Function Show() As T
|
||||||
|
Init()
|
||||||
|
|
||||||
|
If Application.MessageLoop Then
|
||||||
|
Using Me
|
||||||
|
ShowDialog()
|
||||||
|
End Using
|
||||||
|
Else
|
||||||
|
Application.Run(Me)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return SelectedValue
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Class CommandDefinition
|
||||||
|
Property Text As String
|
||||||
|
Property Description As String
|
||||||
|
Property Value As T
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Class ButtonDefinition
|
||||||
|
Property Text As String
|
||||||
|
Property Value As T
|
||||||
|
Property Button As ButtonEx
|
||||||
|
End Class
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Enum TaskIcon
|
||||||
|
None
|
||||||
|
Info
|
||||||
|
Warning
|
||||||
|
Question
|
||||||
|
[Error]
|
||||||
|
Shield
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Public Enum TaskButton
|
||||||
|
None = 0
|
||||||
|
OK = 1
|
||||||
|
Yes = 2
|
||||||
|
No = 4
|
||||||
|
Cancel = 8
|
||||||
|
Retry = 16
|
||||||
|
Close = 32
|
||||||
|
OkCancel = OK Or Cancel
|
||||||
|
YesNo = Yes Or No
|
||||||
|
YesNoCancel = YesNo Or Cancel
|
||||||
|
RetryCancel = Retry Or Cancel
|
||||||
|
End Enum
|
||||||
131
src/WinForms/TaskDialog/TaskDialog.vbproj
Normal file
131
src/WinForms/TaskDialog/TaskDialog.vbproj
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<StartupObject>
|
||||||
|
</StartupObject>
|
||||||
|
<RootNamespace>TaskDialog</RootNamespace>
|
||||||
|
<AssemblyName>TaskDialog</AssemblyName>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<MyType>Windows</MyType>
|
||||||
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<DefineDebug>true</DefineDebug>
|
||||||
|
<DefineTrace>true</DefineTrace>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DocumentationFile>TaskDialog.xml</DocumentationFile>
|
||||||
|
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42105,42106,42107,42353,42354,42355</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<DefineDebug>false</DefineDebug>
|
||||||
|
<DefineTrace>true</DefineTrace>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DocumentationFile>TaskDialog.xml</DocumentationFile>
|
||||||
|
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42105,42106,42107,42353,42354,42355</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionExplicit>On</OptionExplicit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionCompare>Binary</OptionCompare>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionStrict>Off</OptionStrict>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionInfer>On</OptionInfer>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Import Include="Microsoft.VisualBasic" />
|
||||||
|
<Import Include="System" />
|
||||||
|
<Import Include="System.Collections" />
|
||||||
|
<Import Include="System.Collections.Generic" />
|
||||||
|
<Import Include="System.Data" />
|
||||||
|
<Import Include="System.Diagnostics" />
|
||||||
|
<Import Include="System.Linq" />
|
||||||
|
<Import Include="System.Xml.Linq" />
|
||||||
|
<Import Include="System.Threading.Tasks" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="CheckBoxRendererEx.vb" />
|
||||||
|
<Compile Include="ColorHSL.vb" />
|
||||||
|
<Compile Include="Mathf.vb" />
|
||||||
|
<Compile Include="Misc.vb" />
|
||||||
|
<Compile Include="Msg.vb" />
|
||||||
|
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||||
|
<Compile Include="My Project\Application.Designer.vb">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Application.myapp</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="My Project\Resources.Designer.vb">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="My Project\Settings.Designer.vb">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="StockIcon.vb" />
|
||||||
|
<Compile Include="Symbol.vb" />
|
||||||
|
<Compile Include="TaskDialog.vb">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="TaskDialogBaseForm.Designer.vb">
|
||||||
|
<DependentUpon>TaskDialogBaseForm.vb</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="TaskDialogBaseForm.vb">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="My Project\Resources.resx">
|
||||||
|
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||||
|
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="TaskDialogBaseForm.resx">
|
||||||
|
<DependentUpon>TaskDialogBaseForm.vb</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="My Project\Application.myapp">
|
||||||
|
<Generator>MyApplicationCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<None Include="My Project\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<CustomToolNamespace>My</CustomToolNamespace>
|
||||||
|
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||||
|
</Project>
|
||||||
247
src/WinForms/TaskDialog/TaskDialogBaseForm.Designer.vb
generated
Normal file
247
src/WinForms/TaskDialog/TaskDialogBaseForm.Designer.vb
generated
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
|
||||||
|
Imports System.Windows.Forms
|
||||||
|
|
||||||
|
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||||
|
Partial Class TaskDialogBaseForm
|
||||||
|
Inherits Form
|
||||||
|
|
||||||
|
'Form overrides dispose to clean up the component list.
|
||||||
|
<System.Diagnostics.DebuggerNonUserCode()>
|
||||||
|
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||||
|
Try
|
||||||
|
If disposing AndAlso components IsNot Nothing Then
|
||||||
|
components.Dispose()
|
||||||
|
End If
|
||||||
|
Finally
|
||||||
|
MyBase.Dispose(disposing)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Required by the Windows Form Designer
|
||||||
|
Private components As System.ComponentModel.IContainer
|
||||||
|
|
||||||
|
'NOTE: The following procedure is required by the Windows Form Designer
|
||||||
|
'It can be modified using the Windows Form Designer.
|
||||||
|
'Do not modify it using the code editor.
|
||||||
|
<System.Diagnostics.DebuggerStepThrough()>
|
||||||
|
Private Sub InitializeComponent()
|
||||||
|
Me.components = New System.ComponentModel.Container()
|
||||||
|
Me.tlpMain = New System.Windows.Forms.TableLayoutPanel()
|
||||||
|
Me.tlpTop = New System.Windows.Forms.TableLayoutPanel()
|
||||||
|
Me.TitleLabel = New TaskDialog.TaskDialogBaseForm.LabelEx()
|
||||||
|
Me.pbIcon = New System.Windows.Forms.PictureBox()
|
||||||
|
Me.paMain = New TaskDialog.TaskDialogBaseForm.TaskDialogPanel()
|
||||||
|
Me.spBottom = New TaskDialog.TaskDialogBaseForm.StackPanel()
|
||||||
|
Me.InputTextEdit = New TaskDialog.TaskDialogBaseForm.TextEdit()
|
||||||
|
Me.MenuButton = New TaskDialog.TaskDialogBaseForm.MenuButtonEx()
|
||||||
|
Me.CheckBox = New TaskDialog.TaskDialogBaseForm.CheckBoxEx()
|
||||||
|
Me.flpButtons = New System.Windows.Forms.FlowLayoutPanel()
|
||||||
|
Me.blDetails = New TaskDialog.TaskDialogBaseForm.ButtonLabel()
|
||||||
|
Me.blCopyMessage = New TaskDialog.TaskDialogBaseForm.ButtonLabel()
|
||||||
|
Me.tlpMain.SuspendLayout()
|
||||||
|
Me.tlpTop.SuspendLayout()
|
||||||
|
CType(Me.pbIcon, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
|
Me.spBottom.SuspendLayout()
|
||||||
|
Me.SuspendLayout()
|
||||||
|
'
|
||||||
|
'tlpMain
|
||||||
|
'
|
||||||
|
Me.tlpMain.ColumnCount = 1
|
||||||
|
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
|
Me.tlpMain.Controls.Add(Me.tlpTop, 0, 0)
|
||||||
|
Me.tlpMain.Controls.Add(Me.paMain, 0, 1)
|
||||||
|
Me.tlpMain.Controls.Add(Me.spBottom, 0, 2)
|
||||||
|
Me.tlpMain.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.tlpMain.Location = New System.Drawing.Point(0, 0)
|
||||||
|
Me.tlpMain.Name = "tlpMain"
|
||||||
|
Me.tlpMain.RowCount = 3
|
||||||
|
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
|
||||||
|
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
|
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
|
||||||
|
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||||
|
Me.tlpMain.Size = New System.Drawing.Size(705, 683)
|
||||||
|
Me.tlpMain.TabIndex = 0
|
||||||
|
'
|
||||||
|
'tlpTop
|
||||||
|
'
|
||||||
|
Me.tlpTop.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.tlpTop.AutoSize = True
|
||||||
|
Me.tlpTop.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
|
||||||
|
Me.tlpTop.ColumnCount = 2
|
||||||
|
Me.tlpTop.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
|
||||||
|
Me.tlpTop.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||||
|
Me.tlpTop.Controls.Add(Me.TitleLabel, 1, 0)
|
||||||
|
Me.tlpTop.Controls.Add(Me.pbIcon, 0, 0)
|
||||||
|
Me.tlpTop.Location = New System.Drawing.Point(0, 15)
|
||||||
|
Me.tlpTop.Margin = New System.Windows.Forms.Padding(0, 15, 0, 20)
|
||||||
|
Me.tlpTop.Name = "tlpTop"
|
||||||
|
Me.tlpTop.RowCount = 1
|
||||||
|
Me.tlpTop.RowStyles.Add(New System.Windows.Forms.RowStyle())
|
||||||
|
Me.tlpTop.Size = New System.Drawing.Size(705, 150)
|
||||||
|
Me.tlpTop.TabIndex = 1
|
||||||
|
'
|
||||||
|
'TitleLabel
|
||||||
|
'
|
||||||
|
Me.TitleLabel.Anchor = System.Windows.Forms.AnchorStyles.Left
|
||||||
|
Me.TitleLabel.AutoSize = True
|
||||||
|
Me.TitleLabel.Location = New System.Drawing.Point(160, 56)
|
||||||
|
Me.TitleLabel.Margin = New System.Windows.Forms.Padding(20)
|
||||||
|
Me.TitleLabel.Size = New System.Drawing.Size(155, 37)
|
||||||
|
Me.TitleLabel.Text = "TitleLabel"
|
||||||
|
Me.TitleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||||
|
'
|
||||||
|
'pbIcon
|
||||||
|
'
|
||||||
|
Me.pbIcon.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.pbIcon.Location = New System.Drawing.Point(40, 30)
|
||||||
|
Me.pbIcon.Margin = New System.Windows.Forms.Padding(40, 30, 0, 20)
|
||||||
|
Me.pbIcon.Name = "pbIcon"
|
||||||
|
Me.pbIcon.Size = New System.Drawing.Size(100, 100)
|
||||||
|
Me.pbIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage
|
||||||
|
Me.pbIcon.TabIndex = 2
|
||||||
|
Me.pbIcon.TabStop = False
|
||||||
|
Me.pbIcon.Visible = False
|
||||||
|
'
|
||||||
|
'paMain
|
||||||
|
'
|
||||||
|
Me.paMain.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.paMain.AutoScroll = True
|
||||||
|
Me.paMain.Form = Nothing
|
||||||
|
Me.paMain.LineBreaks = 0
|
||||||
|
Me.paMain.Location = New System.Drawing.Point(0, 185)
|
||||||
|
Me.paMain.Margin = New System.Windows.Forms.Padding(0)
|
||||||
|
Me.paMain.Name = "paMain"
|
||||||
|
Me.paMain.Size = New System.Drawing.Size(705, 63)
|
||||||
|
Me.paMain.TabIndex = 2
|
||||||
|
'
|
||||||
|
'spBottom
|
||||||
|
'
|
||||||
|
Me.spBottom.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.spBottom.AutoSize = True
|
||||||
|
Me.spBottom.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
|
||||||
|
Me.spBottom.Controls.Add(Me.InputTextEdit)
|
||||||
|
Me.spBottom.Controls.Add(Me.MenuButton)
|
||||||
|
Me.spBottom.Controls.Add(Me.CheckBox)
|
||||||
|
Me.spBottom.Controls.Add(Me.flpButtons)
|
||||||
|
Me.spBottom.Controls.Add(Me.blDetails)
|
||||||
|
Me.spBottom.Controls.Add(Me.blCopyMessage)
|
||||||
|
Me.spBottom.FlowDirection = System.Windows.Forms.FlowDirection.TopDown
|
||||||
|
Me.spBottom.Location = New System.Drawing.Point(0, 248)
|
||||||
|
Me.spBottom.Margin = New System.Windows.Forms.Padding(0, 0, 0, 30)
|
||||||
|
Me.spBottom.Name = "spBottom"
|
||||||
|
Me.spBottom.Size = New System.Drawing.Size(705, 405)
|
||||||
|
Me.spBottom.TabIndex = 3
|
||||||
|
Me.spBottom.WrapContents = False
|
||||||
|
'
|
||||||
|
'InputTextEdit
|
||||||
|
'
|
||||||
|
Me.InputTextEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.InputTextEdit.Location = New System.Drawing.Point(30, 0)
|
||||||
|
Me.InputTextEdit.Margin = New System.Windows.Forms.Padding(30, 0, 30, 30)
|
||||||
|
Me.InputTextEdit.Name = "InputTextEdit"
|
||||||
|
Me.InputTextEdit.Size = New System.Drawing.Size(645, 60)
|
||||||
|
Me.InputTextEdit.Text = "InputTextEdit"
|
||||||
|
Me.InputTextEdit.Visible = False
|
||||||
|
'
|
||||||
|
'MenuButton
|
||||||
|
'
|
||||||
|
Me.MenuButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.MenuButton.FlatAppearance.BorderSize = 2
|
||||||
|
Me.MenuButton.Location = New System.Drawing.Point(30, 90)
|
||||||
|
Me.MenuButton.Margin = New System.Windows.Forms.Padding(30, 0, 30, 30)
|
||||||
|
Me.MenuButton.Padding = New System.Windows.Forms.Padding(4, 0, 0, 0)
|
||||||
|
Me.MenuButton.ShowMenuSymbol = True
|
||||||
|
Me.MenuButton.ShowPath = False
|
||||||
|
Me.MenuButton.Size = New System.Drawing.Size(645, 70)
|
||||||
|
Me.MenuButton.Text2 = "MenuButton"
|
||||||
|
Me.MenuButton.Visible = False
|
||||||
|
'
|
||||||
|
'CheckBox
|
||||||
|
'
|
||||||
|
Me.CheckBox.AutoSize = True
|
||||||
|
Me.CheckBox.FlatAppearance.BorderSize = 2
|
||||||
|
Me.CheckBox.Location = New System.Drawing.Point(30, 190)
|
||||||
|
Me.CheckBox.Margin = New System.Windows.Forms.Padding(30, 0, 0, 0)
|
||||||
|
Me.CheckBox.Size = New System.Drawing.Size(366, 41)
|
||||||
|
Me.CheckBox.Text = "VerificationCheckBox"
|
||||||
|
Me.CheckBox.UseVisualStyleBackColor = False
|
||||||
|
Me.CheckBox.Visible = False
|
||||||
|
'
|
||||||
|
'flpButtons
|
||||||
|
'
|
||||||
|
Me.flpButtons.Anchor = System.Windows.Forms.AnchorStyles.Right
|
||||||
|
Me.flpButtons.Location = New System.Drawing.Point(505, 231)
|
||||||
|
Me.flpButtons.Margin = New System.Windows.Forms.Padding(0)
|
||||||
|
Me.flpButtons.Name = "flpButtons"
|
||||||
|
Me.flpButtons.Size = New System.Drawing.Size(200, 100)
|
||||||
|
Me.flpButtons.TabIndex = 2
|
||||||
|
Me.flpButtons.Visible = False
|
||||||
|
'
|
||||||
|
'blDetails
|
||||||
|
'
|
||||||
|
Me.blDetails.AutoSize = True
|
||||||
|
Me.blDetails.ClickAction = Nothing
|
||||||
|
Me.blDetails.Location = New System.Drawing.Point(20, 331)
|
||||||
|
Me.blDetails.Margin = New System.Windows.Forms.Padding(20, 0, 0, 0)
|
||||||
|
Me.blDetails.Name = "blDetails"
|
||||||
|
Me.blDetails.Size = New System.Drawing.Size(203, 37)
|
||||||
|
Me.blDetails.TabIndex = 8
|
||||||
|
Me.blDetails.Text = "Show Details"
|
||||||
|
Me.blDetails.Visible = False
|
||||||
|
'
|
||||||
|
'blCopyMessage
|
||||||
|
'
|
||||||
|
Me.blCopyMessage.AutoSize = True
|
||||||
|
Me.blCopyMessage.ClickAction = Nothing
|
||||||
|
Me.blCopyMessage.Location = New System.Drawing.Point(20, 368)
|
||||||
|
Me.blCopyMessage.Margin = New System.Windows.Forms.Padding(20, 0, 0, 0)
|
||||||
|
Me.blCopyMessage.Name = "blCopyMessage"
|
||||||
|
Me.blCopyMessage.Size = New System.Drawing.Size(228, 37)
|
||||||
|
Me.blCopyMessage.TabIndex = 7
|
||||||
|
Me.blCopyMessage.Text = "Copy Message"
|
||||||
|
Me.blCopyMessage.Visible = False
|
||||||
|
'
|
||||||
|
'TaskDialogBaseForm
|
||||||
|
'
|
||||||
|
Me.AutoScaleDimensions = New System.Drawing.SizeF(288.0!, 288.0!)
|
||||||
|
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
|
||||||
|
Me.ClientSize = New System.Drawing.Size(705, 683)
|
||||||
|
Me.Controls.Add(Me.tlpMain)
|
||||||
|
Me.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4)
|
||||||
|
Me.MaximizeBox = False
|
||||||
|
Me.MinimizeBox = False
|
||||||
|
Me.Name = "TaskDialogBaseForm"
|
||||||
|
Me.ShowIcon = False
|
||||||
|
Me.Text = "StaxRip"
|
||||||
|
Me.tlpMain.ResumeLayout(False)
|
||||||
|
Me.tlpMain.PerformLayout()
|
||||||
|
Me.tlpTop.ResumeLayout(False)
|
||||||
|
Me.tlpTop.PerformLayout()
|
||||||
|
CType(Me.pbIcon, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
|
Me.spBottom.ResumeLayout(False)
|
||||||
|
Me.spBottom.PerformLayout()
|
||||||
|
Me.ResumeLayout(False)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend WithEvents tlpMain As TableLayoutPanel
|
||||||
|
Friend WithEvents CheckBox As CheckBoxEx
|
||||||
|
Friend WithEvents flpButtons As FlowLayoutPanel
|
||||||
|
Friend WithEvents InputTextEdit As TextEdit
|
||||||
|
Friend WithEvents tlpTop As TableLayoutPanel
|
||||||
|
Friend WithEvents TitleLabel As LabelEx
|
||||||
|
Friend WithEvents MenuButton As MenuButtonEx
|
||||||
|
Friend WithEvents paMain As TaskDialogPanel
|
||||||
|
Friend WithEvents spBottom As StackPanel
|
||||||
|
Friend WithEvents blCopyMessage As ButtonLabel
|
||||||
|
Friend WithEvents blDetails As ButtonLabel
|
||||||
|
Friend WithEvents pbIcon As PictureBox
|
||||||
|
End Class
|
||||||
120
src/WinForms/TaskDialog/TaskDialogBaseForm.resx
Normal file
120
src/WinForms/TaskDialog/TaskDialogBaseForm.resx
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
1603
src/WinForms/TaskDialog/TaskDialogBaseForm.vb
Normal file
1603
src/WinForms/TaskDialog/TaskDialogBaseForm.vb
Normal file
File diff suppressed because it is too large
Load Diff
@@ -231,7 +231,12 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="WinForms\TaskDialog\TaskDialog.vbproj">
|
||||||
|
<Project>{cfbe6e6c-b711-42bb-b5ed-487d4767fe2b}</Project>
|
||||||
|
<Name>TaskDialog</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mpv.net", "mpv.net.csproj",
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RatingExtension", "extensions\RatingExtension\RatingExtension.csproj", "{55C88710-539D-4402-84C8-31694841C731}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RatingExtension", "extensions\RatingExtension\RatingExtension.csproj", "{55C88710-539D-4402-84C8-31694841C731}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TaskDialog", "WinForms\TaskDialog\TaskDialog.vbproj", "{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -21,6 +23,10 @@ Global
|
|||||||
{55C88710-539D-4402-84C8-31694841C731}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{55C88710-539D-4402-84C8-31694841C731}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{55C88710-539D-4402-84C8-31694841C731}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{55C88710-539D-4402-84C8-31694841C731}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{55C88710-539D-4402-84C8-31694841C731}.Release|Any CPU.Build.0 = Release|Any CPU
|
{55C88710-539D-4402-84C8-31694841C731}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{CFBE6E6C-B711-42BB-B5ED-487D4767FE2B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
Reference in New Issue
Block a user