add Pilz.UI & Pilz.UI.Gtk
This commit is contained in:
23
Pilz.UI.Gtk/Dialogs/MessageBox.cs
Normal file
23
Pilz.UI.Gtk/Dialogs/MessageBox.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using Gtk;
|
||||||
|
|
||||||
|
namespace Pilz.UI.Gtk.Dialogs;
|
||||||
|
|
||||||
|
public static class MessageBox
|
||||||
|
{
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Nicht verwendete Parameter entfernen", Justification = "Can be used for easier migration from WinForms. However, the title get ignored as Gtk has no title parameter.")]
|
||||||
|
public static ResponseType Show(Window window, string message, string title, ButtonsType buttons, MessageType type)
|
||||||
|
{
|
||||||
|
var msgBox = new MessageDialog(window, DialogFlags.DestroyWithParent, type, buttons, message);
|
||||||
|
var result = msgBox.Run();
|
||||||
|
msgBox.Destroy();
|
||||||
|
return (ResponseType)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResponseType Show(Window window, ButtonsType buttons, MessageType type, string format, params object[] args)
|
||||||
|
{
|
||||||
|
var msgBox = new MessageDialog(window, DialogFlags.DestroyWithParent, type, buttons, format, args);
|
||||||
|
var result = msgBox.Run();
|
||||||
|
msgBox.Destroy();
|
||||||
|
return (ResponseType)result;
|
||||||
|
}
|
||||||
|
}
|
||||||
22
Pilz.UI.Gtk/Pilz.UI.Gtk.csproj
Normal file
22
Pilz.UI.Gtk/Pilz.UI.Gtk.csproj
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="GtkSharp" Version="3.24.24.95" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Pilz.UI\Pilz.UI.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
35
Pilz.UI.Gtk/Symbols/GtkSymbolFactory.cs
Normal file
35
Pilz.UI.Gtk/Symbols/GtkSymbolFactory.cs
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
using Gdk;
|
||||||
|
using Gtk;
|
||||||
|
using Pilz.UI.Symbols;
|
||||||
|
using Size = System.Drawing.Size;
|
||||||
|
|
||||||
|
namespace Pilz.UI.Gtk.Symbols;
|
||||||
|
|
||||||
|
public abstract class GtkSymbolFactory<TSymbols> : BaseSymbolFactory<TSymbols>, IGtkSymbolFactory<TSymbols>
|
||||||
|
{
|
||||||
|
public virtual Image? GetImage(TSymbols svgImage, SymbolSize size)
|
||||||
|
{
|
||||||
|
return GetImage(svgImage, ResolveCommonSize(size));
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual Image? GetImage(TSymbols svgImage, Size size)
|
||||||
|
{
|
||||||
|
using var stream = GetImageRessourceStream(svgImage);
|
||||||
|
|
||||||
|
if (stream is null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
Pixbuf pixbuf;
|
||||||
|
if (size.IsEmpty)
|
||||||
|
pixbuf = new(stream);
|
||||||
|
else
|
||||||
|
pixbuf = new(stream, size.Width, size.Height);
|
||||||
|
|
||||||
|
return GetImageFromPixbuf(pixbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual Image GetImageFromPixbuf(Pixbuf pixbuf)
|
||||||
|
{
|
||||||
|
return new Image(pixbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Pilz.UI.Gtk/Symbols/IGtkSymbolFactory.cs
Normal file
12
Pilz.UI.Gtk/Symbols/IGtkSymbolFactory.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using Gtk;
|
||||||
|
using Pilz.UI.Symbols;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace Pilz.UI.Gtk.Symbols;
|
||||||
|
|
||||||
|
public interface IGtkSymbolFactory<TSymbols> : IBaseSymbolFactory<TSymbols>
|
||||||
|
{
|
||||||
|
Image? GetImage(TSymbols svgImage, Size size);
|
||||||
|
Image? GetImage(TSymbols svgImage, SymbolSize size);
|
||||||
|
Image GetImageFromPixbuf(Gdk.Pixbuf pixbuf);
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using Pilz.UI.WinForms.Symbols;
|
using Pilz.UI.Symbols;
|
||||||
|
using Pilz.UI.WinForms.Symbols;
|
||||||
using Telerik.WinControls;
|
using Telerik.WinControls;
|
||||||
|
|
||||||
namespace Pilz.UI.WinForms.Telerik.Symbols;
|
namespace Pilz.UI.WinForms.Telerik.Symbols;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Pilz.UI.WinForms.Symbols;
|
using Pilz.UI.Symbols;
|
||||||
|
using Pilz.UI.WinForms.Symbols;
|
||||||
using Pilz.UI.WinForms.Telerik.Extensions;
|
using Pilz.UI.WinForms.Telerik.Extensions;
|
||||||
using Telerik.WinControls;
|
using Telerik.WinControls;
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Pilz.Drawing\Pilz.Drawing.vbproj" />
|
<ProjectReference Include="..\Pilz.Drawing\Pilz.Drawing.vbproj" />
|
||||||
|
<ProjectReference Include="..\Pilz.UI\Pilz.UI.csproj" />
|
||||||
<ProjectReference Include="..\Pilz.Win32\Pilz.Win32.csproj" />
|
<ProjectReference Include="..\Pilz.Win32\Pilz.Win32.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
using System.Reflection;
|
using Pilz.UI.Symbols;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Pilz.UI.WinForms.Symbols;
|
namespace Pilz.UI.WinForms.Symbols;
|
||||||
|
|
||||||
public interface ISymbolFactory<TSymbols>
|
public interface ISymbolFactory<TSymbols> : IBaseSymbolFactory<TSymbols>
|
||||||
{
|
{
|
||||||
Image? GetImage(TSymbols svgImage, Size size);
|
Image? GetImage(TSymbols svgImage, Size size);
|
||||||
Image? GetImage(TSymbols svgImage, SymbolSize size);
|
Image? GetImage(TSymbols svgImage, SymbolSize size);
|
||||||
Assembly GetImageResourceAssembly();
|
|
||||||
string GetImageRessourcePath(TSymbols svgImage);
|
|
||||||
Stream? GetImageRessourceStream(TSymbols svgImage);
|
|
||||||
}
|
}
|
||||||
@@ -1,31 +1,9 @@
|
|||||||
using System.Reflection;
|
using Pilz.UI.Symbols;
|
||||||
|
|
||||||
namespace Pilz.UI.WinForms.Symbols;
|
namespace Pilz.UI.WinForms.Symbols;
|
||||||
|
|
||||||
public abstract class SymbolFactory<TSymbols> : ISymbolFactory<TSymbols>
|
public abstract class SymbolFactory<TSymbols> : BaseSymbolFactory<TSymbols>, ISymbolFactory<TSymbols>
|
||||||
{
|
{
|
||||||
public abstract string GetImageRessourcePath(TSymbols svgImage);
|
|
||||||
public abstract Assembly GetImageResourceAssembly();
|
|
||||||
|
|
||||||
protected virtual Size ResolveCommonSize(SymbolSize size)
|
|
||||||
{
|
|
||||||
return size switch
|
|
||||||
{
|
|
||||||
SymbolSize.Default => Size.Empty,
|
|
||||||
SymbolSize.Small => new Size(16, 16),
|
|
||||||
SymbolSize.Medium => new Size(20, 20),
|
|
||||||
SymbolSize.Large => new Size(32, 32),
|
|
||||||
_ => new Size((int)size, (int)size),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Stream? GetImageRessourceStream(TSymbols svgImage)
|
|
||||||
{
|
|
||||||
var asm = GetImageResourceAssembly();
|
|
||||||
var path = GetImageRessourcePath(svgImage);
|
|
||||||
return asm.GetManifestResourceStream(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Image? GetImage(TSymbols svgImage, SymbolSize size)
|
public virtual Image? GetImage(TSymbols svgImage, SymbolSize size)
|
||||||
{
|
{
|
||||||
return GetImage(svgImage, ResolveCommonSize(size));
|
return GetImage(svgImage, ResolveCommonSize(size));
|
||||||
|
|||||||
14
Pilz.UI/Pilz.UI.csproj
Normal file
14
Pilz.UI/Pilz.UI.csproj
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<Version>3.0.0</Version>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
29
Pilz.UI/Symbols/BaseSymbolFactory.cs
Normal file
29
Pilz.UI/Symbols/BaseSymbolFactory.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Pilz.UI.Symbols;
|
||||||
|
|
||||||
|
public abstract class BaseSymbolFactory<TSymbols> : IBaseSymbolFactory<TSymbols>
|
||||||
|
{
|
||||||
|
public abstract string GetImageRessourcePath(TSymbols svgImage);
|
||||||
|
public abstract Assembly GetImageResourceAssembly();
|
||||||
|
|
||||||
|
protected virtual Size ResolveCommonSize(SymbolSize size)
|
||||||
|
{
|
||||||
|
return size switch
|
||||||
|
{
|
||||||
|
SymbolSize.Default => Size.Empty,
|
||||||
|
SymbolSize.Small => new Size(16, 16),
|
||||||
|
SymbolSize.Medium => new Size(20, 20),
|
||||||
|
SymbolSize.Large => new Size(32, 32),
|
||||||
|
_ => new Size((int)size, (int)size),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual Stream? GetImageRessourceStream(TSymbols svgImage)
|
||||||
|
{
|
||||||
|
var asm = GetImageResourceAssembly();
|
||||||
|
var path = GetImageRessourcePath(svgImage);
|
||||||
|
return asm.GetManifestResourceStream(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
9
Pilz.UI/Symbols/IBaseSymbolFactory.cs
Normal file
9
Pilz.UI/Symbols/IBaseSymbolFactory.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Pilz.UI.Symbols;
|
||||||
|
public interface IBaseSymbolFactory<TSymbols>
|
||||||
|
{
|
||||||
|
Assembly GetImageResourceAssembly();
|
||||||
|
string GetImageRessourcePath(TSymbols svgImage);
|
||||||
|
Stream? GetImageRessourceStream(TSymbols svgImage);
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace Pilz.UI.WinForms.Symbols;
|
namespace Pilz.UI.Symbols;
|
||||||
|
|
||||||
public enum SymbolSize
|
public enum SymbolSize
|
||||||
{
|
{
|
||||||
20
Pilz.sln
20
Pilz.sln
@@ -47,6 +47,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.Extensions", "Pilz.Ext
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.UI.WinForms.Telerik.Symbols", "Pilz.UI.WinForms.Telerik.Symbols\Pilz.UI.WinForms.Telerik.Symbols.csproj", "{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.UI.WinForms.Telerik.Symbols", "Pilz.UI.WinForms.Telerik.Symbols\Pilz.UI.WinForms.Telerik.Symbols.csproj", "{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.UI.Gtk", "Pilz.UI.Gtk\Pilz.UI.Gtk.csproj", "{AA8CCE40-6BEE-4DC3-B973-D4F719940793}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.UI", "Pilz.UI\Pilz.UI.csproj", "{E75FBCEF-B971-4036-85D3-27D4ACA77156}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -231,6 +235,22 @@ Global
|
|||||||
{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}.Release|Any CPU.Build.0 = Release|Any CPU
|
{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}.Release|x86.ActiveCfg = Release|Any CPU
|
{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}.Release|x86.Build.0 = Release|Any CPU
|
{9F10C26F-1D9F-4B0B-8A7A-73A6082C5BF7}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{AA8CCE40-6BEE-4DC3-B973-D4F719940793}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{E75FBCEF-B971-4036-85D3-27D4ACA77156}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
Reference in New Issue
Block a user