From 03b3ec498dd17fe824c1edc53a9cb9657beeddca Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Oct 2021 11:01:09 -0600 Subject: [PATCH] Wip for 3.0 launcher --- Wabbajack.Launcher/Annotations.cs | 1163 +++++++++++++++++ Wabbajack.Launcher/App.xaml | 8 + Wabbajack.Launcher/App.xaml.cs | 11 + Wabbajack.Launcher/MainWindow.xaml | 23 + Wabbajack.Launcher/MainWindow.xaml.cs | 25 + Wabbajack.Launcher/MainWindowVM.cs | 228 ++++ .../Resources/Icons/wabbajack.ico | Bin 0 -> 142314 bytes Wabbajack.Launcher/Wabba_Mouth_Small.png | Bin 0 -> 59068 bytes Wabbajack.Launcher/Wabbajack.Launcher.csproj | 40 + Wabbajack.sln | 6 + 10 files changed, 1504 insertions(+) create mode 100644 Wabbajack.Launcher/Annotations.cs create mode 100644 Wabbajack.Launcher/App.xaml create mode 100644 Wabbajack.Launcher/App.xaml.cs create mode 100644 Wabbajack.Launcher/MainWindow.xaml create mode 100644 Wabbajack.Launcher/MainWindow.xaml.cs create mode 100644 Wabbajack.Launcher/MainWindowVM.cs create mode 100644 Wabbajack.Launcher/Resources/Icons/wabbajack.ico create mode 100644 Wabbajack.Launcher/Wabba_Mouth_Small.png create mode 100644 Wabbajack.Launcher/Wabbajack.Launcher.csproj diff --git a/Wabbajack.Launcher/Annotations.cs b/Wabbajack.Launcher/Annotations.cs new file mode 100644 index 00000000..b94830bd --- /dev/null +++ b/Wabbajack.Launcher/Annotations.cs @@ -0,0 +1,1163 @@ +/* MIT License + +Copyright (c) 2016 JetBrains http://www.jetbrains.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. */ + +using System; +// ReSharper disable InheritdocConsiderUsage + +#pragma warning disable 1591 +// ReSharper disable UnusedMember.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable IntroduceOptionalParameters.Global +// ReSharper disable MemberCanBeProtected.Global +// ReSharper disable InconsistentNaming + +namespace Wabbajack.Launcher.Annotations +{ + /// + /// Indicates that the value of the marked element could be null sometimes, + /// so checking for null is required before its usage. + /// + /// + /// [CanBeNull] object Test() => null; + /// + /// void UseTest() { + /// var p = Test(); + /// var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + /// } + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event | + AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.GenericParameter)] + public sealed class CanBeNullAttribute : Attribute { } + + /// + /// Indicates that the value of the marked element can never be null. + /// + /// + /// [NotNull] object Foo() { + /// return null; // Warning: Possible 'null' assignment + /// } + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event | + AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.GenericParameter)] + public sealed class NotNullAttribute : Attribute { } + + /// + /// Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + /// and Lazy classes to indicate that the value of a collection item, of the Task.Result property + /// or of the Lazy.Value property can never be null. + /// + /// + /// public void Foo([ItemNotNull]List<string> books) + /// { + /// foreach (var book in books) { + /// if (book != null) // Warning: Expression is always true + /// Console.WriteLine(book.ToUpper()); + /// } + /// } + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field)] + public sealed class ItemNotNullAttribute : Attribute { } + + /// + /// Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + /// and Lazy classes to indicate that the value of a collection item, of the Task.Result property + /// or of the Lazy.Value property can be null. + /// + /// + /// public void Foo([ItemCanBeNull]List<string> books) + /// { + /// foreach (var book in books) + /// { + /// // Warning: Possible 'System.NullReferenceException' + /// Console.WriteLine(book.ToUpper()); + /// } + /// } + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field)] + public sealed class ItemCanBeNullAttribute : Attribute { } + + /// + /// Indicates that the marked method builds string by the format pattern and (optional) arguments. + /// The parameter, which contains the format string, should be given in constructor. The format string + /// should be in -like form. + /// + /// + /// [StringFormatMethod("message")] + /// void ShowError(string message, params object[] args) { /* do something */ } + /// + /// void Foo() { + /// ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + /// } + /// + [AttributeUsage( + AttributeTargets.Constructor | AttributeTargets.Method | + AttributeTargets.Property | AttributeTargets.Delegate)] + public sealed class StringFormatMethodAttribute : Attribute + { + /// + /// Specifies which parameter of an annotated method should be treated as the format string + /// + public StringFormatMethodAttribute([NotNull] string formatParameterName) + { + FormatParameterName = formatParameterName; + } + + [NotNull] public string FormatParameterName { get; } + } + + /// + /// Use this annotation to specify a type that contains static or const fields + /// with values for the annotated property/field/parameter. + /// The specified type will be used to improve completion suggestions. + /// + /// + /// namespace TestNamespace + /// { + /// public class Constants + /// { + /// public static int INT_CONST = 1; + /// public const string STRING_CONST = "1"; + /// } + /// + /// public class Class1 + /// { + /// [ValueProvider("TestNamespace.Constants")] public int myField; + /// public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + /// + /// public void Test() + /// { + /// Foo(/*try completion here*/);// + /// myField = /*try completion here*/ + /// } + /// } + /// } + /// + [AttributeUsage( + AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field, + AllowMultiple = true)] + public sealed class ValueProviderAttribute : Attribute + { + public ValueProviderAttribute([NotNull] string name) + { + Name = name; + } + + [NotNull] public string Name { get; } + } + + /// + /// Indicates that the function argument should be a string literal and match one + /// of the parameters of the caller function. For example, ReSharper annotates + /// the parameter of . + /// + /// + /// void Foo(string param) { + /// if (param == null) + /// throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + /// } + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class InvokerParameterNameAttribute : Attribute { } + + /// + /// Indicates that the method is contained in a type that implements + /// System.ComponentModel.INotifyPropertyChanged interface and this method + /// is used to notify that some property value changed. + /// + /// + /// The method should be non-static and conform to one of the supported signatures: + /// + /// NotifyChanged(string) + /// NotifyChanged(params string[]) + /// NotifyChanged{T}(Expression{Func{T}}) + /// NotifyChanged{T,U}(Expression{Func{T,U}}) + /// SetProperty{T}(ref T, T, string) + /// + /// + /// + /// public class Foo : INotifyPropertyChanged { + /// public event PropertyChangedEventHandler PropertyChanged; + /// + /// [NotifyPropertyChangedInvocator] + /// protected virtual void NotifyChanged(string propertyName) { ... } + /// + /// string _name; + /// + /// public string Name { + /// get { return _name; } + /// set { _name = value; NotifyChanged("LastName"); /* Warning */ } + /// } + /// } + /// + /// Examples of generated notifications: + /// + /// NotifyChanged("Property") + /// NotifyChanged(() => Property) + /// NotifyChanged((VM x) => x.Property) + /// SetProperty(ref myField, value, "Property") + /// + /// + [AttributeUsage(AttributeTargets.Method)] + public sealed class NotifyPropertyChangedInvocatorAttribute : Attribute + { + public NotifyPropertyChangedInvocatorAttribute() { } + public NotifyPropertyChangedInvocatorAttribute([NotNull] string parameterName) + { + ParameterName = parameterName; + } + + [CanBeNull] public string ParameterName { get; } + } + + /// + /// Describes dependency between method input and output. + /// + /// + ///

Function Definition Table syntax:

+ /// + /// FDT ::= FDTRow [;FDTRow]* + /// FDTRow ::= Input => Output | Output <= Input + /// Input ::= ParameterName: Value [, Input]* + /// Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + /// Value ::= true | false | null | notnull | canbenull + /// + /// If the method has a single input parameter, its name could be omitted.
+ /// Using halt (or void/nothing, which is the same) for the method output + /// means that the method doesn't return normally (throws or terminates the process).
+ /// Value canbenull is only applicable for output parameters.
+ /// You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + /// with rows separated by semicolon. There is no notion of order rows, all rows are checked + /// for applicability and applied per each program state tracked by the analysis engine.
+ ///
+ /// + /// + /// [ContractAnnotation("=> halt")] + /// public void TerminationMethod() + /// + /// + /// [ContractAnnotation("null <= param:null")] // reverse condition syntax + /// public string GetName(string surname) + /// + /// + /// [ContractAnnotation("s:null => true")] + /// public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + /// + /// + /// // A method that returns null if the parameter is null, + /// // and not null if the parameter is not null + /// [ContractAnnotation("null => null; notnull => notnull")] + /// public object Transform(object data) + /// + /// + /// [ContractAnnotation("=> true, result: notnull; => false, result: null")] + /// public bool TryParse(string s, out Person result) + /// + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] + public sealed class ContractAnnotationAttribute : Attribute + { + public ContractAnnotationAttribute([NotNull] string contract) + : this(contract, false) { } + + public ContractAnnotationAttribute([NotNull] string contract, bool forceFullStates) + { + Contract = contract; + ForceFullStates = forceFullStates; + } + + [NotNull] public string Contract { get; } + + public bool ForceFullStates { get; } + } + + /// + /// Indicates whether the marked element should be localized. + /// + /// + /// [LocalizationRequiredAttribute(true)] + /// class Foo { + /// string str = "my string"; // Warning: Localizable string + /// } + /// + [AttributeUsage(AttributeTargets.All)] + public sealed class LocalizationRequiredAttribute : Attribute + { + public LocalizationRequiredAttribute() : this(true) { } + + public LocalizationRequiredAttribute(bool required) + { + Required = required; + } + + public bool Required { get; } + } + + /// + /// Indicates that the value of the marked type (or its derivatives) + /// cannot be compared using '==' or '!=' operators and Equals() + /// should be used instead. However, using '==' or '!=' for comparison + /// with null is always permitted. + /// + /// + /// [CannotApplyEqualityOperator] + /// class NoEquality { } + /// + /// class UsesNoEquality { + /// void Test() { + /// var ca1 = new NoEquality(); + /// var ca2 = new NoEquality(); + /// if (ca1 != null) { // OK + /// bool condition = ca1 == ca2; // Warning + /// } + /// } + /// } + /// + [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class | AttributeTargets.Struct)] + public sealed class CannotApplyEqualityOperatorAttribute : Attribute { } + + /// + /// When applied to a target attribute, specifies a requirement for any type marked + /// with the target attribute to implement or inherit specific type or types. + /// + /// + /// [BaseTypeRequired(typeof(IComponent)] // Specify requirement + /// class ComponentAttribute : Attribute { } + /// + /// [Component] // ComponentAttribute requires implementing IComponent interface + /// class MyComponent : IComponent { } + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + [BaseTypeRequired(typeof(Attribute))] + public sealed class BaseTypeRequiredAttribute : Attribute + { + public BaseTypeRequiredAttribute([NotNull] Type baseType) + { + BaseType = baseType; + } + + [NotNull] public Type BaseType { get; } + } + + /// + /// Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + /// so this symbol will not be reported as unused (as well as by other usage inspections). + /// + [AttributeUsage(AttributeTargets.All, Inherited = false)] + public sealed class UsedImplicitlyAttribute : Attribute + { + public UsedImplicitlyAttribute() + : this(ImplicitUseKindFlags.Default, ImplicitUseTargetFlags.Default) { } + + public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags) + : this(useKindFlags, ImplicitUseTargetFlags.Default) { } + + public UsedImplicitlyAttribute(ImplicitUseTargetFlags targetFlags) + : this(ImplicitUseKindFlags.Default, targetFlags) { } + + public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags, ImplicitUseTargetFlags targetFlags) + { + UseKindFlags = useKindFlags; + TargetFlags = targetFlags; + } + + public ImplicitUseKindFlags UseKindFlags { get; } + + public ImplicitUseTargetFlags TargetFlags { get; } + } + + /// + /// Can be applied to attributes, type parameters, and parameters of a type assignable from . + /// When applied to an attribute, the decorated attribute behaves the same as . + /// When applied to a type parameter or to a parameter of type , indicates that the corresponding type + /// is used implicitly. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.GenericParameter | AttributeTargets.Parameter)] + public sealed class MeansImplicitUseAttribute : Attribute + { + public MeansImplicitUseAttribute() + : this(ImplicitUseKindFlags.Default, ImplicitUseTargetFlags.Default) { } + + public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags) + : this(useKindFlags, ImplicitUseTargetFlags.Default) { } + + public MeansImplicitUseAttribute(ImplicitUseTargetFlags targetFlags) + : this(ImplicitUseKindFlags.Default, targetFlags) { } + + public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags, ImplicitUseTargetFlags targetFlags) + { + UseKindFlags = useKindFlags; + TargetFlags = targetFlags; + } + + [UsedImplicitly] public ImplicitUseKindFlags UseKindFlags { get; } + + [UsedImplicitly] public ImplicitUseTargetFlags TargetFlags { get; } + } + + /// + /// Specify the details of implicitly used symbol when it is marked + /// with or . + /// + [Flags] + public enum ImplicitUseKindFlags + { + Default = Access | Assign | InstantiatedWithFixedConstructorSignature, + /// Only entity marked with attribute considered used. + Access = 1, + /// Indicates implicit assignment to a member. + Assign = 2, + /// + /// Indicates implicit instantiation of a type with fixed constructor signature. + /// That means any unused constructor parameters won't be reported as such. + /// + InstantiatedWithFixedConstructorSignature = 4, + /// Indicates implicit instantiation of a type. + InstantiatedNoFixedConstructorSignature = 8, + } + + /// + /// Specify what is considered to be used implicitly when marked + /// with or . + /// + [Flags] + public enum ImplicitUseTargetFlags + { + Default = Itself, + Itself = 1, + /// Members of entity marked with attribute are considered used. + Members = 2, + /// Entity marked with attribute and all its members considered used. + WithMembers = Itself | Members + } + + /// + /// This attribute is intended to mark publicly available API + /// which should not be removed and so is treated as used. + /// + [MeansImplicitUse(ImplicitUseTargetFlags.WithMembers)] + [AttributeUsage(AttributeTargets.All, Inherited = false)] + public sealed class PublicAPIAttribute : Attribute + { + public PublicAPIAttribute() { } + + public PublicAPIAttribute([NotNull] string comment) + { + Comment = comment; + } + + [CanBeNull] public string Comment { get; } + } + + /// + /// Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + /// If the parameter is a delegate, indicates that delegate is executed while the method is executed. + /// If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class InstantHandleAttribute : Attribute { } + + /// + /// Indicates that a method does not make any observable state changes. + /// The same as System.Diagnostics.Contracts.PureAttribute. + /// + /// + /// [Pure] int Multiply(int x, int y) => x * y; + /// + /// void M() { + /// Multiply(123, 42); // Waring: Return value of pure method is not used + /// } + /// + [AttributeUsage(AttributeTargets.Method)] + public sealed class PureAttribute : Attribute { } + + /// + /// Indicates that the return value of the method invocation must be used. + /// + /// + /// Methods decorated with this attribute (in contrast to pure methods) might change state, + /// but make no sense without using their return value.
+ /// Similarly to , this attribute + /// will help detecting usages of the method when the return value in not used. + /// Additionally, you can optionally specify a custom message, which will be used when showing warnings, e.g. + /// [MustUseReturnValue("Use the return value to...")]. + ///
+ [AttributeUsage(AttributeTargets.Method)] + public sealed class MustUseReturnValueAttribute : Attribute + { + public MustUseReturnValueAttribute() { } + + public MustUseReturnValueAttribute([NotNull] string justification) + { + Justification = justification; + } + + [CanBeNull] public string Justification { get; } + } + + /// + /// Indicates the type member or parameter of some type, that should be used instead of all other ways + /// to get the value of that type. This annotation is useful when you have some "context" value evaluated + /// and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + /// + /// + /// class Foo { + /// [ProvidesContext] IBarService _barService = ...; + /// + /// void ProcessNode(INode node) { + /// DoSomething(node, node.GetGlobalServices().Bar); + /// // ^ Warning: use value of '_barService' field + /// } + /// } + /// + [AttributeUsage( + AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Parameter | AttributeTargets.Method | + AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct | AttributeTargets.GenericParameter)] + public sealed class ProvidesContextAttribute : Attribute { } + + /// + /// Indicates that a parameter is a path to a file or a folder within a web project. + /// Path can be relative or absolute, starting from web root (~). + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class PathReferenceAttribute : Attribute + { + public PathReferenceAttribute() { } + + public PathReferenceAttribute([NotNull, PathReference] string basePath) + { + BasePath = basePath; + } + + [CanBeNull] public string BasePath { get; } + } + + /// + /// An extension method marked with this attribute is processed by code completion + /// as a 'Source Template'. When the extension method is completed over some expression, its source code + /// is automatically expanded like a template at call site. + /// + /// + /// Template method body can contain valid source code and/or special comments starting with '$'. + /// Text inside these comments is added as source code when the template is applied. Template parameters + /// can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + /// Use the attribute to specify macros for parameters. + /// + /// + /// In this example, the 'forEach' method is a source template available over all values + /// of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + /// + /// [SourceTemplate] + /// public static void forEach<T>(this IEnumerable<T> xs) { + /// foreach (var x in xs) { + /// //$ $END$ + /// } + /// } + /// + /// + [AttributeUsage(AttributeTargets.Method)] + public sealed class SourceTemplateAttribute : Attribute { } + + /// + /// Allows specifying a macro for a parameter of a source template. + /// + /// + /// You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + /// is defined in the property. When applied on a method, the target + /// template parameter is defined in the property. To apply the macro silently + /// for the parameter, set the property value = -1. + /// + /// + /// Applying the attribute on a source template method: + /// + /// [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + /// public static void forEach<T>(this IEnumerable<T> collection) { + /// foreach (var item in collection) { + /// //$ $END$ + /// } + /// } + /// + /// Applying the attribute on a template method parameter: + /// + /// [SourceTemplate] + /// public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /// /*$ var $x$Id = "$newguid$" + x.ToString(); + /// x.DoSomething($x$Id); */ + /// } + /// + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method, AllowMultiple = true)] + public sealed class MacroAttribute : Attribute + { + /// + /// Allows specifying a macro that will be executed for a source template + /// parameter when the template is expanded. + /// + [CanBeNull] public string Expression { get; set; } + + /// + /// Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + /// + /// + /// If the target parameter is used several times in the template, only one occurrence becomes editable; + /// other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + /// use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + /// + public int Editable { get; set; } + + /// + /// Identifies the target parameter of a source template if the + /// is applied on a template method. + /// + [CanBeNull] public string Target { get; set; } + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] + public sealed class AspMvcAreaMasterLocationFormatAttribute : Attribute + { + public AspMvcAreaMasterLocationFormatAttribute([NotNull] string format) + { + Format = format; + } + + [NotNull] public string Format { get; } + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] + public sealed class AspMvcAreaPartialViewLocationFormatAttribute : Attribute + { + public AspMvcAreaPartialViewLocationFormatAttribute([NotNull] string format) + { + Format = format; + } + + [NotNull] public string Format { get; } + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] + public sealed class AspMvcAreaViewLocationFormatAttribute : Attribute + { + public AspMvcAreaViewLocationFormatAttribute([NotNull] string format) + { + Format = format; + } + + [NotNull] public string Format { get; } + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] + public sealed class AspMvcMasterLocationFormatAttribute : Attribute + { + public AspMvcMasterLocationFormatAttribute([NotNull] string format) + { + Format = format; + } + + [NotNull] public string Format { get; } + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] + public sealed class AspMvcPartialViewLocationFormatAttribute : Attribute + { + public AspMvcPartialViewLocationFormatAttribute([NotNull] string format) + { + Format = format; + } + + [NotNull] public string Format { get; } + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] + public sealed class AspMvcViewLocationFormatAttribute : Attribute + { + public AspMvcViewLocationFormatAttribute([NotNull] string format) + { + Format = format; + } + + [NotNull] public string Format { get; } + } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + /// is an MVC action. If applied to a method, the MVC action name is calculated + /// implicitly from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcActionAttribute : Attribute + { + public AspMvcActionAttribute() { } + + public AspMvcActionAttribute([NotNull] string anonymousProperty) + { + AnonymousProperty = anonymousProperty; + } + + [CanBeNull] public string AnonymousProperty { get; } + } + + /// + /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC area. + /// Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcAreaAttribute : Attribute + { + public AspMvcAreaAttribute() { } + + public AspMvcAreaAttribute([NotNull] string anonymousProperty) + { + AnonymousProperty = anonymousProperty; + } + + [CanBeNull] public string AnonymousProperty { get; } + } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + /// an MVC controller. If applied to a method, the MVC controller name is calculated + /// implicitly from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcControllerAttribute : Attribute + { + public AspMvcControllerAttribute() { } + + public AspMvcControllerAttribute([NotNull] string anonymousProperty) + { + AnonymousProperty = anonymousProperty; + } + + [CanBeNull] public string AnonymousProperty { get; } + } + + /// + /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC Master. Use this attribute + /// for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcMasterAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC model type. Use this attribute + /// for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class AspMvcModelTypeAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + /// partial view. If applied to a method, the MVC partial view name is calculated implicitly + /// from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcPartialViewAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] + public sealed class AspMvcSuppressViewErrorAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + /// Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcDisplayTemplateAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC editor template. + /// Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcEditorTemplateAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC template. + /// Use this attribute for custom wrappers similar to + /// System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcTemplateAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + /// is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + /// from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Controller.View(Object). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcViewAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + /// is an MVC view component name. + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcViewComponentAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + /// is an MVC view component view. If applied to a method, the MVC view component view name is default. + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class AspMvcViewComponentViewAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. When applied to a parameter of an attribute, + /// indicates that this parameter is an MVC action name. + /// + /// + /// [ActionName("Foo")] + /// public ActionResult Login(string returnUrl) { + /// ViewBag.ReturnUrl = Url.Action("Foo"); // OK + /// return RedirectToAction("Bar"); // Error: Cannot resolve action + /// } + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)] + public sealed class AspMvcActionSelectorAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field)] + public sealed class HtmlElementAttributesAttribute : Attribute + { + public HtmlElementAttributesAttribute() { } + + public HtmlElementAttributesAttribute([NotNull] string name) + { + Name = name; + } + + [CanBeNull] public string Name { get; } + } + + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + public sealed class HtmlAttributeValueAttribute : Attribute + { + public HtmlAttributeValueAttribute([NotNull] string name) + { + Name = name; + } + + [NotNull] public string Name { get; } + } + + /// + /// Razor attribute. Indicates that the marked parameter or method is a Razor section. + /// Use this attribute for custom wrappers similar to + /// System.Web.WebPages.WebPageBase.RenderSection(String). + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)] + public sealed class RazorSectionAttribute : Attribute { } + + /// + /// Indicates how method, constructor invocation, or property access + /// over collection type affects the contents of the collection. + /// Use to specify the access type. + /// + /// + /// Using this attribute only makes sense if all collection methods are marked with this attribute. + /// + /// + /// public class MyStringCollection : List<string> + /// { + /// [CollectionAccess(CollectionAccessType.Read)] + /// public string GetFirstString() + /// { + /// return this.ElementAt(0); + /// } + /// } + /// class Test + /// { + /// public void Foo() + /// { + /// // Warning: Contents of the collection is never updated + /// var col = new MyStringCollection(); + /// string x = col.GetFirstString(); + /// } + /// } + /// + [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Property)] + public sealed class CollectionAccessAttribute : Attribute + { + public CollectionAccessAttribute(CollectionAccessType collectionAccessType) + { + CollectionAccessType = collectionAccessType; + } + + public CollectionAccessType CollectionAccessType { get; } + } + + /// + /// Provides a value for the to define + /// how the collection method invocation affects the contents of the collection. + /// + [Flags] + public enum CollectionAccessType + { + /// Method does not use or modify content of the collection. + None = 0, + /// Method only reads content of the collection but does not modify it. + Read = 1, + /// Method can change content of the collection but does not add new elements. + ModifyExistingContent = 2, + /// Method can add new elements to the collection. + UpdatedContent = ModifyExistingContent | 4 + } + + /// + /// Indicates that the marked method is assertion method, i.e. it halts the control flow if + /// one of the conditions is satisfied. To set the condition, mark one of the parameters with + /// attribute. + /// + [AttributeUsage(AttributeTargets.Method)] + public sealed class AssertionMethodAttribute : Attribute { } + + /// + /// Indicates the condition parameter of the assertion method. The method itself should be + /// marked by attribute. The mandatory argument of + /// the attribute is the assertion type. + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class AssertionConditionAttribute : Attribute + { + public AssertionConditionAttribute(AssertionConditionType conditionType) + { + ConditionType = conditionType; + } + + public AssertionConditionType ConditionType { get; } + } + + /// + /// Specifies assertion type. If the assertion method argument satisfies the condition, + /// then the execution continues. Otherwise, execution is assumed to be halted. + /// + public enum AssertionConditionType + { + /// Marked parameter should be evaluated to true. + IS_TRUE = 0, + /// Marked parameter should be evaluated to false. + IS_FALSE = 1, + /// Marked parameter should be evaluated to null value. + IS_NULL = 2, + /// Marked parameter should be evaluated to not null value. + IS_NOT_NULL = 3, + } + + /// + /// Indicates that the marked method unconditionally terminates control flow execution. + /// For example, it could unconditionally throw exception. + /// + [Obsolete("Use [ContractAnnotation('=> halt')] instead")] + [AttributeUsage(AttributeTargets.Method)] + public sealed class TerminatesProgramAttribute : Attribute { } + + /// + /// Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + /// .Where). This annotation allows inference of [InstantHandle] annotation for parameters + /// of delegate type by analyzing LINQ method chains. + /// + [AttributeUsage(AttributeTargets.Method)] + public sealed class LinqTunnelAttribute : Attribute { } + + /// + /// Indicates that IEnumerable passed as a parameter is not enumerated. + /// Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + /// + /// + /// static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + /// { + /// // custom check for null but no enumeration + /// } + /// + /// void Foo(IEnumerable<string> values) + /// { + /// ThrowIfNull(values, nameof(values)); + /// var x = values.ToList(); // No warnings about multiple enumeration + /// } + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class NoEnumerationAttribute : Attribute { } + + /// + /// Indicates that the marked parameter is a regular expression pattern. + /// + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class RegexPatternAttribute : Attribute { } + + /// + /// Prevents the Member Reordering feature from tossing members of the marked class. + /// + /// + /// The attribute must be mentioned in your member reordering patterns. + /// + [AttributeUsage( + AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct | AttributeTargets.Enum)] + public sealed class NoReorderAttribute : Attribute { } + + /// + /// XAML attribute. Indicates the type that has ItemsSource property and should be treated + /// as ItemsControl-derived type, to enable inner items DataContext type resolve. + /// + [AttributeUsage(AttributeTargets.Class)] + public sealed class XamlItemsControlAttribute : Attribute { } + + /// + /// XAML attribute. Indicates the property of some BindingBase-derived type, that + /// is used to bind some item of ItemsControl-derived type. This annotation will + /// enable the DataContext type resolve for XAML bindings for such properties. + /// + /// + /// Property should have the tree ancestor of the ItemsControl type or + /// marked with the attribute. + /// + [AttributeUsage(AttributeTargets.Property)] + public sealed class XamlItemBindingOfItemsControlAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class AspChildControlTypeAttribute : Attribute + { + public AspChildControlTypeAttribute([NotNull] string tagName, [NotNull] Type controlType) + { + TagName = tagName; + ControlType = controlType; + } + + [NotNull] public string TagName { get; } + + [NotNull] public Type ControlType { get; } + } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] + public sealed class AspDataFieldAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] + public sealed class AspDataFieldsAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Property)] + public sealed class AspMethodPropertyAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class AspRequiredAttributeAttribute : Attribute + { + public AspRequiredAttributeAttribute([NotNull] string attribute) + { + Attribute = attribute; + } + + [NotNull] public string Attribute { get; } + } + + [AttributeUsage(AttributeTargets.Property)] + public sealed class AspTypePropertyAttribute : Attribute + { + public bool CreateConstructorReferences { get; } + + public AspTypePropertyAttribute(bool createConstructorReferences) + { + CreateConstructorReferences = createConstructorReferences; + } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + public sealed class RazorImportNamespaceAttribute : Attribute + { + public RazorImportNamespaceAttribute([NotNull] string name) + { + Name = name; + } + + [NotNull] public string Name { get; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + public sealed class RazorInjectionAttribute : Attribute + { + public RazorInjectionAttribute([NotNull] string type, [NotNull] string fieldName) + { + Type = type; + FieldName = fieldName; + } + + [NotNull] public string Type { get; } + + [NotNull] public string FieldName { get; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + public sealed class RazorDirectiveAttribute : Attribute + { + public RazorDirectiveAttribute([NotNull] string directive) + { + Directive = directive; + } + + [NotNull] public string Directive { get; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + public sealed class RazorPageBaseTypeAttribute : Attribute + { + public RazorPageBaseTypeAttribute([NotNull] string baseType) + { + BaseType = baseType; + } + public RazorPageBaseTypeAttribute([NotNull] string baseType, string pageName) + { + BaseType = baseType; + PageName = pageName; + } + + [NotNull] public string BaseType { get; } + [CanBeNull] public string PageName { get; } + } + + [AttributeUsage(AttributeTargets.Method)] + public sealed class RazorHelperCommonAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Property)] + public sealed class RazorLayoutAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Method)] + public sealed class RazorWriteLiteralMethodAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Method)] + public sealed class RazorWriteMethodAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Parameter)] + public sealed class RazorWriteMethodParameterAttribute : Attribute { } +} \ No newline at end of file diff --git a/Wabbajack.Launcher/App.xaml b/Wabbajack.Launcher/App.xaml new file mode 100644 index 00000000..499fd820 --- /dev/null +++ b/Wabbajack.Launcher/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Wabbajack.Launcher/App.xaml.cs b/Wabbajack.Launcher/App.xaml.cs new file mode 100644 index 00000000..9a6601fc --- /dev/null +++ b/Wabbajack.Launcher/App.xaml.cs @@ -0,0 +1,11 @@ +using Avalonia; + +namespace Wabbajack.Launcher +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/Wabbajack.Launcher/MainWindow.xaml b/Wabbajack.Launcher/MainWindow.xaml new file mode 100644 index 00000000..172e3422 --- /dev/null +++ b/Wabbajack.Launcher/MainWindow.xaml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/Wabbajack.Launcher/MainWindow.xaml.cs b/Wabbajack.Launcher/MainWindow.xaml.cs new file mode 100644 index 00000000..c8a7de9e --- /dev/null +++ b/Wabbajack.Launcher/MainWindow.xaml.cs @@ -0,0 +1,25 @@ +using System; +using Avalonia.Controls; + +namespace Wabbajack.Launcher +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + try + { + DataContext = new MainWindowVM(); + } + catch(Exception ex) + { + System.Console.Error.WriteLine("Error creating datacontext."); + System.Console.Error.WriteLine(ex); + throw; + } + } + } +} diff --git a/Wabbajack.Launcher/MainWindowVM.cs b/Wabbajack.Launcher/MainWindowVM.cs new file mode 100644 index 00000000..1957ea50 --- /dev/null +++ b/Wabbajack.Launcher/MainWindowVM.cs @@ -0,0 +1,228 @@ +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Net; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel; + +namespace Wabbajack.Launcher +{ + public class MainWindowVM : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + private WebClient _client = new(); + public Uri GITHUB_REPO = new("https://api.github.com/repos/wabbajack-tools/wabbajack/releases"); + + protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + private string _status = "Checking for Updates"; + private Release _version; + private List _errors = new List(); + + public string Status + { + set + { + _status = value; + OnPropertyChanged("Status"); + } + get + { + return _status; + } + } + + public MainWindowVM() + { + Task.Run(CheckForUpdates); + } + + private async Task CheckForUpdates() + { + _client.Headers.Add ("user-agent", "Wabbajack Launcher"); + Status = "Selecting Release"; + + try + { + var releases = await GetReleases(); + _version = releases.OrderByDescending(r => + { + if (r.Tag.Split(".").Length == 4 && Version.TryParse(r.Tag, out var v)) + return v; + return new Version(0, 0, 0, 0); + }).FirstOrDefault(); + } + catch (Exception ex) + { + _errors.Add(ex.Message); + await FinishAndExit(); + } + + if (_version == null) + { + _errors.Add("Unable to parse Github releases"); + await FinishAndExit(); + } + + Status = "Looking for Updates"; + + var base_folder = Path.Combine(Directory.GetCurrentDirectory(), _version.Tag); + + if (File.Exists(Path.Combine(base_folder, "Wabbajack.exe"))) + { + await FinishAndExit(); + } + + var asset = _version.Assets.FirstOrDefault(a => a.Name == _version.Tag + ".zip"); + if (asset == null) + { + _errors.Add("No zip file for release " + _version.Tag); + await FinishAndExit(); + } + + var wc = new WebClient(); + wc.DownloadProgressChanged += UpdateProgress; + Status = $"Downloading {_version.Tag} ..."; + byte[] data; + try + { + data = await wc.DownloadDataTaskAsync(asset.BrowserDownloadUrl); + } + catch (Exception ex) + { + _errors.Add(ex.Message); + // Something went wrong so fallback to original URL + try + { + data = await wc.DownloadDataTaskAsync(asset.BrowserDownloadUrl); + } + catch (Exception ex2) + { + _errors.Add(ex2.Message); + await FinishAndExit(); + throw; // avoid unsigned variable 'data' + } + } + + try + { + using (var zip = new ZipArchive(new MemoryStream(data), ZipArchiveMode.Read)) + { + foreach (var entry in zip.Entries) + { + Status = $"Extracting: {entry.Name}"; + var outPath = Path.Combine(base_folder, entry.FullName); + if (!Directory.Exists(Path.GetDirectoryName(outPath))) + Directory.CreateDirectory(Path.GetDirectoryName(outPath)); + + if (entry.FullName.EndsWith("/") || entry.FullName.EndsWith("\\")) + continue; + await using var o = entry.Open(); + await using var of = File.Create(outPath); + await o.CopyToAsync(of); + } + } + } + catch (Exception ex) + { + _errors.Add(ex.Message); + } + finally + { + await FinishAndExit(); + } + + } + + private async Task FinishAndExit() + { + try + { + Status = "Launching..."; + var wjFolder = Directory.EnumerateDirectories(Directory.GetCurrentDirectory()) + .OrderByDescending(v => + Version.TryParse(Path.GetFileName(v), out var ver) ? ver : new Version(0, 0, 0, 0)) + .FirstOrDefault(); + + var filename = Path.Combine(wjFolder, "Wabbajack.exe"); + await CreateBatchFile(filename); + var info = new ProcessStartInfo + { + FileName = filename, + Arguments = string.Join(" ", Environment.GetCommandLineArgs().Skip(1).Select(s => s.Contains(' ') ? '\"' + s + '\"' : s)), + WorkingDirectory = wjFolder, + }; + Process.Start(info); + } + catch (Exception) + { + if (_errors.Count == 0) + { + Status = "Failed: Unknown error"; + await Task.Delay(10000); + } + foreach (var error in _errors) + { + Status = "Failed: " + error; + await Task.Delay(10000); + } + } + finally + { + Environment.Exit(0); + } + } + + private async Task CreateBatchFile(string filename) + { + filename = Path.Combine(Path.GetDirectoryName(filename), "wabbajack-cli.exe"); + var data = $"\"{filename}\" %*"; + var file = Path.Combine(Directory.GetCurrentDirectory(), "wabbajack-cli.bat"); + if (File.Exists(file) && await File.ReadAllTextAsync(file) == data) return; + await File.WriteAllTextAsync(file, data); + } + + private void UpdateProgress(object sender, DownloadProgressChangedEventArgs e) + { + Status = $"Downloading {_version.Tag} ({e.ProgressPercentage}%)..."; + } + + private async Task GetReleases() + { + Status = "Checking GitHub Repository"; + var data = await _client.DownloadStringTaskAsync(GITHUB_REPO); + Status = "Parsing Response"; + return JsonSerializer.Deserialize(data)!; + } + + + class Release + { + [JsonPropertyName("tag_name")] + public string Tag { get; set; } + + [JsonPropertyName("assets")] + public Asset[] Assets { get; set; } + + } + + class Asset + { + [JsonPropertyName("browser_download_url")] + public Uri BrowserDownloadUrl { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + } + } +} diff --git a/Wabbajack.Launcher/Resources/Icons/wabbajack.ico b/Wabbajack.Launcher/Resources/Icons/wabbajack.ico new file mode 100644 index 0000000000000000000000000000000000000000..8fa8e7b0394502fac4ea90924292d10eeebc7668 GIT binary patch literal 142314 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

_afr6s_PF;Hz`{z^P8x-DPcc>r-4 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 z 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 literal 0 HcmV?d00001 diff --git a/Wabbajack.Launcher/Wabba_Mouth_Small.png b/Wabbajack.Launcher/Wabba_Mouth_Small.png new file mode 100644 index 0000000000000000000000000000000000000000..88c5c6d0547ed00e3fe1261723a76493da9ffe98 GIT binary patch literal 59068 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≈!n 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 + + + Exe + net6.0-windows + net6.0 + enable + + + + Exe + 2.5.3.1 + 2.5.3.1 + Copyright © 2019-2020 + Wabbajack Application Launcher + true + true + Wabbajack + Wabbajack + false + true + Link + + + + Resources\Icons\wabbajack.ico + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Wabbajack.sln b/Wabbajack.sln index 29f94b2b..b218174c 100644 --- a/Wabbajack.sln +++ b/Wabbajack.sln @@ -112,6 +112,8 @@ ProjectSection(SolutionItems) = preProject nuget.config = nuget.config EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wabbajack.Launcher", "Wabbajack.Launcher\Wabbajack.Launcher.csproj", "{8A4B3B2F-01EC-4C47-9470-FC06DF162D4D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -310,6 +312,10 @@ Global {DEB4B073-4EAA-49FD-9D43-F0F8CB930E7A}.Debug|Any CPU.Build.0 = Debug|Any CPU {DEB4B073-4EAA-49FD-9D43-F0F8CB930E7A}.Release|Any CPU.ActiveCfg = Release|Any CPU {DEB4B073-4EAA-49FD-9D43-F0F8CB930E7A}.Release|Any CPU.Build.0 = Release|Any CPU + {8A4B3B2F-01EC-4C47-9470-FC06DF162D4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A4B3B2F-01EC-4C47-9470-FC06DF162D4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A4B3B2F-01EC-4C47-9470-FC06DF162D4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A4B3B2F-01EC-4C47-9470-FC06DF162D4D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {4057B668-8595-44FE-9805-007B284A838F} = {98B731EE-4FC0-4482-A069-BCBA25497871}