mattercontrol/MatterControlLib/Program.cs

119 lines
4.1 KiB
C#
Raw Normal View History

using System;
using System.Globalization;
using System.IO;
using System.Threading;
2017-09-24 07:49:51 -07:00
using MatterHackers.Agg.Platform;
using MatterHackers.Agg.UI;
using MatterHackers.MatterControl.DataStorage;
2017-09-24 08:07:59 -07:00
using MatterHackers.MatterControl.SettingsManagement;
2018-09-02 13:50:43 -07:00
using MatterHackers.MatterControl.SlicerConfiguration;
using Microsoft.Extensions.Configuration;
//using Mindscape.Raygun4Net;
namespace MatterHackers.MatterControl
{
public static class MatterControlLib
{
private const int RaygunMaxNotifications = 15;
private static int raygunNotificationCount = 0;
2017-08-22 14:58:13 -07:00
//private static RaygunClient _raygunClient;
2017-12-17 00:17:21 -08:00
2018-09-02 13:50:43 -07:00
private class SlicerOptions
{
public bool Debug { get; set; }
}
/// <summary>
/// The main entry point for the application.
/// </summary>
public static void Main()
{
2018-01-03 10:46:39 -08:00
// this sets the global culture for the app and all new threads
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
2018-01-03 10:46:39 -08:00
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
2018-01-24 09:04:33 -08:00
// and make sure the app is set correctly
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
2018-01-03 10:46:39 -08:00
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
//if (AggContext.OperatingSystem == OSType.Mac)
//{
// _raygunClient = new RaygunClient("qmMBpKy3OSTJj83+tkO7BQ=="); // this is the Mac key
//}
//else
//{
// _raygunClient = new RaygunClient("hQIlyUUZRGPyXVXbI6l1dA=="); // this is the PC key
//}
2018-02-01 12:10:03 -08:00
2018-09-02 13:50:43 -07:00
// Set default Agg providers
AggContext.Config.ProviderTypes.SystemWindow = "MatterHackers.Agg.UI.OpenGLSystemWindow, agg_platform_win32";
AggContext.Config.ProviderTypes.SystemWindowProvider = "MatterHackers.Agg.UI.WinformsSystemWindowProvider, agg_platform_win32";
2018-09-04 12:18:11 -07:00
string userProfilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
2018-09-02 13:50:43 -07:00
// Load optional user configuration
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true)
2018-09-04 12:18:11 -07:00
.AddJsonFile(Path.Combine(userProfilePath, "MatterControl.json"), optional: true)
2018-09-02 13:50:43 -07:00
.Build();
// Override defaults via configuration
config.Bind("Agg:ProviderTypes", AggContext.Config.ProviderTypes);
config.Bind("Agg:GraphicsMode", AggContext.Config.GraphicsMode);
2018-09-04 12:18:11 -07:00
2018-09-02 13:50:43 -07:00
Slicer.RunInProcess = config.GetValue<bool>("MatterControl:Slicer:Debug");
// Make sure we have the right working directory as we assume everything relative to the executable.
Directory.SetCurrentDirectory(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location));
Datastore.Instance.Initialize();
//#if !DEBUG
// // Conditionally spin up error reporting if not on the Stable channel
// string channel = UserSettings.Instance.get(UserSettingsKey.UpdateFeedType);
// if (string.IsNullOrEmpty(channel) || channel != "release" || OemSettings.Instance.WindowTitleExtra == "Experimental")
//#endif
// {
// System.Windows.Forms.Application.ThreadException += (s, e) =>
// {
// if(raygunNotificationCount++ < RaygunMaxNotifications)
// {
// _raygunClient.Send(e.Exception);
// }
// };
// AppDomain.CurrentDomain.UnhandledException += (s, e) =>
// {
// if (raygunNotificationCount++ < RaygunMaxNotifications)
// {
// _raygunClient.Send(e.ExceptionObject as Exception);
// }
// };
// }
// Init platformFeaturesProvider before ShowAsSystemWindow
string platformFeaturesProvider = "MatterHackers.MatterControl.WindowsPlatformsFeatures, MatterControl.Winforms";
AppContext.Platform = AggContext.CreateInstanceFrom<INativePlatformFeatures>(platformFeaturesProvider);
AppContext.Platform.ProcessCommandline();
// Get startup bounds from MatterControl and construct system window
//var systemWindow = new DesktopMainWindow(400, 200)
var (width, height) = RootSystemWindow.GetStartupBounds();
var systemWindow = Application.LoadRootWindow(width, height);
systemWindow.ShowAsSystemWindow();
2017-12-17 00:17:21 -08:00
}
// ** Standard Winforms Main ** //
//[STAThread]
//static void Main()
//{
// Application.EnableVisualStyles();
// Application.SetCompatibleTextRenderingDefault(false);
// Application.Run(new Form1());
//}
}
}