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;
|
||||
|
||||
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 Telerik.WinControls;
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Pilz.Drawing\Pilz.Drawing.vbproj" />
|
||||
<ProjectReference Include="..\Pilz.UI\Pilz.UI.csproj" />
|
||||
<ProjectReference Include="..\Pilz.Win32\Pilz.Win32.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,12 +1,10 @@
|
||||
using System.Reflection;
|
||||
using Pilz.UI.Symbols;
|
||||
using System.Reflection;
|
||||
|
||||
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, 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;
|
||||
|
||||
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)
|
||||
{
|
||||
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
|
||||
{
|
||||
20
Pilz.sln
20
Pilz.sln
@@ -47,6 +47,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.Extensions", "Pilz.Ext
|
||||
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}"
|
||||
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
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
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|x86.ActiveCfg = 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
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
Reference in New Issue
Block a user