Upgrading to .net 6
This commit is contained in:
parent
738c6e20ea
commit
32a192c2b8
155 changed files with 2030 additions and 2536 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
# mstest test results
|
# mstest test results
|
||||||
TestResults
|
TestResults
|
||||||
Tests/temp
|
Tests/temp/
|
||||||
|
Tests/TestData/ExportedGcode/
|
||||||
|
|
||||||
StaticData/Translations/L10N/
|
StaticData/Translations/L10N/
|
||||||
|
|
||||||
|
|
@ -120,3 +121,4 @@ MatterControl.userprefs
|
||||||
|
|
||||||
# JetBrains Rider user configuration directory
|
# JetBrains Rider user configuration directory
|
||||||
/.idea/
|
/.idea/
|
||||||
|
/MainOutputDirectory.cs
|
||||||
|
|
|
||||||
14
App.config
14
App.config
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
|
||||||
</startup>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="11.0.0.0"/>
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
|
||||||
</startup>
|
|
||||||
</configuration>
|
|
||||||
|
|
@ -1,54 +1,15 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProductVersion>8.0.50727</ProductVersion>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<ProjectGuid>{3DF4CB3D-9A03-4256-9A81-70523AAD828B}</ProjectGuid>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>MatterHackers.MatterControl.Launcher</RootNamespace>
|
<RootNamespace>MatterHackers.MatterControl.Launcher</RootNamespace>
|
||||||
<AssemblyName>Launcher</AssemblyName>
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||||
<FileUpgradeFlags>
|
|
||||||
</FileUpgradeFlags>
|
|
||||||
<UpgradeBackupLocation>
|
|
||||||
</UpgradeBackupLocation>
|
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>True</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>False</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<Prefer32Bit>true</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>True</Optimize>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.330701">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="app.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Launcher.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
8
Launcher/Properties/launchSettings.json
Normal file
8
Launcher/Properties/launchSettings.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"Launcher": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"commandLineArgs": "C:\\Windows\\notepad.exe 1000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
|
||||||
</startup>
|
|
||||||
</configuration>
|
|
||||||
279
MainInstanceService.cs
Normal file
279
MainInstanceService.cs
Normal file
|
|
@ -0,0 +1,279 @@
|
||||||
|
// For communication with the main instance. Use ServiceWire or just pipes.
|
||||||
|
#define USE_SERVICEWIRE
|
||||||
|
|
||||||
|
using MatterHackers.MatterControl;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Security.AccessControl;
|
||||||
|
using System.Security.Principal;
|
||||||
|
|
||||||
|
#if USE_SERVICEWIRE
|
||||||
|
using ServiceWire;
|
||||||
|
#else
|
||||||
|
using System.IO.Pipes;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace MatterHackers.MatterControl
|
||||||
|
{
|
||||||
|
public interface IMainService
|
||||||
|
{
|
||||||
|
void ShellOpenFile(string[] files);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class LocalService : IMainService
|
||||||
|
{
|
||||||
|
private const string ServicePipeName = "MatterControlMainInstance";
|
||||||
|
|
||||||
|
#if USE_SERVICEWIRE
|
||||||
|
private const string MainInstanceMutexName = "MatterControlMainInstanceMutex";
|
||||||
|
#pragma warning disable IDE0052 // Remove unread private members
|
||||||
|
// Don't let the GC clean this up.
|
||||||
|
private static Mutex MainInstanceMutex = null;
|
||||||
|
#pragma warning restore IDE0052 // Remove unread private members
|
||||||
|
#else
|
||||||
|
static string readPipeMessage(PipeStream pipe)
|
||||||
|
{
|
||||||
|
MemoryStream ms = new MemoryStream();
|
||||||
|
using var cancellation = new CancellationTokenSource();
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
do
|
||||||
|
{
|
||||||
|
var task = pipe.ReadAsync(buffer, 0, buffer.Length, cancellation.Token);
|
||||||
|
cancellation.CancelAfter(1000);
|
||||||
|
task.Wait();
|
||||||
|
ms.Write(buffer, 0, task.Result);
|
||||||
|
if (task.Result <= 0)
|
||||||
|
break;
|
||||||
|
} while (!pipe.IsMessageComplete);
|
||||||
|
|
||||||
|
return Encoding.Unicode.GetString(ms.ToArray());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private static readonly object locker = new();
|
||||||
|
|
||||||
|
public static bool TryStartServer()
|
||||||
|
{
|
||||||
|
#if USE_SERVICEWIRE
|
||||||
|
// ServiceWire will allow lots of pipes to exist under the same name, so a mutex is needed.
|
||||||
|
// Locking isn't needed. Windows should clean up when the main instance closes.
|
||||||
|
Mutex mutex = new(false, MainInstanceMutexName, out bool createdNew);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (createdNew)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var host = new ServiceWire.NamedPipes.NpHost(ServicePipeName, new ServiceWireLogger());
|
||||||
|
host.AddService<IMainService>(new LocalService());
|
||||||
|
host.Open();
|
||||||
|
|
||||||
|
// Keep the mutex alive.
|
||||||
|
MainInstanceMutex = mutex;
|
||||||
|
mutex = null;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
// Not the main instance. Release the handle.
|
||||||
|
mutex?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
NamedPipeServerStream pipeServer = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pipeServer = new NamedPipeServerStream(ServicePipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.CurrentUserOnly);
|
||||||
|
}
|
||||||
|
catch (IOException)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
new Task(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var localService = new LocalService();
|
||||||
|
|
||||||
|
for (; ; )
|
||||||
|
{
|
||||||
|
pipeServer.WaitForConnection();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string str = readPipeMessage(pipeServer);
|
||||||
|
|
||||||
|
var serializer = new XmlSerializer(typeof(InstancePipeMessage));
|
||||||
|
var message = (InstancePipeMessage)serializer.Deserialize(new StringReader(str));
|
||||||
|
localService.ShellOpenFile(message.Paths);
|
||||||
|
|
||||||
|
using var cancellation = new CancellationTokenSource();
|
||||||
|
var task = pipeServer.WriteAsync(Encoding.Unicode.GetBytes("ok"), cancellation.Token).AsTask();
|
||||||
|
cancellation.CancelAfter(1000);
|
||||||
|
task.Wait();
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// NamedPipeServerStream can only handle one client ever. Need a new server pipe. ServiceWire does the same thing.
|
||||||
|
// So here, there is a time where there is no server pipe. Another instance could become the main instance.
|
||||||
|
// NamedPipeClientStream.Connect should retry the connection.
|
||||||
|
pipeServer.Dispose();
|
||||||
|
pipeServer = new NamedPipeServerStream(ServicePipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.CurrentUserOnly);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex) // TimeoutException or IOException
|
||||||
|
{
|
||||||
|
//System.Windows.Forms.MessageBox.Show(ex.ToString());
|
||||||
|
System.Diagnostics.Trace.WriteLine("Main instance pipe server died: " + ex.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeServer.Dispose();
|
||||||
|
pipeServer = null;
|
||||||
|
}).Start();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TrySendToServer(string[] shellFiles)
|
||||||
|
{
|
||||||
|
#if USE_SERVICEWIRE
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var client = new ServiceWire.NamedPipes.NpClient<IMainService>(new ServiceWire.NamedPipes.NpEndPoint(ServicePipeName)))
|
||||||
|
{
|
||||||
|
if (client.IsConnected)
|
||||||
|
{
|
||||||
|
// notify the running instance of the event
|
||||||
|
client.Proxy.ShellOpenFile(shellFiles);
|
||||||
|
|
||||||
|
System.Threading.Thread.Sleep(1000);
|
||||||
|
|
||||||
|
// Finally, close the process spawned by Explorer.exe
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var pipeClient = new NamedPipeClientStream(".", ServicePipeName, PipeDirection.InOut, PipeOptions.CurrentUserOnly);
|
||||||
|
pipeClient.Connect(1000);
|
||||||
|
pipeClient.ReadMode = PipeTransmissionMode.Message;
|
||||||
|
|
||||||
|
StringBuilder sb = new();
|
||||||
|
using (var writer = new StringWriter(sb))
|
||||||
|
new XmlSerializer(typeof(InstancePipeMessage)).Serialize(writer, new InstancePipeMessage { Paths = shellFiles.ToArray() });
|
||||||
|
|
||||||
|
using var cancellation = new CancellationTokenSource();
|
||||||
|
var task = pipeClient.WriteAsync(Encoding.Unicode.GetBytes(sb.ToString()), cancellation.Token).AsTask();
|
||||||
|
cancellation.CancelAfter(1000);
|
||||||
|
task.Wait();
|
||||||
|
if (task.IsCompletedSuccessfully && readPipeMessage(pipeClient).Trim() == "ok")
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex) // TimeoutException or IOException
|
||||||
|
{
|
||||||
|
//System.Windows.Forms.MessageBox.Show(ex.ToString());
|
||||||
|
System.Diagnostics.Trace.WriteLine("Instance pipe client died: " + ex.ToString());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShellOpenFile(string[] files)
|
||||||
|
{
|
||||||
|
// If at least one argument is an acceptable shell file extension
|
||||||
|
var itemsToAdd = files.Where(f => File.Exists(f)
|
||||||
|
&& ApplicationController.ShellFileExtensions.Contains(Path.GetExtension(f).ToLower()));
|
||||||
|
|
||||||
|
if (itemsToAdd.Any())
|
||||||
|
{
|
||||||
|
lock (locker)
|
||||||
|
{
|
||||||
|
// Add each file
|
||||||
|
foreach (string file in itemsToAdd)
|
||||||
|
{
|
||||||
|
ApplicationController.Instance.ShellOpenFile(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if USE_SERVICEWIRE
|
||||||
|
private class ServiceWireLogger : ServiceWire.ILog
|
||||||
|
{
|
||||||
|
static private void Log(ServiceWire.LogLevel level, string formattedMessage, params object[] args)
|
||||||
|
{
|
||||||
|
// Handled as in https://github.com/tylerjensen/ServiceWire/blob/master/src/ServiceWire/Logger.cs
|
||||||
|
|
||||||
|
if (null == formattedMessage)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (level <= LogLevel.Warn)
|
||||||
|
{
|
||||||
|
string msg = (null != args && args.Length > 0)
|
||||||
|
? string.Format(formattedMessage, args)
|
||||||
|
: formattedMessage;
|
||||||
|
|
||||||
|
System.Diagnostics.Trace.WriteLine(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ILog.Debug(string formattedMessage, params object[] args)
|
||||||
|
{
|
||||||
|
Log(LogLevel.Debug, formattedMessage, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ILog.Error(string formattedMessage, params object[] args)
|
||||||
|
{
|
||||||
|
Log(LogLevel.Error, formattedMessage, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ILog.Fatal(string formattedMessage, params object[] args)
|
||||||
|
{
|
||||||
|
Log(LogLevel.Fatal, formattedMessage, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ILog.Info(string formattedMessage, params object[] args)
|
||||||
|
{
|
||||||
|
Log(LogLevel.Info, formattedMessage, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ILog.Warn(string formattedMessage, params object[] args)
|
||||||
|
{
|
||||||
|
Log(LogLevel.Warn, formattedMessage, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
[Serializable]
|
||||||
|
public struct InstancePipeMessage
|
||||||
|
{
|
||||||
|
public string[] Paths;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ReleaseVersion>2.20.12</ReleaseVersion>
|
<ReleaseVersion>2.20.12</ReleaseVersion>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ReleaseVersion>2.20.12</ReleaseVersion>
|
<ReleaseVersion>2.20.12</ReleaseVersion>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ReleaseVersion>2.20.12</ReleaseVersion>
|
<ReleaseVersion>2.20.12</ReleaseVersion>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ReleaseVersion>2.20.12</ReleaseVersion>
|
<ReleaseVersion>2.20.12</ReleaseVersion>
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
|
||||||
|
<PackageReference Include="System.IO.Ports" Version="7.0.0-preview.5.22301.12" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ReleaseVersion>2.20.12</ReleaseVersion>
|
<ReleaseVersion>2.20.12</ReleaseVersion>
|
||||||
|
|
|
||||||
|
|
@ -1,109 +1,35 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<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>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}</ProjectGuid>
|
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||||
<RootNamespace>MatterControl.Winforms</RootNamespace>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<AssemblyName>MatterControl.Winforms</AssemblyName>
|
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
<BaseOutputPath>$(SolutionDir)bin</BaseOutputPath>
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
<Deterministic>true</Deterministic>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>..\bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>TRACE;DEBUG;USE_OPENGL;IS_WINDOWS;IS_WINDOWS_FORMS</DefineConstants>
|
<DefineConstants>TRACE;DEBUG;USE_OPENGL;IS_WINDOWS;IS_WINDOWS_FORMS</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>..\bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE;USE_OPENGL;IS_WINDOWS;IS_WINDOWS_FORMS</DefineConstants>
|
<DefineConstants>TRACE;USE_OPENGL;IS_WINDOWS;IS_WINDOWS_FORMS</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<ProjectReference Include="..\Community.CsharpSqlite\Community.CsharpSqlite.csproj" />
|
||||||
<Reference Include="System.Core" />
|
<ProjectReference Include="..\MatterControl.Common\MatterControl.Common.csproj" />
|
||||||
<Reference Include="System.Drawing" />
|
<ProjectReference Include="..\MatterControlLib\MatterControlLib.csproj" />
|
||||||
<Reference Include="System.Windows.Forms" />
|
<ProjectReference Include="..\Submodules\agg-sharp\agg\Agg.csproj" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<ProjectReference Include="..\Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<ProjectReference Include="..\Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<ProjectReference Include="..\Submodules\agg-sharp\Gui\Gui.csproj" />
|
||||||
<Reference Include="System.Data" />
|
<ProjectReference Include="..\Submodules\agg-sharp\PlatformWin32\PlatformWin32.csproj" />
|
||||||
<Reference Include="System.Net.Http" />
|
<ProjectReference Include="..\Submodules\agg-sharp\RenderOpenGl\RenderOpenGl.csproj" />
|
||||||
<Reference Include="System.Xml" />
|
<ProjectReference Include="..\Submodules\agg-sharp\VectorMath\VectorMath.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="DataStorage\SQLiteUnix.cs" />
|
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||||
<Compile Include="DataStorage\SQLiteWin32.cs" />
|
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
||||||
<Compile Include="InspectForm.cs">
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.330701">
|
||||||
<SubType>Form</SubType>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</Compile>
|
</PackageReference>
|
||||||
<Compile Include="InspectForm.Designer.cs">
|
|
||||||
<DependentUpon>InspectForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="WindowsPlatformsFeatures.cs" />
|
|
||||||
<Compile Include="WinformsSingleWindowProvider.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Community.CsharpSqlite\Community.CsharpSqlite.csproj">
|
|
||||||
<Project>{f1653f20-d47d-4f29-8c55-3c835542af5f}</Project>
|
|
||||||
<Name>Community.CsharpSqlite</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\MatterControl.Common\MatterControl.Common.csproj">
|
|
||||||
<Project>{2af30557-fc50-4de3-ad1c-7eb57131a9c5}</Project>
|
|
||||||
<Name>MatterControl.Common</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\MatterControlLib\MatterControlLib.csproj">
|
|
||||||
<Project>{D557B079-612F-467F-AE0D-3F77BCD627F7}</Project>
|
|
||||||
<Name>MatterControlLib</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\agg\Agg.csproj">
|
|
||||||
<Project>{657dbc6d-c3ea-4398-a3fa-ddb73c14f71b}</Project>
|
|
||||||
<Name>Agg</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj">
|
|
||||||
<Project>{94838988-523c-4b11-ad82-8b9b76f23a31}</Project>
|
|
||||||
<Name>DataConverters2D</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj">
|
|
||||||
<Project>{04667764-dc7b-4b95-aef6-b4e6c87a54e9}</Project>
|
|
||||||
<Name>DataConverters3D</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\Gui\Gui.csproj">
|
|
||||||
<Project>{74f6bb6c-9d02-4512-a59a-21940e35c532}</Project>
|
|
||||||
<Name>Gui</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\PlatformWin32\PlatformWin32.csproj">
|
|
||||||
<Project>{CD8A3D1A-24D5-4184-8CF3-7B2AD5CD7A71}</Project>
|
|
||||||
<Name>PlatformWin32</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\RenderOpenGl\RenderOpenGl.csproj">
|
|
||||||
<Project>{545b6912-77ff-4b34-ba76-6c3d6a32be6a}</Project>
|
|
||||||
<Name>RenderOpenGl</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\VectorMath\VectorMath.csproj">
|
|
||||||
<Project>{d3e41b4e-bfbb-44ca-94c8-95c00f754fdd}</Project>
|
|
||||||
<Name>VectorMath</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="InspectForm.resx">
|
|
||||||
<DependentUpon>InspectForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -34,3 +34,6 @@ using System.Runtime.InteropServices;
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
||||||
|
// https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1416
|
||||||
|
[assembly: System.Runtime.Versioning.SupportedOSPlatform("windows7.0")]
|
||||||
|
|
@ -31,6 +31,7 @@ using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.Loader;
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
using MatterHackers.Agg.Image;
|
using MatterHackers.Agg.Image;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
|
|
@ -207,7 +208,9 @@ namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PluginFinder.LoadTypesFromAssembly(Assembly.LoadFile(file));
|
// Be sure not to load a DLL more than once!
|
||||||
|
// https://github.com/dotnet/runtime/issues/39783
|
||||||
|
PluginFinder.LoadTypesFromAssembly(AssemblyLoadContext.Default.LoadFromAssemblyPath(file));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,151 +1,145 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<PropertyGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
<PropertyGroup>
|
<OutputType>WinExe</OutputType>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
</PropertyGroup>
|
||||||
<ProjectGuid>{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}</ProjectGuid>
|
<PropertyGroup>
|
||||||
<OutputType>WinExe</OutputType>
|
<StartupObject />
|
||||||
<RootNamespace>MatterControl</RootNamespace>
|
</PropertyGroup>
|
||||||
<AssemblyName>MatterControl</AssemblyName>
|
<PropertyGroup>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
<ApplicationIcon>application.ico</ApplicationIcon>
|
||||||
<RuntimeIdentifier>win</RuntimeIdentifier>
|
<BaseOutputPath></BaseOutputPath>
|
||||||
<FileAlignment>512</FileAlignment>
|
</PropertyGroup>
|
||||||
<!--See the following for details on netstandard2 binding workround: https://github.com/dotnet/standard/issues/481-->
|
<ItemGroup>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<Compile Remove="Community.CsharpSqlite\**" />
|
||||||
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
|
<Compile Remove="Launcher\**" />
|
||||||
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
|
<Compile Remove="MatterControl.Common\**" />
|
||||||
<TargetFrameworkProfile />
|
<Compile Remove="MatterControl.MeshOperations\**" />
|
||||||
</PropertyGroup>
|
<Compile Remove="MatterControl.OpenGL\**" />
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<Compile Remove="MatterControl.Printing\**" />
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<Compile Remove="MatterControl.SLA\**" />
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<Compile Remove="MatterControl.Winforms\**" />
|
||||||
<DebugType>full</DebugType>
|
<Compile Remove="MatterControlLib\**" />
|
||||||
<Optimize>false</Optimize>
|
<Compile Remove="MatterHackers.gsSlicer\**" />
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<Compile Remove="Plugins\**" />
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<Compile Remove="PrinterDriverInstaller\**" />
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<Compile Remove="PrusaI3-MK3\**" />
|
||||||
<WarningLevel>4</WarningLevel>
|
<Compile Remove="StaticData\**" />
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Compile Remove="Submodules\**" />
|
||||||
</PropertyGroup>
|
<Compile Remove="Tests\**" />
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<Compile Remove="Tools\**" />
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<EmbeddedResource Remove="Community.CsharpSqlite\**" />
|
||||||
<DebugType>pdbonly</DebugType>
|
<EmbeddedResource Remove="Launcher\**" />
|
||||||
<Optimize>true</Optimize>
|
<EmbeddedResource Remove="MatterControl.Common\**" />
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
<EmbeddedResource Remove="MatterControl.MeshOperations\**" />
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<EmbeddedResource Remove="MatterControl.OpenGL\**" />
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<EmbeddedResource Remove="MatterControl.Printing\**" />
|
||||||
<WarningLevel>4</WarningLevel>
|
<EmbeddedResource Remove="MatterControl.SLA\**" />
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<EmbeddedResource Remove="MatterControl.Winforms\**" />
|
||||||
</PropertyGroup>
|
<EmbeddedResource Remove="MatterControlLib\**" />
|
||||||
<PropertyGroup>
|
<EmbeddedResource Remove="MatterHackers.gsSlicer\**" />
|
||||||
<StartupObject />
|
<EmbeddedResource Remove="Plugins\**" />
|
||||||
</PropertyGroup>
|
<EmbeddedResource Remove="PrinterDriverInstaller\**" />
|
||||||
<PropertyGroup>
|
<EmbeddedResource Remove="PrusaI3-MK3\**" />
|
||||||
<ApplicationIcon>application.ico</ApplicationIcon>
|
<EmbeddedResource Remove="StaticData\**" />
|
||||||
</PropertyGroup>
|
<EmbeddedResource Remove="Submodules\**" />
|
||||||
<ItemGroup>
|
<EmbeddedResource Remove="Tests\**" />
|
||||||
<Reference Include="System" />
|
<EmbeddedResource Remove="Tools\**" />
|
||||||
<Reference Include="System.ServiceModel" />
|
<None Remove="Community.CsharpSqlite\**" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<None Remove="Launcher\**" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<None Remove="MatterControl.Common\**" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<None Remove="MatterControl.MeshOperations\**" />
|
||||||
<Reference Include="System.Data" />
|
<None Remove="MatterControl.OpenGL\**" />
|
||||||
<Reference Include="System.Net.Http" />
|
<None Remove="MatterControl.Printing\**" />
|
||||||
<Reference Include="System.Xml" />
|
<None Remove="MatterControl.SLA\**" />
|
||||||
</ItemGroup>
|
<None Remove="MatterControl.Winforms\**" />
|
||||||
<ItemGroup>
|
<None Remove="MatterControlLib\**" />
|
||||||
<Compile Include="CSharpSerialPortWrapper.cs" />
|
<None Remove="MatterHackers.gsSlicer\**" />
|
||||||
<Compile Include="Program.cs" />
|
<None Remove="Plugins\**" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<None Remove="PrinterDriverInstaller\**" />
|
||||||
</ItemGroup>
|
<None Remove="PrusaI3-MK3\**" />
|
||||||
<ItemGroup>
|
<None Remove="StaticData\**" />
|
||||||
<None Include="App.config" />
|
<None Remove="Submodules\**" />
|
||||||
<None Include="appsettings.json" />
|
<None Remove="Tests\**" />
|
||||||
<None Include="StaticData\License\license.json" />
|
<None Remove="Tools\**" />
|
||||||
<None Include="StaticData\OEMSettings\OEMUrls.json" />
|
</ItemGroup>
|
||||||
<None Include="StaticData\OEMSettings\Printers.json" />
|
<ItemGroup>
|
||||||
<None Include="StaticData\OEMSettings\Settings.json" />
|
<ProjectReference Include="Community.CsharpSqlite\Community.CsharpSqlite.csproj" />
|
||||||
<None Include="KnownPlugins.json">
|
<ProjectReference Include="MatterControl.Printing\MatterControl.Printing.csproj" />
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<ProjectReference Include="MatterControl.SLA\MatterControl.SLA.csproj" />
|
||||||
</None>
|
<ProjectReference Include="MatterControl.Winforms\MatterControl.Winforms.csproj" />
|
||||||
</ItemGroup>
|
<ProjectReference Include="MatterControlLib\MatterControlLib.csproj" />
|
||||||
<ItemGroup>
|
<ProjectReference Include="PrinterDriverInstaller\InfInstaller.csproj" />
|
||||||
<ProjectReference Include="Community.CsharpSqlite\Community.CsharpSqlite.csproj">
|
<ProjectReference Include="Submodules\agg-sharp\agg\Agg.csproj" />
|
||||||
<Project>{f1653f20-d47d-4f29-8c55-3c835542af5f}</Project>
|
<ProjectReference Include="Submodules\agg-sharp\Glfw\GlfwProvider.csproj" />
|
||||||
<Name>Community.CsharpSqlite</Name>
|
<ProjectReference Include="Submodules\agg-sharp\Gui\Gui.csproj" />
|
||||||
</ProjectReference>
|
<ProjectReference Include="Submodules\agg-sharp\VectorMath\VectorMath.csproj" />
|
||||||
<ProjectReference Include="MatterControl.Printing\MatterControl.Printing.csproj">
|
<ProjectReference Include="Submodules\MatterSlice\MatterSlice.csproj" />
|
||||||
<Project>{97d5ade3-c1b4-4b46-8a3e-718a4f7f079f}</Project>
|
<ProjectReference Include="MatterControl.Common\MatterControl.Common.csproj" />
|
||||||
<Name>MatterControl.Printing</Name>
|
</ItemGroup>
|
||||||
</ProjectReference>
|
<ItemGroup>
|
||||||
<ProjectReference Include="MatterControl.SLA\MatterControl.SLA.csproj">
|
<Content Include="application.ico">
|
||||||
<Project>{e2b1af22-4143-4b33-9781-fc5527e959f6}</Project>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
<Name>MatterControl.SLA</Name>
|
</Content>
|
||||||
</ProjectReference>
|
<None Include="StaticData\MatterControl EULA.txt" />
|
||||||
<ProjectReference Include="MatterControl.Winforms\MatterControl.Winforms.csproj">
|
<None Include="StaticData\BuildInfo.txt" />
|
||||||
<Project>{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}</Project>
|
<None Include="StaticData\License\agg-sharp.txt" />
|
||||||
<Name>MatterControl.Winforms</Name>
|
<None Include="StaticData\License\clipper.txt" />
|
||||||
</ProjectReference>
|
<None Include="StaticData\License\markdig.txt" />
|
||||||
<ProjectReference Include="MatterControlLib\MatterControlLib.csproj">
|
<None Include="StaticData\License\matterslice.txt" />
|
||||||
<Project>{93bebfdf-b81a-4344-ab82-0dbf58b234cd}</Project>
|
<None Include="StaticData\License\opentk.txt" />
|
||||||
<Name>MatterControlLib</Name>
|
<None Include="StaticData\SliceSettings\Layouts.txt" />
|
||||||
</ProjectReference>
|
</ItemGroup>
|
||||||
<ProjectReference Include="PrinterDriverInstaller\InfInstaller.csproj">
|
<ItemGroup>
|
||||||
<Project>{990a9ad3-b6a4-407b-9dfc-9c722af7c9b9}</Project>
|
<PackageReference Include="CsvHelper">
|
||||||
<Name>InfInstaller</Name>
|
<Version>27.2.1</Version>
|
||||||
</ProjectReference>
|
</PackageReference>
|
||||||
<ProjectReference Include="Submodules\agg-sharp\agg\Agg.csproj">
|
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.9" />
|
||||||
<Project>{657dbc6d-c3ea-4398-a3fa-ddb73c14f71b}</Project>
|
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||||
<Name>Agg</Name>
|
<PackageReference Include="Mindscape.Raygun4Net.NetCore" Version="6.4.3" />
|
||||||
</ProjectReference>
|
<PackageReference Include="ServiceWire" Version="5.5.0" />
|
||||||
<ProjectReference Include="Submodules\agg-sharp\Glfw\GlfwProvider.csproj">
|
<PackageReference Include="SocketIoClientDotNet">
|
||||||
<Project>{4da97548-2588-4ac3-a21d-ba4fee6fe5e4}</Project>
|
<Version>1.0.2-beta1</Version>
|
||||||
<Name>GlfwProvider</Name>
|
</PackageReference>
|
||||||
</ProjectReference>
|
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
||||||
<ProjectReference Include="Submodules\agg-sharp\Gui\Gui.csproj">
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.330701">
|
||||||
<Project>{74F6BB6C-9D02-4512-A59A-21940E35C532}</Project>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<Name>Gui</Name>
|
</PackageReference>
|
||||||
</ProjectReference>
|
<PackageReference Include="System.IO.Ports" Version="7.0.0-preview.5.22301.12" />
|
||||||
<ProjectReference Include="Submodules\agg-sharp\VectorMath\VectorMath.csproj">
|
</ItemGroup>
|
||||||
<Project>{d3e41b4e-bfbb-44ca-94c8-95c00f754fdd}</Project>
|
<ItemGroup>
|
||||||
<Name>VectorMath</Name>
|
<Compile Remove="ConfigurationPage\ApplicationSettings\ThemeColorPanel.cs" />
|
||||||
</ProjectReference>
|
</ItemGroup>
|
||||||
<ProjectReference Include="Submodules\MatterSlice\MatterSlice.csproj">
|
<ItemGroup>
|
||||||
<Project>{b0aed568-8796-42b9-baa9-ebc796134e78}</Project>
|
<None Remove=".gitignore" />
|
||||||
<Name>MatterSlice</Name>
|
<None Remove=".gitmodules" />
|
||||||
</ProjectReference>
|
<None Remove=".travis.yml" />
|
||||||
<ProjectReference Include="MatterControl.Common\MatterControl.Common.csproj">
|
<None Remove="AnalysisReport.sarif" />
|
||||||
<Project>{50505F12-985B-4C5F-8DAB-D5BEA734CD51}</Project>
|
<None Remove="application.ico" />
|
||||||
<Name>MatterControl.Common</Name>
|
<None Remove="CONTRIBUTING.md" />
|
||||||
</ProjectReference>
|
<None Remove="desktop.ini" />
|
||||||
</ItemGroup>
|
<None Remove="LICENSE" />
|
||||||
<ItemGroup>
|
<None Remove="main.cpp" />
|
||||||
<Content Include="application.ico">
|
<None Remove="ProductVersion.txt" />
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<None Remove="README.md" />
|
||||||
</Content>
|
<None Remove="upgrade-assistant.clef" />
|
||||||
<None Include="StaticData\MatterControl EULA.txt" />
|
</ItemGroup>
|
||||||
<None Include="StaticData\BuildInfo.txt" />
|
<ItemGroup>
|
||||||
<None Include="StaticData\License\agg-sharp.txt" />
|
<None Update="KnownPlugins.json">
|
||||||
<None Include="StaticData\License\clipper.txt" />
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
<None Include="StaticData\License\markdig.txt" />
|
</None>
|
||||||
<None Include="StaticData\License\matterslice.txt" />
|
</ItemGroup>
|
||||||
<None Include="StaticData\License\opentk.txt" />
|
<Target Name="WriteToFile" BeforeTargets="PreBuildEvent">
|
||||||
<None Include="StaticData\SliceSettings\Layouts.txt" />
|
<ItemGroup>
|
||||||
</ItemGroup>
|
<AssemblyAttributes Include="MatterHackers.MatterControl.MainOutputDirectory">
|
||||||
<ItemGroup>
|
<_Parameter1>$(OutputPath)</_Parameter1>
|
||||||
<PackageReference Include="CsvHelper">
|
<_Parameter2>$(SolutionDir)</_Parameter2>
|
||||||
<Version>27.2.1</Version>
|
</AssemblyAttributes>
|
||||||
</PackageReference>
|
</ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client">
|
<WriteCodeFragment Language="C#" OutputFile="MainOutputDirectory.cs" AssemblyAttributes="@(AssemblyAttributes)">
|
||||||
<Version>5.2.9</Version>
|
<Output TaskParameter="OutputFile" ItemName="Compile" />
|
||||||
</PackageReference>
|
<Output TaskParameter="OutputFile" ItemName="FileWrites" />
|
||||||
<PackageReference Include="Mindscape.Raygun4Net">
|
</WriteCodeFragment>
|
||||||
<Version>5.13.0</Version>
|
</Target>
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="SocketIoClientDotNet">
|
|
||||||
<Version>1.0.2-beta1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -34,27 +34,27 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "clipper_library", "Submodul
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MarchingSquares", "Submodules\agg-sharp\MarchingSquares\MarchingSquares.csproj", "{DF6845CD-64C6-4263-8357-DA8066855739}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MarchingSquares", "Submodules\agg-sharp\MarchingSquares\MarchingSquares.csproj", "{DF6845CD-64C6-4263-8357-DA8066855739}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher", "Launcher\Launcher.csproj", "{3DF4CB3D-9A03-4256-9A81-70523AAD828B}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Launcher", "Launcher\Launcher.csproj", "{3DF4CB3D-9A03-4256-9A81-70523AAD828B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agg-sharp", "agg-sharp", "{2AB9B589-5C98-4C05-BBEA-F97DAE168EAB}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agg-sharp", "agg-sharp", "{2AB9B589-5C98-4C05-BBEA-F97DAE168EAB}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InfInstaller", "PrinterDriverInstaller\InfInstaller.csproj", "{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfInstaller", "PrinterDriverInstaller\InfInstaller.csproj", "{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{FBE6DF29-85A9-4A8B-B739-35BE4CA0A9B7}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{FBE6DF29-85A9-4A8B-B739-35BE4CA0A9B7}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters3D", "Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj", "{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters3D", "Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj", "{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterControl.Tests", "Tests\MatterControl.Tests\MatterControl.Tests.csproj", "{E1455E5C-127C-4282-8CC5-452C300E91D0}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.Tests", "Tests\MatterControl.Tests\MatterControl.Tests.csproj", "{E1455E5C-127C-4282-8CC5-452C300E91D0}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agg.Tests", "Submodules\agg-sharp\Tests\Agg.Tests\Agg.Tests.csproj", "{195CBE56-E654-437B-AB05-3BE1B9452497}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agg.Tests", "Submodules\agg-sharp\Tests\Agg.Tests\Agg.Tests.csproj", "{195CBE56-E654-437B-AB05-3BE1B9452497}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterSlice.Tests", "Submodules\MatterSlice\Tests\MatterSlice.Tests\MatterSlice.Tests.csproj", "{8CD15B23-D30F-470E-99BA-9276FB7CABD4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterSlice.Tests", "Submodules\MatterSlice\Tests\MatterSlice.Tests\MatterSlice.Tests.csproj", "{8CD15B23-D30F-470E-99BA-9276FB7CABD4}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GuiAutomation", "Submodules\agg-sharp\GuiAutomation\GuiAutomation.csproj", "{E9102310-0029-4D8F-B1E9-88FBA6147D45}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GuiAutomation", "Submodules\agg-sharp\GuiAutomation\GuiAutomation.csproj", "{E9102310-0029-4D8F-B1E9-88FBA6147D45}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters2D", "Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj", "{94838988-523C-4B11-AD82-8B9B76F23A31}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters2D", "Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj", "{94838988-523C-4B11-AD82-8B9B76F23A31}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterControl.AutomationTests", "Tests\MatterControl.AutomationTests\MatterControl.AutomationTests.csproj", "{418E7058-92EE-4329-86BA-AC26B65AFB25}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.AutomationTests", "Tests\MatterControl.AutomationTests\MatterControl.AutomationTests.csproj", "{418E7058-92EE-4329-86BA-AC26B65AFB25}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{FED00F38-E911-45E1-A788-26980E84C3D6}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{FED00F38-E911-45E1-A788-26980E84C3D6}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
@ -72,15 +72,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.OpenGL", "Mat
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.Printing", "MatterControl.Printing\MatterControl.Printing.csproj", "{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.Printing", "MatterControl.Printing\MatterControl.Printing.csproj", "{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterControl.Winforms", "MatterControl.Winforms\MatterControl.Winforms.csproj", "{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.Winforms", "MatterControl.Winforms\MatterControl.Winforms.csproj", "{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterSliceLib", "Submodules\MatterSlice\MatterSliceLib\MatterSliceLib.csproj", "{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterSliceLib", "Submodules\MatterSlice\MatterSliceLib\MatterSliceLib.csproj", "{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterSlice", "Submodules\MatterSlice\MatterSlice.csproj", "{B0AED568-8796-42B9-BAA9-EBC796134E78}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterSlice", "Submodules\MatterSlice\MatterSlice.csproj", "{B0AED568-8796-42B9-BAA9-EBC796134E78}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControlLib", "MatterControlLib\MatterControlLib.csproj", "{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControlLib", "MatterControlLib\MatterControlLib.csproj", "{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterControl", "MatterControl.csproj", "{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl", "MatterControl.csproj", "{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.Common", "MatterControl.Common\MatterControl.Common.csproj", "{50505F12-985B-4C5F-8DAB-D5BEA734CD51}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.Common", "MatterControl.Common\MatterControl.Common.csproj", "{50505F12-985B-4C5F-8DAB-D5BEA734CD51}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
@ -104,6 +104,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatterControl.SLA", "Matter
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "geometry3Sharp", "Submodules\agg-sharp\geometry3Sharp\geometry3Sharp.csproj", "{3A25C796-F676-4422-8F30-01D4FDB240F1}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "geometry3Sharp", "Submodules\agg-sharp\geometry3Sharp\geometry3Sharp.csproj", "{3A25C796-F676-4422-8F30-01D4FDB240F1}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestInvoker", "Submodules\agg-sharp\Tests\TestInvoker\TestInvoker.csproj", "{A1F2F1DA-2B86-461E-9602-EAB2BD899A8F}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||||
Submodules\agg-sharp\Typography\Typography.OpenFont\Typography.OpenFont.projitems*{235a071b-8d06-40ae-a5c5-b1ce59715ee9}*SharedItemsImports = 13
|
Submodules\agg-sharp\Typography\Typography.OpenFont\Typography.OpenFont.projitems*{235a071b-8d06-40ae-a5c5-b1ce59715ee9}*SharedItemsImports = 13
|
||||||
|
|
@ -113,339 +115,177 @@ Global
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
Release|Mixed Platforms = Release|Mixed Platforms
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Any CPU.Build.0 = Release|Any CPU
|
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Any CPU.Build.0 = Release|Any CPU
|
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Any CPU.Build.0 = Release|Any CPU
|
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Any CPU.Build.0 = Release|Any CPU
|
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Any CPU.Build.0 = Release|Any CPU
|
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Any CPU.Build.0 = Release|Any CPU
|
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Any CPU.Build.0 = Release|Any CPU
|
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Any CPU.Build.0 = Release|Any CPU
|
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.Build.0 = Release|Any CPU
|
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Any CPU.Build.0 = Release|Any CPU
|
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{3DF4CB3D-9A03-4256-9A81-70523AAD828B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Release|Any CPU.Build.0 = Release|Any CPU
|
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Release|Any CPU.Build.0 = Release|Any CPU
|
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{E1455E5C-127C-4282-8CC5-452C300E91D0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{195CBE56-E654-437B-AB05-3BE1B9452497}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{195CBE56-E654-437B-AB05-3BE1B9452497}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{195CBE56-E654-437B-AB05-3BE1B9452497}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Release|Any CPU.Build.0 = Release|Any CPU
|
{195CBE56-E654-437B-AB05-3BE1B9452497}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{195CBE56-E654-437B-AB05-3BE1B9452497}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Release|Any CPU.Build.0 = Release|Any CPU
|
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{8CD15B23-D30F-470E-99BA-9276FB7CABD4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Release|Any CPU.Build.0 = Release|Any CPU
|
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{E9102310-0029-4D8F-B1E9-88FBA6147D45}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{94838988-523C-4B11-AD82-8B9B76F23A31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{94838988-523C-4B11-AD82-8B9B76F23A31}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{94838988-523C-4B11-AD82-8B9B76F23A31}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Release|Any CPU.Build.0 = Release|Any CPU
|
{94838988-523C-4B11-AD82-8B9B76F23A31}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{94838988-523C-4B11-AD82-8B9B76F23A31}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Release|Any CPU.Build.0 = Release|Any CPU
|
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{418E7058-92EE-4329-86BA-AC26B65AFB25}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Release|Any CPU.Build.0 = Release|Any CPU
|
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{8CB3464F-6130-4EDB-8DC6-CCD2697FAFBB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Release|Any CPU.Build.0 = Release|Any CPU
|
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{23EC3364-7C93-4169-9AB2-7181C66004C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Release|Any CPU.Build.0 = Release|Any CPU
|
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{2C564BE1-352D-4DDB-8226-F0981F983C60}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{1A901129-C885-425F-8D4B-86698F98A2B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{1A901129-C885-425F-8D4B-86698F98A2B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{1A901129-C885-425F-8D4B-86698F98A2B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Release|Any CPU.Build.0 = Release|Any CPU
|
{1A901129-C885-425F-8D4B-86698F98A2B4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{1A901129-C885-425F-8D4B-86698F98A2B4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Release|Any CPU.Build.0 = Release|Any CPU
|
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{CBDEEC31-D688-417B-9BF2-F0DB2E4FB268}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Release|Any CPU.Build.0 = Release|Any CPU
|
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{97D5ADE3-C1B4-4B46-8A3E-718A4F7F079F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Release|Any CPU.Build.0 = Release|Any CPU
|
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{D6DC2669-7B1F-40FE-89BF-45D4C94473E3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{7F077116-2923-4A77-87CC-EC3BE7EB8BC3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Release|Any CPU.Build.0 = Release|Any CPU
|
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{B0AED568-8796-42B9-BAA9-EBC796134E78}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Release|Any CPU.Build.0 = Release|Any CPU
|
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{93BEBFDF-B81A-4344-AB82-0DBF58B234CD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{B2B001EE-A142-4E20-ACF8-AE4A9CB984F8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Release|Any CPU.Build.0 = Release|Any CPU
|
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{50505F12-985B-4C5F-8DAB-D5BEA734CD51}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Release|Any CPU.Build.0 = Release|Any CPU
|
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{312CE0DD-0F8F-4366-96A4-44D0AAEF60AA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Release|Any CPU.Build.0 = Release|Any CPU
|
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{8A33EE41-BEFA-499F-9184-1B8D0C8A4600}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{B112455B-E42E-4718-821F-862884B9C07C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{B112455B-E42E-4718-821F-862884B9C07C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{B112455B-E42E-4718-821F-862884B9C07C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Release|Any CPU.Build.0 = Release|Any CPU
|
{B112455B-E42E-4718-821F-862884B9C07C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{B112455B-E42E-4718-821F-862884B9C07C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Release|Any CPU.Build.0 = Release|Any CPU
|
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{5AC2F31C-BD33-4BD1-8A90-D6A23941A74F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Release|Any CPU.Build.0 = Release|Any CPU
|
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{34383A75-1831-4816-A38A-AB06B969D7C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{34383A75-1831-4816-A38A-AB06B969D7C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{34383A75-1831-4816-A38A-AB06B969D7C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Release|Any CPU.Build.0 = Release|Any CPU
|
{34383A75-1831-4816-A38A-AB06B969D7C7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{A1F2F1DA-2B86-461E-9602-EAB2BD899A8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
{A1F2F1DA-2B86-461E-9602-EAB2BD899A8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A1F2F1DA-2B86-461E-9602-EAB2BD899A8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A1F2F1DA-2B86-461E-9602-EAB2BD899A8F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
@ -493,6 +333,7 @@ Global
|
||||||
{7ECC040E-19FC-4E10-B314-412CF7AB2170} = {2AB9B589-5C98-4C05-BBEA-F97DAE168EAB}
|
{7ECC040E-19FC-4E10-B314-412CF7AB2170} = {2AB9B589-5C98-4C05-BBEA-F97DAE168EAB}
|
||||||
{34383A75-1831-4816-A38A-AB06B969D7C7} = {FED00F38-E911-45E1-A788-26980E84C3D6}
|
{34383A75-1831-4816-A38A-AB06B969D7C7} = {FED00F38-E911-45E1-A788-26980E84C3D6}
|
||||||
{3A25C796-F676-4422-8F30-01D4FDB240F1} = {2AB9B589-5C98-4C05-BBEA-F97DAE168EAB}
|
{3A25C796-F676-4422-8F30-01D4FDB240F1} = {2AB9B589-5C98-4C05-BBEA-F97DAE168EAB}
|
||||||
|
{A1F2F1DA-2B86-461E-9602-EAB2BD899A8F} = {FBE6DF29-85A9-4A8B-B739-35BE4CA0A9B7}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {42D74E06-00EA-43D2-A05B-9BEAD4A2C8A0}
|
SolutionGuid = {42D74E06-00EA-43D2-A05B-9BEAD4A2C8A0}
|
||||||
|
|
|
||||||
|
|
@ -307,7 +307,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
||||||
graph.AddData(this.ActualTemperature);
|
graph.AddData(this.ActualTemperature);
|
||||||
}, 1);
|
}, 1);
|
||||||
|
|
||||||
var valueField = temperatureRow.Descendants<MHNumberEdit>().FirstOrDefault();
|
var valueField = temperatureRow.Descendants<ThemedNumberEdit>().FirstOrDefault();
|
||||||
valueField.Name = "Temperature Input";
|
valueField.Name = "Temperature Input";
|
||||||
|
|
||||||
valueField.ActuallNumberEdit.EditComplete += (s, e) =>
|
valueField.ActuallNumberEdit.EditComplete += (s, e) =>
|
||||||
|
|
|
||||||
|
|
@ -107,9 +107,10 @@ namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
_themeset = JsonConvert.DeserializeObject<ThemeSet>(File.ReadAllText(ProfileManager.Instance.ProfileThemeSetPath));
|
_themeset = JsonConvert.DeserializeObject<ThemeSet>(File.ReadAllText(ProfileManager.Instance.ProfileThemeSetPath));
|
||||||
ThemeSet.Theme.EnsureDefaults();
|
ThemeSet.Theme.EnsureDefaults();
|
||||||
|
MatterHackersThemeConfigExtensions.RebuildTheme(ThemeSet.Theme);
|
||||||
|
|
||||||
// If the serialized format is older than the current format, null and fall back to latest default below
|
// If the serialized format is older than the current format, null and fall back to latest default below
|
||||||
if (ThemeSet.SchemeVersion != ThemeSet.LatestSchemeVersion)
|
if (ThemeSet.SchemeVersion != ThemeSet.LatestSchemeVersion)
|
||||||
{
|
{
|
||||||
_themeset = null;
|
_themeset = null;
|
||||||
}
|
}
|
||||||
|
|
@ -163,6 +164,7 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
var themeConfig = JsonConvert.DeserializeObject<ThemeConfig>(json);
|
var themeConfig = JsonConvert.DeserializeObject<ThemeConfig>(json);
|
||||||
themeConfig.EnsureDefaults();
|
themeConfig.EnsureDefaults();
|
||||||
|
MatterHackersThemeConfigExtensions.RebuildTheme(ThemeSet.Theme);
|
||||||
|
|
||||||
return themeConfig;
|
return themeConfig;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -788,7 +788,7 @@ namespace MatterHackers.MatterControl
|
||||||
await applicationController.Tasks.Execute(task.Title, null, task.Action);
|
await applicationController.Tasks.Execute(task.Title, null, task.Action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// If we have not cancled the show welcome message and there is a window open
|
// If we have not cancled the show welcome message and there is a window open
|
||||||
if (UserSettings.Instance.get(UserSettingsKey.ShownWelcomeMessage) != "false"
|
if (UserSettings.Instance.get(UserSettingsKey.ShownWelcomeMessage) != "false"
|
||||||
&& ApplicationController.Instance.Workspaces.Count > 0)
|
&& ApplicationController.Instance.Workspaces.Count > 0)
|
||||||
|
|
@ -802,7 +802,7 @@ namespace MatterHackers.MatterControl
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
@ -566,10 +567,39 @@ namespace MatterHackers.MatterControl
|
||||||
targetUri += internalLink;
|
targetUri += internalLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
Process.Start(targetUri);
|
ProcessStart(targetUri);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ProcessStart(string input)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start(input);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// hack because of this: https://github.com/dotnet/corefx/issues/10361
|
||||||
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||||
|
{
|
||||||
|
input = input.Replace("&", "^&");
|
||||||
|
Process.Start(new ProcessStartInfo("cmd", $"/c start {input}") { CreateNoWindow = true });
|
||||||
|
}
|
||||||
|
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||||
|
{
|
||||||
|
Process.Start("xdg-open", input);
|
||||||
|
}
|
||||||
|
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||||
|
{
|
||||||
|
Process.Start("open", input);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal void MakeGrayscale(ImageBuffer sourceImage)
|
internal void MakeGrayscale(ImageBuffer sourceImage)
|
||||||
{
|
{
|
||||||
var buffer = sourceImage.GetBuffer();
|
var buffer = sourceImage.GetBuffer();
|
||||||
|
|
|
||||||
|
|
@ -27,56 +27,15 @@ of the authors and should not be interpreted as representing official policies,
|
||||||
either expressed or implied, of the FreeBSD Project.
|
either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using MatterHackers.Agg;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.IO.Compression;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using global::MatterControl.Printing;
|
|
||||||
using Markdig.Agg;
|
|
||||||
using Markdig.Renderers.Agg;
|
|
||||||
using MatterHackers.Agg;
|
|
||||||
using MatterHackers.Agg.Font;
|
|
||||||
using MatterHackers.Agg.Image;
|
|
||||||
using MatterHackers.Agg.Platform;
|
|
||||||
using MatterHackers.Agg.UI;
|
|
||||||
using MatterHackers.Agg.VertexSource;
|
|
||||||
using MatterHackers.DataConverters3D;
|
|
||||||
using MatterHackers.DataConverters3D.UndoCommands;
|
|
||||||
using MatterHackers.Localizations;
|
|
||||||
using MatterHackers.MatterControl.CustomWidgets;
|
|
||||||
using MatterHackers.MatterControl.DataStorage;
|
|
||||||
using MatterHackers.MatterControl.DesignTools;
|
|
||||||
using MatterHackers.MatterControl.DesignTools.Operations;
|
|
||||||
using MatterHackers.MatterControl.Extensibility;
|
|
||||||
using MatterHackers.MatterControl.Library;
|
|
||||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
|
||||||
using MatterHackers.MatterControl.PartPreviewWindow.View3D;
|
|
||||||
using MatterHackers.MatterControl.Plugins;
|
|
||||||
using MatterHackers.MatterControl.PrinterCommunication;
|
|
||||||
using MatterHackers.MatterControl.PrinterControls.PrinterConnections;
|
|
||||||
using MatterHackers.MatterControl.PrintQueue;
|
|
||||||
using MatterHackers.MatterControl.SettingsManagement;
|
|
||||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
|
||||||
using MatterHackers.MatterControl.Tour;
|
|
||||||
using MatterHackers.PolygonMesh;
|
|
||||||
using MatterHackers.PolygonMesh.Processors;
|
|
||||||
using MatterHackers.VectorMath;
|
|
||||||
using MatterHackers.VectorMath.TrackBall;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Converters;
|
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("MatterControl.Tests")]
|
[assembly: InternalsVisibleTo("MatterControl.Tests")]
|
||||||
[assembly: InternalsVisibleTo("MatterControl.AutomationTests")]
|
[assembly: InternalsVisibleTo("MatterControl.AutomationTests")]
|
||||||
|
|
@ -84,7 +43,7 @@ using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
public class RunningTasksConfig
|
public class RunningTasksConfig
|
||||||
{
|
{
|
||||||
public event EventHandler TasksChanged;
|
public event EventHandler TasksChanged;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,9 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MatterHackers.Agg;
|
|
||||||
using MatterHackers.Agg.Image;
|
using MatterHackers.Agg.Image;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.ImageProcessing;
|
using MatterHackers.ImageProcessing;
|
||||||
using MatterHackers.MatterControl.Library;
|
using MatterHackers.MatterControl.Library;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,11 +42,8 @@ using MatterHackers.VectorMath;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
public class ThemeConfig
|
public class ThemeConfig3
|
||||||
{
|
{
|
||||||
private ImageBuffer restoreNormal;
|
|
||||||
private ImageBuffer restoreHover;
|
|
||||||
|
|
||||||
public int FontSize7 { get; } = 7;
|
public int FontSize7 { get; } = 7;
|
||||||
|
|
||||||
public int FontSize8 { get; } = 8;
|
public int FontSize8 { get; } = 8;
|
||||||
|
|
@ -73,10 +70,6 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
public double MenuGutterWidth => 35 * GuiWidget.DeviceScale;
|
public double MenuGutterWidth => 35 * GuiWidget.DeviceScale;
|
||||||
|
|
||||||
public double MicroButtonHeight => 20 * GuiWidget.DeviceScale;
|
|
||||||
|
|
||||||
private double MicroButtonWidth => 30 * GuiWidget.DeviceScale;
|
|
||||||
|
|
||||||
private readonly int defaultScrollBarWidth = 120;
|
private readonly int defaultScrollBarWidth = 120;
|
||||||
|
|
||||||
public void MakeRoundedButton(GuiWidget button, Color? boarderColor = null)
|
public void MakeRoundedButton(GuiWidget button, Color? boarderColor = null)
|
||||||
|
|
@ -100,44 +93,6 @@ namespace MatterHackers.MatterControl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ApplyPrimaryActionStyle(GuiWidget guiWidget)
|
|
||||||
{
|
|
||||||
guiWidget.BackgroundColor = new Color(this.AccentMimimalOverlay, 50);
|
|
||||||
|
|
||||||
Color hoverColor = this.AccentMimimalOverlay;
|
|
||||||
|
|
||||||
switch (guiWidget)
|
|
||||||
{
|
|
||||||
case PopupMenuButton menuButton:
|
|
||||||
menuButton.HoverColor = hoverColor;
|
|
||||||
break;
|
|
||||||
case SimpleFlowButton flowButton:
|
|
||||||
flowButton.HoverColor = hoverColor;
|
|
||||||
break;
|
|
||||||
case SimpleButton button:
|
|
||||||
button.HoverColor = hoverColor;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void RemovePrimaryActionStyle(GuiWidget guiWidget)
|
|
||||||
{
|
|
||||||
guiWidget.BackgroundColor = Color.Transparent;
|
|
||||||
|
|
||||||
// Buttons in toolbars should revert to ToolbarButtonHover when reset
|
|
||||||
bool parentIsToolbar = guiWidget.Parent?.Parent is Toolbar;
|
|
||||||
|
|
||||||
switch (guiWidget)
|
|
||||||
{
|
|
||||||
case SimpleFlowButton flowButton:
|
|
||||||
flowButton.HoverColor = parentIsToolbar ? this.ToolbarButtonHover : Color.Transparent;
|
|
||||||
break;
|
|
||||||
case SimpleButton button:
|
|
||||||
button.HoverColor = parentIsToolbar ? this.ToolbarButtonHover : Color.Transparent;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public BorderDouble TextButtonPadding { get; } = new BorderDouble(14, 0);
|
public BorderDouble TextButtonPadding { get; } = new BorderDouble(14, 0);
|
||||||
|
|
||||||
public BorderDouble ButtonSpacing { get; } = new BorderDouble(right: 3);
|
public BorderDouble ButtonSpacing { get; } = new BorderDouble(right: 3);
|
||||||
|
|
@ -210,8 +165,6 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
public BorderDouble SeparatorMargin { get; }
|
public BorderDouble SeparatorMargin { get; }
|
||||||
|
|
||||||
public ImageBuffer GeneratingThumbnailIcon { get; private set; }
|
|
||||||
|
|
||||||
public class StateColor
|
public class StateColor
|
||||||
{
|
{
|
||||||
public Color BackgroundColor { get; set; }
|
public Color BackgroundColor { get; set; }
|
||||||
|
|
@ -249,12 +202,6 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
public Color BorderColor20 { get; set; }
|
public Color BorderColor20 { get; set; }
|
||||||
|
|
||||||
internal void EnsureDefaults()
|
|
||||||
{
|
|
||||||
// EnsureDefaults is called after deserialization and at a point when state should be fully loaded. Invoking RebuildTheme here ensures icons shaded correctly
|
|
||||||
this.RebuildTheme();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color RowBorder { get; set; }
|
public Color RowBorder { get; set; }
|
||||||
|
|
||||||
public DropListStyle DropList { get; set; } = new DropListStyle();
|
public DropListStyle DropList { get; set; } = new DropListStyle();
|
||||||
|
|
@ -280,128 +227,12 @@ namespace MatterHackers.MatterControl
|
||||||
public GridColors BedGridColors { get; set; } = new GridColors();
|
public GridColors BedGridColors { get; set; } = new GridColors();
|
||||||
public double ButtonRadius { get; set; } = 3;
|
public double ButtonRadius { get; set; } = 3;
|
||||||
|
|
||||||
public GuiWidget CreateSearchButton()
|
|
||||||
{
|
|
||||||
return new IconButton(StaticData.Instance.LoadIcon("icon_search_24x24.png", 16, 16).SetToColor(TextColor), this)
|
|
||||||
{
|
|
||||||
ToolTipText = "Search".Localize(),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public ThemeConfig()
|
|
||||||
{
|
|
||||||
this.SeparatorMargin = (this.ButtonSpacing * 2).Clone(left: this.ButtonSpacing.Right);
|
|
||||||
this.RebuildTheme();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetDefaults()
|
public void SetDefaults()
|
||||||
{
|
{
|
||||||
this.DisabledColor = new Color(this.LightTextColor, 50);
|
this.DisabledColor = new Color(this.LightTextColor, 50);
|
||||||
this.SplashAccentColor = new Color(this.PrimaryAccentColor, 185).OverlayOn(Color.White).ToColor();
|
this.SplashAccentColor = new Color(this.PrimaryAccentColor, 185).OverlayOn(Color.White).ToColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RebuildTheme()
|
|
||||||
{
|
|
||||||
int size = (int)(16 * GuiWidget.DeviceScale);
|
|
||||||
|
|
||||||
// On Android, use red icon as no hover events, otherwise transparent and red on hover
|
|
||||||
restoreNormal = ColorCircle(size, (AggContext.OperatingSystem == OSType.Android) ? new Color(200, 0, 0) : Color.Transparent);
|
|
||||||
restoreHover = ColorCircle(size, new Color("#DB4437"));
|
|
||||||
|
|
||||||
this.GeneratingThumbnailIcon = StaticData.Instance.LoadIcon("building_thumbnail_40x40.png", 40, 40).SetToColor(TextColor);
|
|
||||||
|
|
||||||
ScrollBar.DefaultBackgroundColor = this.TextColor.WithAlpha(30);
|
|
||||||
ScrollBar.DefaultThumbColor = this.TextColor.WithAlpha(130);
|
|
||||||
ScrollBar.DefaultThumbHoverColor = this.PrimaryAccentColor.WithAlpha(130);
|
|
||||||
}
|
|
||||||
|
|
||||||
public JogControls.MoveButton CreateMoveButton(PrinterConfig printer, string label, PrinterConnection.Axis axis, double movementFeedRate, bool levelingButtons = false)
|
|
||||||
{
|
|
||||||
return new JogControls.MoveButton(label, printer, axis, movementFeedRate, this)
|
|
||||||
{
|
|
||||||
BackgroundColor = this.MinimalShade,
|
|
||||||
BorderColor = this.BorderColor40,
|
|
||||||
BackgroundOutlineWidth = 1,
|
|
||||||
VAnchor = VAnchor.Absolute,
|
|
||||||
HAnchor = HAnchor.Absolute,
|
|
||||||
Margin = 0,
|
|
||||||
Padding = 0,
|
|
||||||
Height = (levelingButtons ? 45 : 40) * GuiWidget.DeviceScale,
|
|
||||||
Width = (levelingButtons ? 90 : 40) * GuiWidget.DeviceScale,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public JogControls.ExtrudeButton CreateExtrudeButton(PrinterConfig printer, string label, double movementFeedRate, int extruderNumber, bool levelingButtons = false)
|
|
||||||
{
|
|
||||||
return new JogControls.ExtrudeButton(printer, label, movementFeedRate, extruderNumber, this)
|
|
||||||
{
|
|
||||||
BackgroundColor = this.MinimalShade,
|
|
||||||
BorderColor = this.BorderColor40,
|
|
||||||
BackgroundOutlineWidth = 1,
|
|
||||||
VAnchor = VAnchor.Absolute,
|
|
||||||
HAnchor = HAnchor.Absolute,
|
|
||||||
Margin = 0,
|
|
||||||
Padding = 0,
|
|
||||||
Height = (levelingButtons ? 45 : 40) * GuiWidget.DeviceScale,
|
|
||||||
Width = (levelingButtons ? 90 : 40) * GuiWidget.DeviceScale,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public RadioTextButton CreateMicroRadioButton(string text, IList<GuiWidget> siblingRadioButtonList = null)
|
|
||||||
{
|
|
||||||
var radioButton = new RadioTextButton(text, this, this.FontSize8)
|
|
||||||
{
|
|
||||||
SiblingRadioButtonList = siblingRadioButtonList,
|
|
||||||
Padding = new BorderDouble(5, 0),
|
|
||||||
SelectedBackgroundColor = this.SlightShade,
|
|
||||||
UnselectedBackgroundColor = this.SlightShade,
|
|
||||||
HoverColor = this.AccentMimimalOverlay,
|
|
||||||
Margin = new BorderDouble(right: 1),
|
|
||||||
HAnchor = HAnchor.Absolute,
|
|
||||||
Height = this.MicroButtonHeight,
|
|
||||||
Width = this.MicroButtonWidth
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add to sibling list if supplied
|
|
||||||
siblingRadioButtonList?.Add(radioButton);
|
|
||||||
|
|
||||||
return radioButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextButton CreateLightDialogButton(string text)
|
|
||||||
{
|
|
||||||
return CreateDialogButton(text, new Color(Color.White, 15), new Color(Color.White, 25));
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextButton CreateDialogButton(string text)
|
|
||||||
{
|
|
||||||
return CreateDialogButton(text, this.SlightShade, this.SlightShade.WithAlpha(75));
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextButton CreateDialogButton(string text, Color backgroundColor, Color hoverColor)
|
|
||||||
{
|
|
||||||
#if !__ANDROID__
|
|
||||||
return new TextButton(text, this)
|
|
||||||
{
|
|
||||||
BackgroundColor = backgroundColor,
|
|
||||||
HoverColor = hoverColor,
|
|
||||||
MinimumSize = new Vector2(75, 0),
|
|
||||||
Margin = this.ButtonSpacing
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
var button = new TextButton(text, this, this.FontSize14)
|
|
||||||
{
|
|
||||||
BackgroundColor = backgroundColor,
|
|
||||||
HoverColor = hoverColor,
|
|
||||||
// Enlarge button height and margin on Android
|
|
||||||
Height = 34 * GuiWidget.DeviceScale,
|
|
||||||
};
|
|
||||||
button.Padding = button.Padding * 1.2;
|
|
||||||
|
|
||||||
return button;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color GetBorderColor(int alpha)
|
public Color GetBorderColor(int alpha)
|
||||||
{
|
{
|
||||||
return new Color(this.BorderColor, alpha);
|
return new Color(this.BorderColor, alpha);
|
||||||
|
|
@ -419,215 +250,6 @@ namespace MatterHackers.MatterControl
|
||||||
return new BlenderBGRA().Blend(background, overlay);
|
return new BlenderBGRA().Blend(background, overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FlowLayoutWidget CreateMenuItems(PopupMenu popupMenu, IEnumerable<NamedAction> menuActions)
|
|
||||||
{
|
|
||||||
// Create menu items in the DropList for each element in this.menuActions
|
|
||||||
foreach (var menuAction in menuActions)
|
|
||||||
{
|
|
||||||
if (menuAction is ActionSeparator)
|
|
||||||
{
|
|
||||||
popupMenu.CreateSeparator();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (menuAction is NamedActionGroup namedActionButtons)
|
|
||||||
{
|
|
||||||
var content = new FlowLayoutWidget()
|
|
||||||
{
|
|
||||||
HAnchor = HAnchor.Fit | HAnchor.Stretch
|
|
||||||
};
|
|
||||||
|
|
||||||
var textWidget = new TextWidget(menuAction.Title, pointSize: this.DefaultFontSize, textColor: this.TextColor)
|
|
||||||
{
|
|
||||||
// Padding = MenuPadding,
|
|
||||||
VAnchor = VAnchor.Center
|
|
||||||
};
|
|
||||||
content.AddChild(textWidget);
|
|
||||||
|
|
||||||
content.AddChild(new HorizontalSpacer());
|
|
||||||
|
|
||||||
foreach (var actionButton in namedActionButtons.Group)
|
|
||||||
{
|
|
||||||
var button = new TextButton(actionButton.Title, this)
|
|
||||||
{
|
|
||||||
Border = new BorderDouble(1, 0, 0, 0),
|
|
||||||
BorderColor = this.MinimalShade,
|
|
||||||
HoverColor = this.AccentMimimalOverlay,
|
|
||||||
Enabled = actionButton.IsEnabled()
|
|
||||||
};
|
|
||||||
|
|
||||||
content.AddChild(button);
|
|
||||||
|
|
||||||
if (actionButton.IsEnabled())
|
|
||||||
{
|
|
||||||
button.Click += (s, e) =>
|
|
||||||
{
|
|
||||||
actionButton.Action();
|
|
||||||
popupMenu.Unfocus();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var menuItem = new PopupMenu.MenuItem(content, this)
|
|
||||||
{
|
|
||||||
HAnchor = HAnchor.Fit | HAnchor.Stretch,
|
|
||||||
VAnchor = VAnchor.Fit,
|
|
||||||
HoverColor = Color.Transparent,
|
|
||||||
};
|
|
||||||
popupMenu.AddChild(menuItem);
|
|
||||||
menuItem.Padding = new BorderDouble(menuItem.Padding.Left,
|
|
||||||
menuItem.Padding.Bottom,
|
|
||||||
0,
|
|
||||||
menuItem.Padding.Top);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PopupMenu.MenuItem menuItem;
|
|
||||||
|
|
||||||
if (menuAction is NamedBoolAction boolAction)
|
|
||||||
{
|
|
||||||
menuItem = popupMenu.CreateBoolMenuItem(menuAction.Title, boolAction.GetIsActive, boolAction.SetIsActive);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
menuItem = popupMenu.CreateMenuItem(menuAction.Title, menuAction.Icon, menuAction.Shortcut);
|
|
||||||
}
|
|
||||||
|
|
||||||
menuItem.Name = $"{menuAction.Title} Menu Item";
|
|
||||||
|
|
||||||
menuItem.Enabled = menuAction is NamedActionGroup
|
|
||||||
|| (menuAction.Action != null && menuAction.IsEnabled?.Invoke() != false);
|
|
||||||
|
|
||||||
menuItem.ClearRemovedFlag();
|
|
||||||
|
|
||||||
if (menuItem.Enabled)
|
|
||||||
{
|
|
||||||
menuItem.Click += (s, e) =>
|
|
||||||
{
|
|
||||||
menuAction.Action();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return popupMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PopupMenuButton CreateSplitButton(SplitButtonParams buttonParams, OperationGroup operationGroup = null)
|
|
||||||
{
|
|
||||||
PopupMenuButton menuButton = null;
|
|
||||||
|
|
||||||
GuiWidget innerButton;
|
|
||||||
if (buttonParams.ButtonText == null)
|
|
||||||
{
|
|
||||||
innerButton = new IconButton(buttonParams.Icon, this)
|
|
||||||
{
|
|
||||||
Name = buttonParams.ButtonName + " Inner SplitButton",
|
|
||||||
Enabled = buttonParams.ButtonEnabled,
|
|
||||||
ToolTipText = buttonParams.ButtonTooltip,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Remove right Padding for drop style
|
|
||||||
innerButton.Padding = innerButton.Padding.Clone(right: 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (buttonParams.Icon == null)
|
|
||||||
{
|
|
||||||
innerButton = new TextButton(buttonParams.ButtonText, this)
|
|
||||||
{
|
|
||||||
Name = buttonParams.ButtonName,
|
|
||||||
Enabled = buttonParams.ButtonEnabled,
|
|
||||||
ToolTipText = buttonParams.ButtonTooltip,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
innerButton = new TextIconButton(buttonParams.ButtonText, buttonParams.Icon, this)
|
|
||||||
{
|
|
||||||
Name = buttonParams.ButtonName,
|
|
||||||
Enabled = buttonParams.ButtonEnabled,
|
|
||||||
ToolTipText = buttonParams.ButtonTooltip,
|
|
||||||
Padding = new BorderDouble(5, 0, 5, 0)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
innerButton.Click += (s, e) =>
|
|
||||||
{
|
|
||||||
buttonParams.ButtonAction.Invoke(menuButton);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
if (operationGroup == null)
|
|
||||||
{
|
|
||||||
menuButton = new PopupMenuButton(innerButton, this);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
menuButton = new OperationGroupButton(operationGroup, innerButton, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
var theme = ApplicationController.Instance.MenuTheme;
|
|
||||||
menuButton.DynamicPopupContent = () =>
|
|
||||||
{
|
|
||||||
var popupMenu = new PopupMenu(theme);
|
|
||||||
buttonParams.ExtendPopupMenu?.Invoke(popupMenu);
|
|
||||||
|
|
||||||
return popupMenu;
|
|
||||||
};
|
|
||||||
|
|
||||||
menuButton.Name = buttonParams.ButtonName + " Menu SplitButton";
|
|
||||||
menuButton.BackgroundColor = buttonParams.BackgroundColor;
|
|
||||||
if (menuButton.BackgroundColor == Color.Transparent)
|
|
||||||
{
|
|
||||||
menuButton.BackgroundColor = this.ToolbarButtonBackground;
|
|
||||||
}
|
|
||||||
|
|
||||||
menuButton.HoverColor = this.ToolbarButtonHover;
|
|
||||||
menuButton.MouseDownColor = this.ToolbarButtonDown;
|
|
||||||
menuButton.DrawArrow = true;
|
|
||||||
menuButton.Margin = this.ButtonSpacing;
|
|
||||||
menuButton.DistinctPopupButton = true;
|
|
||||||
menuButton.BackgroundRadius = new RadiusCorners(theme.ButtonRadius * GuiWidget.DeviceScale, theme.ButtonRadius * GuiWidget.DeviceScale, 0, 0);
|
|
||||||
|
|
||||||
innerButton.Selectable = true;
|
|
||||||
return menuButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ImageBuffer ColorCircle(int size, Color color)
|
|
||||||
{
|
|
||||||
var imageBuffer = new ImageBuffer(size, size);
|
|
||||||
Graphics2D normalGraphics = imageBuffer.NewGraphics2D();
|
|
||||||
var center = new Vector2(size / 2.0, size / 2.0);
|
|
||||||
|
|
||||||
Color barColor;
|
|
||||||
if (color != Color.Transparent)
|
|
||||||
{
|
|
||||||
normalGraphics.Circle(center, size / 2.0, color);
|
|
||||||
barColor = Color.White;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
barColor = new Color("#999");
|
|
||||||
}
|
|
||||||
|
|
||||||
normalGraphics.Line(center + new Vector2(-size / 4.0, -size / 4.0), center + new Vector2(size / 4.0, size / 4.0), barColor, 2 * GuiWidget.DeviceScale);
|
|
||||||
normalGraphics.Line(center + new Vector2(-size / 4.0, size / 4.0), center + new Vector2(size / 4.0, -size / 4.0), barColor, 2 * GuiWidget.DeviceScale);
|
|
||||||
|
|
||||||
return imageBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GuiWidget CreateSmallResetButton()
|
|
||||||
{
|
|
||||||
return new HoverImageWidget(restoreNormal, restoreHover)
|
|
||||||
{
|
|
||||||
VAnchor = VAnchor.Center,
|
|
||||||
Margin = new BorderDouble(0, 0, 5, 0)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public SolidSlider CreateSolidSlider(GuiWidget wordOptionContainer, string header, ThemeConfig theme, double min = 0, double max = .5)
|
public SolidSlider CreateSolidSlider(GuiWidget wordOptionContainer, string header, ThemeConfig theme, double min = 0, double max = .5)
|
||||||
{
|
{
|
||||||
double scrollBarWidth = 10;
|
double scrollBarWidth = 10;
|
||||||
|
|
@ -678,55 +300,6 @@ namespace MatterHackers.MatterControl
|
||||||
widget.BorderColor = shadedBorder ? this.MinimalShade : this.BorderColor20;
|
widget.BorderColor = shadedBorder ? this.MinimalShade : this.BorderColor20;
|
||||||
widget.Border = border;
|
widget.Border = border;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SectionWidget ApplyBoxStyle(SectionWidget sectionWidget)
|
|
||||||
{
|
|
||||||
return ApplyBoxStyle(
|
|
||||||
sectionWidget,
|
|
||||||
this.SectionBackgroundColor,
|
|
||||||
margin: new BorderDouble(this.DefaultContainerPadding, 0, this.DefaultContainerPadding, this.DefaultContainerPadding));
|
|
||||||
}
|
|
||||||
|
|
||||||
public SolidSlider ApplySliderStyle(SolidSlider solidSlider)
|
|
||||||
{
|
|
||||||
solidSlider.View.TrackColor = this.SlightShade;
|
|
||||||
solidSlider.View.TrackRadius = 4;
|
|
||||||
|
|
||||||
return solidSlider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DoubleSolidSlider ApplySliderStyle(DoubleSolidSlider solidSlider)
|
|
||||||
{
|
|
||||||
solidSlider.View.TrackColor = this.SlightShade;
|
|
||||||
solidSlider.View.TrackRadius = 4;
|
|
||||||
|
|
||||||
return solidSlider;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ApplySquareBoxStyle
|
|
||||||
public SectionWidget ApplyBoxStyle(SectionWidget sectionWidget, BorderDouble margin)
|
|
||||||
{
|
|
||||||
sectionWidget.BackgroundColor = this.SectionBackgroundColor;
|
|
||||||
sectionWidget.Margin = 0;
|
|
||||||
sectionWidget.Border = new BorderDouble(bottom: 1);
|
|
||||||
sectionWidget.BorderColor = this.RowBorder;
|
|
||||||
|
|
||||||
return sectionWidget;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SectionWidget ApplyBoxStyle(SectionWidget sectionWidget, Color backgroundColor, BorderDouble margin)
|
|
||||||
{
|
|
||||||
// Enforce panel padding
|
|
||||||
// sectionWidget.ContentPanel.Padding = new BorderDouble(10, 0, 10, 2);
|
|
||||||
// sectionWidget.ContentPanel.Padding = 0;
|
|
||||||
|
|
||||||
sectionWidget.BorderColor = Color.Transparent;
|
|
||||||
sectionWidget.BorderRadius = 5;
|
|
||||||
sectionWidget.Margin = margin;
|
|
||||||
sectionWidget.BackgroundColor = backgroundColor;
|
|
||||||
|
|
||||||
return sectionWidget;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PresetColors
|
public class PresetColors
|
||||||
|
|
@ -771,4 +344,349 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
public Color BackgroundColor { get; set; }
|
public Color BackgroundColor { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class MatterHackersThemeConfigExtensions
|
||||||
|
{
|
||||||
|
public static JogControls.MoveButton CreateMoveButton(this ThemeConfig config, PrinterConfig printer, string label, PrinterConnection.Axis axis, double movementFeedRate, bool levelingButtons = false)
|
||||||
|
{
|
||||||
|
return new JogControls.MoveButton(label, printer, axis, movementFeedRate, config)
|
||||||
|
{
|
||||||
|
BackgroundColor = config.MinimalShade,
|
||||||
|
BorderColor = config.BorderColor40,
|
||||||
|
BackgroundOutlineWidth = 1,
|
||||||
|
VAnchor = VAnchor.Absolute,
|
||||||
|
HAnchor = HAnchor.Absolute,
|
||||||
|
Margin = 0,
|
||||||
|
Padding = 0,
|
||||||
|
Height = (levelingButtons ? 45 : 40) * GuiWidget.DeviceScale,
|
||||||
|
Width = (levelingButtons ? 90 : 40) * GuiWidget.DeviceScale,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JogControls.ExtrudeButton CreateExtrudeButton(this ThemeConfig config, PrinterConfig printer, string label, double movementFeedRate, int extruderNumber, bool levelingButtons = false)
|
||||||
|
{
|
||||||
|
return new JogControls.ExtrudeButton(printer, label, movementFeedRate, extruderNumber, config)
|
||||||
|
{
|
||||||
|
BackgroundColor = config.MinimalShade,
|
||||||
|
BorderColor = config.BorderColor40,
|
||||||
|
BackgroundOutlineWidth = 1,
|
||||||
|
VAnchor = VAnchor.Absolute,
|
||||||
|
HAnchor = HAnchor.Absolute,
|
||||||
|
Margin = 0,
|
||||||
|
Padding = 0,
|
||||||
|
Height = (levelingButtons ? 45 : 40) * GuiWidget.DeviceScale,
|
||||||
|
Width = (levelingButtons ? 90 : 40) * GuiWidget.DeviceScale,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PopupMenuButton CreateSplitButton(this ThemeConfig config, SplitButtonParams buttonParams, OperationGroup operationGroup = null)
|
||||||
|
{
|
||||||
|
PopupMenuButton menuButton = null;
|
||||||
|
|
||||||
|
GuiWidget innerButton;
|
||||||
|
if (buttonParams.ButtonText == null)
|
||||||
|
{
|
||||||
|
innerButton = new IconButton(buttonParams.Icon, config)
|
||||||
|
{
|
||||||
|
Name = buttonParams.ButtonName + " Inner SplitButton",
|
||||||
|
Enabled = buttonParams.ButtonEnabled,
|
||||||
|
ToolTipText = buttonParams.ButtonTooltip,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Remove right Padding for drop style
|
||||||
|
innerButton.Padding = innerButton.Padding.Clone(right: 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (buttonParams.Icon == null)
|
||||||
|
{
|
||||||
|
innerButton = new TextButton(buttonParams.ButtonText, config)
|
||||||
|
{
|
||||||
|
Name = buttonParams.ButtonName,
|
||||||
|
Enabled = buttonParams.ButtonEnabled,
|
||||||
|
ToolTipText = buttonParams.ButtonTooltip,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
innerButton = new TextIconButton(buttonParams.ButtonText, buttonParams.Icon, config)
|
||||||
|
{
|
||||||
|
Name = buttonParams.ButtonName,
|
||||||
|
Enabled = buttonParams.ButtonEnabled,
|
||||||
|
ToolTipText = buttonParams.ButtonTooltip,
|
||||||
|
Padding = new BorderDouble(5, 0, 5, 0)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
innerButton.Click += (s, e) =>
|
||||||
|
{
|
||||||
|
buttonParams.ButtonAction.Invoke(menuButton);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if (operationGroup == null)
|
||||||
|
{
|
||||||
|
menuButton = new PopupMenuButton(innerButton, config);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
menuButton = new OperationGroupButton(operationGroup, innerButton, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
var theme = ApplicationController.Instance.MenuTheme;
|
||||||
|
menuButton.DynamicPopupContent = () =>
|
||||||
|
{
|
||||||
|
var popupMenu = new PopupMenu(theme);
|
||||||
|
buttonParams.ExtendPopupMenu?.Invoke(popupMenu);
|
||||||
|
|
||||||
|
return popupMenu;
|
||||||
|
};
|
||||||
|
|
||||||
|
menuButton.Name = buttonParams.ButtonName + " Menu SplitButton";
|
||||||
|
menuButton.BackgroundColor = buttonParams.BackgroundColor;
|
||||||
|
if (menuButton.BackgroundColor == Color.Transparent)
|
||||||
|
{
|
||||||
|
menuButton.BackgroundColor = config.ToolbarButtonBackground;
|
||||||
|
}
|
||||||
|
|
||||||
|
menuButton.HoverColor = config.ToolbarButtonHover;
|
||||||
|
menuButton.MouseDownColor = config.ToolbarButtonDown;
|
||||||
|
menuButton.DrawArrow = true;
|
||||||
|
menuButton.Margin = config.ButtonSpacing;
|
||||||
|
menuButton.DistinctPopupButton = true;
|
||||||
|
menuButton.BackgroundRadius = new RadiusCorners(theme.ButtonRadius * GuiWidget.DeviceScale, theme.ButtonRadius * GuiWidget.DeviceScale, 0, 0);
|
||||||
|
|
||||||
|
innerButton.Selectable = true;
|
||||||
|
return menuButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GuiWidget CreateSearchButton(this ThemeConfig config)
|
||||||
|
{
|
||||||
|
return new IconButton(StaticData.Instance.LoadIcon("icon_search_24x24.png", 16, 16).SetToColor(config.TextColor), config)
|
||||||
|
{
|
||||||
|
ToolTipText = "Search".Localize(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double MicroButtonHeight => 20 * GuiWidget.DeviceScale;
|
||||||
|
private static double MicroButtonWidth => 30 * GuiWidget.DeviceScale;
|
||||||
|
|
||||||
|
public static RadioTextButton CreateMicroRadioButton(this ThemeConfig config, string text, IList<GuiWidget> siblingRadioButtonList = null)
|
||||||
|
{
|
||||||
|
var radioButton = new RadioTextButton(text, config, config.FontSize8)
|
||||||
|
{
|
||||||
|
SiblingRadioButtonList = siblingRadioButtonList,
|
||||||
|
Padding = new BorderDouble(5, 0),
|
||||||
|
SelectedBackgroundColor = config.SlightShade,
|
||||||
|
UnselectedBackgroundColor = config.SlightShade,
|
||||||
|
HoverColor = config.AccentMimimalOverlay,
|
||||||
|
Margin = new BorderDouble(right: 1),
|
||||||
|
HAnchor = HAnchor.Absolute,
|
||||||
|
Height = config.MicroButtonHeight,
|
||||||
|
Width = MicroButtonWidth
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add to sibling list if supplied
|
||||||
|
siblingRadioButtonList?.Add(radioButton);
|
||||||
|
|
||||||
|
return radioButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FlowLayoutWidget CreateMenuItems(this ThemeConfig config, PopupMenu popupMenu, IEnumerable<NamedAction> menuActions)
|
||||||
|
{
|
||||||
|
// Create menu items in the DropList for each element in this.menuActions
|
||||||
|
foreach (var menuAction in menuActions)
|
||||||
|
{
|
||||||
|
if (menuAction is ActionSeparator)
|
||||||
|
{
|
||||||
|
popupMenu.CreateSeparator();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (menuAction is NamedActionGroup namedActionButtons)
|
||||||
|
{
|
||||||
|
var content = new FlowLayoutWidget()
|
||||||
|
{
|
||||||
|
HAnchor = HAnchor.Fit | HAnchor.Stretch
|
||||||
|
};
|
||||||
|
|
||||||
|
var textWidget = new TextWidget(menuAction.Title, pointSize: config.DefaultFontSize, textColor: config.TextColor)
|
||||||
|
{
|
||||||
|
// Padding = MenuPadding,
|
||||||
|
VAnchor = VAnchor.Center
|
||||||
|
};
|
||||||
|
content.AddChild(textWidget);
|
||||||
|
|
||||||
|
content.AddChild(new HorizontalSpacer());
|
||||||
|
|
||||||
|
foreach (var actionButton in namedActionButtons.Group)
|
||||||
|
{
|
||||||
|
var button = new TextButton(actionButton.Title, config)
|
||||||
|
{
|
||||||
|
Border = new BorderDouble(1, 0, 0, 0),
|
||||||
|
BorderColor = config.MinimalShade,
|
||||||
|
HoverColor = config.AccentMimimalOverlay,
|
||||||
|
Enabled = actionButton.IsEnabled()
|
||||||
|
};
|
||||||
|
|
||||||
|
content.AddChild(button);
|
||||||
|
|
||||||
|
if (actionButton.IsEnabled())
|
||||||
|
{
|
||||||
|
button.Click += (s, e) =>
|
||||||
|
{
|
||||||
|
actionButton.Action();
|
||||||
|
popupMenu.Unfocus();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuItem = new PopupMenu.MenuItem(content, config)
|
||||||
|
{
|
||||||
|
HAnchor = HAnchor.Fit | HAnchor.Stretch,
|
||||||
|
VAnchor = VAnchor.Fit,
|
||||||
|
HoverColor = Color.Transparent,
|
||||||
|
};
|
||||||
|
popupMenu.AddChild(menuItem);
|
||||||
|
menuItem.Padding = new BorderDouble(menuItem.Padding.Left,
|
||||||
|
menuItem.Padding.Bottom,
|
||||||
|
0,
|
||||||
|
menuItem.Padding.Top);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PopupMenu.MenuItem menuItem;
|
||||||
|
|
||||||
|
if (menuAction is NamedBoolAction boolAction)
|
||||||
|
{
|
||||||
|
menuItem = popupMenu.CreateBoolMenuItem(menuAction.Title, boolAction.GetIsActive, boolAction.SetIsActive);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
menuItem = popupMenu.CreateMenuItem(menuAction.Title, menuAction.Icon, menuAction.Shortcut);
|
||||||
|
}
|
||||||
|
|
||||||
|
menuItem.Name = $"{menuAction.Title} Menu Item";
|
||||||
|
|
||||||
|
menuItem.Enabled = menuAction is NamedActionGroup
|
||||||
|
|| (menuAction.Action != null && menuAction.IsEnabled?.Invoke() != false);
|
||||||
|
|
||||||
|
menuItem.ClearRemovedFlag();
|
||||||
|
|
||||||
|
if (menuItem.Enabled)
|
||||||
|
{
|
||||||
|
menuItem.Click += (s, e) =>
|
||||||
|
{
|
||||||
|
menuAction.Action();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return popupMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ApplyPrimaryActionStyle(this ThemeConfig config, GuiWidget guiWidget)
|
||||||
|
{
|
||||||
|
guiWidget.BackgroundColor = new Color(config.AccentMimimalOverlay, 50);
|
||||||
|
|
||||||
|
Color hoverColor = config.AccentMimimalOverlay;
|
||||||
|
|
||||||
|
switch (guiWidget)
|
||||||
|
{
|
||||||
|
case PopupMenuButton menuButton:
|
||||||
|
menuButton.HoverColor = hoverColor;
|
||||||
|
break;
|
||||||
|
case SimpleFlowButton flowButton:
|
||||||
|
flowButton.HoverColor = hoverColor;
|
||||||
|
break;
|
||||||
|
case SimpleButton button:
|
||||||
|
button.HoverColor = hoverColor;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemovePrimaryActionStyle(this ThemeConfig config, GuiWidget guiWidget)
|
||||||
|
{
|
||||||
|
guiWidget.BackgroundColor = Color.Transparent;
|
||||||
|
|
||||||
|
// Buttons in toolbars should revert to ToolbarButtonHover when reset
|
||||||
|
bool parentIsToolbar = guiWidget.Parent?.Parent is Toolbar;
|
||||||
|
|
||||||
|
switch (guiWidget)
|
||||||
|
{
|
||||||
|
case SimpleFlowButton flowButton:
|
||||||
|
flowButton.HoverColor = parentIsToolbar ? config.ToolbarButtonHover : Color.Transparent;
|
||||||
|
break;
|
||||||
|
case SimpleButton button:
|
||||||
|
button.HoverColor = parentIsToolbar ? config.ToolbarButtonHover : Color.Transparent;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SolidSlider ApplySliderStyle(this ThemeConfig config, SolidSlider solidSlider)
|
||||||
|
{
|
||||||
|
solidSlider.View.TrackColor = config.SlightShade;
|
||||||
|
solidSlider.View.TrackRadius = 4;
|
||||||
|
|
||||||
|
return solidSlider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DoubleSolidSlider ApplySliderStyle(this ThemeConfig config, DoubleSolidSlider solidSlider)
|
||||||
|
{
|
||||||
|
solidSlider.View.TrackColor = config.SlightShade;
|
||||||
|
solidSlider.View.TrackRadius = 4;
|
||||||
|
|
||||||
|
return solidSlider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SectionWidget ApplyBoxStyle(this ThemeConfig config, SectionWidget sectionWidget)
|
||||||
|
{
|
||||||
|
return config.ApplyBoxStyle(
|
||||||
|
sectionWidget,
|
||||||
|
config.SectionBackgroundColor,
|
||||||
|
margin: new BorderDouble(config.DefaultContainerPadding, 0, config.DefaultContainerPadding, config.DefaultContainerPadding));
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplySquareBoxStyle
|
||||||
|
public static SectionWidget ApplyBoxStyle(this ThemeConfig config, SectionWidget sectionWidget, BorderDouble margin)
|
||||||
|
{
|
||||||
|
sectionWidget.BackgroundColor = config.SectionBackgroundColor;
|
||||||
|
sectionWidget.Margin = 0;
|
||||||
|
sectionWidget.Border = new BorderDouble(bottom: 1);
|
||||||
|
sectionWidget.BorderColor = config.RowBorder;
|
||||||
|
|
||||||
|
return sectionWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SectionWidget ApplyBoxStyle(this ThemeConfig config, SectionWidget sectionWidget, Color backgroundColor, BorderDouble margin)
|
||||||
|
{
|
||||||
|
// Enforce panel padding
|
||||||
|
// sectionWidget.ContentPanel.Padding = new BorderDouble(10, 0, 10, 2);
|
||||||
|
// sectionWidget.ContentPanel.Padding = 0;
|
||||||
|
|
||||||
|
sectionWidget.BorderColor = Color.Transparent;
|
||||||
|
sectionWidget.BorderRadius = 5;
|
||||||
|
sectionWidget.Margin = margin;
|
||||||
|
sectionWidget.BackgroundColor = backgroundColor;
|
||||||
|
|
||||||
|
return sectionWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GuiWidget CreateSmallResetButton(this ThemeConfig config)
|
||||||
|
{
|
||||||
|
return new HoverImageWidget(config.RestoreNormal, config.RestoreHover)
|
||||||
|
{
|
||||||
|
VAnchor = VAnchor.Center,
|
||||||
|
Margin = new BorderDouble(0, 0, 5, 0)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RebuildTheme(this ThemeConfig config)
|
||||||
|
{
|
||||||
|
config.GeneratingThumbnailIcon = StaticData.Instance.LoadIcon("building_thumbnail_40x40.png", 40, 40).SetToColor(config.TextColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
public class WizardPage : DialogPage
|
public class WizardPage : DialogPage
|
||||||
{
|
{
|
||||||
public TextButton NextButton { get; }
|
public ThemedTextButton NextButton { get; }
|
||||||
protected PrinterConfig printer;
|
protected PrinterConfig printer;
|
||||||
|
|
||||||
public Action<WizardPage> PageLoad { get; set; }
|
public Action<WizardPage> PageLoad { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -1,184 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (c) 2018, Lars Brubaker, John Lewin
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
The views and conclusions contained in the software and documentation are those
|
|
||||||
of the authors and should not be interpreted as representing official policies,
|
|
||||||
either expressed or implied, of the FreeBSD Project.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using MatterHackers.Agg;
|
|
||||||
using MatterHackers.Agg.UI;
|
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
|
||||||
{
|
|
||||||
public class MHNumberEdit : GuiWidget
|
|
||||||
{
|
|
||||||
private ThemeConfig theme;
|
|
||||||
|
|
||||||
public NumberEdit ActuallNumberEdit { get; }
|
|
||||||
|
|
||||||
public MHNumberEdit(double startingValue, ThemeConfig theme, char singleCharLabel = char.MaxValue, string unitsLabel = "", double pixelWidth = 0, double pixelHeight = 0, bool allowNegatives = false, bool allowDecimals = false, double minValue = int.MinValue, double maxValue = int.MaxValue, double increment = 1, int tabIndex = 0)
|
|
||||||
{
|
|
||||||
using (this.LayoutLock())
|
|
||||||
{
|
|
||||||
this.Padding = 3;
|
|
||||||
this.HAnchor = HAnchor.Fit;
|
|
||||||
this.VAnchor = VAnchor.Fit;
|
|
||||||
this.Border = 1;
|
|
||||||
this.theme = theme;
|
|
||||||
|
|
||||||
this.ActuallNumberEdit = new NumberEdit(startingValue, 0, 0, theme.DefaultFontSize, pixelWidth, pixelHeight, allowNegatives, allowDecimals, minValue, maxValue, increment, tabIndex)
|
|
||||||
{
|
|
||||||
VAnchor = VAnchor.Bottom,
|
|
||||||
};
|
|
||||||
|
|
||||||
TextWidget labelWidget = null;
|
|
||||||
if (singleCharLabel != char.MaxValue)
|
|
||||||
{
|
|
||||||
labelWidget = new TextWidget(singleCharLabel.ToString(), pointSize: theme.DefaultFontSize - 2, textColor: theme.PrimaryAccentColor)
|
|
||||||
{
|
|
||||||
Margin = new BorderDouble(left: 2),
|
|
||||||
HAnchor = HAnchor.Left,
|
|
||||||
VAnchor = VAnchor.Center,
|
|
||||||
Selectable = false
|
|
||||||
};
|
|
||||||
|
|
||||||
this.AddChild(labelWidget);
|
|
||||||
|
|
||||||
var labelWidth = labelWidget.Width + labelWidget.Margin.Left;
|
|
||||||
ActuallNumberEdit.Margin = ActuallNumberEdit.Margin.Clone(left: labelWidth + 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
var internalWidget = this.ActuallNumberEdit.InternalTextEditWidget;
|
|
||||||
internalWidget.TextColor = theme.EditFieldColors.Inactive.TextColor;
|
|
||||||
internalWidget.FocusChanged += (s, e) =>
|
|
||||||
{
|
|
||||||
internalWidget.TextColor = (internalWidget.Focused) ? theme.EditFieldColors.Focused.TextColor : theme.EditFieldColors.Inactive.TextColor;
|
|
||||||
|
|
||||||
if (labelWidget != null)
|
|
||||||
{
|
|
||||||
var labelDetailsColor = theme.PrimaryAccentColor.WithContrast(theme.EditFieldColors.Focused.BackgroundColor, 3).ToColor();
|
|
||||||
labelWidget.TextColor = (internalWidget.Focused) ? labelDetailsColor : theme.PrimaryAccentColor;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.ActuallNumberEdit.InternalNumberEdit.MaxDecimalsPlaces = 5;
|
|
||||||
this.AddChild(this.ActuallNumberEdit);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.PerformLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Color BackgroundColor
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (base.BackgroundColor != Color.Transparent)
|
|
||||||
{
|
|
||||||
return base.BackgroundColor;
|
|
||||||
}
|
|
||||||
else if (this.ContainsFocus)
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Focused.BackgroundColor;
|
|
||||||
}
|
|
||||||
else if (this.mouseInBounds)
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Hovered.BackgroundColor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Inactive.BackgroundColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set => base.BackgroundColor = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Color BorderColor
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (base.BorderColor != Color.Transparent)
|
|
||||||
{
|
|
||||||
return base.BorderColor;
|
|
||||||
}
|
|
||||||
else if (this.ContainsFocus)
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Focused.BorderColor;
|
|
||||||
}
|
|
||||||
else if (this.mouseInBounds && this.ContainsFirstUnderMouseRecursive())
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Hovered.BorderColor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Inactive.BorderColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set => base.BorderColor = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool mouseInBounds = false;
|
|
||||||
|
|
||||||
public override void OnMouseEnterBounds(MouseEventArgs mouseEvent)
|
|
||||||
{
|
|
||||||
mouseInBounds = true;
|
|
||||||
base.OnMouseEnterBounds(mouseEvent);
|
|
||||||
|
|
||||||
this.Invalidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnMouseLeaveBounds(MouseEventArgs mouseEvent)
|
|
||||||
{
|
|
||||||
mouseInBounds = false;
|
|
||||||
base.OnMouseLeaveBounds(mouseEvent);
|
|
||||||
|
|
||||||
this.Invalidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override int TabIndex
|
|
||||||
{
|
|
||||||
// TODO: This looks invalid - setter and getter should use same context
|
|
||||||
get => base.TabIndex;
|
|
||||||
set => this.ActuallNumberEdit.TabIndex = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double Value
|
|
||||||
{
|
|
||||||
get => this.ActuallNumberEdit.Value;
|
|
||||||
set => this.ActuallNumberEdit.Value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Text
|
|
||||||
{
|
|
||||||
get => this.ActuallNumberEdit.Text;
|
|
||||||
set => this.ActuallNumberEdit.Text = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool SelectAllOnFocus
|
|
||||||
{
|
|
||||||
get => this.ActuallNumberEdit.InternalNumberEdit.SelectAllOnFocus;
|
|
||||||
set => this.ActuallNumberEdit.InternalNumberEdit.SelectAllOnFocus = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (c) 2017, Lars Brubaker, John Lewin
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
The views and conclusions contained in the software and documentation are those
|
|
||||||
of the authors and should not be interpreted as representing official policies,
|
|
||||||
either expressed or implied, of the FreeBSD Project.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using MatterHackers.Agg;
|
|
||||||
using MatterHackers.Agg.UI;
|
|
||||||
using MatterHackers.VectorMath;
|
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
|
||||||
{
|
|
||||||
public class MHPasswordTextEditWidget : MHTextEditWidget
|
|
||||||
{
|
|
||||||
private TextEditWidget passwordCoverText;
|
|
||||||
|
|
||||||
private class TextEditOverlay : TextEditWidget
|
|
||||||
{
|
|
||||||
public TextEditOverlay(string text, int pointSize, double pixelWidth, double pixelHeight, bool multiLine)
|
|
||||||
: base(text, 0, 0, pointSize, pixelWidth, pixelHeight, multiLine)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Color BackgroundColor
|
|
||||||
{
|
|
||||||
get => this.Parent.BackgroundColor;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (this.Parent != null)
|
|
||||||
{
|
|
||||||
this.Parent.BackgroundColor = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public MHPasswordTextEditWidget(string text, ThemeConfig theme, double pixelWidth = 0, double pixelHeight = 0, bool multiLine = false, int tabIndex = 0, string messageWhenEmptyAndNotSelected = "")
|
|
||||||
: base(text, theme, pixelWidth, pixelHeight, multiLine, tabIndex, messageWhenEmptyAndNotSelected)
|
|
||||||
{
|
|
||||||
// remove this so that we can have other content first (the hidden letters)
|
|
||||||
this.RemoveChild(noContentFieldDescription);
|
|
||||||
|
|
||||||
passwordCoverText = new TextEditOverlay(text, theme.DefaultFontSize, pixelWidth, pixelHeight, multiLine)
|
|
||||||
{
|
|
||||||
Selectable = false,
|
|
||||||
HAnchor = HAnchor.Stretch,
|
|
||||||
VAnchor = VAnchor.Bottom,
|
|
||||||
TextColor = theme.EditFieldColors.Inactive.TextColor
|
|
||||||
};
|
|
||||||
passwordCoverText.MinimumSize = new Vector2(Math.Max(passwordCoverText.MinimumSize.X, pixelWidth), Math.Max(passwordCoverText.MinimumSize.Y, pixelHeight));
|
|
||||||
|
|
||||||
var internalWidget = this.ActualTextEditWidget.InternalTextEditWidget;
|
|
||||||
internalWidget.FocusChanged += (s, e) =>
|
|
||||||
{
|
|
||||||
passwordCoverText.TextColor = (internalWidget.Focused) ? theme.EditFieldColors.Focused.TextColor : theme.EditFieldColors.Inactive.TextColor;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.AddChild(passwordCoverText);
|
|
||||||
|
|
||||||
this.ActualTextEditWidget.TextChanged += (sender, e) =>
|
|
||||||
{
|
|
||||||
passwordCoverText.Text = new string('●', this.ActualTextEditWidget.Text.Length);
|
|
||||||
};
|
|
||||||
|
|
||||||
// put in back in after the hidden text
|
|
||||||
noContentFieldDescription.ClearRemovedFlag();
|
|
||||||
this.AddChild(noContentFieldDescription);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Hidden
|
|
||||||
{
|
|
||||||
get => !passwordCoverText.Visible;
|
|
||||||
set => passwordCoverText.Visible = !value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,210 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (c) 2018, Lars Brubaker, John Lewin
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
The views and conclusions contained in the software and documentation are those
|
|
||||||
of the authors and should not be interpreted as representing official policies,
|
|
||||||
either expressed or implied, of the FreeBSD Project.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using MatterHackers.Agg;
|
|
||||||
using MatterHackers.Agg.Font;
|
|
||||||
using MatterHackers.Agg.UI;
|
|
||||||
using MatterHackers.VectorMath;
|
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
|
||||||
{
|
|
||||||
public class MHTextEditWidget : GuiWidget
|
|
||||||
{
|
|
||||||
protected TextWidget noContentFieldDescription = null;
|
|
||||||
private readonly ThemeConfig theme;
|
|
||||||
private bool mouseInBounds = false;
|
|
||||||
|
|
||||||
public MHTextEditWidget(string text, ThemeConfig theme, double pixelWidth = 0, double pixelHeight = 0, bool multiLine = false, int tabIndex = 0, string messageWhenEmptyAndNotSelected = "", TypeFace typeFace = null)
|
|
||||||
{
|
|
||||||
this.Padding = new BorderDouble(3);
|
|
||||||
this.HAnchor = HAnchor.Fit;
|
|
||||||
this.VAnchor = VAnchor.Fit;
|
|
||||||
this.Border = 1;
|
|
||||||
this.theme = theme;
|
|
||||||
|
|
||||||
this.ActualTextEditWidget = new TextEditWidget(text, 0, 0, theme.DefaultFontSize, pixelWidth, pixelHeight, multiLine, tabIndex: tabIndex, typeFace: typeFace)
|
|
||||||
{
|
|
||||||
VAnchor = VAnchor.Bottom,
|
|
||||||
BackgroundColor = Color.Transparent
|
|
||||||
};
|
|
||||||
|
|
||||||
TextWidget labelWidget = null;
|
|
||||||
|
|
||||||
var internalWidget = this.ActualTextEditWidget.InternalTextEditWidget;
|
|
||||||
internalWidget.TextColor = theme.EditFieldColors.Inactive.TextColor;
|
|
||||||
internalWidget.FocusChanged += (s, e) =>
|
|
||||||
{
|
|
||||||
internalWidget.TextColor = internalWidget.Focused ? theme.EditFieldColors.Focused.TextColor : theme.EditFieldColors.Inactive.TextColor;
|
|
||||||
noContentFieldDescription.TextColor = internalWidget.Focused ? theme.EditFieldColors.Focused.LightTextColor : theme.EditFieldColors.Inactive.LightTextColor;
|
|
||||||
|
|
||||||
if (labelWidget != null)
|
|
||||||
{
|
|
||||||
var labelDetailsColor = theme.PrimaryAccentColor.WithContrast(theme.EditFieldColors.Focused.BackgroundColor, 3).ToColor();
|
|
||||||
labelWidget.TextColor = (internalWidget.Focused) ? labelDetailsColor : theme.PrimaryAccentColor;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.ActualTextEditWidget.InternalTextEditWidget.BackgroundColor = Color.Transparent;
|
|
||||||
|
|
||||||
this.ActualTextEditWidget.MinimumSize = new Vector2(Math.Max(ActualTextEditWidget.MinimumSize.X, pixelWidth), Math.Max(ActualTextEditWidget.MinimumSize.Y, pixelHeight));
|
|
||||||
this.AddChild(this.ActualTextEditWidget);
|
|
||||||
|
|
||||||
this.AddChild(noContentFieldDescription = new TextWidget(messageWhenEmptyAndNotSelected, pointSize: theme.DefaultFontSize, textColor: theme.EditFieldColors.Focused.LightTextColor)
|
|
||||||
{
|
|
||||||
VAnchor = VAnchor.Top,
|
|
||||||
AutoExpandBoundsToText = true
|
|
||||||
});
|
|
||||||
|
|
||||||
SetNoContentFieldDescriptionVisibility();
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextEditWidget ActualTextEditWidget { get; }
|
|
||||||
|
|
||||||
public override Color BackgroundColor
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (base.BackgroundColor != Color.Transparent)
|
|
||||||
{
|
|
||||||
return base.BackgroundColor;
|
|
||||||
}
|
|
||||||
else if (this.ContainsFocus)
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Focused.BackgroundColor;
|
|
||||||
}
|
|
||||||
else if (this.mouseInBounds)
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Hovered.BackgroundColor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Inactive.BackgroundColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set => base.BackgroundColor = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Color BorderColor
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (base.BorderColor != Color.Transparent)
|
|
||||||
{
|
|
||||||
return base.BackgroundColor;
|
|
||||||
}
|
|
||||||
else if (this.ContainsFocus)
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Focused.BorderColor;
|
|
||||||
}
|
|
||||||
else if (this.mouseInBounds && this.ContainsFirstUnderMouseRecursive())
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Hovered.BorderColor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return theme.EditFieldColors.Inactive.BorderColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set => base.BorderColor = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnMouseEnterBounds(MouseEventArgs mouseEvent)
|
|
||||||
{
|
|
||||||
mouseInBounds = true;
|
|
||||||
base.OnMouseEnterBounds(mouseEvent);
|
|
||||||
|
|
||||||
this.Invalidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnMouseLeaveBounds(MouseEventArgs mouseEvent)
|
|
||||||
{
|
|
||||||
mouseInBounds = false;
|
|
||||||
base.OnMouseLeaveBounds(mouseEvent);
|
|
||||||
|
|
||||||
this.Invalidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override HAnchor HAnchor
|
|
||||||
{
|
|
||||||
get => base.HAnchor;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
base.HAnchor = value;
|
|
||||||
if (ActualTextEditWidget != null)
|
|
||||||
{
|
|
||||||
ActualTextEditWidget.HAnchor = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetNoContentFieldDescriptionVisibility()
|
|
||||||
{
|
|
||||||
if (noContentFieldDescription != null)
|
|
||||||
{
|
|
||||||
noContentFieldDescription.Visible = string.IsNullOrEmpty(Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDraw(Graphics2D graphics2D)
|
|
||||||
{
|
|
||||||
SetNoContentFieldDescriptionVisibility();
|
|
||||||
base.OnDraw(graphics2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Text
|
|
||||||
{
|
|
||||||
get => ActualTextEditWidget.Text;
|
|
||||||
set => ActualTextEditWidget.Text = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool SelectAllOnFocus
|
|
||||||
{
|
|
||||||
get => ActualTextEditWidget.InternalTextEditWidget.SelectAllOnFocus;
|
|
||||||
set => ActualTextEditWidget.InternalTextEditWidget.SelectAllOnFocus = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ReadOnly
|
|
||||||
{
|
|
||||||
get => ActualTextEditWidget.ReadOnly;
|
|
||||||
set => ActualTextEditWidget.ReadOnly = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DrawFromHintedCache()
|
|
||||||
{
|
|
||||||
ActualTextEditWidget.Printer.DrawFromHintedCache = true;
|
|
||||||
ActualTextEditWidget.DoubleBuffer = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Focus()
|
|
||||||
{
|
|
||||||
ActualTextEditWidget.Focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -52,7 +52,7 @@ namespace MatterHackers.MatterControl
|
||||||
private XyCalibrationWizard calibrationWizard;
|
private XyCalibrationWizard calibrationWizard;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public TextButton NextButton { get; }
|
public ThemedTextButton NextButton { get; }
|
||||||
|
|
||||||
private Color tabBaseColor;
|
private Color tabBaseColor;
|
||||||
private TextWidget xLabel;
|
private TextWidget xLabel;
|
||||||
|
|
@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
private PrinterConnection.Axis _collectionMode = PrinterConnection.Axis.X;
|
private PrinterConnection.Axis _collectionMode = PrinterConnection.Axis.X;
|
||||||
|
|
||||||
public CalibrationTabWidget(XyCalibrationWizard calibrationWizard, TextButton nextButton, ThemeConfig theme)
|
public CalibrationTabWidget(XyCalibrationWizard calibrationWizard, ThemedTextButton nextButton, ThemeConfig theme)
|
||||||
{
|
{
|
||||||
this.calibrationWizard = calibrationWizard;
|
this.calibrationWizard = calibrationWizard;
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ namespace MatterHackers.MatterControl.CustomWidgets
|
||||||
public class InlineEditControl : GuiWidget
|
public class InlineEditControl : GuiWidget
|
||||||
{
|
{
|
||||||
private TextWidget numberDisplay;
|
private TextWidget numberDisplay;
|
||||||
private MHNumberEdit numberEdit;
|
private ThemedNumberEdit numberEdit;
|
||||||
private Func<double, string> _getDisplayString = (value) => "{0:0.0}".FormatWith(value);
|
private Func<double, string> _getDisplayString = (value) => "{0:0.0}".FormatWith(value);
|
||||||
private RunningInterval runningInterval;
|
private RunningInterval runningInterval;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
@ -78,7 +78,7 @@ namespace MatterHackers.MatterControl.CustomWidgets
|
||||||
|
|
||||||
AddChild(numberDisplay);
|
AddChild(numberDisplay);
|
||||||
|
|
||||||
numberEdit = new MHNumberEdit(0, theme, pixelWidth: numberDisplay.Width, allowNegatives: true, allowDecimals: true)
|
numberEdit = new ThemedNumberEdit(0, theme, pixelWidth: numberDisplay.Width, allowNegatives: true, allowDecimals: true)
|
||||||
{
|
{
|
||||||
Visible = false,
|
Visible = false,
|
||||||
VAnchor = VAnchor.Bottom,
|
VAnchor = VAnchor.Bottom,
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
using System;
|
using System;
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.ImageProcessing;
|
using MatterHackers.ImageProcessing;
|
||||||
using MatterHackers.Localizations;
|
using MatterHackers.Localizations;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.Localizations;
|
using MatterHackers.Localizations;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.CustomWidgets
|
namespace MatterHackers.MatterControl.CustomWidgets
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.Localizations;
|
using MatterHackers.Localizations;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.CustomWidgets
|
namespace MatterHackers.MatterControl.CustomWidgets
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ namespace MatterHackers.MatterControl.Library
|
||||||
double val;
|
double val;
|
||||||
double.TryParse(latest, out val);
|
double.TryParse(latest, out val);
|
||||||
|
|
||||||
var editor = new MHNumberEdit(val, theme, pixelWidth: 50 * GuiWidget.DeviceScale, allowDecimals: true, increment: .05)
|
var editor = new ThemedNumberEdit(val, theme, pixelWidth: 50 * GuiWidget.DeviceScale, allowDecimals: true, increment: .05)
|
||||||
{
|
{
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
VAnchor = VAnchor.Center
|
VAnchor = VAnchor.Center
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ using MatterHackers.Localizations;
|
||||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||||
using MatterHackers.RenderOpenGl;
|
using MatterHackers.RenderOpenGl;
|
||||||
using MatterHackers.VectorMath;
|
using MatterHackers.VectorMath;
|
||||||
using MatterHackers.RenderOpenGl;
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.DesignTools.Operations
|
namespace MatterHackers.MatterControl.DesignTools.Operations
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ using MatterHackers.Localizations;
|
||||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||||
using MatterHackers.PolygonMesh;
|
using MatterHackers.PolygonMesh;
|
||||||
using MatterHackers.VectorMath;
|
using MatterHackers.VectorMath;
|
||||||
using PolygonMesh.Solids;
|
using MatterHackers.PolygonMesh.Solids;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.DesignTools
|
namespace MatterHackers.MatterControl.DesignTools
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1248,7 +1248,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
||||||
Margin = new BorderDouble(5, 0)
|
Margin = new BorderDouble(5, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
var searchField = new MHTextEditWidget("", theme, messageWhenEmptyAndNotSelected: "Search Google for images")
|
var searchField = new ThemedTextEditWidget("", theme, messageWhenEmptyAndNotSelected: "Search Google for images")
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
VAnchor = VAnchor.Center
|
VAnchor = VAnchor.Center
|
||||||
|
|
|
||||||
|
|
@ -29,11 +29,14 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MatterHackers.Agg;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
using MatterHackers.Agg.UI;
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.DataConverters3D;
|
using MatterHackers.DataConverters3D;
|
||||||
|
|
@ -375,6 +378,59 @@ namespace MatterHackers.MatterControl.DesignTools
|
||||||
return stringWithConstants;
|
return stringWithConstants;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetDisplayName(PropertyInfo prop)
|
||||||
|
{
|
||||||
|
var nameAttribute = prop.GetCustomAttributes(true).OfType<DisplayNameAttribute>().FirstOrDefault();
|
||||||
|
return nameAttribute?.DisplayName ?? prop.Name.SplitCamelCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string SearchSiblingProperties(IObject3D owner, string inExpression)
|
||||||
|
{
|
||||||
|
var parent = owner.Parent;
|
||||||
|
if (parent != null)
|
||||||
|
{
|
||||||
|
var matches = ConstantFinder.Matches(inExpression);
|
||||||
|
|
||||||
|
for (int i = 0; i < matches.Count; i++)
|
||||||
|
{
|
||||||
|
var constant = matches[i].Value;
|
||||||
|
// split inExpression on .
|
||||||
|
var splitExpression = constant.Split('.');
|
||||||
|
if (splitExpression.Length == 2)
|
||||||
|
{
|
||||||
|
foreach (var child in parent.Children)
|
||||||
|
{
|
||||||
|
// skip if owner
|
||||||
|
if (child != owner)
|
||||||
|
{
|
||||||
|
var itemName = splitExpression[0];
|
||||||
|
var propertyName = splitExpression[1];
|
||||||
|
// if child has the same name as itemName
|
||||||
|
if (child.Name == itemName)
|
||||||
|
{
|
||||||
|
// enumerate public properties on child
|
||||||
|
foreach (var property in child.GetType().GetProperties())
|
||||||
|
{
|
||||||
|
var displayName = GetDisplayName(property);
|
||||||
|
// if property name matches propertyName
|
||||||
|
if (displayName == propertyName)
|
||||||
|
{
|
||||||
|
// return the value
|
||||||
|
var expression = child.GetType().GetProperty(property.Name).GetValue(child, null).ToString();
|
||||||
|
var value = SheetObject3D.EvaluateExpression<double>(child, expression).ToString();
|
||||||
|
inExpression = inExpression.Replace("[" + constant + "]", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return inExpression;
|
||||||
|
}
|
||||||
|
|
||||||
public static T EvaluateExpression<T>(IObject3D owner, string inExpression)
|
public static T EvaluateExpression<T>(IObject3D owner, string inExpression)
|
||||||
{
|
{
|
||||||
var inputExpression = inExpression;
|
var inputExpression = inExpression;
|
||||||
|
|
@ -384,6 +440,8 @@ namespace MatterHackers.MatterControl.DesignTools
|
||||||
inputExpression = printer.Settings.ReplaceSettingsNamesWithValues(inputExpression, false);
|
inputExpression = printer.Settings.ReplaceSettingsNamesWithValues(inputExpression, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inputExpression = SearchSiblingProperties(owner, inputExpression);
|
||||||
|
|
||||||
inputExpression = ReplaceConstantsWithValues(owner, inputExpression);
|
inputExpression = ReplaceConstantsWithValues(owner, inputExpression);
|
||||||
|
|
||||||
// check if the expression is not an equation (does not start with "=")
|
// check if the expression is not an equation (does not start with "=")
|
||||||
|
|
|
||||||
|
|
@ -41,45 +41,45 @@ namespace MatterHackers.MatterControl.EeProm
|
||||||
{
|
{
|
||||||
private EePromMarlinSettings currentEePromSettings;
|
private EePromMarlinSettings currentEePromSettings;
|
||||||
|
|
||||||
private MHNumberEdit stepsPerMmX;
|
private ThemedNumberEdit stepsPerMmX;
|
||||||
private MHNumberEdit stepsPerMmY;
|
private ThemedNumberEdit stepsPerMmY;
|
||||||
private MHNumberEdit stepsPerMmZ;
|
private ThemedNumberEdit stepsPerMmZ;
|
||||||
private MHNumberEdit stepsPerMmE;
|
private ThemedNumberEdit stepsPerMmE;
|
||||||
|
|
||||||
private MHNumberEdit maxFeedrateMmPerSX;
|
private ThemedNumberEdit maxFeedrateMmPerSX;
|
||||||
private MHNumberEdit maxFeedrateMmPerSY;
|
private ThemedNumberEdit maxFeedrateMmPerSY;
|
||||||
private MHNumberEdit maxFeedrateMmPerSZ;
|
private ThemedNumberEdit maxFeedrateMmPerSZ;
|
||||||
private MHNumberEdit maxFeedrateMmPerSE;
|
private ThemedNumberEdit maxFeedrateMmPerSE;
|
||||||
|
|
||||||
private MHNumberEdit maxAccelerationMmPerSSqrdX;
|
private ThemedNumberEdit maxAccelerationMmPerSSqrdX;
|
||||||
private MHNumberEdit maxAccelerationMmPerSSqrdY;
|
private ThemedNumberEdit maxAccelerationMmPerSSqrdY;
|
||||||
private MHNumberEdit maxAccelerationMmPerSSqrdZ;
|
private ThemedNumberEdit maxAccelerationMmPerSSqrdZ;
|
||||||
private MHNumberEdit maxAccelerationMmPerSSqrdE;
|
private ThemedNumberEdit maxAccelerationMmPerSSqrdE;
|
||||||
|
|
||||||
private MHNumberEdit accelerationPrintingMoves;
|
private ThemedNumberEdit accelerationPrintingMoves;
|
||||||
private MHNumberEdit accelerationRetraction;
|
private ThemedNumberEdit accelerationRetraction;
|
||||||
private MHNumberEdit accelerationTravelMoves;
|
private ThemedNumberEdit accelerationTravelMoves;
|
||||||
|
|
||||||
private MHNumberEdit pidP;
|
private ThemedNumberEdit pidP;
|
||||||
private MHNumberEdit pidI;
|
private ThemedNumberEdit pidI;
|
||||||
private MHNumberEdit pidD;
|
private ThemedNumberEdit pidD;
|
||||||
|
|
||||||
private MHNumberEdit bedPidP;
|
private ThemedNumberEdit bedPidP;
|
||||||
private MHNumberEdit bedPidI;
|
private ThemedNumberEdit bedPidI;
|
||||||
private MHNumberEdit bedPidD;
|
private ThemedNumberEdit bedPidD;
|
||||||
|
|
||||||
private MHNumberEdit homingOffsetX;
|
private ThemedNumberEdit homingOffsetX;
|
||||||
private MHNumberEdit homingOffsetY;
|
private ThemedNumberEdit homingOffsetY;
|
||||||
private MHNumberEdit homingOffsetZ;
|
private ThemedNumberEdit homingOffsetZ;
|
||||||
|
|
||||||
private MHNumberEdit minFeedrate;
|
private ThemedNumberEdit minFeedrate;
|
||||||
private MHNumberEdit minTravelFeedrate;
|
private ThemedNumberEdit minTravelFeedrate;
|
||||||
private MHNumberEdit minSegmentTime;
|
private ThemedNumberEdit minSegmentTime;
|
||||||
|
|
||||||
private MHNumberEdit maxXYJerk;
|
private ThemedNumberEdit maxXYJerk;
|
||||||
private MHNumberEdit maxZJerk;
|
private ThemedNumberEdit maxZJerk;
|
||||||
private MHNumberEdit maxEJerk;
|
private ThemedNumberEdit maxEJerk;
|
||||||
private MHNumberEdit maxDeviation;
|
private ThemedNumberEdit maxDeviation;
|
||||||
|
|
||||||
private EventHandler unregisterEvents;
|
private EventHandler unregisterEvents;
|
||||||
|
|
||||||
|
|
@ -254,9 +254,9 @@ namespace MatterHackers.MatterControl.EeProm
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private GuiWidget CreateMHNumEdit(ref MHNumberEdit numberEditToCreate)
|
private GuiWidget CreateMHNumEdit(ref ThemedNumberEdit numberEditToCreate)
|
||||||
{
|
{
|
||||||
numberEditToCreate = new MHNumberEdit(0, theme, pixelWidth: 80 * GuiWidget.DeviceScale, allowNegatives: true, allowDecimals: true)
|
numberEditToCreate = new ThemedNumberEdit(0, theme, pixelWidth: 80 * GuiWidget.DeviceScale, allowNegatives: true, allowDecimals: true)
|
||||||
{
|
{
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
VAnchor = VAnchor.Center,
|
VAnchor = VAnchor.Center,
|
||||||
|
|
@ -267,9 +267,9 @@ namespace MatterHackers.MatterControl.EeProm
|
||||||
return numberEditToCreate;
|
return numberEditToCreate;
|
||||||
}
|
}
|
||||||
|
|
||||||
private GuiWidget CreateField(string label, ref MHNumberEdit field1)
|
private GuiWidget CreateField(string label, ref ThemedNumberEdit field1)
|
||||||
{
|
{
|
||||||
MHNumberEdit none = null;
|
ThemedNumberEdit none = null;
|
||||||
|
|
||||||
return Create4FieldSet(label,
|
return Create4FieldSet(label,
|
||||||
"", ref field1,
|
"", ref field1,
|
||||||
|
|
@ -279,11 +279,11 @@ namespace MatterHackers.MatterControl.EeProm
|
||||||
}
|
}
|
||||||
|
|
||||||
private GuiWidget Create3FieldSet(string label,
|
private GuiWidget Create3FieldSet(string label,
|
||||||
string field1Label, ref MHNumberEdit field1,
|
string field1Label, ref ThemedNumberEdit field1,
|
||||||
string field2Label, ref MHNumberEdit field2,
|
string field2Label, ref ThemedNumberEdit field2,
|
||||||
string field3Label, ref MHNumberEdit field3)
|
string field3Label, ref ThemedNumberEdit field3)
|
||||||
{
|
{
|
||||||
MHNumberEdit none = null;
|
ThemedNumberEdit none = null;
|
||||||
|
|
||||||
return Create4FieldSet(label,
|
return Create4FieldSet(label,
|
||||||
field1Label, ref field1,
|
field1Label, ref field1,
|
||||||
|
|
@ -307,10 +307,10 @@ namespace MatterHackers.MatterControl.EeProm
|
||||||
}
|
}
|
||||||
|
|
||||||
private GuiWidget Create4FieldSet(string label,
|
private GuiWidget Create4FieldSet(string label,
|
||||||
string field1Label, ref MHNumberEdit field1,
|
string field1Label, ref ThemedNumberEdit field1,
|
||||||
string field2Label, ref MHNumberEdit field2,
|
string field2Label, ref ThemedNumberEdit field2,
|
||||||
string field3Label, ref MHNumberEdit field3,
|
string field3Label, ref ThemedNumberEdit field3,
|
||||||
string field4Label, ref MHNumberEdit field4)
|
string field4Label, ref ThemedNumberEdit field4)
|
||||||
{
|
{
|
||||||
var row = new FlowLayoutWidget
|
var row = new FlowLayoutWidget
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -301,7 +301,7 @@ namespace MatterHackers.MatterControl.EeProm
|
||||||
CreateSpacer(row);
|
CreateSpacer(row);
|
||||||
|
|
||||||
double.TryParse(newSetting.Value, out double currentValue);
|
double.TryParse(newSetting.Value, out double currentValue);
|
||||||
var valueEdit = new MHNumberEdit(currentValue, theme, pixelWidth: 80 * GuiWidget.DeviceScale, allowNegatives: true, allowDecimals: true)
|
var valueEdit = new ThemedNumberEdit(currentValue, theme, pixelWidth: 80 * GuiWidget.DeviceScale, allowNegatives: true, allowDecimals: true)
|
||||||
{
|
{
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
TabIndex = currentTabIndex++,
|
TabIndex = currentTabIndex++,
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
using System;
|
using System;
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
using MatterHackers.Agg.Transform;
|
using MatterHackers.Agg.Transform;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.Agg.VertexSource;
|
using MatterHackers.Agg.VertexSource;
|
||||||
using MatterHackers.VectorMath;
|
using MatterHackers.VectorMath;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -444,7 +444,7 @@ Support and tutorials:" + articles;
|
||||||
|
|
||||||
public class CollectPrintDetailsPage : DialogPage
|
public class CollectPrintDetailsPage : DialogPage
|
||||||
{
|
{
|
||||||
private readonly MHTextEditWidget textEditWidget;
|
private readonly ThemedTextEditWidget textEditWidget;
|
||||||
|
|
||||||
public override string Text { get => textEditWidget.Text; set => textEditWidget.Text = value; }
|
public override string Text { get => textEditWidget.Text; set => textEditWidget.Text = value; }
|
||||||
|
|
||||||
|
|
@ -507,7 +507,7 @@ Support and tutorials:" + articles;
|
||||||
// Adds text box and check box to the above container
|
// Adds text box and check box to the above container
|
||||||
var emptyText = "What went wrong?".Localize();
|
var emptyText = "What went wrong?".Localize();
|
||||||
var initialValue = printTask.Note ?? "";
|
var initialValue = printTask.Note ?? "";
|
||||||
textEditWidget = new MHTextEditWidget(initialValue, theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: emptyText)
|
textEditWidget = new ThemedTextEditWidget(initialValue, theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: emptyText)
|
||||||
{
|
{
|
||||||
Name = "InputBoxPage TextEditWidget",
|
Name = "InputBoxPage TextEditWidget",
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,8 @@ namespace MatterHackers.MatterControl
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using MatterHackers.Agg.Image;
|
using MatterHackers.Agg.Image;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
using MatterHackers.DataConverters3D;
|
using MatterHackers.Agg.UI;
|
||||||
|
using MatterHackers.DataConverters3D;
|
||||||
using MatterHackers.ImageProcessing;
|
using MatterHackers.ImageProcessing;
|
||||||
using MatterHackers.MatterControl.DataStorage;
|
using MatterHackers.MatterControl.DataStorage;
|
||||||
using MatterHackers.MatterControl.DesignTools.Operations;
|
using MatterHackers.MatterControl.DesignTools.Operations;
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
{
|
{
|
||||||
private readonly RadioButton createPrinterRadioButton = null;
|
private readonly RadioButton createPrinterRadioButton = null;
|
||||||
private readonly AddMaterialWidget materialPanel;
|
private readonly AddMaterialWidget materialPanel;
|
||||||
private readonly TextButton nextButton;
|
private readonly ThemedTextButton nextButton;
|
||||||
|
|
||||||
public AddMaterialDialog(Action<PrinterSettingsLayer> addedMaterial, Action defineNewClicked)
|
public AddMaterialDialog(Action<PrinterSettingsLayer> addedMaterial, Action defineNewClicked)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
public class AddPrinterWidget : SearchableTreePanel
|
public class AddPrinterWidget : SearchableTreePanel
|
||||||
{
|
{
|
||||||
private SectionWidget nameSection;
|
private SectionWidget nameSection;
|
||||||
private MHTextEditWidget printerNameInput;
|
private ThemedTextEditWidget printerNameInput;
|
||||||
private bool usingDefaultName = true;
|
private bool usingDefaultName = true;
|
||||||
private Action<bool> nextButtonEnabled;
|
private Action<bool> nextButtonEnabled;
|
||||||
private FlowLayoutWidget printerInfo;
|
private FlowLayoutWidget printerInfo;
|
||||||
|
|
@ -154,7 +154,7 @@ namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
|
|
||||||
horizontalSplitter.Panel2.AddChild(panel2Column);
|
horizontalSplitter.Panel2.AddChild(panel2Column);
|
||||||
|
|
||||||
printerNameInput = new MHTextEditWidget("", theme)
|
printerNameInput = new ThemedTextEditWidget("", theme)
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,9 @@ namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
};
|
};
|
||||||
contentRow.AddChild(pathRow);
|
contentRow.AddChild(pathRow);
|
||||||
|
|
||||||
TextButton importButton = null;
|
ThemedTextButton importButton = null;
|
||||||
|
|
||||||
var textEditWidget = new MHTextEditWidget("", theme)
|
var textEditWidget = new ThemedTextEditWidget("", theme)
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
VAnchor = VAnchor.Center,
|
VAnchor = VAnchor.Center,
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.MatterControl.CustomWidgets;
|
using MatterHackers.MatterControl.CustomWidgets;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.Library.Widgets
|
namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
|
|
|
||||||
|
|
@ -419,7 +419,7 @@ namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
|
|
||||||
public class TextEditWithInlineCancel : GuiWidget
|
public class TextEditWithInlineCancel : GuiWidget
|
||||||
{
|
{
|
||||||
public MHTextEditWidget TextEditWidget { get; }
|
public ThemedTextEditWidget TextEditWidget { get; }
|
||||||
|
|
||||||
public GuiWidget ResetButton { get; }
|
public GuiWidget ResetButton { get; }
|
||||||
|
|
||||||
|
|
@ -433,7 +433,7 @@ namespace MatterHackers.MatterControl.Library.Widgets
|
||||||
this.VAnchor = VAnchor.Center | VAnchor.Fit;
|
this.VAnchor = VAnchor.Center | VAnchor.Fit;
|
||||||
this.HAnchor = HAnchor.Stretch;
|
this.HAnchor = HAnchor.Stretch;
|
||||||
|
|
||||||
TextEditWidget = new MHTextEditWidget("", theme, messageWhenEmptyAndNotSelected: emptyText)
|
TextEditWidget = new ThemedTextEditWidget("", theme, messageWhenEmptyAndNotSelected: emptyText)
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
VAnchor = VAnchor.Center
|
VAnchor = VAnchor.Center
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<ReleaseVersion>2.20.12</ReleaseVersion>
|
<ReleaseVersion>2.20.12</ReleaseVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
@ -84,6 +84,7 @@
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\PolygonMesh\PolygonMesh.csproj" />
|
<ProjectReference Include="..\Submodules\agg-sharp\PolygonMesh\PolygonMesh.csproj" />
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\Localizations\Localizations.csproj" />
|
<ProjectReference Include="..\Submodules\agg-sharp\Localizations\Localizations.csproj" />
|
||||||
<ProjectReference Include="..\Submodules\agg-sharp\agg\Agg.csproj" />
|
<ProjectReference Include="..\Submodules\agg-sharp\agg\Agg.csproj" />
|
||||||
|
<ProjectReference Include="..\Submodules\MatterSlice\MatterSlice.csproj" />
|
||||||
<ProjectReference Include="..\Submodules\MatterSlice\MatterSliceLib\MatterSliceLib.csproj" />
|
<ProjectReference Include="..\Submodules\MatterSlice\MatterSliceLib\MatterSliceLib.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
|
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.MatterControl.CustomWidgets;
|
using MatterHackers.MatterControl.CustomWidgets;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.PartPreviewWindow
|
namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace MatterHackers.MatterControl
|
||||||
public class LibraryBrowserPage : DialogPage
|
public class LibraryBrowserPage : DialogPage
|
||||||
{
|
{
|
||||||
protected GuiWidget acceptButton = null;
|
protected GuiWidget acceptButton = null;
|
||||||
protected MHTextEditWidget itemNameWidget;
|
protected ThemedTextEditWidget itemNameWidget;
|
||||||
protected ILibraryContext libraryNavContext;
|
protected ILibraryContext libraryNavContext;
|
||||||
protected LibraryListView librarySelectorWidget;
|
protected LibraryListView librarySelectorWidget;
|
||||||
private FolderBreadCrumbWidget breadCrumbWidget = null;
|
private FolderBreadCrumbWidget breadCrumbWidget = null;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
public class MarkdownEditPage : DialogPage
|
public class MarkdownEditPage : DialogPage
|
||||||
{
|
{
|
||||||
private MHTextEditWidget editWidget;
|
private ThemedTextEditWidget editWidget;
|
||||||
private MarkdownWidget markdownWidget;
|
private MarkdownWidget markdownWidget;
|
||||||
|
|
||||||
public MarkdownEditPage(UIField uiField)
|
public MarkdownEditPage(UIField uiField)
|
||||||
|
|
@ -66,7 +66,7 @@ namespace MatterHackers.MatterControl
|
||||||
BackgroundColor = theme.BackgroundColor
|
BackgroundColor = theme.BackgroundColor
|
||||||
};
|
};
|
||||||
|
|
||||||
editWidget = new MHTextEditWidget("", theme, multiLine: true, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
editWidget = new ThemedTextEditWidget("", theme, multiLine: true, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
VAnchor = VAnchor.Stretch,
|
VAnchor = VAnchor.Stretch,
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
taskDetails.Options?.PauseText,
|
taskDetails.Options?.PauseText,
|
||||||
taskDetails.Options?.PauseAction,
|
taskDetails.Options?.PauseAction,
|
||||||
taskDetails.Options?.PauseToolTip ?? "Pause".Localize(),
|
taskDetails.Options?.PauseToolTip ?? "Pause".Localize(),
|
||||||
"",
|
"Pause Task Button",
|
||||||
theme,
|
theme,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl
|
||||||
contentRow.AddChild(fileNameHeader);
|
contentRow.AddChild(fileNameHeader);
|
||||||
|
|
||||||
// Adds text box and check box to the above container
|
// Adds text box and check box to the above container
|
||||||
itemNameWidget = new MHTextEditWidget("", theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a Design Name Here".Localize())
|
itemNameWidget = new ThemedTextEditWidget("", theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a Design Name Here".Localize())
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
Margin = new BorderDouble(5),
|
Margin = new BorderDouble(5),
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,8 @@ namespace MatterHackers.MatterControl.DesignTools
|
||||||
public UndoBuffer UndoBuffer { get; }
|
public UndoBuffer UndoBuffer { get; }
|
||||||
|
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
private MHTextEditWidget editSelectedName;
|
private ThemedTextEditWidget editSelectedName;
|
||||||
public MHTextEditWidget EditSelectedExpression { get; private set; }
|
public ThemedTextEditWidget EditSelectedExpression { get; private set; }
|
||||||
private GridWidget gridWidget;
|
private GridWidget gridWidget;
|
||||||
|
|
||||||
public SheetEditorWidget(SheetData sheetData, SheetObject3D sheetObject, UndoBuffer undoBuffer, ThemeConfig theme)
|
public SheetEditorWidget(SheetData sheetData, SheetObject3D sheetObject, UndoBuffer undoBuffer, ThemeConfig theme)
|
||||||
|
|
@ -68,13 +68,13 @@ namespace MatterHackers.MatterControl.DesignTools
|
||||||
VAnchor = VAnchor.Fit,
|
VAnchor = VAnchor.Fit,
|
||||||
});
|
});
|
||||||
|
|
||||||
editSelectedName = new MHTextEditWidget("", theme, cellEditNameWidth, messageWhenEmptyAndNotSelected: "Name".Localize())
|
editSelectedName = new ThemedTextEditWidget("", theme, cellEditNameWidth, messageWhenEmptyAndNotSelected: "Name".Localize())
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Absolute,
|
HAnchor = HAnchor.Absolute,
|
||||||
};
|
};
|
||||||
editSelectedName.ActualTextEditWidget.EditComplete += SelectedName_EditComplete;
|
editSelectedName.ActualTextEditWidget.EditComplete += SelectedName_EditComplete;
|
||||||
editSelectionGroup.AddChild(editSelectedName);
|
editSelectionGroup.AddChild(editSelectedName);
|
||||||
EditSelectedExpression = new MHTextEditWidget("", theme, messageWhenEmptyAndNotSelected: "Select cell to edit".Localize())
|
EditSelectedExpression = new ThemedTextEditWidget("", theme, messageWhenEmptyAndNotSelected: "Select cell to edit".Localize())
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.DataConverters3D;
|
using MatterHackers.DataConverters3D;
|
||||||
using MatterHackers.MeshVisualizer;
|
using MatterHackers.MeshVisualizer;
|
||||||
using MatterHackers.PolygonMesh;
|
using MatterHackers.PolygonMesh;
|
||||||
|
|
|
||||||
|
|
@ -402,6 +402,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
{
|
{
|
||||||
mouseDownObject3DControl.OnMouseDown(new Mouse3DEventArgs(mouseEvent, ray, info));
|
mouseDownObject3DControl.OnMouseDown(new Mouse3DEventArgs(mouseEvent, ray, info));
|
||||||
SelectedObject3DControl = mouseDownObject3DControl;
|
SelectedObject3DControl = mouseDownObject3DControl;
|
||||||
|
|
||||||
|
// Needed for testing DimensionsWorkWhenNoSheet to work (more) reliably. Otherwise, OnMouseMove's defered update might not pick up the hover in time.
|
||||||
|
HoveredObject3DControl = mouseDownObject3DControl;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// Semaphore implementation might stop the rare chance of a super slow print occuring in the ReSliceHasCorrectEPositions test.
|
||||||
|
#define USE_SEMAPHORE_FOR_RECEIVE_QUEUE
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
@ -410,8 +413,11 @@ ok
|
||||||
if (!shuttingDown)
|
if (!shuttingDown)
|
||||||
{
|
{
|
||||||
shuttingDown = true;
|
shuttingDown = true;
|
||||||
|
#if USE_SEMAPHORE_FOR_RECEIVE_QUEUE
|
||||||
|
receiveResetEvent.Release();
|
||||||
|
#endif
|
||||||
|
|
||||||
HeatedBed.Stop();
|
HeatedBed.Stop();
|
||||||
foreach (var extruder in Extruders)
|
foreach (var extruder in Extruders)
|
||||||
{
|
{
|
||||||
extruder.Stop();
|
extruder.Stop();
|
||||||
|
|
@ -739,7 +745,12 @@ ok
|
||||||
|
|
||||||
private readonly object receiveLock = new object();
|
private readonly object receiveLock = new object();
|
||||||
private readonly Queue<string> receiveQueue = new Queue<string>();
|
private readonly Queue<string> receiveQueue = new Queue<string>();
|
||||||
|
|
||||||
|
#if !USE_SEMAPHORE_FOR_RECEIVE_QUEUE
|
||||||
private AutoResetEvent receiveResetEvent = new AutoResetEvent(false);
|
private AutoResetEvent receiveResetEvent = new AutoResetEvent(false);
|
||||||
|
#else
|
||||||
|
private SemaphoreSlim receiveResetEvent = new(0);
|
||||||
|
#endif
|
||||||
private readonly object sendLock = new object();
|
private readonly object sendLock = new object();
|
||||||
private readonly Queue<string> sendQueue = new Queue<string>(new string[] { "Emulator v0.1\n" });
|
private readonly Queue<string> sendQueue = new Queue<string>(new string[] { "Emulator v0.1\n" });
|
||||||
|
|
||||||
|
|
@ -788,7 +799,11 @@ ok
|
||||||
{
|
{
|
||||||
this.IsOpen = true;
|
this.IsOpen = true;
|
||||||
|
|
||||||
|
#if !USE_SEMAPHORE_FOR_RECEIVE_QUEUE
|
||||||
receiveResetEvent = new AutoResetEvent(false);
|
receiveResetEvent = new AutoResetEvent(false);
|
||||||
|
#else
|
||||||
|
receiveResetEvent = new(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
this.ReadTimeout = 500;
|
this.ReadTimeout = 500;
|
||||||
this.WriteTimeout = 500;
|
this.WriteTimeout = 500;
|
||||||
|
|
@ -814,6 +829,7 @@ ok
|
||||||
{
|
{
|
||||||
Thread.CurrentThread.Name = "EmulatorPipeline";
|
Thread.CurrentThread.Name = "EmulatorPipeline";
|
||||||
|
|
||||||
|
#if !USE_SEMAPHORE_FOR_RECEIVE_QUEUE
|
||||||
while (!shuttingDown || receiveQueue.Count > 0)
|
while (!shuttingDown || receiveQueue.Count > 0)
|
||||||
{
|
{
|
||||||
if (receiveQueue.Count == 0)
|
if (receiveQueue.Count == 0)
|
||||||
|
|
@ -856,10 +872,38 @@ ok
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
for (; ;)
|
||||||
|
{
|
||||||
|
receiveResetEvent.Wait();
|
||||||
|
|
||||||
this.IsOpen = false;
|
string receivedLine;
|
||||||
|
|
||||||
|
lock (receiveLock)
|
||||||
|
{
|
||||||
|
if (receiveQueue.Count <= 0)
|
||||||
|
{
|
||||||
|
// End of queue. The only other thing the semaphore is signalled for is shutdown.
|
||||||
|
System.Diagnostics.Debug.Assert(shuttingDown);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
receivedLine = receiveQueue.Dequeue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (receivedLine?.Length > 0)
|
||||||
|
{
|
||||||
|
// Thread.Sleep(250);
|
||||||
|
string emulatedResponse = GetCorrectResponse(receivedLine);
|
||||||
|
|
||||||
|
lock (sendLock)
|
||||||
|
{
|
||||||
|
sendQueue.Enqueue(emulatedResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
this.Dispose();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -886,7 +930,11 @@ ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// Release the main loop to process the received command
|
// Release the main loop to process the received command
|
||||||
|
#if !USE_SEMAPHORE_FOR_RECEIVE_QUEUE
|
||||||
receiveResetEvent.Set();
|
receiveResetEvent.Set();
|
||||||
|
#else
|
||||||
|
receiveResetEvent.Release();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Write(byte[] buffer, int offset, int count) => throw new NotImplementedException();
|
public void Write(byte[] buffer, int offset, int count) => throw new NotImplementedException();
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ namespace MatterHackers.MatterControl.PrinterControls
|
||||||
{
|
{
|
||||||
public class AdjustmentControls : FlowLayoutWidget
|
public class AdjustmentControls : FlowLayoutWidget
|
||||||
{
|
{
|
||||||
private MHNumberEdit feedRateValue;
|
private ThemedNumberEdit feedRateValue;
|
||||||
private MHNumberEdit extrusionValue;
|
private ThemedNumberEdit extrusionValue;
|
||||||
|
|
||||||
private SolidSlider feedRateRatioSlider;
|
private SolidSlider feedRateRatioSlider;
|
||||||
private SolidSlider extrusionRatioSlider;
|
private SolidSlider extrusionRatioSlider;
|
||||||
|
|
@ -55,7 +55,7 @@ namespace MatterHackers.MatterControl.PrinterControls
|
||||||
private PrinterConfig printer;
|
private PrinterConfig printer;
|
||||||
|
|
||||||
private AdjustmentControls(PrinterConfig printer, ThemeConfig theme)
|
private AdjustmentControls(PrinterConfig printer, ThemeConfig theme)
|
||||||
: base (FlowDirection.TopToBottom)
|
: base(FlowDirection.TopToBottom)
|
||||||
{
|
{
|
||||||
double sliderWidth = 300 * GuiWidget.DeviceScale;
|
double sliderWidth = 300 * GuiWidget.DeviceScale;
|
||||||
double sliderThumbWidth = 10 * GuiWidget.DeviceScale;
|
double sliderThumbWidth = 10 * GuiWidget.DeviceScale;
|
||||||
|
|
@ -99,7 +99,7 @@ namespace MatterHackers.MatterControl.PrinterControls
|
||||||
};
|
};
|
||||||
settingsRow.AddChild(feedRateRatioSlider);
|
settingsRow.AddChild(feedRateRatioSlider);
|
||||||
|
|
||||||
feedRateValue = new MHNumberEdit(Math.Round(printer.Settings.GetValue<double>(SettingsKey.feedrate_ratio), 2), theme, allowDecimals: true, minValue: minFeedRateRatio, maxValue: maxFeedRateRatio, pixelWidth: 40 * GuiWidget.DeviceScale)
|
feedRateValue = new ThemedNumberEdit(Math.Round(printer.Settings.GetValue<double>(SettingsKey.feedrate_ratio), 2), theme, allowDecimals: true, minValue: minFeedRateRatio, maxValue: maxFeedRateRatio, pixelWidth: 40 * GuiWidget.DeviceScale)
|
||||||
{
|
{
|
||||||
Name = "Feed Rate NumberEdit",
|
Name = "Feed Rate NumberEdit",
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
|
|
@ -157,7 +157,7 @@ namespace MatterHackers.MatterControl.PrinterControls
|
||||||
};
|
};
|
||||||
settingsRow.AddChild(extrusionRatioSlider);
|
settingsRow.AddChild(extrusionRatioSlider);
|
||||||
|
|
||||||
extrusionValue = new MHNumberEdit(Math.Round(printer.Settings.GetValue<double>(SettingsKey.extrusion_ratio), 2), theme, allowDecimals: true, minValue: minExtrutionRatio, maxValue: maxExtrusionRatio, pixelWidth: 40 * GuiWidget.DeviceScale)
|
extrusionValue = new ThemedNumberEdit(Math.Round(printer.Settings.GetValue<double>(SettingsKey.extrusion_ratio), 2), theme, allowDecimals: true, minValue: minExtrutionRatio, maxValue: maxExtrusionRatio, pixelWidth: 40 * GuiWidget.DeviceScale)
|
||||||
{
|
{
|
||||||
Name = "Extrusion Multiplier NumberEdit",
|
Name = "Extrusion Multiplier NumberEdit",
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ namespace MatterHackers.MatterControl.PrinterControls
|
||||||
{
|
{
|
||||||
public class FanControlsRow : SettingsRow
|
public class FanControlsRow : SettingsRow
|
||||||
{
|
{
|
||||||
private MHNumberEdit fanSpeedDisplay;
|
private ThemedNumberEdit fanSpeedDisplay;
|
||||||
|
|
||||||
private RoundedToggleSwitch toggleSwitch;
|
private RoundedToggleSwitch toggleSwitch;
|
||||||
private PrinterConfig printer;
|
private PrinterConfig printer;
|
||||||
|
|
@ -57,7 +57,7 @@ namespace MatterHackers.MatterControl.PrinterControls
|
||||||
this.AddChild(container);
|
this.AddChild(container);
|
||||||
this.BorderColor = Color.Transparent;
|
this.BorderColor = Color.Transparent;
|
||||||
|
|
||||||
fanSpeedDisplay = new MHNumberEdit(0, theme, minValue: 0, maxValue: 100, pixelWidth: 30 * GuiWidget.DeviceScale)
|
fanSpeedDisplay = new ThemedNumberEdit(0, theme, minValue: 0, maxValue: 100, pixelWidth: 30 * GuiWidget.DeviceScale)
|
||||||
{
|
{
|
||||||
Value = printer.Connection.GetFanSpeed0To255(fanIndex) * 100 / 255,
|
Value = printer.Connection.GetFanSpeed0To255(fanIndex) * 100 / 255,
|
||||||
VAnchor = VAnchor.Center | VAnchor.Fit,
|
VAnchor = VAnchor.Center | VAnchor.Fit,
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ namespace MatterHackers.MatterControl
|
||||||
int linkCompatibleRow = row;
|
int linkCompatibleRow = row;
|
||||||
int linkCompatibleAxis = axis;
|
int linkCompatibleAxis = axis;
|
||||||
|
|
||||||
var valueEdit = new MHNumberEdit(positions[linkCompatibleRow][linkCompatibleAxis], theme, allowNegatives: true, allowDecimals: true, pixelWidth: 60 * GuiWidget.DeviceScale, tabIndex: tab_index++)
|
var valueEdit = new ThemedNumberEdit(positions[linkCompatibleRow][linkCompatibleAxis], theme, allowNegatives: true, allowDecimals: true, pixelWidth: 60 * GuiWidget.DeviceScale, tabIndex: tab_index++)
|
||||||
{
|
{
|
||||||
Name = $"{axisName} Position {row}"
|
Name = $"{axisName} Position {row}"
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -62,10 +62,10 @@ namespace MatterHackers.MatterControl
|
||||||
|
|
||||||
private List<ExtrudeButton> eMinusButtons = new List<ExtrudeButton>();
|
private List<ExtrudeButton> eMinusButtons = new List<ExtrudeButton>();
|
||||||
private List<ExtrudeButton> ePlusButtons = new List<ExtrudeButton>();
|
private List<ExtrudeButton> ePlusButtons = new List<ExtrudeButton>();
|
||||||
private RadioTextButton movePointZeroTwoMmButton;
|
private ThemedRadioTextButton movePointZeroTwoMmButton;
|
||||||
private RadioTextButton moveOneMmButton;
|
private ThemedRadioTextButton moveOneMmButton;
|
||||||
private RadioTextButton oneHundredButton;
|
private ThemedRadioTextButton oneHundredButton;
|
||||||
private RadioTextButton tenButton;
|
private ThemedRadioTextButton tenButton;
|
||||||
private GuiWidget disableableEButtons;
|
private GuiWidget disableableEButtons;
|
||||||
private GuiWidget keyboardFocusBorder;
|
private GuiWidget keyboardFocusBorder;
|
||||||
private GuiWidget keyboardImage;
|
private GuiWidget keyboardImage;
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@ namespace MatterHackers.MatterControl
|
||||||
public MacroDetailPage(GCodeMacro gcodeMacro, PrinterSettings printerSettings)
|
public MacroDetailPage(GCodeMacro gcodeMacro, PrinterSettings printerSettings)
|
||||||
{
|
{
|
||||||
// Form validation fields
|
// Form validation fields
|
||||||
MHTextEditWidget macroNameInput;
|
ThemedTextEditWidget macroNameInput;
|
||||||
MHTextEditWidget macroCommandInput;
|
ThemedTextEditWidget macroCommandInput;
|
||||||
WrappedTextWidget macroCommandError;
|
WrappedTextWidget macroCommandError;
|
||||||
WrappedTextWidget macroNameError;
|
WrappedTextWidget macroNameError;
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ namespace MatterHackers.MatterControl
|
||||||
Margin = new BorderDouble(0, 0, 0, 1)
|
Margin = new BorderDouble(0, 0, 0, 1)
|
||||||
});
|
});
|
||||||
|
|
||||||
contentRow.AddChild(macroNameInput = new MHTextEditWidget(GCodeMacro.FixMacroName(gcodeMacro.Name), theme)
|
contentRow.AddChild(macroNameInput = new ThemedTextEditWidget(GCodeMacro.FixMacroName(gcodeMacro.Name), theme)
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch
|
HAnchor = HAnchor.Stretch
|
||||||
});
|
});
|
||||||
|
|
@ -82,7 +82,7 @@ namespace MatterHackers.MatterControl
|
||||||
Margin = new BorderDouble(0, 0, 0, 1)
|
Margin = new BorderDouble(0, 0, 0, 1)
|
||||||
});
|
});
|
||||||
|
|
||||||
macroCommandInput = new MHTextEditWidget(gcodeMacro.GCode, theme, pixelHeight: 120, multiLine: true, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
macroCommandInput = new ThemedTextEditWidget(gcodeMacro.GCode, theme, pixelHeight: 120, multiLine: true, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
VAnchor = VAnchor.Stretch
|
VAnchor = VAnchor.Stretch
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ namespace MatterHackers.MatterControl
|
||||||
movementSpeed = movementSpeed / 60.0; // Convert from mm/min to mm/s
|
movementSpeed = movementSpeed / 60.0; // Convert from mm/min to mm/s
|
||||||
}
|
}
|
||||||
|
|
||||||
var valueEdit = new MHNumberEdit(movementSpeed, theme, minValue: 0, pixelWidth: 60 * GuiWidget.DeviceScale, tabIndex: tab_index++, allowDecimals: true)
|
var valueEdit = new ThemedNumberEdit(movementSpeed, theme, minValue: 0, pixelWidth: 60 * GuiWidget.DeviceScale, tabIndex: tab_index++, allowDecimals: true)
|
||||||
{
|
{
|
||||||
Margin = 3
|
Margin = 3
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
|
||||||
private TextWidget printerBaudRateError;
|
private TextWidget printerBaudRateError;
|
||||||
private GuiWidget baudRateWidget;
|
private GuiWidget baudRateWidget;
|
||||||
private RadioButton otherBaudRateRadioButton;
|
private RadioButton otherBaudRateRadioButton;
|
||||||
private MHTextEditWidget otherBaudRateInput;
|
private ThemedTextEditWidget otherBaudRateInput;
|
||||||
private GuiWidget nextButton;
|
private GuiWidget nextButton;
|
||||||
private GuiWidget printerBaudRateHelpLink;
|
private GuiWidget printerBaudRateHelpLink;
|
||||||
private TextWidget printerBaudRateHelpMessage;
|
private TextWidget printerBaudRateHelpMessage;
|
||||||
|
|
@ -159,7 +159,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
|
||||||
|
|
||||||
//See if the baud rate of the current print is in the list of displayed rates,
|
//See if the baud rate of the current print is in the list of displayed rates,
|
||||||
//flag the 'other' option if it is not and prefill the rate.
|
//flag the 'other' option if it is not and prefill the rate.
|
||||||
otherBaudRateInput = new MHTextEditWidget("", theme);
|
otherBaudRateInput = new ThemedTextEditWidget("", theme);
|
||||||
otherBaudRateInput.Visible = false;
|
otherBaudRateInput.Visible = false;
|
||||||
otherBaudRateInput.HAnchor = HAnchor.Stretch;
|
otherBaudRateInput.HAnchor = HAnchor.Stretch;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
|
||||||
// Normally step one of the setup process
|
// Normally step one of the setup process
|
||||||
public class SetupStepMakeModelName : DialogPage
|
public class SetupStepMakeModelName : DialogPage
|
||||||
{
|
{
|
||||||
private readonly TextButton nextButton;
|
private readonly ThemedTextButton nextButton;
|
||||||
private readonly AddPrinterWidget printerPanel;
|
private readonly AddPrinterWidget printerPanel;
|
||||||
|
|
||||||
private readonly RadioButton createPrinterRadioButton = null;
|
private readonly RadioButton createPrinterRadioButton = null;
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ namespace MatterHackers.MatterControl
|
||||||
public class TerminalWidget : FlowLayoutWidget, ICloseableTab
|
public class TerminalWidget : FlowLayoutWidget, ICloseableTab
|
||||||
{
|
{
|
||||||
private CheckBox autoUppercase;
|
private CheckBox autoUppercase;
|
||||||
private MHTextEditWidget manualCommandTextEdit;
|
private ThemedTextEditWidget manualCommandTextEdit;
|
||||||
private TextScrollWidget textScrollWidget;
|
private TextScrollWidget textScrollWidget;
|
||||||
private PrinterConfig printer;
|
private PrinterConfig printer;
|
||||||
|
|
||||||
|
|
@ -181,7 +181,7 @@ namespace MatterHackers.MatterControl
|
||||||
};
|
};
|
||||||
this.AddChild(inputRow);
|
this.AddChild(inputRow);
|
||||||
|
|
||||||
manualCommandTextEdit = new MHTextEditWidget("", theme, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
manualCommandTextEdit = new ThemedTextEditWidget("", theme, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
||||||
{
|
{
|
||||||
Margin = new BorderDouble(right: 3),
|
Margin = new BorderDouble(right: 3),
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
|
|
|
||||||
|
|
@ -412,7 +412,7 @@ namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
gitHubPat = "";
|
gitHubPat = "";
|
||||||
}
|
}
|
||||||
var accessToken = new MHTextEditWidget(gitHubPat, theme, pixelWidth: 350, messageWhenEmptyAndNotSelected: "Enter Person Access Token".Localize())
|
var accessToken = new ThemedTextEditWidget(gitHubPat, theme, pixelWidth: 350, messageWhenEmptyAndNotSelected: "Enter Person Access Token".Localize())
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Absolute,
|
HAnchor = HAnchor.Absolute,
|
||||||
Margin = new BorderDouble(5),
|
Margin = new BorderDouble(5),
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ namespace MatterHackers.MatterControl
|
||||||
DialogWindow wizardWindow = GetWindow(typeof(PanelType));
|
DialogWindow wizardWindow = GetWindow(typeof(PanelType));
|
||||||
var newPanel = wizardWindow.ChangeToPage<PanelType>();
|
var newPanel = wizardWindow.ChangeToPage<PanelType>();
|
||||||
wizardWindow.Title = newPanel.WindowTitle;
|
wizardWindow.Title = newPanel.WindowTitle;
|
||||||
|
|
||||||
SetSizeAndShow(wizardWindow, newPanel);
|
SetSizeAndShow(wizardWindow, newPanel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.MatterControl.CustomWidgets;
|
using MatterHackers.MatterControl.CustomWidgets;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl
|
namespace MatterHackers.MatterControl
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ namespace MatterHackers.MatterControl
|
||||||
{
|
{
|
||||||
public class InputBoxPage : DialogPage
|
public class InputBoxPage : DialogPage
|
||||||
{
|
{
|
||||||
public MHTextEditWidget TextEditWidget { get; private set; }
|
public ThemedTextEditWidget TextEditWidget { get; private set; }
|
||||||
|
|
||||||
public override string Text { get => TextEditWidget.Text; set => TextEditWidget.Text = value; }
|
public override string Text { get => TextEditWidget.Text; set => TextEditWidget.Text = value; }
|
||||||
|
|
||||||
|
|
@ -56,7 +56,7 @@ namespace MatterHackers.MatterControl
|
||||||
});
|
});
|
||||||
|
|
||||||
// Adds text box and check box to the above container
|
// Adds text box and check box to the above container
|
||||||
TextEditWidget = new MHTextEditWidget(initialValue, theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: emptyText);
|
TextEditWidget = new ThemedTextEditWidget(initialValue, theme, pixelWidth: 300, messageWhenEmptyAndNotSelected: emptyText);
|
||||||
TextEditWidget.Name = "InputBoxPage TextEditWidget";
|
TextEditWidget.Name = "InputBoxPage TextEditWidget";
|
||||||
TextEditWidget.HAnchor = HAnchor.Stretch;
|
TextEditWidget.HAnchor = HAnchor.Stretch;
|
||||||
TextEditWidget.Margin = new BorderDouble(5);
|
TextEditWidget.Margin = new BorderDouble(5);
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ of the authors and should not be interpreted as representing official policies,
|
||||||
either expressed or implied, of the FreeBSD Project.
|
either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public class BoundsField : Vector4Field
|
public class BoundsField : Vector4Field
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public class CharField : UIField
|
public class CharField : UIField
|
||||||
{
|
{
|
||||||
protected MHTextEditWidget textEditWidget;
|
protected ThemedTextEditWidget textEditWidget;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public CharField(ThemeConfig theme)
|
public CharField(ThemeConfig theme)
|
||||||
|
|
@ -44,7 +44,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
public override void Initialize(int tabIndex)
|
public override void Initialize(int tabIndex)
|
||||||
{
|
{
|
||||||
textEditWidget = new MHTextEditWidget("", theme, pixelWidth: ControlWidth, tabIndex: tabIndex)
|
textEditWidget = new ThemedTextEditWidget("", theme, pixelWidth: ControlWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ of the authors and should not be interpreted as representing official policies,
|
||||||
either expressed or implied, of the FreeBSD Project.
|
either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public class ExpressionField : UIField
|
public class ExpressionField : UIField
|
||||||
{
|
{
|
||||||
protected MHTextEditWidget textEditWidget;
|
protected ThemedTextEditWidget textEditWidget;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public ExpressionField(ThemeConfig theme)
|
public ExpressionField(ThemeConfig theme)
|
||||||
|
|
@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
VAnchor = VAnchor.Fit
|
VAnchor = VAnchor.Fit
|
||||||
};
|
};
|
||||||
|
|
||||||
aligner.AddChild(textEditWidget = new MHTextEditWidget("", theme, pixelWidth: ControlWidth, tabIndex: tabIndex)
|
aligner.AddChild(textEditWidget = new ThemedTextEditWidget("", theme, pixelWidth: ControlWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
base.Initialize(tabIndex);
|
base.Initialize(tabIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static double StripZeroSign(double x)
|
||||||
|
{
|
||||||
|
return x == 0 ? 0 : x;
|
||||||
|
}
|
||||||
|
|
||||||
protected override string ConvertValue(string newValue)
|
protected override string ConvertValue(string newValue)
|
||||||
{
|
{
|
||||||
var offsets = newValue?.Split(',');
|
var offsets = newValue?.Split(',');
|
||||||
|
|
@ -126,7 +131,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
// Import deprecated z_offset data if missing
|
// Import deprecated z_offset data if missing
|
||||||
var zOffset = printer.Settings.GetValue<double>(SettingsKey.z_offset);
|
var zOffset = printer.Settings.GetValue<double>(SettingsKey.z_offset);
|
||||||
corrected += xyz[0] + "x" + xyz[1] + "x" + (-zOffset).ToString();
|
corrected += xyz[0] + "x" + xyz[1] + "x" + StripZeroSign(-zOffset).ToString();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ of the authors and should not be interpreted as representing official policies,
|
||||||
either expressed or implied, of the FreeBSD Project.
|
either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public class MultilineStringField : UIField
|
public class MultilineStringField : UIField
|
||||||
{
|
{
|
||||||
private MHTextEditWidget editWidget;
|
private ThemedTextEditWidget editWidget;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public MultilineStringField(ThemeConfig theme)
|
public MultilineStringField(ThemeConfig theme)
|
||||||
|
|
@ -44,7 +44,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
public override void Initialize(int tabIndex)
|
public override void Initialize(int tabIndex)
|
||||||
{
|
{
|
||||||
editWidget = new MHTextEditWidget("", theme, pixelWidth: 320, multiLine: true, tabIndex: tabIndex, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
editWidget = new ThemedTextEditWidget("", theme, pixelWidth: 320, multiLine: true, tabIndex: tabIndex, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono))
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
VAnchor = VAnchor.Fit,
|
VAnchor = VAnchor.Fit,
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public abstract class NumberField : UIField
|
public abstract class NumberField : UIField
|
||||||
{
|
{
|
||||||
protected MHNumberEdit numberEdit;
|
protected ThemedNumberEdit numberEdit;
|
||||||
private readonly ThemeConfig theme;
|
private readonly ThemeConfig theme;
|
||||||
|
|
||||||
protected bool AllowNegatives { get; set; } = true;
|
protected bool AllowNegatives { get; set; } = true;
|
||||||
|
|
@ -47,7 +47,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
public override void Initialize(int tabIndex)
|
public override void Initialize(int tabIndex)
|
||||||
{
|
{
|
||||||
numberEdit = new MHNumberEdit(0, theme, pixelWidth: ControlWidth, allowDecimals: this.AllowDecimals, allowNegatives: this.AllowNegatives, tabIndex: tabIndex)
|
numberEdit = new ThemedNumberEdit(0, theme, pixelWidth: ControlWidth, allowDecimals: this.AllowDecimals, allowNegatives: this.AllowNegatives, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public event EventHandler ValueChanged;
|
public event EventHandler ValueChanged;
|
||||||
|
|
||||||
private MHTextEditWidget editWidget;
|
private ThemedTextEditWidget editWidget;
|
||||||
|
|
||||||
public SurfacedEditorPage(IObject3D selectedItem)
|
public SurfacedEditorPage(IObject3D selectedItem)
|
||||||
{
|
{
|
||||||
|
|
@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
BackgroundColor = theme.BackgroundColor
|
BackgroundColor = theme.BackgroundColor
|
||||||
};
|
};
|
||||||
|
|
||||||
editWidget = new MHTextEditWidget("", theme)
|
editWidget = new ThemedTextEditWidget("", theme)
|
||||||
{
|
{
|
||||||
HAnchor = HAnchor.Stretch,
|
HAnchor = HAnchor.Stretch,
|
||||||
Name = this.Name,
|
Name = this.Name,
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public class TextField : UIField
|
public class TextField : UIField
|
||||||
{
|
{
|
||||||
protected MHTextEditWidget textEditWidget;
|
protected ThemedTextEditWidget textEditWidget;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public TextField(ThemeConfig theme)
|
public TextField(ThemeConfig theme)
|
||||||
|
|
@ -55,7 +55,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
public override void Initialize(int tabIndex)
|
public override void Initialize(int tabIndex)
|
||||||
{
|
{
|
||||||
textEditWidget = new MHTextEditWidget("", theme, pixelWidth: ControlWidth, tabIndex: tabIndex)
|
textEditWidget = new ThemedTextEditWidget("", theme, pixelWidth: ControlWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
SelectAllOnFocus = true,
|
SelectAllOnFocus = true,
|
||||||
|
|
|
||||||
|
|
@ -82,12 +82,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
public void ClearUndoHistory()
|
public void ClearUndoHistory()
|
||||||
{
|
{
|
||||||
foreach (var widget in this.Content.DescendantsAndSelf<MHTextEditWidget>())
|
foreach (var widget in this.Content.DescendantsAndSelf<ThemedTextEditWidget>())
|
||||||
{
|
{
|
||||||
widget.ActualTextEditWidget.InternalTextEditWidget.ClearUndoHistory();
|
widget.ActualTextEditWidget.InternalTextEditWidget.ClearUndoHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var widget in this.Content.DescendantsAndSelf<MHNumberEdit>())
|
foreach (var widget in this.Content.DescendantsAndSelf<ThemedNumberEdit>())
|
||||||
{
|
{
|
||||||
widget.ActuallNumberEdit.InternalTextEditWidget.ClearUndoHistory();
|
widget.ActuallNumberEdit.InternalTextEditWidget.ClearUndoHistory();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public abstract class ValueOrUnitsField : TextField
|
public abstract class ValueOrUnitsField : TextField
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public static readonly int VectorXYEditWidth = (int)(60 * GuiWidget.DeviceScale + .5);
|
public static readonly int VectorXYEditWidth = (int)(60 * GuiWidget.DeviceScale + .5);
|
||||||
|
|
||||||
private MHNumberEdit yEditWidget;
|
private ThemedNumberEdit yEditWidget;
|
||||||
|
|
||||||
private MHNumberEdit xEditWidget;
|
private ThemedNumberEdit xEditWidget;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public Vector2Field(ThemeConfig theme)
|
public Vector2Field(ThemeConfig theme)
|
||||||
|
|
@ -71,7 +71,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyValueStrings[0], out double currentXValue);
|
double.TryParse(xyValueStrings[0], out double currentXValue);
|
||||||
|
|
||||||
xEditWidget = new MHNumberEdit(currentXValue, theme, singleCharLabel: 'X', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYEditWidth, tabIndex: tabIndex)
|
xEditWidget = new ThemedNumberEdit(currentXValue, theme, singleCharLabel: 'X', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYEditWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex,
|
TabIndex = tabIndex,
|
||||||
|
|
@ -89,7 +89,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyValueStrings[1], out double currentYValue);
|
double.TryParse(xyValueStrings[1], out double currentYValue);
|
||||||
|
|
||||||
yEditWidget = new MHNumberEdit(currentYValue, theme, 'Y', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYEditWidth, tabIndex: tabIndex)
|
yEditWidget = new ThemedNumberEdit(currentYValue, theme, 'Y', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYEditWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex + 1,
|
TabIndex = tabIndex + 1,
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public static readonly int VectorXYZEditWidth = (int)(60 * GuiWidget.DeviceScale + .5);
|
public static readonly int VectorXYZEditWidth = (int)(60 * GuiWidget.DeviceScale + .5);
|
||||||
|
|
||||||
private MHNumberEdit xEditWidget;
|
private ThemedNumberEdit xEditWidget;
|
||||||
private MHNumberEdit yEditWidget;
|
private ThemedNumberEdit yEditWidget;
|
||||||
private MHNumberEdit zEditWidget;
|
private ThemedNumberEdit zEditWidget;
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
public Vector3Field(ThemeConfig theme)
|
public Vector3Field(ThemeConfig theme)
|
||||||
|
|
@ -71,7 +71,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzStrings[0], out double currentXValue);
|
double.TryParse(xyzStrings[0], out double currentXValue);
|
||||||
|
|
||||||
xEditWidget = new MHNumberEdit(currentXValue, theme, 'X', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZEditWidth, tabIndex: tabIndex++)
|
xEditWidget = new ThemedNumberEdit(currentXValue, theme, 'X', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZEditWidth, tabIndex: tabIndex++)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex,
|
TabIndex = tabIndex,
|
||||||
|
|
@ -93,7 +93,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzStrings[1], out double currentYValue);
|
double.TryParse(xyzStrings[1], out double currentYValue);
|
||||||
|
|
||||||
yEditWidget = new MHNumberEdit(currentYValue, theme, 'Y', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZEditWidth, tabIndex: tabIndex++)
|
yEditWidget = new ThemedNumberEdit(currentYValue, theme, 'Y', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZEditWidth, tabIndex: tabIndex++)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex + 1,
|
TabIndex = tabIndex + 1,
|
||||||
|
|
@ -115,7 +115,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzStrings[2], out double currentZValue);
|
double.TryParse(xyzStrings[2], out double currentZValue);
|
||||||
|
|
||||||
zEditWidget = new MHNumberEdit(currentZValue, theme, 'Z', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZEditWidth, tabIndex: tabIndex++)
|
zEditWidget = new ThemedNumberEdit(currentZValue, theme, 'Z', allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZEditWidth, tabIndex: tabIndex++)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex + 1,
|
TabIndex = tabIndex + 1,
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
public static int VectorXYZWEditWidth = (int)(45 * GuiWidget.DeviceScale + .5);
|
public static int VectorXYZWEditWidth = (int)(45 * GuiWidget.DeviceScale + .5);
|
||||||
|
|
||||||
private MHNumberEdit xEditWidget;
|
private ThemedNumberEdit xEditWidget;
|
||||||
private MHNumberEdit yEditWidget;
|
private ThemedNumberEdit yEditWidget;
|
||||||
private MHNumberEdit zEditWidget;
|
private ThemedNumberEdit zEditWidget;
|
||||||
private MHNumberEdit wEditWidget;
|
private ThemedNumberEdit wEditWidget;
|
||||||
|
|
||||||
private ThemeConfig theme;
|
private ThemeConfig theme;
|
||||||
|
|
||||||
|
|
@ -76,7 +76,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzValueStrings[0], out double currentXValue);
|
double.TryParse(xyzValueStrings[0], out double currentXValue);
|
||||||
|
|
||||||
xEditWidget = new MHNumberEdit(currentXValue, theme, Labels[0] /* X */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
xEditWidget = new ThemedNumberEdit(currentXValue, theme, Labels[0] /* X */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex,
|
TabIndex = tabIndex,
|
||||||
|
|
@ -98,7 +98,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzValueStrings[1], out double currentYValue);
|
double.TryParse(xyzValueStrings[1], out double currentYValue);
|
||||||
|
|
||||||
yEditWidget = new MHNumberEdit(currentYValue, theme, Labels[1] /* Y */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
yEditWidget = new ThemedNumberEdit(currentYValue, theme, Labels[1] /* Y */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex + 1,
|
TabIndex = tabIndex + 1,
|
||||||
|
|
@ -120,7 +120,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzValueStrings[2], out double currentZValue);
|
double.TryParse(xyzValueStrings[2], out double currentZValue);
|
||||||
|
|
||||||
zEditWidget = new MHNumberEdit(currentZValue, theme, Labels[2] /* Z */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
zEditWidget = new ThemedNumberEdit(currentZValue, theme, Labels[2] /* Z */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex + 1,
|
TabIndex = tabIndex + 1,
|
||||||
|
|
@ -142,7 +142,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
|
|
||||||
double.TryParse(xyzValueStrings[3], out double currentWValue);
|
double.TryParse(xyzValueStrings[3], out double currentWValue);
|
||||||
|
|
||||||
wEditWidget = new MHNumberEdit(currentZValue, theme, Labels[3] /* W */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
wEditWidget = new ThemedNumberEdit(currentZValue, theme, Labels[3] /* W */, allowNegatives: true, allowDecimals: true, pixelWidth: VectorXYZWEditWidth, tabIndex: tabIndex)
|
||||||
{
|
{
|
||||||
ToolTipText = this.HelpText,
|
ToolTipText = this.HelpText,
|
||||||
TabIndex = tabIndex + 1,
|
TabIndex = tabIndex + 1,
|
||||||
|
|
|
||||||
|
|
@ -122,13 +122,13 @@ namespace MatterHackers.MatterControl.FieldValidation
|
||||||
{
|
{
|
||||||
public delegate ValidationStatus ValidationHandler(string valueToValidate);
|
public delegate ValidationStatus ValidationHandler(string valueToValidate);
|
||||||
|
|
||||||
public MHTextEditWidget FieldEditWidget { get; set; }
|
public ThemedTextEditWidget FieldEditWidget { get; set; }
|
||||||
|
|
||||||
public WrappedTextWidget FieldErrorMessageWidget { get; set; }
|
public WrappedTextWidget FieldErrorMessageWidget { get; set; }
|
||||||
|
|
||||||
private ValidationHandler[] FieldValidationHandlers { get; set; }
|
private ValidationHandler[] FieldValidationHandlers { get; set; }
|
||||||
|
|
||||||
public FormField(MHTextEditWidget textEditWidget, WrappedTextWidget errorMessageWidget, ValidationHandler[] validationHandlers)
|
public FormField(ThemedTextEditWidget textEditWidget, WrappedTextWidget errorMessageWidget, ValidationHandler[] validationHandlers)
|
||||||
{
|
{
|
||||||
this.FieldEditWidget = textEditWidget;
|
this.FieldEditWidget = textEditWidget;
|
||||||
this.FieldErrorMessageWidget = errorMessageWidget;
|
this.FieldErrorMessageWidget = errorMessageWidget;
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,14 @@ namespace MatterHackers.MatterControl
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var queueDirectory = LegacyQueueFiles.QueueDirectory;
|
var queueDirectory = LegacyQueueFiles.QueueDirectory;
|
||||||
return Directory.EnumerateFiles(queueDirectory).Count();
|
try
|
||||||
|
{
|
||||||
|
return Directory.EnumerateFiles(queueDirectory).Count();
|
||||||
|
}
|
||||||
|
catch (DirectoryNotFoundException)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using Markdig.Renderers.Agg.Inlines;
|
using Markdig.Renderers.Agg.Inlines;
|
||||||
|
using MatterHackers.Agg.UI;
|
||||||
using MatterHackers.MatterControl;
|
using MatterHackers.MatterControl;
|
||||||
|
|
||||||
namespace Markdig.Renderers.Agg
|
namespace Markdig.Renderers.Agg
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,28 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
<Company>MatterHackers Inc.</Company>
|
<Company>MatterHackers Inc.</Company>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<BaseOutputPath>$(SolutionDir)bin</BaseOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<ItemGroup>
|
||||||
<OutputPath>..\..\bin\Debug\</OutputPath>
|
<PackageReference Include="PDFsharpNetStandard2" Version="1.51.4845" />
|
||||||
</PropertyGroup>
|
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
<ItemGroup>
|
||||||
<OutputPath>..\..\bin\Release\</OutputPath>
|
<ProjectReference Include="..\..\MatterControl.Common\MatterControl.Common.csproj">
|
||||||
</PropertyGroup>
|
<Project>{2af30557-fc50-4de3-ad1c-7eb57131a9c5}</Project>
|
||||||
|
<Name>MatterControl.Common</Name>
|
||||||
<ItemGroup>
|
</ProjectReference>
|
||||||
<PackageReference Include="PDFsharpNetStandard2" Version="1.51.4845" />
|
<ProjectReference Include="..\..\MatterControlLib\MatterControlLib.csproj" />
|
||||||
</ItemGroup>
|
<ProjectReference Include="..\..\Submodules\agg-sharp\agg\Agg.csproj">
|
||||||
|
</ProjectReference>
|
||||||
<ItemGroup>
|
<ProjectReference Include="..\..\Submodules\agg-sharp\Localizations\Localizations.csproj" />
|
||||||
<ProjectReference Include="..\..\MatterControl.Common\MatterControl.Common.csproj">
|
<ProjectReference Include="..\..\Submodules\agg-sharp\VectorMath\VectorMath.csproj">
|
||||||
<Project>{2af30557-fc50-4de3-ad1c-7eb57131a9c5}</Project>
|
</ProjectReference>
|
||||||
<Name>MatterControl.Common</Name>
|
</ItemGroup>
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\MatterControlLib\MatterControlLib.csproj" />
|
|
||||||
<ProjectReference Include="..\..\Submodules\agg-sharp\agg\Agg.csproj">
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\Submodules\agg-sharp\Localizations\Localizations.csproj" />
|
|
||||||
<ProjectReference Include="..\..\Submodules\agg-sharp\VectorMath\VectorMath.csproj">
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,10 @@ namespace MatterHackers.MatterControl.Plugins
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Needed for PDFSharp on .NET core.
|
||||||
|
// https://stackoverflow.com/questions/50858209/system-notsupportedexception-no-data-is-available-for-encoding-1252
|
||||||
|
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
|
||||||
|
|
||||||
ApplicationController.Instance.Library.MenuExtensions.Add(
|
ApplicationController.Instance.Library.MenuExtensions.Add(
|
||||||
new LibraryAction(ActionScope.ListItem)
|
new LibraryAction(ActionScope.ListItem)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,7 @@ namespace MatterHackers.MatterControl.Plugins
|
||||||
|
|
||||||
// Now try and open the document. This will launch whatever PDF viewer is on the system and ask it
|
// Now try and open the document. This will launch whatever PDF viewer is on the system and ask it
|
||||||
// to show the file (at least on Windows).
|
// to show the file (at least on Windows).
|
||||||
Process.Start(pathAndFileToSaveTo);
|
ApplicationController.ProcessStart(pathAndFileToSaveTo);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,58 +1,15 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProductVersion>8.0.30703</ProductVersion>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<ProjectGuid>{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}</ProjectGuid>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>MatterHackers.InfInstaller</RootNamespace>
|
<RootNamespace>MatterHackers.InfInstaller</RootNamespace>
|
||||||
<AssemblyName>InfInstaller</AssemblyName>
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||||
<FileUpgradeFlags>
|
|
||||||
</FileUpgradeFlags>
|
|
||||||
<UpgradeBackupLocation>
|
|
||||||
</UpgradeBackupLocation>
|
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>True</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>False</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<Prefer32Bit>true</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>True</Optimize>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||||
<Reference Include="System" />
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.330701">
|
||||||
<Reference Include="System.Data" />
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<Reference Include="System.Drawing" />
|
</PackageReference>
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="InfInstaller.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="app.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
|
||||||
</startup>
|
|
||||||
</configuration>
|
|
||||||
124
Program.cs
124
Program.cs
|
|
@ -31,9 +31,8 @@ using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.ServiceModel;
|
|
||||||
using System.ServiceModel.Description;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using MatterHackers.Agg;
|
using MatterHackers.Agg;
|
||||||
using MatterHackers.Agg.Platform;
|
using MatterHackers.Agg.Platform;
|
||||||
|
|
@ -64,17 +63,13 @@ namespace MatterHackers.MatterControl
|
||||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||||
static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
|
static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
|
||||||
|
|
||||||
private static EventWaitHandle waitHandle;
|
|
||||||
|
|
||||||
private const int RaygunMaxNotifications = 15;
|
private const int RaygunMaxNotifications = 15;
|
||||||
|
|
||||||
private static int raygunNotificationCount = 0;
|
private static int raygunNotificationCount = 0;
|
||||||
|
|
||||||
private static RaygunClient _raygunClient;
|
private static RaygunClient _raygunClient;
|
||||||
|
|
||||||
private static string mainServiceName = "shell";
|
|
||||||
|
|
||||||
private const string ServiceBaseUri = "net.pipe://localhost/mattercontrol";
|
|
||||||
|
|
||||||
[DllImport("Shcore.dll")]
|
[DllImport("Shcore.dll")]
|
||||||
static extern int SetProcessDpiAwareness(int PROCESS_DPI_AWARENESS);
|
static extern int SetProcessDpiAwareness(int PROCESS_DPI_AWARENESS);
|
||||||
|
|
@ -141,6 +136,24 @@ namespace MatterHackers.MatterControl
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// If StaticData is missing, use the StaticData at the relative project root if it exists.
|
||||||
|
if (!StaticData.Instance.DirectoryExists("."))
|
||||||
|
{
|
||||||
|
var mainOutputDirectoryAttribute = MainOutputDirectoryAttribute.GetFromProgramAssembly();
|
||||||
|
var executableDirectory = AppDomain.CurrentDomain.BaseDirectory;
|
||||||
|
var buildOutputDirectory = Path.Combine(mainOutputDirectoryAttribute.ProjectRoot, mainOutputDirectoryAttribute.MainOutputDirectory);
|
||||||
|
|
||||||
|
// In case the whole project moved, determine the relative path.
|
||||||
|
var buildAbsStaticDataPath = Path.Combine(mainOutputDirectoryAttribute.ProjectRoot, "StaticData");
|
||||||
|
var relStaticDataPath = Path.GetRelativePath(buildOutputDirectory, buildAbsStaticDataPath);
|
||||||
|
var workingAbsStaticDataPath = Path.GetFullPath(Path.Combine(executableDirectory, relStaticDataPath));
|
||||||
|
|
||||||
|
if (Directory.Exists(workingAbsStaticDataPath))
|
||||||
|
{
|
||||||
|
StaticData.OverrideRootPath(workingAbsStaticDataPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set the global culture for the app, current thread and all new threads
|
// Set the global culture for the app, current thread and all new threads
|
||||||
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
|
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
|
||||||
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
|
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
|
||||||
|
|
@ -167,42 +180,22 @@ namespace MatterHackers.MatterControl
|
||||||
ApplicationVersion = VersionInfo.Instance.ReleaseVersion
|
ApplicationVersion = VersionInfo.Instance.ReleaseVersion
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// If MatterControl isn't running and valid files were shelled, schedule a StartupAction to open the files after load
|
||||||
|
var shellFiles = args.Where(f => File.Exists(f) && ApplicationController.ShellFileExtensions.Contains(Path.GetExtension(f).ToLower())).ToArray();
|
||||||
|
|
||||||
|
// Single instance handling.
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
if (AggContext.OperatingSystem == OSType.Windows)
|
if (!LocalService.TryStartServer())
|
||||||
{
|
{
|
||||||
waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, "MatterControl#Startup", out bool created);
|
if (shellFiles.Any())
|
||||||
|
|
||||||
if (!created)
|
|
||||||
{
|
{
|
||||||
// If an instance is already running, create a service proxy and execute ShellOpenFile
|
LocalService.TrySendToServer(shellFiles);
|
||||||
var proxy = new ServiceProxy();
|
|
||||||
|
|
||||||
// and at least one argument is an acceptable shell file extension
|
|
||||||
var itemsToAdd = args.Where(f => File.Exists(f) && ApplicationController.ShellFileExtensions.Contains(Path.GetExtension(f).ToLower()));
|
|
||||||
if (itemsToAdd.Any())
|
|
||||||
{
|
|
||||||
// notify the running instance of the event
|
|
||||||
proxy.ShellOpenFile(itemsToAdd.ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
System.Threading.Thread.Sleep(1000);
|
|
||||||
|
|
||||||
// Finally, close the process spawned by Explorer.exe
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var serviceHost = new ServiceHost(typeof(LocalService), new[] { new Uri(ServiceBaseUri) });
|
return;
|
||||||
serviceHost.AddServiceEndpoint(typeof(IMainService), new NetNamedPipeBinding(), mainServiceName);
|
|
||||||
serviceHost.Open();
|
|
||||||
|
|
||||||
Console.Write(
|
|
||||||
"Service started: {0};",
|
|
||||||
string.Join(", ", serviceHost.Description.Endpoints.Select(s => s.ListenUri.AbsoluteUri).ToArray()));
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// If MatterControl isn't running and valid files were shelled, schedule a StartupAction to open the files after load
|
|
||||||
var shellFiles = args.Where(f => File.Exists(f) && ApplicationController.ShellFileExtensions.Contains(Path.GetExtension(f).ToLower()));
|
|
||||||
if (shellFiles.Any())
|
if (shellFiles.Any())
|
||||||
{
|
{
|
||||||
ApplicationController.StartupActions.Add(new ApplicationController.StartupAction()
|
ApplicationController.StartupActions.Add(new ApplicationController.StartupAction()
|
||||||
|
|
@ -318,8 +311,6 @@ namespace MatterHackers.MatterControl
|
||||||
rootSystemWindow.ShowAsSystemWindow();
|
rootSystemWindow.ShowAsSystemWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly object locker = new object();
|
|
||||||
|
|
||||||
static void KeepAwake(bool keepAwake)
|
static void KeepAwake(bool keepAwake)
|
||||||
{
|
{
|
||||||
if (keepAwake)
|
if (keepAwake)
|
||||||
|
|
@ -332,51 +323,24 @@ namespace MatterHackers.MatterControl
|
||||||
SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
|
SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LocalService : IMainService
|
|
||||||
{
|
|
||||||
public void ShellOpenFile(string[] files)
|
|
||||||
{
|
|
||||||
// If at least one argument is an acceptable shell file extension
|
|
||||||
var itemsToAdd = files.Where(f => File.Exists(f)
|
|
||||||
&& ApplicationController.ShellFileExtensions.Contains(Path.GetExtension(f).ToLower()));
|
|
||||||
|
|
||||||
if (itemsToAdd.Any())
|
|
||||||
{
|
|
||||||
lock (locker)
|
|
||||||
{
|
|
||||||
// Add each file
|
|
||||||
foreach (string file in itemsToAdd)
|
|
||||||
{
|
|
||||||
ApplicationController.Instance.ShellOpenFile(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ServiceProxy : ClientBase<IMainService>
|
|
||||||
{
|
|
||||||
public ServiceProxy()
|
|
||||||
: base(
|
|
||||||
new ServiceEndpoint(
|
|
||||||
ContractDescription.GetContract(typeof(IMainService)),
|
|
||||||
new NetNamedPipeBinding(),
|
|
||||||
new EndpointAddress($"{ServiceBaseUri}/{mainServiceName}")))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShellOpenFile(string[] files)
|
|
||||||
{
|
|
||||||
Channel.ShellOpenFile(files);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[ServiceContract]
|
|
||||||
public interface IMainService
|
[AttributeUsage(AttributeTargets.Assembly)]
|
||||||
|
public class MainOutputDirectoryAttribute : Attribute
|
||||||
{
|
{
|
||||||
[OperationContract]
|
public readonly string MainOutputDirectory; // Relative to ProjectRoot.
|
||||||
void ShellOpenFile(string[] files);
|
public readonly string ProjectRoot; // Absolute
|
||||||
|
|
||||||
|
public MainOutputDirectoryAttribute(string path, string projectRoot)
|
||||||
|
{
|
||||||
|
MainOutputDirectory = path;
|
||||||
|
ProjectRoot = projectRoot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MainOutputDirectoryAttribute GetFromProgramAssembly()
|
||||||
|
{
|
||||||
|
return typeof(MatterControl.Program).Assembly.GetCustomAttribute<MainOutputDirectoryAttribute>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,3 +34,6 @@ using System.Runtime.InteropServices;
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
||||||
|
// https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1416
|
||||||
|
[assembly: System.Runtime.Versioning.SupportedOSPlatform("windows7.0")]
|
||||||
9
Properties/launchSettings.json
Normal file
9
Properties/launchSettings.json
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"MatterControl": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"hotReloadEnabled": false,
|
||||||
|
"nativeDebugging": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue