using System.IO;
using System.Linq;
using JustDance.Engine;
using JustDance.Tools.Extern;
using Sharpmake;
namespace JustDance.Tools
{
///
/// Base class for a project part of the framework.
///
public abstract class FrameworkProject : BaseProject
{
protected const string Avalon = @"[project.SharpmakeCsProjectPath]\..\..\..\tools\extern\TeaBox\Extern\Avalon\Xceed.Wpf.AvalonDock.dll";
protected FrameworkProject()
: base("framework")
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "framework";
conf.ReferencesByName.Add("System.ComponentModel.Composition");
conf.ReferencesByName.Add("Microsoft.CSharp");
}
}
#region TeaBox
#endregion
#region CoreLevel
#region FromTeaBoxCore
///
/// Project that was created out of the old TeaBox.Core project
///
public class FromTeaBoxCoreProject : FrameworkProject
{
}
[Generate]
public class JD_Kernel : FromTeaBoxCoreProject
{
public JD_Kernel()
{
OutputType = Configuration.OutputType.DotNetClassLibrary;
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
}
}
[Generate]
public class JD_Collections : FromTeaBoxCoreProject
{
public JD_Collections()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_UserControls : FromTeaBoxCoreProject
{
public JD_UserControls()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_ColorForms : FromTeaBoxCoreProject
{
public JD_ColorForms()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Maths : FromTeaBoxCoreProject
{
public JD_Maths()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.Options.Add(Options.CSharp.AllowUnsafeBlocks.Enabled);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_ScreenWrappers : FromTeaBoxCoreProject
{
public JD_ScreenWrappers()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("PresentationCore");
conf.ReferencesByName.Add("PresentationFramework");
conf.ReferencesByName.Add("System.Core");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Xaml");
conf.ReferencesByName.Add("WindowsBase");
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Sequencers : FromTeaBoxCoreProject
{
public JD_Sequencers()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("PresentationCore");
conf.ReferencesByName.Add("PresentationFramework");
conf.ReferencesByName.Add("System.Core");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Xaml");
conf.ReferencesByName.Add("WindowsBase");
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Threading : FromTeaBoxCoreProject
{
public JD_Threading()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("PresentationCore");
conf.ReferencesByName.Add("PresentationFramework");
conf.ReferencesByName.Add("System.Core");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Xaml");
conf.ReferencesByName.Add("WindowsBase");
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_WinFormExtensions : FromTeaBoxCoreProject
{
public JD_WinFormExtensions()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("PresentationCore");
conf.ReferencesByName.Add("PresentationFramework");
conf.ReferencesByName.Add("System.Core");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Xaml");
conf.ReferencesByName.Add("WindowsBase");
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_LogService : FromTeaBoxCoreProject
{
public JD_LogService()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_MessageService : FromTeaBoxCoreProject
{
public JD_MessageService()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByName.Add("PresentationCore");
conf.ReferencesByName.Add("PresentationFramework");
conf.ReferencesByName.Add("System.Core");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Xaml");
conf.ReferencesByName.Add("WindowsBase");
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_StringParserService : FromTeaBoxCoreProject
{
public JD_StringParserService()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Reflection : FromTeaBoxCoreProject
{
public JD_Reflection()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Serializers : FromTeaBoxCoreProject
{
public JD_Serializers()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Statistics : FromTeaBoxCoreProject
{
public JD_Statistics()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_PropertyService : FromTeaBoxCoreProject
{
public JD_PropertyService()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_TeaBoxAddinSystem : FromTeaBoxCoreProject
{
public JD_TeaBoxAddinSystem()
{
AdditionalContentCopyIfNewer.Add(@"Data\Layouts\*");
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = @"framework/teabox";
conf.RegisterWpf();
conf.Options.Add(Options.CSharp.AllowUnsafeBlocks.Enabled);
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Management");
conf.ReferencesByName.Add("System.Runtime.Remoting");
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
#endregion
[Generate]
public class JD_Vault : FrameworkProject
{
public JD_Vault()
{ }
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.JdSecretsManager);
}
}
[Generate]
public class JD_Interfaces : FrameworkProject
{
public JD_Interfaces() { }
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
}
}
[Generate]
public class JD_Core : FrameworkProject
{
public JD_Core()
{
ResourceFilesExtensions.Add(".csv");
EmbeddedResourceExtensions.Add(".csv");
AdditionalContentAlwaysCopy.Add(Path.Combine(SourceRootPath, "ProjectId.txt"));
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.RegisterWpf();
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore);
conf.ReferencesByNuGetPackage.Add(Externs.NUnit);
conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute);
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Configuration");
conf.ReferencesByName.Add("System.Web.Extensions");
conf.ReferencesByName.Add("System.DirectoryServices.AccountManagement");
}
}
[Generate]
public class JD_Serialization : FrameworkProject
{
public JD_Serialization()
{
ResourceFilesExtensions.Add(".ilu");
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByName.Add("System.ComponentModel.DataAnnotations");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Design");
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore);
conf.ReferencesByNuGetPackage.Add(Externs.NUnit);
conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.RegisterNLua();
}
}
[Generate]
public class JD_Perforce : FrameworkProject
{
public JD_Perforce()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce);
conf.RegisterWpf();
conf.RegisterWinForms();
conf.RegisterWindowsFormsIntegration();
}
}
[Generate]
public class JD_Asset : FrameworkProject
{
public JD_Asset()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.Cottle);
conf.ReferencesByName.Add("System.Drawing");
}
}
[Generate]
public class JD_Remoting : FrameworkProject
{
public JD_Remoting()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.ReferencesByNuGetPackage.Add(Externs.NUnit);
conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute);
conf.RegisterWpf();
conf.RegisterWinForms();
conf.RegisterWindowsFormsIntegration();
}
}
[Generate]
public class JD_Audio : FrameworkProject
{
public JD_Audio()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByPath.Add(Externs.NAudio);
conf.ReferencesByNuGetPackage.Add(Externs.Cottle);
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Bloomberg : FrameworkProject
{
public JD_Bloomberg()
{
// TODO: this.MergeDependency(); <-- delete this project
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
AdditionalContentCopyIfNewer.Add(@"bloomberg_settings_tools.ini");
}
}
[Generate]
public class JD_ElasticSearch : FrameworkProject
{
public JD_ElasticSearch()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByPath.Add(Externs.ElasticSearch);
conf.ReferencesByPath.Add(Externs.Nest);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
}
}
[Generate]
public class JD_Localization_Core : FrameworkProject
{
public JD_Localization_Core()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
}
}
#endregion
#region GuiLevel
[Generate]
public class JD_WPF : FrameworkProject
{
public JD_WPF() { }
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByName.Add("System.Drawing");
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.RegisterWpf();
}
}
[Generate]
public class JD_Controls : FrameworkProject
{
public JD_Controls()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.SolutionFolder = "framework/controls";
}
}
[Generate]
public class JD_Filters : FrameworkProject
{
public JD_Filters()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWinForms();
conf.RegisterWindowsFormsIntegration();
conf.RegisterWpf();
conf.ReferencesByPath.Add(Externs.XceedDatagrid);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
conf.SolutionFolder = "framework/controls";
}
}
[Generate]
public class JD_Pickers : FrameworkProject
{
public JD_Pickers()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWinForms();
conf.RegisterWindowsFormsIntegration();
conf.RegisterWpf();
conf.ReferencesByPath.Add(Externs.XceedDatagrid);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.SolutionFolder = "framework/controls";
}
}
[Generate]
public class JD_PropertyEditor : FrameworkProject
{
public JD_PropertyEditor()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.ReferencesByName.Add("System.Drawing");
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorDependency);
conf.AddPublicDependency(target);
TeaBoxProject.ConfigureResourceScheme(this);
conf.SolutionFolder = "framework/controls";
}
}
#endregion
#region AppLevel
[Generate]
public class JD_Application : FrameworkProject
{
public JD_Application()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByName.Add("System.Drawing");
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Application_TeaBox : FrameworkProject
{
public JD_Application_TeaBox()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add("ProfessionalSpammer", "1.5.0");
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore);
conf.ReferencesByNuGetPackage.Add(Externs.NUnit);
conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute);
conf.AddPublicDependency(target);
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByPath.Add(Externs.NAudio);
conf.ReferencesByPath.Add(Externs.SandBar);
TeaBoxProject.ConfigureResourceScheme(this);
AdditionalNone.Add(@"[project.SourceRootPath]\project.json");
conf.RegisterWpf();
}
}
[Generate]
public class JD_CurveEditor : FrameworkProject
{
public JD_CurveEditor()
{
TeaBoxProject.ConfigureResourceScheme(this);
}
public override bool UnitTestCompliant
{
get { return true; }
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.RegisterWinForms();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByName.Remove("System.ComponentModel.Composition");
conf.ReferencesByPath.Add(Externs.SandBar);
conf.SolutionFolder = "framework/controls";
}
}
[Generate]
public class JD_VideoPlayer : FrameworkProject
{
public JD_VideoPlayer()
{
TeaBoxProject.ConfigureResourceScheme(this);
AddTargets(Utilities.GetDefaultTargets());
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWinForms();
conf.ReferencesByName.Remove("System.ComponentModel.Composition");
conf.ReferencesByPath.Add(PleoNet.DllPath);
conf.AddPublicDependency(target);
conf.SolutionFolder = "framework/controls";
conf.ReferencesByNuGetPackage.Add(Externs.FFmpegNet);
AdditionalContentCopyIfNewer.Add(BranchRoot + @"\extern\ffmpeg\ffmpeg.exe");
}
}
[Generate]
public class JD_Timeline : FrameworkProject
{
public JD_Timeline()
{
AddTargets(Utilities.GetDefaultTargets());
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWinForms();
conf.RegisterWindowsFormsIntegration();
conf.RegisterWpf();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByPath.Add(Externs.CameraScoringFilesInfoProvider);
conf.ReferencesByPath.Add(Externs.SandGrid);
conf.ReferencesByPath.Add(Externs.SandBar);
conf.ReferencesByPath.Add(PleoNet.DllPath);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce);
TeaBoxProject.ConfigureResourceScheme(this);
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Timeline_Plume : FrameworkProject
{
public JD_Timeline_Plume()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWinForms();
conf.RegisterWpf();
conf.RegisterWindowsFormsIntegration();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
#endregion
#region SpecificApps
[Generate]
public class DjRedo_Core : FrameworkProject
{
public DjRedo_Core()
{
Name = "DjRedo.Core";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByName.Add("System.Configuration");
conf.ReferencesByName.Add("System.Web.Extensions");
conf.ReferencesByName.Add("System.Runtime.Serialization");
conf.ReferencesByName.Add("System.ComponentModel.DataAnnotations");
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftCore);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add("System.Reactive.Core", "3.0.0.0");
conf.ReferencesByNuGetPackage.Add("System.Reactive.Interfaces", "3.0.0.0");
conf.ReferencesByNuGetPackage.Add("System.Reactive.Linq", "3.0.0.0");
conf.ReferencesByNuGetPackage.Add(Externs.WaapiNetCore);
conf.ReferencesByNuGetPackage.Add("Collections.Complete", "0.0.8");
conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget);
AdditionalNoneAlwaysCopy.Add("Configuration/defaultConfiguration.xml");
AdditionalNoneAlwaysCopy.Add("Configuration/DjRedoConfiguration.xsd");
conf.AddPublicDependency(target);
}
}
[Generate]
public class JD_Soundwich_Core : FrameworkProject
{
public JD_Soundwich_Core()
{
ResourcesPath = @"[project.SourceRootPath]\Resources";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWinForms();
conf.RegisterWpf();
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByName.Add("WindowsFormsIntegration");
AdditionalContentCopyIfNewer.Add("Soundwich.dll");
AdditionalContentCopyIfNewer.Add("libvorbis.dll");
AdditionalContentCopyIfNewer.Add("libogg.dll");
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproDockingDependency);
}
}
#endregion
#region Plume
public abstract class PlumeFrameworkProject : FrameworkProject
{
protected PlumeFrameworkProject()
{
SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\framework\[project.Name]";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.SolutionFolder = "framework/plume/framework";
}
}
public abstract class PlumeConsoleModuleProject : FrameworkProject
{
protected PlumeConsoleModuleProject()
{
SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\modules\Console\[project.Name]";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.Options.Add(Options.CSharp.TreatWarningsAsErrors.Disabled);
conf.ReferencesByNuGetPackage.Add(Externs.CommandLineParser);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.SolutionFolder = "framework/plume/modules/console";
}
}
public abstract class PlumeWPFModuleProject : FrameworkProject
{
protected PlumeWPFModuleProject()
{
SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\modules\WPF\[project.Name]";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.Options.Add(Options.CSharp.TreatWarningsAsErrors.Disabled);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.RegisterWpf();
conf.SolutionFolder = "framework/plume/modules/wpf";
}
}
public abstract class PlumeServiceProject : FrameworkProject
{
protected PlumeServiceProject()
{
SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\services\[project.Name]";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
conf.AddPublicDependency(target); // TODO: Plume.Interface should be splitted even more
conf.SolutionFolder = "framework/plume/services";
}
}
///
/// Library containing core classes for services and modules
///
[Generate]
public class Plume_Core : PlumeFrameworkProject
{
public Plume_Core()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
//conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget);
conf.ReferencesByNuGetPackage.Add("NLog", "4.4.12");
}
}
///
/// Library containing interfaces and abstract classes only
/// that is shared between console applications and modules
///
[Generate]
public class Plume_Interfaces : PlumeFrameworkProject
{
public Plume_Interfaces()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
}
}
///
/// Library containing interfaces and abstract classes only
/// that is shared between Console applications
///
[Generate]
public class Plume_Interfaces_Console : PlumeFrameworkProject
{
public Plume_Interfaces_Console()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
}
}
///
/// Library containing interfaces and abstract classes only
/// that is shared between WPF applications and modules
///
[Generate]
public class Plume_Interfaces_WPF : PlumeFrameworkProject
{
public Plume_Interfaces_WPF()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.RegisterWpf();
conf.ReferencesByNuGetPackage.Add(Externs.ActiproDockingDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSyntaxEditorDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproTextDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency);
}
}
///
/// Library containing icons in multiple resolutions, and themable
///
[Generate]
public class Plume_Icons : PlumeFrameworkProject
{
public Plume_Icons()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
}
}
///
/// Project for WPF specific code
/// Converters, ViewModel helpers...
///
[Generate]
public class Plume_WPF : PlumeFrameworkProject
{
public Plume_WPF()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency);
}
}
///
/// Actipro add-on for themed data grids
///
[Generate]
public class DataGrid_Contrib : PlumeFrameworkProject
{
public DataGrid_Contrib()
{
SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\src\framework\Actipro\[project.Name]";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder += @"\Actipro";
conf.RegisterWpf();
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency);
}
}
///
/// Library defining a console application
/// implementing interfaces from
///
[Generate]
public class Plume_Application : PlumeFrameworkProject
{
public Plume_Application()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.CommandLineParser);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
}
}
///
/// Library defining a Console application
/// implementing interfaces from
///
[Generate]
public class Plume_Application_Console : PlumeFrameworkProject
{
public Plume_Application_Console()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
}
}
///
/// Library defining a WPF application
/// implementing interfaces from
///
[Generate]
public class Plume_Application_WPF : PlumeFrameworkProject
{
public Plume_Application_WPF()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.RegisterWpf();
conf.ReferencesByNuGetPackage.Add(Externs.ActiproDockingDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorInteropGridDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ToastNotifications);
conf.ReferencesByNuGetPackage.Add(Externs.ToastNotificationsMessages);
conf.ReferencesByNuGetPackage.Add("Ben.Demystifier", "0.1.4");
}
}
///
/// Library defining some WPF editors
///
[Generate]
public class Plume_Editors_WPF : PlumeFrameworkProject
{
public Plume_Editors_WPF()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.RegisterWpf();
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSharedDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproEditorDependency);
}
}
///
/// Service to handle MetaData
///
[Generate]
public class Plume_MetaData_Service : PlumeServiceProject
{
public Plume_MetaData_Service()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
}
}
///
/// For handling MetaData through ElasticSearch
///
[Generate]
public class Plume_MetaData_ElasticSearch : PlumeServiceProject
{
public Plume_MetaData_ElasticSearch()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.NestNuget);
conf.ReferencesByNuGetPackage.Add(Externs.NestJsonNuget);
conf.AddPublicDependency(target);
}
}
///
/// Service to handle Perforce
///
[Generate]
public class Plume_Perforce_Service : PlumeServiceProject
{
public Plume_Perforce_Service()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftPerforce);
}
}
///
/// Service to handle Bloomberg
///
[Generate]
public class Plume_Bloomberg_Service : PlumeServiceProject
{
public Plume_Bloomberg_Service()
{
ResourceFilesExtensions.Add(".ini");
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.BloombergClient);
}
}
///
/// Service to handle Quik
///
[Generate]
public class Plume_Quik_Service : PlumeServiceProject
{
public Plume_Quik_Service()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.QuikCore);
conf.ReferencesByNuGetPackage.Add(Externs.QuikRemoting);
conf.ReferencesByNuGetPackage.Add(Externs.QuikControl);
}
}
///
/// Service to handle Tracking
///
[Generate]
public class Plume_Tracking_Service : PlumeServiceProject
{
public Plume_Tracking_Service()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByName.Add("System.DirectoryServices.AccountManagement");
}
}
///
/// Module to say "HelloWorld"
///
[Generate]
public class Plume_HelloWorld : PlumeConsoleModuleProject
{
public Plume_HelloWorld()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
// add services with "conf.AddPublicDependency(target);"
}
}
///
/// Module to handle Perforce
///
[Generate]
public class Plume_Perforce : PlumeWPFModuleProject
{
public Plume_Perforce()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
}
}
///
/// Properties module
///
[Generate]
public class Plume_Properties : PlumeWPFModuleProject
{
public Plume_Properties()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproGridsDependency);
}
}
///
/// Module to edit text documents
///
[Generate]
public class Plume_TextEditor : PlumeWPFModuleProject
{
public Plume_TextEditor()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproSyntaxEditorDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproTextDependency);
conf.ReferencesByNuGetPackage.Add(Externs.ActiproTextLLParserDependency);
}
}
///
/// Module to handle Tracking
///
[Generate]
public class Plume_Tracking : PlumeWPFModuleProject
{
public Plume_Tracking()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.UbisoftStudio);
}
}
///
/// Module to view image documents
///
[Generate]
public class Plume_ImageViewer : PlumeWPFModuleProject
{
public Plume_ImageViewer()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
}
}
///
/// Module to log in output
///
[Generate]
public class Plume_Output : PlumeWPFModuleProject
{
public Plume_Output()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
//conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget);
conf.ReferencesByNuGetPackage.Add("NLog", "4.4.12");
}
}
///
/// Module to log errors, warnings, messages
///
[Generate]
public class Plume_ErrorList : PlumeWPFModuleProject
{
public Plume_ErrorList()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
//conf.ReferencesByNuGetPackage.Add(Externs.NLogNuget);
conf.ReferencesByNuGetPackage.Add("NLog", "4.4.12");
}
}
///
/// Wpf module to handle crashes
///
[Generate]
public class Plume_CrashReporter : PlumeWPFModuleProject
{
public Plume_CrashReporter()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency(target);
}
}
///
/// Wpf module to handle markfdown documents
///
[Generate]
public class Plume_Markdown : PlumeWPFModuleProject
{
public Plume_Markdown()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.Markdig);
}
}
///
/// Tool to export svg into multiple resolutions and themed png
///
[Generate]
public class IconGenerator : FrameworkProject
{
public IconGenerator()
{
SourceRootPath = @"[project.RootPath]\[project.ProjectType]\Plume\tools\[project.Name]";
OutputType = Configuration.OutputType.DotNetConsoleApp;
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.RegisterWpf();
conf.Options.Add(Options.Vc.Compiler.GenerateXMLDocumentation.Enable);
conf.Options.Add(Options.CSharp.TreatWarningsAsErrors.Enabled);
conf.ReferencesByNuGetPackage.Add(Externs.Morelinq);
conf.ReferencesByNuGetPackage.Add(Externs.Svg);
conf.ReferencesByName.Add("System.Drawing");
conf.SolutionFolder = "framework/plume/tools";
}
}
#endregion
#region AdditionalFileGenerator
// Class called through MEF
public class SerializationFilesGenerator : IAdditionalFileGenerator
{
///
/// Generated c# file names are deterministic.
///
/// This constant must be synchronized with CSharpCooker.cpp
private const int FileCount = 10;
public void Generate()
{
var project = new JD_Serialization();
var basePath = project.ResolveString(project.SourceRootPath);
var directory = Path.Combine(basePath, "uaf");
string baseFactorFileName = Path.Combine(directory, "UAF_base.cs");
if (!File.Exists(baseFactorFileName))
{
if (!Directory.Exists(directory))
Directory.CreateDirectory(directory);
File.WriteAllText(baseFactorFileName, "");
}
for (int i = 1; i <= FileCount; i++)
{
string fileName = Path.Combine(basePath, string.Format("uaf\\UAF_Factory_{0:00}.cs", i));
if (!File.Exists(fileName))
{
File.WriteAllText(fileName, "");
}
}
}
}
public class ProjectIdGenerator : IAdditionalFileGenerator
{
public void Generate()
{
AutoGenerateFileAssociations();
}
private void AutoGenerateFileAssociations()
{
var project = new JD_Core();
string fileAssociationsContent = "";
var fileAssociations = Utilities.GetInstances().SelectMany(x => x.FileAssociations).ToList();
var icons = fileAssociations.Icons().ToList();
foreach (var fileAssociation in fileAssociations)
{
fileAssociationsContent += string.Format("{0};{1};{2};{3}\n", fileAssociation.Extension, fileAssociation.ApplicationName, icons.IndexOf(fileAssociation.IconPath) + 1, fileAssociation.IconPath);
}
var resourcesPath = project.ResolveString(project.ResourcesPath);
if (!Directory.Exists(resourcesPath))
{
Directory.CreateDirectory(resourcesPath);
}
var filePath = Path.GetFullPath(project.ResolveString(string.Format(@"{0}\Resources\FileAssociations.csv", project.SourceRootPath)));
if (File.Exists(filePath))
{
File.SetAttributes(filePath, FileAttributes.Normal);
}
File.WriteAllText(filePath, fileAssociationsContent);
}
}
#endregion
#region Adobe
[Generate]
public class Shuttle_Api : FrameworkProject
{
public Shuttle_Api()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
conf.SolutionFolder = "framework/adobe";
}
}
[Generate]
public class Shuttle : FrameworkProject
{
public Shuttle()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "framework/adobe";
conf.AddPublicDependency(target);
conf.ReferencesByName.Add("System.Drawing");
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
// SignalR
conf.ReferencesByNuGetPackage.Add(Externs.SignalR);
conf.ReferencesByNuGetPackage.Add(Externs.OwinHosting);
conf.ReferencesByNuGetPackage.Add(Externs.OwinHttpListener);
// TODO: move tests to appropriateOwinHttpListener folder and project
conf.ReferencesByNuGetPackage.Add(Externs.NUnit);
conf.ReferencesByNuGetPackage.Add(Externs.NSubstitute);
}
}
[Generate]
public class ShuttleInstaller : FrameworkProject
{
public ShuttleInstaller()
{
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "framework/adobe";
conf.ReferencesByName.Add("System.IO.Compression.FileSystem");
conf.AddPublicDependency(target);
conf.ReferencesByNuGetPackage.Add(Externs.NewtonsoftJsonNuget);
conf.ReferencesByNuGetPackage.Add(Externs.RestSharpNuGet);
}
}
#endregion
}