mirror of
https://github.com/VitalickS/BrightSharp.Toolkit.git
synced 2026-03-20 18:11:20 +00:00
Initial
This commit is contained in:
24
AppleJobs.Data/App.config
Normal file
24
AppleJobs.Data/App.config
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
</configSections>
|
||||
<entityFramework>
|
||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
|
||||
<parameters>
|
||||
<parameter value="v13.0" />
|
||||
</parameters>
|
||||
</defaultConnectionFactory>
|
||||
<providers>
|
||||
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="MySql.Data.MySqlClient" />
|
||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
</configuration>
|
||||
124
AppleJobs.Data/AppleJobs.Data.csproj
Normal file
124
AppleJobs.Data/AppleJobs.Data.csproj
Normal file
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{B4695C76-31FF-4BF1-9DC6-1BC62D374091}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>AppleJobs.Data</RootNamespace>
|
||||
<AssemblyName>AppleJobs.Data</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.Identity.EntityFramework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MySql.Data.Entity.6.9.9\lib\net45\MySql.Data.Entity.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AppleJobsContext.cs" />
|
||||
<Compile Include="Models\Inventory\Accessories.cs" />
|
||||
<Compile Include="Models\Customer.cs" />
|
||||
<Compile Include="Models\Inventory\Employee.cs" />
|
||||
<Compile Include="Models\ModelsJobs\Model.cs" />
|
||||
<Compile Include="Models\ModelsJobs\ModelJobPriceTemplate.cs" />
|
||||
<Compile Include="Models\ModelsJobs\ModelJob.cs" />
|
||||
<Compile Include="Models\ModelsJobs\ModelCategory.cs" />
|
||||
<Compile Include="Models\Orders\Order.cs" />
|
||||
<Compile Include="Models\Orders\OrderCategory.cs" />
|
||||
<Compile Include="Models\Orders\OrderStatus.cs" />
|
||||
<Compile Include="Models\TsModelAttribute.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
51
AppleJobs.Data/AppleJobsContext.cs
Normal file
51
AppleJobs.Data/AppleJobsContext.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using AppleJobs.Data.Models;
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using Microsoft.AspNet.Identity.EntityFramework;
|
||||
using MySql.Data.Entity;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Data.Entity;
|
||||
|
||||
namespace AppleJobs.Data
|
||||
{
|
||||
[DbConfigurationType(typeof(MySqlEFConfiguration))]
|
||||
public class AppleJobsContext : IdentityDbContext<ApplicationUser>
|
||||
{
|
||||
#region Common
|
||||
|
||||
public DbSet<Customer> Customers { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Orders
|
||||
|
||||
public DbSet<OrderCategory> OrderCategories { get; set; }
|
||||
public DbSet<Order> Orders { get; set; }
|
||||
public DbSet<OrderView> OrdersView { get; set; }
|
||||
public DbSet<OrderStatus> OrderStatuses { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Inventory
|
||||
|
||||
public DbSet<Accessories> Accessories { get; set; }
|
||||
public DbSet<Employee> Employees { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Prices
|
||||
|
||||
public DbSet<Model> Models { get; set; }
|
||||
public DbSet<ModelJob> ModelJobs { get; set; }
|
||||
public DbSet<ModelCategory> ModelCategories { get; set; }
|
||||
public DbSet<ModelJobPriceTemplate> ModelJobPriceTemplates { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
public AppleJobsContext(string connection = "Default") : base(connection)
|
||||
{
|
||||
}
|
||||
}
|
||||
public class ApplicationUser : IdentityUser
|
||||
{
|
||||
}
|
||||
}
|
||||
14
AppleJobs.Data/Models/Customer.cs
Normal file
14
AppleJobs.Data/Models/Customer.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models.ModelsJobs
|
||||
{
|
||||
public class Customer
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Code { get; set; }
|
||||
public string MainEmail { get; set; }
|
||||
}
|
||||
}
|
||||
12
AppleJobs.Data/Models/Inventory/Accessories.cs
Normal file
12
AppleJobs.Data/Models/Inventory/Accessories.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models
|
||||
{
|
||||
public class Accessories
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
14
AppleJobs.Data/Models/Inventory/Employee.cs
Normal file
14
AppleJobs.Data/Models/Inventory/Employee.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models
|
||||
{
|
||||
public class Employee
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string ContactInfo { get; set; }
|
||||
public string Email { get; set; }
|
||||
}
|
||||
}
|
||||
21
AppleJobs.Data/Models/ModelsJobs/Model.cs
Normal file
21
AppleJobs.Data/Models/ModelsJobs/Model.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models.ModelsJobs
|
||||
{
|
||||
public class Model
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int ModelCategories_Id { get; set; }
|
||||
|
||||
[ForeignKey(nameof(ModelCategories_Id))]
|
||||
public virtual ModelCategory ModelCategory { get; set; }
|
||||
public virtual ICollection<ModelJob> ModelJobs { get; set; }
|
||||
|
||||
public string FilterString { get { return string.Format("{0},{1}", Name, ModelCategory?.FilterString); } }
|
||||
|
||||
}
|
||||
}
|
||||
15
AppleJobs.Data/Models/ModelsJobs/ModelCategory.cs
Normal file
15
AppleJobs.Data/Models/ModelsJobs/ModelCategory.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models.ModelsJobs
|
||||
{
|
||||
public class ModelCategory
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
|
||||
public string FilterString { get { return string.Format("{0}", Name); } }
|
||||
|
||||
}
|
||||
}
|
||||
19
AppleJobs.Data/Models/ModelsJobs/ModelJob.cs
Normal file
19
AppleJobs.Data/Models/ModelsJobs/ModelJob.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models.ModelsJobs
|
||||
{
|
||||
public class ModelJob
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
public int Models_Id { get; set; }
|
||||
|
||||
[ForeignKey(nameof(Models_Id))]
|
||||
public virtual Model Model { get; set; }
|
||||
|
||||
public string FilterString { get { return string.Format("{0},{1},{2}", Name, Description, Model?.FilterString); } }
|
||||
}
|
||||
}
|
||||
22
AppleJobs.Data/Models/ModelsJobs/ModelJobPriceTemplate.cs
Normal file
22
AppleJobs.Data/Models/ModelsJobs/ModelJobPriceTemplate.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models.ModelsJobs
|
||||
{
|
||||
public class ModelJobPriceTemplate
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public double? Price { get; set; }
|
||||
public bool IsPriceFrom { get; set; }
|
||||
public int ModelJobs_Id { get; set; }
|
||||
public int Customers_Id { get; set; }
|
||||
|
||||
[ForeignKey(nameof(Customers_Id))]
|
||||
public virtual Customer Customer { get; set; }
|
||||
[ForeignKey(nameof(ModelJobs_Id))]
|
||||
public virtual ModelJob ModelJob { get; set; }
|
||||
|
||||
public string FilterString { get { return string.Format("{0},{1}", Price, ModelJob?.FilterString); } }
|
||||
}
|
||||
}
|
||||
104
AppleJobs.Data/Models/Orders/Order.cs
Normal file
104
AppleJobs.Data/Models/Orders/Order.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models
|
||||
{
|
||||
[TsModel]
|
||||
public class OrderView
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Contact { get; set; }
|
||||
public string Comment { get; set; }
|
||||
public DateTime DateCreated { get; set; }
|
||||
public DateTime? DateClosed { get; set; }
|
||||
public DateTime DateUpdated { get; set; }
|
||||
public string UserCreated { get; set; }
|
||||
public bool? IsFast { get; set; }
|
||||
public bool? IsDrive { get; set; }
|
||||
public int? Price { get; set; }
|
||||
|
||||
public int OrderStatuses_Id { get; set; }
|
||||
public int Models_Id { get; set; }
|
||||
public int? ModelJobs_Id { get; set; }
|
||||
public int Customers_Id { get; set; }
|
||||
public int? Accessories_Id { get; set; }
|
||||
public int? Employees_Id { get; set; }
|
||||
public int OrderCategories_Id { get; set; }
|
||||
|
||||
//Joined
|
||||
public string Status { get; set; }
|
||||
public string Model { get; set; }
|
||||
public string ModelJob { get; set; }
|
||||
public string Customer { get; set; }
|
||||
public string Accessories { get; set; }
|
||||
public string Employee { get; set; }
|
||||
public string OrderCategory { get; set; }
|
||||
public string FilterString { get; set; }
|
||||
}
|
||||
|
||||
[TsModel]
|
||||
public class Order
|
||||
{
|
||||
public Order()
|
||||
{
|
||||
DateCreated = DateUpdated = DateTime.Now;
|
||||
}
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Contact { get; set; }
|
||||
public string Comment { get; set; }
|
||||
public DateTime DateCreated { get; set; }
|
||||
public DateTime? DateClosed { get; set; }
|
||||
public DateTime DateUpdated { get; set; }
|
||||
public string UserCreated { get; set; }
|
||||
public bool? IsFast { get; set; }
|
||||
public bool? IsDrive { get; set; }
|
||||
public int? Price { get; set; }
|
||||
|
||||
public int OrderStatuses_Id { get; set; }
|
||||
public int Models_Id { get; set; }
|
||||
public int? ModelJobs_Id { get; set; }
|
||||
public int Customers_Id { get; set; }
|
||||
public int? Accessories_Id { get; set; }
|
||||
public int? Employees_Id { get; set; }
|
||||
|
||||
|
||||
[ForeignKey(nameof(OrderStatuses_Id))]
|
||||
public virtual OrderStatus OrderStatus { get; set; }
|
||||
|
||||
[ForeignKey(nameof(Models_Id))]
|
||||
public virtual Model Model { get; set; }
|
||||
|
||||
[ForeignKey(nameof(ModelJobs_Id))]
|
||||
public virtual ModelJob JobModel { get; set; }
|
||||
|
||||
[ForeignKey(nameof(Customers_Id))]
|
||||
public virtual Customer Customer { get; set; }
|
||||
|
||||
[ForeignKey(nameof(Accessories_Id))]
|
||||
public virtual Accessories Accessories { get; set; }
|
||||
|
||||
[ForeignKey(nameof(Employees_Id))]
|
||||
public virtual Employee Employee { get; set; }
|
||||
|
||||
public string FilterString
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}",
|
||||
Contact, Comment, DateCreated, DateClosed, DateUpdated,
|
||||
OrderStatus?.Name,
|
||||
Model.FilterString,
|
||||
JobModel.FilterString,
|
||||
Customer?.Name,
|
||||
Accessories?.Name,
|
||||
Employee?.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
AppleJobs.Data/Models/Orders/OrderCategory.cs
Normal file
15
AppleJobs.Data/Models/Orders/OrderCategory.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models
|
||||
{
|
||||
[TsModel]
|
||||
public class OrderCategory
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
public string FullName { get; set; }
|
||||
}
|
||||
}
|
||||
14
AppleJobs.Data/Models/Orders/OrderStatus.cs
Normal file
14
AppleJobs.Data/Models/Orders/OrderStatus.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace AppleJobs.Data.Models
|
||||
{
|
||||
[TsModel]
|
||||
[Table("OrderStatuses")]
|
||||
public class OrderStatus
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
8
AppleJobs.Data/Models/TsModelAttribute.cs
Normal file
8
AppleJobs.Data/Models/TsModelAttribute.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using System;
|
||||
|
||||
namespace AppleJobs.Data.Models
|
||||
{
|
||||
public class TsModelAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
46
AppleJobs.Data/Properties/AssemblyInfo.cs
Normal file
46
AppleJobs.Data/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AppleJobs.Data")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("AppleJobs.Data")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2017")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
71
AppleJobs.Data/Properties/Resources.Designer.cs
generated
Normal file
71
AppleJobs.Data/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AppleJobs.Data.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AppleJobs.Data.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
AppleJobs.Data/Properties/Resources.resx
Normal file
117
AppleJobs.Data/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
30
AppleJobs.Data/Properties/Settings.Designer.cs
generated
Normal file
30
AppleJobs.Data/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AppleJobs.Data.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
AppleJobs.Data/Properties/Settings.settings
Normal file
7
AppleJobs.Data/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
8
AppleJobs.Data/packages.config
Normal file
8
AppleJobs.Data/packages.config
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="EntityFramework" version="6.1.0" targetFramework="net452" />
|
||||
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net452" />
|
||||
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net452" />
|
||||
<package id="MySql.Data" version="6.9.9" targetFramework="net452" />
|
||||
<package id="MySql.Data.Entity" version="6.9.9" targetFramework="net452" />
|
||||
</packages>
|
||||
6
BrightSharp.Ui.Tests/App.config
Normal file
6
BrightSharp.Ui.Tests/App.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
</configuration>
|
||||
14
BrightSharp.Ui.Tests/App.xaml
Normal file
14
BrightSharp.Ui.Tests/App.xaml
Normal file
@@ -0,0 +1,14 @@
|
||||
<Application x:Class="BrightSharp.Ui.Tests.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:local="clr-namespace:BrightSharp.Ui.Tests"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/brightsharp;component/generic.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
17
BrightSharp.Ui.Tests/App.xaml.cs
Normal file
17
BrightSharp.Ui.Tests/App.xaml.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace BrightSharp.Ui.Tests
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
||||
113
BrightSharp.Ui.Tests/BrightSharp.Ui.Tests.csproj
Normal file
113
BrightSharp.Ui.Tests/BrightSharp.Ui.Tests.csproj
Normal file
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{0D6E1828-8D07-4701-B98A-65DBF1604D3F}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>BrightSharp.Ui.Tests</RootNamespace>
|
||||
<AssemblyName>BrightSharp.Ui.Tests</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ListViewItemModel.cs" />
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BrightSharp\BrightSharp.csproj">
|
||||
<Project>{acc3c556-f8e4-4f2a-a23d-8e8749679a1b}</Project>
|
||||
<Name>BrightSharp</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
121
BrightSharp.Ui.Tests/ListViewItemModel.cs
Normal file
121
BrightSharp.Ui.Tests/ListViewItemModel.cs
Normal file
@@ -0,0 +1,121 @@
|
||||
using BrightSharp.Mvvm;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace BrightSharp.Ui.Tests
|
||||
{
|
||||
public class CustomerViewModel : ObservableObject
|
||||
{
|
||||
static Random rnd = new Random();
|
||||
private string _customerId;
|
||||
private string _companyName;
|
||||
private string _contactName;
|
||||
private string _contactTitle;
|
||||
private string _address;
|
||||
private string _city;
|
||||
private string _region;
|
||||
private string _postalCode;
|
||||
private string _country;
|
||||
private string _phone;
|
||||
private string _fax;
|
||||
private string _color;
|
||||
|
||||
public CustomerViewModel()
|
||||
{
|
||||
byte[] colorBytes = new byte[3];
|
||||
rnd.NextBytes(colorBytes);
|
||||
Color = System.Windows.Media.Color.FromRgb(colorBytes[0], colorBytes[1], colorBytes[2]).ToString();
|
||||
}
|
||||
|
||||
public string CustomerID
|
||||
{
|
||||
get { return _customerId; }
|
||||
set { _customerId = value; RaisePropertyChanged(nameof(CustomerID)); }
|
||||
}
|
||||
|
||||
public string CompanyName
|
||||
{
|
||||
get { return _companyName; }
|
||||
set { _companyName = value; RaisePropertyChanged(nameof(CompanyName)); }
|
||||
}
|
||||
|
||||
public string ContactName
|
||||
{
|
||||
get { return _contactName; }
|
||||
set { _contactName = value; RaisePropertyChanged(nameof(ContactName)); }
|
||||
}
|
||||
|
||||
public string ContactTitle
|
||||
{
|
||||
get { return _contactTitle; }
|
||||
set { _contactTitle = value; RaisePropertyChanged(nameof(ContactTitle)); }
|
||||
}
|
||||
[Category("Location")]
|
||||
public string Address
|
||||
{
|
||||
get { return _address; }
|
||||
set { _address = value; RaisePropertyChanged(nameof(Address)); }
|
||||
}
|
||||
[Category("Location")]
|
||||
public string City
|
||||
{
|
||||
get { return _city; }
|
||||
set { _city = value; RaisePropertyChanged(nameof(City)); }
|
||||
}
|
||||
[Category("Location")]
|
||||
public string Region
|
||||
{
|
||||
get { return _region; }
|
||||
set { _region = value; RaisePropertyChanged(nameof(Region)); }
|
||||
}
|
||||
[Category("Contact Information")]
|
||||
[Description("Postal code for Customer")]
|
||||
public string PostalCode
|
||||
{
|
||||
get { return _postalCode; }
|
||||
set { _postalCode = value; RaisePropertyChanged(nameof(PostalCode)); }
|
||||
}
|
||||
[Category("Location")]
|
||||
[Description("Country for Customer")]
|
||||
public string Country
|
||||
{
|
||||
get { return _country; }
|
||||
set { _country = value; RaisePropertyChanged(nameof(Country)); }
|
||||
}
|
||||
|
||||
[Category("Contact Information")]
|
||||
[Description("Phone for Customer")]
|
||||
public string Phone
|
||||
{
|
||||
get { return _phone; }
|
||||
set { _phone = value; RaisePropertyChanged(nameof(Phone)); }
|
||||
}
|
||||
|
||||
[Category("Contact Information")]
|
||||
[Description("Fax for Customer")]
|
||||
public string Fax
|
||||
{
|
||||
get { return _fax; }
|
||||
set { _fax = value; RaisePropertyChanged(nameof(Fax)); }
|
||||
}
|
||||
[Category("Appearance")]
|
||||
public string Color
|
||||
{
|
||||
get { return _color; }
|
||||
set { _color = value; RaisePropertyChanged(nameof(Color)); }
|
||||
}
|
||||
|
||||
public int NumberProperty { get; set; }
|
||||
public double DoubleNumberProperty { get; set; }
|
||||
|
||||
|
||||
[Category("PropertyGrid Explore Group")]
|
||||
[Description("Indicates that Customer is has active state")]
|
||||
[DisplayName("Is Active")]
|
||||
public bool IsActive { get; set; }
|
||||
[Category("PropertyGrid Explore Group")]
|
||||
[Description("Indicates that Customer is has active state or it absent")]
|
||||
[DisplayName("Is Active Or Not Exists")]
|
||||
public bool? IsActiveOrEmpty { get; set; }
|
||||
}
|
||||
}
|
||||
138
BrightSharp.Ui.Tests/MainWindow.xaml
Normal file
138
BrightSharp.Ui.Tests/MainWindow.xaml
Normal file
@@ -0,0 +1,138 @@
|
||||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:BrightSharp.Ui.Tests"
|
||||
xmlns:viewModel="clr-namespace:BrightSharp.Ui.Tests"
|
||||
xmlns:ex="clr-namespace:BrightSharp.Extensions;assembly=BrightSharp"
|
||||
xmlns:BrightSharp="clr-namespace:BrightSharp;assembly=BrightSharp" x:Class="BrightSharp.Ui.Tests.MainWindow"
|
||||
mc:Ignorable="d" Background="{DynamicResource WindowBackgroundBrush}"
|
||||
Title="BrightSharp.Ui.Tests" Height="600" Width="1200">
|
||||
<Window.Resources>
|
||||
<x:Array x:Key="coll" Type="{x:Type viewModel:CustomerViewModel}">
|
||||
<viewModel:CustomerViewModel CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" ContactName="Maria Anders" ContactTitle="Sales Representative" Address="Obere Str. 57" City="Berlin" PostalCode="12209" Country="Germany" Phone="030-0074321" Fax="030-0076545" />
|
||||
<viewModel:CustomerViewModel CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" ContactName="Ana Trujillo" ContactTitle="Owner" Address="Avda. de la Constitución 2222" City="México D.F." PostalCode="05021" Country="Mexico" Phone="(5) 555-4729" Fax="(5) 555-3745" />
|
||||
<viewModel:CustomerViewModel CustomerID="ANTON" CompanyName="Antonio Moreno Taquería" ContactName="Antonio Moreno" ContactTitle="Owner" Address="Mataderos 2312" City="México D.F." PostalCode="05023" Country="Mexico" Phone="(5) 555-3932" />
|
||||
<viewModel:CustomerViewModel CustomerID="AROUT" CompanyName="Around the Horn" ContactName="Thomas Hardy" ContactTitle="Sales Representative" Address="120 Hanover Sq." City="London" PostalCode="WA1 1DP" Country="UK" Phone="(171) 555-7788" Fax="(171) 555-6750" />
|
||||
<viewModel:CustomerViewModel CustomerID="BERGS" CompanyName="Berglunds snabbköp" ContactName="Christina Berglund" ContactTitle="Order Administrator" Address="Berguvsvägen 8" City="Luleå" PostalCode="S-958 22" Country="Sweden" Phone="0921-12 34 65" Fax="0921-12 34 67" />
|
||||
<viewModel:CustomerViewModel CustomerID="BLAUS" CompanyName="Blauer See Delikatessen" ContactName="Hanna Moos" ContactTitle="Sales Representative" Address="Forsterstr. 57" City="Mannheim" PostalCode="68306" Country="Germany" Phone="0621-08460" Fax="0621-08924" />
|
||||
<viewModel:CustomerViewModel CustomerID="BLONP" CompanyName="Blondesddsl père et fils" ContactName="Frédérique Citeaux" ContactTitle="Marketing Manager" Address="24, place Kléber" City="Strasbourg" PostalCode="67000" Country="France" Phone="88.60.15.31" Fax="88.60.15.32" />
|
||||
<viewModel:CustomerViewModel CustomerID="BOLID" CompanyName="Bólido Comidas preparadas" ContactName="Martín Sommer" ContactTitle="Owner" Address="C/ Araquil, 67" City="Madrid" PostalCode="28023" Country="Spain" Phone="(91) 555 22 82" Fax="(91) 555 91 99" />
|
||||
</x:Array>
|
||||
<CollectionViewSource Source="{StaticResource coll}" x:Key="coll1" />
|
||||
<CollectionViewSource Source="{StaticResource coll}" x:Key="coll2" />
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
|
||||
<BrightSharp:ZoomControl x:Name="zc" Margin="10" UseAnimation="True">
|
||||
|
||||
|
||||
<ContentControl Style="{StaticResource DesignerItemStyle}"
|
||||
Canvas.Left="10" Canvas.Top="20" Width="300" Height="473">
|
||||
<GroupBox Header="Common">
|
||||
<Grid>
|
||||
<Button IsDefault="True" Content="Change Theme" Click="Button_Click" HorizontalAlignment="Left" Width="108" Height="32" VerticalAlignment="Top" Margin="10,10,0,0"/>
|
||||
<ToggleButton Content="Toggle" HorizontalAlignment="Left" Width="108" Height="32" VerticalAlignment="Top" Margin="10,47,0,0"/>
|
||||
<CheckBox Margin="10,84,0,0" VerticalAlignment="Top" HorizontalAlignment="Left">CheckBox</CheckBox>
|
||||
<CheckBox IsThreeState="True" ex:MarkupExtensionProperties.Docking="Right" Margin="10,105,0,0" VerticalAlignment="Top" HorizontalAlignment="Left">CheckBox Right Allign</CheckBox>
|
||||
<CheckBox HorizontalContentAlignment="Center" IsThreeState="True" ex:MarkupExtensionProperties.Docking="Top" Margin="151,35,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="137">CheckBox Top Allign</CheckBox>
|
||||
<RadioButton IsChecked="True" Margin="10,130,0,0" VerticalAlignment="Top" HorizontalAlignment="Left">RadioButton</RadioButton>
|
||||
<RadioButton Margin="10,151,0,0" VerticalAlignment="Top" HorizontalAlignment="Left">RadioButton</RadioButton>
|
||||
<TextBox x:Name="tb" Canvas.Left="10" Canvas.Top="269" Margin="151,10,10,0" VerticalAlignment="Top" />
|
||||
<TabControl Margin="151,72,10,0" Height="122" VerticalAlignment="Top">
|
||||
<TabItem Header="Tab1" />
|
||||
<TabItem Header="Tab2" />
|
||||
<TabItem Header="Tab3" />
|
||||
</TabControl>
|
||||
<CheckBox HorizontalAlignment="Left" Style="{StaticResource SwitchCheckBoxStyle}" Margin="19,0,0,10" Content="SwitchCheckBoxStyle" Width="250" RenderTransformOrigin="0.5,0.5" Height="27" VerticalAlignment="Bottom" />
|
||||
|
||||
<Calendar Margin="10,199,10,0" VerticalAlignment="Top">
|
||||
<ex:MarkupExtensionProperties.TrailingElement>
|
||||
<TextBlock HorizontalAlignment="Center" Foreground="DarkRed">Trailing</TextBlock>
|
||||
</ex:MarkupExtensionProperties.TrailingElement>
|
||||
<ex:MarkupExtensionProperties.LeadingElement>
|
||||
<TextBlock HorizontalAlignment="Center" Foreground="DarkBlue">Leading</TextBlock>
|
||||
</ex:MarkupExtensionProperties.LeadingElement>
|
||||
</Calendar>
|
||||
<ComboBox IsEditable="True" Margin="10,172,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" SelectedIndex="0" Width="136">
|
||||
<ComboBoxItem>Item 1</ComboBoxItem>
|
||||
<ComboBoxItem>Item 2</ComboBoxItem>
|
||||
<ComboBoxItem>Item 3</ComboBoxItem>
|
||||
<Separator />
|
||||
<ComboBoxItem>Item 4</ComboBoxItem>
|
||||
<ComboBoxItem>Item 5</ComboBoxItem>
|
||||
</ComboBox>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</ContentControl>
|
||||
|
||||
|
||||
<ContentControl Style="{StaticResource DesignerItemStyle}"
|
||||
Height="474" Width="405"
|
||||
Padding="2,27,2,2"
|
||||
Canvas.Left="350"
|
||||
Canvas.Top="20">
|
||||
<GroupBox Margin="0,-25,0,0" Style="{StaticResource ExpandrStyleGroupBox}" >
|
||||
<GroupBox.Header>
|
||||
<Label>Collections</Label>
|
||||
</GroupBox.Header>
|
||||
<Grid x:Name="innerCanvas" Background="Transparent" ClipToBounds="True" >
|
||||
<Menu VerticalAlignment="Top">
|
||||
<MenuItem Header="File">
|
||||
<MenuItem Header="New..."/>
|
||||
<MenuItem Header="Open..."/>
|
||||
<MenuItem Header="Save" />
|
||||
<MenuItem Header="Save as..."/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Edit">
|
||||
<MenuItem Header="Copy" />
|
||||
<MenuItem Header="Paste" />
|
||||
<MenuItem Header="Cut" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="View"></MenuItem>
|
||||
<MenuItem Header="Help">
|
||||
<MenuItem Header="About..."></MenuItem>
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
<ListView ItemsSource="{Binding Source={StaticResource coll1}}" SelectedIndex="5" Margin="2,52,10,190">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn Header="Customer" Width="100" DisplayMemberBinding="{Binding CustomerID}" />
|
||||
<GridViewColumn Header="Company" Width="180" DisplayMemberBinding="{Binding CompanyName}" />
|
||||
<GridViewColumn Header="Country" Width="100" DisplayMemberBinding="{Binding Country}" />
|
||||
</GridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
<ListBox Margin="10,258,0,10" HorizontalAlignment="Left" Width="180">
|
||||
<ListBoxItem Content="123"/>
|
||||
<ListBoxItem Content="456"/>
|
||||
<ListBoxItem Content="789"/>
|
||||
</ListBox>
|
||||
<TreeView Margin="204,258,10,10">
|
||||
<TreeViewItem Header="1">
|
||||
<TreeViewItem Header="12">
|
||||
<TreeViewItem Header="123"/>
|
||||
<TreeViewItem Header="123"/>
|
||||
<TreeViewItem Header="123"/>
|
||||
</TreeViewItem>
|
||||
</TreeViewItem>
|
||||
</TreeView>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</ContentControl>
|
||||
<ContentControl Style="{StaticResource DesignerItemStyle}"
|
||||
Height="155" Width="405"
|
||||
Padding="2,27,2,2"
|
||||
Canvas.Left="450"
|
||||
Canvas.Top="400">
|
||||
<GroupBox Margin="0,-25,0,0" Style="{StaticResource ExpandrStyleGroupBox}" >
|
||||
<GroupBox.Header>
|
||||
<Label>Grid</Label>
|
||||
</GroupBox.Header>
|
||||
<DataGrid SelectedIndex="2" Margin="2" AlternatingRowBackground="{DynamicResource AlternatingRowBackgroundBrush}" ItemsSource="{Binding Source={StaticResource coll2}}" />
|
||||
</GroupBox>
|
||||
</ContentControl>
|
||||
</BrightSharp:ZoomControl>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
48
BrightSharp.Ui.Tests/MainWindow.xaml.cs
Normal file
48
BrightSharp.Ui.Tests/MainWindow.xaml.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using BrightSharp.Diagrams;
|
||||
using BrightSharp.Extensions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace BrightSharp.Ui.Tests
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
SelectionBehavior.Attach(innerCanvas);
|
||||
tb.Text = ThemeManager.Theme.ToString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (Enum.IsDefined(typeof(ColorThemes), ThemeManager.Theme + 1))
|
||||
{
|
||||
ThemeManager.Theme = ThemeManager.Theme + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ThemeManager.Theme = ColorThemes.Classic;
|
||||
}
|
||||
tb.Text = ThemeManager.Theme.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
55
BrightSharp.Ui.Tests/Properties/AssemblyInfo.cs
Normal file
55
BrightSharp.Ui.Tests/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("BrightSharp.Ui.Tests")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("BrightSharp.Ui.Tests")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2017")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
71
BrightSharp.Ui.Tests/Properties/Resources.Designer.cs
generated
Normal file
71
BrightSharp.Ui.Tests/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace BrightSharp.Ui.Tests.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BrightSharp.Ui.Tests.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
BrightSharp.Ui.Tests/Properties/Resources.resx
Normal file
117
BrightSharp.Ui.Tests/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
30
BrightSharp.Ui.Tests/Properties/Settings.Designer.cs
generated
Normal file
30
BrightSharp.Ui.Tests/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace BrightSharp.Ui.Tests.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
BrightSharp.Ui.Tests/Properties/Settings.settings
Normal file
7
BrightSharp.Ui.Tests/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -5,6 +5,12 @@ VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BrightSharp", "BrightSharp\BrightSharp.csproj", "{ACC3C556-F8E4-4F2A-A23D-8E8749679A1B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BrightSharp.Ui.Tests", "BrightSharp.Ui.Tests\BrightSharp.Ui.Tests.csproj", "{0D6E1828-8D07-4701-B98A-65DBF1604D3F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JetFrames.AppleJobs.Editor", "JetFrames.AppleJobs.Editor\JetFrames.AppleJobs.Editor.csproj", "{FD3E36B5-444A-4115-B288-6C924BEA0BD3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppleJobs.Data", "AppleJobs.Data\AppleJobs.Data.csproj", "{B4695C76-31FF-4BF1-9DC6-1BC62D374091}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -15,6 +21,18 @@ Global
|
||||
{ACC3C556-F8E4-4F2A-A23D-8E8749679A1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ACC3C556-F8E4-4F2A-A23D-8E8749679A1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ACC3C556-F8E4-4F2A-A23D-8E8749679A1B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0D6E1828-8D07-4701-B98A-65DBF1604D3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0D6E1828-8D07-4701-B98A-65DBF1604D3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0D6E1828-8D07-4701-B98A-65DBF1604D3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0D6E1828-8D07-4701-B98A-65DBF1604D3F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FD3E36B5-444A-4115-B288-6C924BEA0BD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FD3E36B5-444A-4115-B288-6C924BEA0BD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FD3E36B5-444A-4115-B288-6C924BEA0BD3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FD3E36B5-444A-4115-B288-6C924BEA0BD3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B4695C76-31FF-4BF1-9DC6-1BC62D374091}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B4695C76-31FF-4BF1-9DC6-1BC62D374091}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B4695C76-31FF-4BF1-9DC6-1BC62D374091}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B4695C76-31FF-4BF1-9DC6-1BC62D374091}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
115
BrightSharp/Behaviors/FiterGridTextBoxBehavior.cs
Normal file
115
BrightSharp/Behaviors/FiterGridTextBoxBehavior.cs
Normal file
@@ -0,0 +1,115 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Interactivity;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace BrightSharp.Behaviors
|
||||
{
|
||||
public class FilterDefaultViewTextBoxBehavior : Behavior<TextBox>
|
||||
{
|
||||
DispatcherTimer timer = new DispatcherTimer();
|
||||
public FilterDefaultViewTextBoxBehavior()
|
||||
{
|
||||
timer.Tick += Timer_Tick;
|
||||
FilterDelay = TimeSpan.FromSeconds(1);
|
||||
IgnoreCase = null;
|
||||
}
|
||||
|
||||
|
||||
private void Timer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
timer.Stop();
|
||||
if (ItemsSource != null)
|
||||
{
|
||||
var view = CollectionViewSource.GetDefaultView(ItemsSource);
|
||||
if (view is ListCollectionView)
|
||||
{
|
||||
var listCollectionView = (ListCollectionView)view;
|
||||
if (listCollectionView.IsAddingNew || listCollectionView.IsEditingItem) return;
|
||||
}
|
||||
view.Filter = CustomFilter ?? GetDefaultFilter(ItemsSource.GetType().GetGenericArguments()[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public bool HasFilterText
|
||||
{
|
||||
get { return (bool)GetValue(HasFilterTextProperty); }
|
||||
set { SetValue(HasFilterTextProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty HasFilterTextProperty =
|
||||
DependencyProperty.Register("HasFilterText", typeof(bool), typeof(FilterDefaultViewTextBoxBehavior), new PropertyMetadata(false));
|
||||
|
||||
|
||||
|
||||
public IEnumerable ItemsSource
|
||||
{
|
||||
get { return (IEnumerable)GetValue(ItemsSourceProperty); }
|
||||
set { SetValue(ItemsSourceProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for ItemsSource. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty ItemsSourceProperty =
|
||||
DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(FilterDefaultViewTextBoxBehavior), new PropertyMetadata(null));
|
||||
|
||||
|
||||
public bool? IgnoreCase { get; set; }
|
||||
private Predicate<object> GetDefaultFilter(Type filterItemType)
|
||||
{
|
||||
Func<object, string> dataFunc;
|
||||
var pInfo = filterItemType.GetProperty("FilterString");
|
||||
if (pInfo == null)
|
||||
{
|
||||
dataFunc = (x) => string.Join(",", filterItemType.GetProperties().Where(p => !p.Name.EndsWith("Id")).Select(p => (p.GetValue(x, null) ?? string.Empty).ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
dataFunc = (x) => (pInfo.GetValue(x, null) ?? string.Empty).ToString();
|
||||
}
|
||||
var filterText = AssociatedObject.Text;
|
||||
var ic = IgnoreCase ?? !filterText.Any(char.IsUpper);
|
||||
return x =>
|
||||
{
|
||||
if (x == null || string.IsNullOrEmpty(filterText)) return true;
|
||||
var propValStr = dataFunc(x);
|
||||
foreach (var item in filterText.Split(';'))
|
||||
{
|
||||
if (propValStr.IndexOf(item, ic ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal) == -1)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
public Predicate<object> CustomFilter { get; set; }
|
||||
|
||||
public TimeSpan FilterDelay { get { return timer.Interval; } set { timer.Interval = value; } }
|
||||
|
||||
protected override void OnAttached()
|
||||
{
|
||||
base.OnAttached();
|
||||
HasFilterText = !string.IsNullOrEmpty(AssociatedObject.Text);
|
||||
AssociatedObject.TextChanged += AssociatedObject_TextChanged;
|
||||
}
|
||||
|
||||
private void AssociatedObject_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
timer.Stop(); timer.Start();
|
||||
HasFilterText = !string.IsNullOrEmpty(AssociatedObject.Text);
|
||||
}
|
||||
|
||||
protected override void OnDetaching()
|
||||
{
|
||||
AssociatedObject.TextChanged -= AssociatedObject_TextChanged;
|
||||
timer.Tick -= Timer_Tick;
|
||||
base.OnDetaching();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{acc3c556-f8e4-4f2a-a23d-8e8749679a1b}</ProjectGuid>
|
||||
<ProjectGuid>{ACC3C556-F8E4-4F2A-A23D-8E8749679A1B}</ProjectGuid>
|
||||
<OutputType>library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>BrightSharp</RootNamespace>
|
||||
@@ -14,7 +14,6 @@
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
@@ -32,76 +31,110 @@
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Xml" />
|
||||
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
|
||||
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
|
||||
|
||||
<Reference Include="System.Net.Http"/>
|
||||
|
||||
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
|
||||
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Page Include="UserControl1.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="UserControl1.xaml.cs">
|
||||
<DependentUpon>UserControl1.xaml</DependentUpon>
|
||||
<Compile Include="Behaviors\FiterGridTextBoxBehavior.cs" />
|
||||
<Compile Include="Commands\AsyncCommand.cs" />
|
||||
<Compile Include="Commands\RelayCommand.cs" />
|
||||
<Compile Include="Diagrams\Adorners\ResizeRotateAdorner.cs" />
|
||||
<Compile Include="Diagrams\Adorners\ResizeRotateChrome.cs" />
|
||||
<Compile Include="Diagrams\Adorners\SizeAdorner.cs" />
|
||||
<Compile Include="Diagrams\Adorners\SizeChrome.cs" />
|
||||
<Compile Include="Diagrams\DesignerItemDecorator.cs" />
|
||||
<Compile Include="Diagrams\SelectionBehavior.cs" />
|
||||
<Compile Include="Diagrams\Thumbs\MoveThumb.cs" />
|
||||
<Compile Include="Diagrams\Thumbs\ResizeThumb.cs" />
|
||||
<Compile Include="Diagrams\Thumbs\RotateThumb.cs" />
|
||||
<Compile Include="Extensions\WpfExtensions.cs" />
|
||||
<Compile Include="Mvvm\ViewModelBase.cs" />
|
||||
<Compile Include="ThemeManager.cs" />
|
||||
<Compile Include="ZoomControl.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Page Include="Generic.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Compile Include="Converters\ThicknessConverter.cs" />
|
||||
<Compile Include="Extensions\MarkupExtensionProperties.cs" />
|
||||
<Compile Include="Generic.cs" />
|
||||
<Page Include="Diagrams\Resources\DesignerItem.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Diagrams\Resources\ResizeRotateChrome.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Diagrams\Resources\SizeChrome.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Style.Blue.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Style.DarkBlue.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Style.Silver.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Style.DevLab.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
|
||||
<AppDesigner Include="Properties\" />
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<Resource Include="icons\app.png" />
|
||||
<Resource Include="icons\copy.png" />
|
||||
<Resource Include="icons\cut.png" />
|
||||
<Resource Include="icons\paste.png" />
|
||||
<Resource Include="icons\undo.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
@@ -110,5 +143,4 @@
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
70
BrightSharp/Commands/AsyncCommand.cs
Normal file
70
BrightSharp/Commands/AsyncCommand.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace BrightSharp.Commands
|
||||
{
|
||||
public class AsyncCommand : ICommand
|
||||
{
|
||||
private readonly Func<object, Task> _execute;
|
||||
private readonly Func<object, bool> _canExecute;
|
||||
private Action _onComplete;
|
||||
private Action<Exception> _onFail;
|
||||
private bool _isExecuting;
|
||||
|
||||
public AsyncCommand(Func<object, Task> execute) : this(execute, o => true)
|
||||
{
|
||||
}
|
||||
|
||||
public AsyncCommand(Func<object, Task> execute, Func<object, bool> canExecute)
|
||||
{
|
||||
_execute = execute;
|
||||
_canExecute = canExecute;
|
||||
}
|
||||
|
||||
public AsyncCommand OnComplete(Action onComplete)
|
||||
{
|
||||
_onComplete = onComplete;
|
||||
return this;
|
||||
}
|
||||
public AsyncCommand OnFail(Action<Exception> onFail)
|
||||
{
|
||||
_onFail = onFail;
|
||||
return this;
|
||||
}
|
||||
|
||||
public bool CanExecute(object parameter)
|
||||
{
|
||||
return !_isExecuting && _canExecute(parameter);
|
||||
}
|
||||
|
||||
public event EventHandler CanExecuteChanged;
|
||||
|
||||
public async void Execute(object parameter)
|
||||
{
|
||||
_isExecuting = true;
|
||||
OnCanExecuteChanged();
|
||||
try
|
||||
{
|
||||
await _execute(parameter);
|
||||
_onComplete?.Invoke();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
while (ex.InnerException != null)
|
||||
ex = ex.InnerException;
|
||||
_onFail?.Invoke(ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_isExecuting = false;
|
||||
OnCanExecuteChanged();
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void OnCanExecuteChanged()
|
||||
{
|
||||
CanExecuteChanged?.Invoke(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
}
|
||||
66
BrightSharp/Commands/RelayCommand.cs
Normal file
66
BrightSharp/Commands/RelayCommand.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using System;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace BrightSharp.Commands
|
||||
{
|
||||
public class RelayCommand : ICommand
|
||||
{
|
||||
private readonly Action _methodToExecute;
|
||||
private readonly Action<object> _methodToExecuteWithParam;
|
||||
private readonly Func<object, bool> _canExecuteEvaluator;
|
||||
|
||||
public event EventHandler CanExecuteChanged
|
||||
{
|
||||
add { CommandManager.RequerySuggested += value; }
|
||||
remove { CommandManager.RequerySuggested -= value; }
|
||||
}
|
||||
|
||||
public RelayCommand(Action<object> methodToExecute, Func<object, bool> canExecuteEvaluator = null)
|
||||
{
|
||||
_methodToExecuteWithParam = methodToExecute;
|
||||
_canExecuteEvaluator = canExecuteEvaluator;
|
||||
}
|
||||
|
||||
public bool CanExecute(object parameter)
|
||||
{
|
||||
if (_canExecuteEvaluator == null)
|
||||
return true;
|
||||
else
|
||||
return _canExecuteEvaluator.Invoke(parameter);
|
||||
}
|
||||
public void Execute(object parameter)
|
||||
{
|
||||
_methodToExecuteWithParam?.Invoke(parameter);
|
||||
_methodToExecute?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
public class RelayCommand<T> : ICommand
|
||||
{
|
||||
private readonly Action<T> _methodToExecuteWithParam;
|
||||
private readonly Func<T, bool> _canExecuteEvaluator;
|
||||
|
||||
public event EventHandler CanExecuteChanged
|
||||
{
|
||||
add { CommandManager.RequerySuggested += value; }
|
||||
remove { CommandManager.RequerySuggested -= value; }
|
||||
}
|
||||
|
||||
public RelayCommand(Action<T> methodToExecute, Func<T, bool> canExecuteEvaluator = null)
|
||||
{
|
||||
_methodToExecuteWithParam = methodToExecute;
|
||||
_canExecuteEvaluator = canExecuteEvaluator;
|
||||
}
|
||||
|
||||
public bool CanExecute(object parameter)
|
||||
{
|
||||
if (_canExecuteEvaluator == null)
|
||||
return true;
|
||||
return _canExecuteEvaluator.Invoke((T)parameter);
|
||||
}
|
||||
public void Execute(object parameter)
|
||||
{
|
||||
_methodToExecuteWithParam?.Invoke((T)parameter);
|
||||
}
|
||||
}
|
||||
}
|
||||
40
BrightSharp/Converters/ThicknessConverter.cs
Normal file
40
BrightSharp/Converters/ThicknessConverter.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BrightSharp.Converters
|
||||
{
|
||||
internal class ThicknessConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if(value is Thickness)
|
||||
{
|
||||
var offset = double.Parse(parameter.ToString(), CultureInfo.InvariantCulture.NumberFormat);
|
||||
var thick = (Thickness)value;
|
||||
|
||||
return new Thickness(Math.Max(0, thick.Left + offset),
|
||||
Math.Max(0, thick.Top + offset),
|
||||
Math.Max(0, thick.Right + offset),
|
||||
Math.Max(0, thick.Bottom + offset));
|
||||
}
|
||||
else if(value is CornerRadius)
|
||||
{
|
||||
var offset = double.Parse(parameter.ToString(), CultureInfo.InvariantCulture.NumberFormat);
|
||||
var thick = (CornerRadius)value;
|
||||
|
||||
return new CornerRadius(Math.Max(0, thick.TopLeft + offset),
|
||||
Math.Max(0, thick.TopRight + offset),
|
||||
Math.Max(0, thick.BottomRight + offset),
|
||||
Math.Max(0, thick.BottomLeft + offset));
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
BrightSharp/Diagrams/Adorners/ResizeRotateAdorner.cs
Normal file
47
BrightSharp/Diagrams/Adorners/ResizeRotateAdorner.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class ResizeRotateAdorner : Adorner
|
||||
{
|
||||
private VisualCollection visuals;
|
||||
private ResizeRotateChrome chrome;
|
||||
|
||||
protected override int VisualChildrenCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.visuals.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public ResizeRotateAdorner(ContentControl designerItem)
|
||||
: base(designerItem)
|
||||
{
|
||||
SnapsToDevicePixels = true;
|
||||
this.chrome = new ResizeRotateChrome();
|
||||
this.chrome.DataContext = designerItem;
|
||||
this.visuals = new VisualCollection(this);
|
||||
this.visuals.Add(this.chrome);
|
||||
this.Focusable = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override Size ArrangeOverride(Size arrangeBounds)
|
||||
{
|
||||
this.chrome.Arrange(new Rect(arrangeBounds));
|
||||
return arrangeBounds;
|
||||
}
|
||||
|
||||
protected override Visual GetVisualChild(int index)
|
||||
{
|
||||
return this.visuals[index];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
13
BrightSharp/Diagrams/Adorners/ResizeRotateChrome.cs
Normal file
13
BrightSharp/Diagrams/Adorners/ResizeRotateChrome.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class ResizeRotateChrome : Control
|
||||
{
|
||||
static ResizeRotateChrome()
|
||||
{
|
||||
FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(ResizeRotateChrome), new FrameworkPropertyMetadata(typeof(ResizeRotateChrome)));
|
||||
}
|
||||
}
|
||||
}
|
||||
44
BrightSharp/Diagrams/Adorners/SizeAdorner.cs
Normal file
44
BrightSharp/Diagrams/Adorners/SizeAdorner.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class SizeAdorner : Adorner
|
||||
{
|
||||
private SizeChrome chrome;
|
||||
private VisualCollection visuals;
|
||||
private ContentControl designerItem;
|
||||
|
||||
protected override int VisualChildrenCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.visuals.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public SizeAdorner(ContentControl designerItem)
|
||||
: base(designerItem)
|
||||
{
|
||||
this.SnapsToDevicePixels = true;
|
||||
this.designerItem = designerItem;
|
||||
this.chrome = new SizeChrome();
|
||||
this.chrome.DataContext = designerItem;
|
||||
this.visuals = new VisualCollection(this);
|
||||
this.visuals.Add(this.chrome);
|
||||
}
|
||||
|
||||
protected override Visual GetVisualChild(int index)
|
||||
{
|
||||
return this.visuals[index];
|
||||
}
|
||||
|
||||
protected override Size ArrangeOverride(Size arrangeBounds)
|
||||
{
|
||||
this.chrome.Arrange(new Rect(new Point(0.0, 0.0), arrangeBounds));
|
||||
return arrangeBounds;
|
||||
}
|
||||
}
|
||||
}
|
||||
31
BrightSharp/Diagrams/Adorners/SizeChrome.cs
Normal file
31
BrightSharp/Diagrams/Adorners/SizeChrome.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class SizeChrome : Control
|
||||
{
|
||||
static SizeChrome()
|
||||
{
|
||||
FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(SizeChrome), new FrameworkPropertyMetadata(typeof(SizeChrome)));
|
||||
}
|
||||
}
|
||||
|
||||
public class DoubleFormatConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
double d = (double)value;
|
||||
if (double.IsNaN(d)) return "(Auto)";
|
||||
return Math.Round(d);
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
105
BrightSharp/Diagrams/DesignerItemDecorator.cs
Normal file
105
BrightSharp/Diagrams/DesignerItemDecorator.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media.Animation;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class DesignerItemDecorator : Control
|
||||
{
|
||||
private Adorner adorner;
|
||||
|
||||
public bool ShowDecorator
|
||||
{
|
||||
get { return (bool)GetValue(ShowDecoratorProperty); }
|
||||
set { SetValue(ShowDecoratorProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ShowDecoratorProperty =
|
||||
DependencyProperty.Register("ShowDecorator", typeof(bool), typeof(DesignerItemDecorator),
|
||||
new FrameworkPropertyMetadata(false, new PropertyChangedCallback(ShowDecoratorProperty_Changed)));
|
||||
|
||||
public DesignerItemDecorator()
|
||||
{
|
||||
Unloaded += new RoutedEventHandler(this.DesignerItemDecorator_Unloaded);
|
||||
}
|
||||
|
||||
private void HideAdorner()
|
||||
{
|
||||
if (this.adorner != null)
|
||||
{
|
||||
this.adorner.Visibility = Visibility.Hidden;
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowAdorner()
|
||||
{
|
||||
if (this.adorner == null)
|
||||
{
|
||||
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
|
||||
|
||||
if (adornerLayer != null)
|
||||
{
|
||||
ContentControl designerItem = this.DataContext as ContentControl;
|
||||
Canvas canvas = VisualTreeHelper.GetParent(designerItem) as Canvas;
|
||||
this.adorner = new ResizeRotateAdorner(designerItem);
|
||||
adornerLayer.Add(this.adorner);
|
||||
|
||||
if (this.ShowDecorator)
|
||||
{
|
||||
this.adorner.Visibility = Visibility.Visible;
|
||||
|
||||
var anim = new DoubleAnimation(0, 1, TimeSpan.FromSeconds(.2));
|
||||
this.adorner.BeginAnimation(OpacityProperty, anim);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.adorner.Visibility = Visibility.Hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.adorner.Visibility = Visibility.Visible;
|
||||
|
||||
var anim = new DoubleAnimation(0, 1, TimeSpan.FromSeconds(.2));
|
||||
this.adorner.BeginAnimation(OpacityProperty, anim);
|
||||
}
|
||||
}
|
||||
|
||||
private void DesignerItemDecorator_Unloaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.adorner != null)
|
||||
{
|
||||
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
|
||||
if (adornerLayer != null)
|
||||
{
|
||||
adornerLayer.Remove(this.adorner);
|
||||
}
|
||||
|
||||
this.adorner = null;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ShowDecoratorProperty_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
DesignerItemDecorator decorator = (DesignerItemDecorator)d;
|
||||
bool showDecorator = (bool)e.NewValue;
|
||||
|
||||
if (showDecorator)
|
||||
{
|
||||
decorator.ShowAdorner();
|
||||
}
|
||||
else
|
||||
{
|
||||
decorator.HideAdorner();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
43
BrightSharp/Diagrams/Resources/DesignerItem.xaml
Normal file
43
BrightSharp/Diagrams/Resources/DesignerItem.xaml
Normal file
@@ -0,0 +1,43 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:s="clr-namespace:Diagrams">
|
||||
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="SizeChrome.xaml"/>
|
||||
<ResourceDictionary Source="ResizeRotateChrome.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<ControlTemplate x:Key="MoveThumbTemplate" TargetType="{x:Type s:MoveThumb}">
|
||||
<Rectangle Fill="Transparent"/>
|
||||
</ControlTemplate>
|
||||
|
||||
<Style x:Key="DesignerItemStyle" TargetType="ContentControl">
|
||||
<Setter Property="MinHeight" Value="26"/>
|
||||
<Setter Property="MinWidth" Value="30"/>
|
||||
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
|
||||
<Setter Property="SnapsToDevicePixels" Value="true"/>
|
||||
<Setter Property="Focusable" Value="False" />
|
||||
<Setter Property="MaxHeight" Value="900" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ContentControl">
|
||||
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
|
||||
<Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
|
||||
<s:MoveThumb Focusable="False" Cursor="SizeAll" Template="{StaticResource MoveThumbTemplate}" />
|
||||
<ContentPresenter Content="{TemplateBinding ContentControl.Content}"
|
||||
Margin="{TemplateBinding Padding}"/>
|
||||
<s:DesignerItemDecorator x:Name="ItemDecorator" Focusable="False"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="Selector.IsSelected" Value="True">
|
||||
<Setter TargetName="ItemDecorator" Property="ShowDecorator" Value="True" />
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
|
||||
</ResourceDictionary>
|
||||
112
BrightSharp/Diagrams/Resources/ResizeRotateChrome.xaml
Normal file
112
BrightSharp/Diagrams/Resources/ResizeRotateChrome.xaml
Normal file
@@ -0,0 +1,112 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:s="clr-namespace:Diagrams">
|
||||
|
||||
<Style TargetType="{x:Type Shape}" x:Key="ThumbCorner">
|
||||
<Setter Property="SnapsToDevicePixels" Value="true" />
|
||||
<Setter Property="Stroke" Value="#FF0166AC" />
|
||||
<Setter Property="StrokeThickness" Value="1" />
|
||||
<Setter Property="Width" Value="7" />
|
||||
<Setter Property="Height" Value="7" />
|
||||
<Setter Property="Margin" Value="-2" />
|
||||
<Setter Property="Fill">
|
||||
<Setter.Value>
|
||||
<RadialGradientBrush Center="0.2, 0.2" GradientOrigin="0.2, 0.2" RadiusX="0.8" RadiusY="0.8">
|
||||
<GradientStop Color="White" Offset="0.0" />
|
||||
<GradientStop Color="#FF9AFF9F" Offset="0.8" />
|
||||
</RadialGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="{x:Type s:ResizeRotateChrome}">
|
||||
<Setter Property="Focusable" Value="False" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type s:ResizeRotateChrome}">
|
||||
<Grid>
|
||||
<Grid Opacity="0" Margin="-3">
|
||||
<s:MoveThumb Margin="0,-20,0,0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
Height="16"
|
||||
Width="16"
|
||||
Cursor="SizeAll"
|
||||
Template="{DynamicResource MoveThumbTemplate}" />
|
||||
<s:RotateThumb Width="20"
|
||||
Height="20"
|
||||
Margin="0,-20,0,0"
|
||||
Cursor="Hand"
|
||||
VerticalAlignment="Top"
|
||||
HorizontalAlignment="Center"/>
|
||||
<s:ResizeThumb Height="3"
|
||||
Cursor="SizeNS"
|
||||
VerticalAlignment="Top"
|
||||
HorizontalAlignment="Stretch"/>
|
||||
<s:ResizeThumb Width="3"
|
||||
Cursor="SizeWE"
|
||||
VerticalAlignment="Stretch"
|
||||
HorizontalAlignment="Left"/>
|
||||
<s:ResizeThumb Width="3"
|
||||
Cursor="SizeWE"
|
||||
VerticalAlignment="Stretch"
|
||||
HorizontalAlignment="Right"/>
|
||||
<s:ResizeThumb Height="3"
|
||||
Cursor="SizeNS"
|
||||
VerticalAlignment="Bottom"
|
||||
HorizontalAlignment="Stretch"/>
|
||||
<s:ResizeThumb Width="7"
|
||||
Height="7"
|
||||
Margin="-2"
|
||||
Cursor="SizeNWSE"
|
||||
VerticalAlignment="Top"
|
||||
HorizontalAlignment="Left"/>
|
||||
<s:ResizeThumb Width="7"
|
||||
Height="7"
|
||||
Margin="-2"
|
||||
Cursor="SizeNESW"
|
||||
VerticalAlignment="Top"
|
||||
HorizontalAlignment="Right"/>
|
||||
<s:ResizeThumb Width="7"
|
||||
Height="7"
|
||||
Margin="-2"
|
||||
Cursor="SizeNESW"
|
||||
VerticalAlignment="Bottom"
|
||||
HorizontalAlignment="Left"/>
|
||||
<s:ResizeThumb Width="7"
|
||||
Height="7"
|
||||
Margin="-2"
|
||||
Cursor="SizeNWSE"
|
||||
VerticalAlignment="Bottom"
|
||||
HorizontalAlignment="Right"/>
|
||||
</Grid>
|
||||
<Canvas HorizontalAlignment="Right" VerticalAlignment="Top">
|
||||
<ContentControl Canvas.Left="10" Content="{Binding Tag}" />
|
||||
</Canvas>
|
||||
<Grid IsHitTestVisible="False" Opacity="1" Margin="-3">
|
||||
<Rectangle SnapsToDevicePixels="True"
|
||||
StrokeThickness="1"
|
||||
Margin="1"
|
||||
Stroke="{DynamicResource DisabledBorderBrush}" StrokeDashArray="1 0 1"/>
|
||||
<Line StrokeThickness="1" X1="0" Y1="0" X2="0" Y2="20"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
Margin="0,-19,0,0"
|
||||
Stroke="White" StrokeDashArray="1 2"/>
|
||||
<Path Style="{StaticResource ThumbCorner}" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,-20,0,0" Width="20" Height="20" Data="M 11.7927,9.92031C 12.5184,8.74318 12.6759,7.05297 12.1717,5.75967C 11.5909,4.44354 10.2501,3.37314 8.87896,3.04485C 7.39649,2.74559 5.63977,3.1934 4.48733,4.196C 3.50995,5.1756 2.91946,6.75691 3.08599,8.14841L 0.0842173,8.57665C 0.0347556,8.20576 0.00766225,7.8312 -1.64198e-005,7.45693C 0.038148,6.21681 0.383575,4.9557 0.968669,3.8699C 1.5589,2.89611 2.36362,2.03356 3.28126,1.37902C 5.28605,0.0810452 8.05891,-0.284222 10.3301,0.412526C 12.1794,1.09169 13.9099,2.53647 14.8289,4.31779C 15.3434,5.43808 15.5957,6.72245 15.5449,7.95982C 15.4307,9.19718 15.0066,10.4344 14.358,11.484L 16.0043,12.4819L 11.226,13.5191L 10.1463,8.92239L 11.7927,9.92031 Z M -1.64198e-005,-1.90735e-006 Z M 15.564,14.9728 Z "
|
||||
Fill="YellowGreen" Stroke="{DynamicResource PressedBorderBrush}" />
|
||||
<Rectangle Style="{StaticResource ThumbCorner}" HorizontalAlignment="Left" VerticalAlignment="Top"/>
|
||||
<Rectangle Style="{StaticResource ThumbCorner}" HorizontalAlignment="Right" VerticalAlignment="Top"/>
|
||||
<Rectangle Style="{StaticResource ThumbCorner}" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
|
||||
<Rectangle Style="{StaticResource ThumbCorner}" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
|
||||
<Viewbox Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Top" IsHitTestVisible="False" Margin="0,-20,0,0">
|
||||
<Path Width="16" Height="16" Stretch="Fill" Fill="{DynamicResource NormalBrush}" StrokeThickness=".5" Stroke="{DynamicResource GlyphBrush}" Data="M 0,8.L 3.18485,4.81417L 3.18485,6.37077L 6.37181,6.37077L 6.37181,3.18408L 4.81418,3.18408L 8.00114,0L 11.1881,3.18408L 9.63047,3.18408L 9.63047,6.37077L 12.8174,6.37077L 12.8174,4.81417L 16.0044,8.L 12.8174,11.1876L 12.8174,9.63096L 9.63047,9.63096L 9.63047,12.8177L 11.1881,12.8177L 8.00114,16.0044L 4.81418,12.8177L 6.37181,12.8177L 6.37181,9.63096L 3.18485,9.63096L 3.18485,11.1876L 0,8. Z M 0,0 Z M 16.0044,16.0044 Z"/>
|
||||
</Viewbox>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
49
BrightSharp/Diagrams/Resources/SizeChrome.xaml
Normal file
49
BrightSharp/Diagrams/Resources/SizeChrome.xaml
Normal file
@@ -0,0 +1,49 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:s="clr-namespace:Diagrams">
|
||||
|
||||
<s:DoubleFormatConverter x:Key="doubleFormatConverter"/>
|
||||
|
||||
<Style TargetType="{x:Type s:SizeChrome}">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type s:SizeChrome}">
|
||||
<Grid SnapsToDevicePixels="True">
|
||||
<Path Stroke="Red"
|
||||
StrokeThickness="1"
|
||||
Height="10"
|
||||
VerticalAlignment="Bottom"
|
||||
Margin="-2,0,-2,-15"
|
||||
Stretch="Fill"
|
||||
Data="M0,0 0,10 M 0,5 100,5 M 100,0 100,10" StrokeDashArray="1 2"/>
|
||||
<TextBlock Text="{Binding Path=Width, Converter={StaticResource doubleFormatConverter}}"
|
||||
Background="White"
|
||||
Padding="3,0,3,0"
|
||||
Foreground="#FF9C3535"
|
||||
Margin="0,0,0,-18"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"/>
|
||||
<Path Stroke="#FF9C3535"
|
||||
StrokeThickness="1"
|
||||
Width="10"
|
||||
HorizontalAlignment="Right"
|
||||
Margin="0,-2,-15,-2"
|
||||
Stretch="Fill"
|
||||
Data="M5,0 5,100 M 0,0 10,0 M 0,100 10,100" StrokeDashArray="1 2"/>
|
||||
<TextBlock Text="{Binding Path=Height, Converter={StaticResource doubleFormatConverter}}"
|
||||
Background="White"
|
||||
Foreground="#FF9C3535"
|
||||
Padding="3,0,3,0"
|
||||
Margin="0,0,-18,0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock.LayoutTransform>
|
||||
<RotateTransform Angle="90" CenterX="1" CenterY="0.5"/>
|
||||
</TextBlock.LayoutTransform>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
91
BrightSharp/Diagrams/SelectionBehavior.cs
Normal file
91
BrightSharp/Diagrams/SelectionBehavior.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
using BrightSharp.Extensions;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System;
|
||||
|
||||
namespace BrightSharp.Diagrams
|
||||
{
|
||||
public static class SelectionBehavior
|
||||
{
|
||||
public static void Attach(FrameworkElement fe)
|
||||
{
|
||||
ContentControl selectedControl = null;
|
||||
Style designerStyle = (Style)Application.Current.FindResource("DesignerItemStyle");
|
||||
if (fe is Panel)
|
||||
{
|
||||
var fePanel = (Panel)fe;
|
||||
fe.PreviewMouseLeftButtonDown += (s, e) =>
|
||||
{
|
||||
if (e.Source is DependencyObject)
|
||||
{
|
||||
var clickedElement = ((DependencyObject)e.OriginalSource).Ancestors<ContentControl>().FirstOrDefault(el => el.Style == designerStyle && WpfExtensions.GetItemsPanel(el.GetParent(true)) == fe);
|
||||
if (clickedElement == null)
|
||||
{
|
||||
foreach (DependencyObject item in fePanel.Children)
|
||||
{
|
||||
Selector.SetIsSelected(item, false);
|
||||
}
|
||||
selectedControl = null;
|
||||
return;
|
||||
}
|
||||
foreach (var control in fePanel.Children.OfType<ContentControl>())
|
||||
{
|
||||
if (ProcessControl(control, clickedElement, ref selectedControl))
|
||||
{
|
||||
e.Handled = selectedControl.Content is ButtonBase;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
else if (fe is ItemsControl)
|
||||
{
|
||||
var feItemsControl = (ItemsControl)fe;
|
||||
fe.PreviewMouseLeftButtonDown += (s, e) =>
|
||||
{
|
||||
if (e.Source is DependencyObject)
|
||||
{
|
||||
var clickedElement = ((DependencyObject)e.Source).Ancestors<ContentControl>().FirstOrDefault(el => el.Style == designerStyle && el.Parent == fe);
|
||||
if (clickedElement == null)
|
||||
{
|
||||
foreach (DependencyObject item in feItemsControl.Items)
|
||||
{
|
||||
Selector.SetIsSelected(item, false);
|
||||
}
|
||||
selectedControl = null;
|
||||
return;
|
||||
}
|
||||
foreach (var control in feItemsControl.Items.OfType<ContentControl>())
|
||||
{
|
||||
if (ProcessControl(control, clickedElement, ref selectedControl))
|
||||
{
|
||||
e.Handled = selectedControl.Content is ButtonBase;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private static bool ProcessControl(ContentControl control, ContentControl clickedElement, ref ContentControl selectedControl)
|
||||
{
|
||||
if (control == clickedElement && control != selectedControl)
|
||||
{
|
||||
if (selectedControl != null)
|
||||
{
|
||||
Selector.SetIsSelected(selectedControl, false);
|
||||
}
|
||||
Selector.SetIsSelected(control, true);
|
||||
selectedControl = control;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
49
BrightSharp/Diagrams/Thumbs/MoveThumb.cs
Normal file
49
BrightSharp/Diagrams/Thumbs/MoveThumb.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class MoveThumb : Thumb
|
||||
{
|
||||
private RotateTransform rotateTransform;
|
||||
private ContentControl designerItem;
|
||||
|
||||
public MoveThumb()
|
||||
{
|
||||
DragStarted += new DragStartedEventHandler(this.MoveThumb_DragStarted);
|
||||
DragDelta += new DragDeltaEventHandler(this.MoveThumb_DragDelta);
|
||||
}
|
||||
|
||||
|
||||
private void MoveThumb_DragStarted(object sender, DragStartedEventArgs e)
|
||||
{
|
||||
this.designerItem = DataContext as ContentControl;
|
||||
|
||||
if (this.designerItem != null)
|
||||
{
|
||||
this.rotateTransform = this.designerItem.RenderTransform as RotateTransform;
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveThumb_DragDelta(object sender, DragDeltaEventArgs e)
|
||||
{
|
||||
if (this.designerItem != null)
|
||||
{
|
||||
Point dragDelta = new Point(e.HorizontalChange, e.VerticalChange);
|
||||
|
||||
if (this.rotateTransform != null)
|
||||
{
|
||||
dragDelta = this.rotateTransform.Transform(dragDelta);
|
||||
}
|
||||
if (double.IsNaN(Canvas.GetLeft(this.designerItem))) Canvas.SetLeft(this.designerItem, 0);
|
||||
if (double.IsNaN(Canvas.GetTop(this.designerItem))) Canvas.SetTop(this.designerItem, 0);
|
||||
|
||||
Canvas.SetLeft(this.designerItem, Canvas.GetLeft(this.designerItem) + dragDelta.X);
|
||||
Canvas.SetTop(this.designerItem, Canvas.GetTop(this.designerItem) + dragDelta.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
139
BrightSharp/Diagrams/Thumbs/ResizeThumb.cs
Normal file
139
BrightSharp/Diagrams/Thumbs/ResizeThumb.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Media;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class ResizeThumb : Thumb
|
||||
{
|
||||
private RotateTransform rotateTransform;
|
||||
private double angle;
|
||||
private Adorner adorner;
|
||||
private Point transformOrigin;
|
||||
private ContentControl designerItem;
|
||||
private Canvas canvas;
|
||||
|
||||
public ResizeThumb()
|
||||
{
|
||||
DragStarted += new DragStartedEventHandler(this.ResizeThumb_DragStarted);
|
||||
DragDelta += new DragDeltaEventHandler(this.ResizeThumb_DragDelta);
|
||||
DragCompleted += new DragCompletedEventHandler(this.ResizeThumb_DragCompleted);
|
||||
MouseRightButtonDown += new MouseButtonEventHandler(this.ResizeThumb_MouseRightButtonDown);
|
||||
}
|
||||
|
||||
private void ResizeThumb_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
this.designerItem = this.designerItem ?? this.DataContext as ContentControl;
|
||||
|
||||
if (VerticalAlignment == VerticalAlignment.Top || VerticalAlignment == VerticalAlignment.Bottom)
|
||||
{
|
||||
this.designerItem.Height = double.NaN;
|
||||
}
|
||||
if (HorizontalAlignment == HorizontalAlignment.Left || HorizontalAlignment == HorizontalAlignment.Right)
|
||||
{
|
||||
this.designerItem.Width = double.NaN;
|
||||
}
|
||||
}
|
||||
|
||||
private void ResizeThumb_DragStarted(object sender, DragStartedEventArgs e)
|
||||
{
|
||||
this.designerItem = this.DataContext as ContentControl;
|
||||
|
||||
if (this.designerItem != null)
|
||||
{
|
||||
this.canvas = VisualTreeHelper.GetParent(this.designerItem) as Canvas;
|
||||
|
||||
if (this.canvas != null)
|
||||
{
|
||||
this.transformOrigin = this.designerItem.RenderTransformOrigin;
|
||||
|
||||
this.rotateTransform = this.designerItem.RenderTransform as RotateTransform;
|
||||
if (this.rotateTransform != null)
|
||||
{
|
||||
this.angle = this.rotateTransform.Angle * Math.PI / 180.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.angle = 0.0d;
|
||||
}
|
||||
|
||||
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.canvas);
|
||||
if (adornerLayer != null)
|
||||
{
|
||||
this.adorner = new SizeAdorner(this.designerItem);
|
||||
adornerLayer.Add(this.adorner);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ResizeThumb_DragDelta(object sender, DragDeltaEventArgs e)
|
||||
{
|
||||
if (this.designerItem != null)
|
||||
{
|
||||
double deltaVertical, deltaHorizontal;
|
||||
if (double.IsNaN(Canvas.GetTop(this.designerItem))) Canvas.SetTop(this.designerItem, 0);
|
||||
if (double.IsNaN(Canvas.GetLeft(this.designerItem))) Canvas.SetLeft(this.designerItem, 0);
|
||||
if ((VerticalAlignment == VerticalAlignment.Top || VerticalAlignment == VerticalAlignment.Bottom) && double.IsNaN(this.designerItem.Height)) this.designerItem.Height = this.designerItem.ActualHeight;
|
||||
if ((HorizontalAlignment == HorizontalAlignment.Left || HorizontalAlignment == HorizontalAlignment.Right) && double.IsNaN(this.designerItem.Width)) this.designerItem.Width = this.designerItem.ActualWidth;
|
||||
|
||||
switch (VerticalAlignment)
|
||||
{
|
||||
case System.Windows.VerticalAlignment.Bottom:
|
||||
deltaVertical = Math.Min(-e.VerticalChange, this.designerItem.ActualHeight - this.designerItem.MinHeight);
|
||||
Canvas.SetTop(this.designerItem, Canvas.GetTop(this.designerItem) + (this.transformOrigin.Y * deltaVertical * (1 - Math.Cos(-this.angle))));
|
||||
Canvas.SetLeft(this.designerItem, Canvas.GetLeft(this.designerItem) - deltaVertical * this.transformOrigin.Y * Math.Sin(-this.angle));
|
||||
this.designerItem.Height -= deltaVertical;
|
||||
break;
|
||||
case System.Windows.VerticalAlignment.Top:
|
||||
deltaVertical = Math.Min(e.VerticalChange, this.designerItem.ActualHeight - this.designerItem.MinHeight);
|
||||
Canvas.SetTop(this.designerItem, Canvas.GetTop(this.designerItem) + deltaVertical * Math.Cos(-this.angle) + (this.transformOrigin.Y * deltaVertical * (1 - Math.Cos(-this.angle))));
|
||||
Canvas.SetLeft(this.designerItem, Canvas.GetLeft(this.designerItem) + deltaVertical * Math.Sin(-this.angle) - (this.transformOrigin.Y * deltaVertical * Math.Sin(-this.angle)));
|
||||
this.designerItem.Height -= deltaVertical;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (HorizontalAlignment)
|
||||
{
|
||||
case System.Windows.HorizontalAlignment.Left:
|
||||
deltaHorizontal = Math.Min(e.HorizontalChange, this.designerItem.ActualWidth - this.designerItem.MinWidth);
|
||||
Canvas.SetTop(this.designerItem, Canvas.GetTop(this.designerItem) + deltaHorizontal * Math.Sin(this.angle) - this.transformOrigin.X * deltaHorizontal * Math.Sin(this.angle));
|
||||
Canvas.SetLeft(this.designerItem, Canvas.GetLeft(this.designerItem) + deltaHorizontal * Math.Cos(this.angle) + (this.transformOrigin.X * deltaHorizontal * (1 - Math.Cos(this.angle))));
|
||||
this.designerItem.Width -= deltaHorizontal;
|
||||
break;
|
||||
case System.Windows.HorizontalAlignment.Right:
|
||||
deltaHorizontal = Math.Min(-e.HorizontalChange, this.designerItem.ActualWidth - this.designerItem.MinWidth);
|
||||
Canvas.SetTop(this.designerItem, Canvas.GetTop(this.designerItem) - this.transformOrigin.X * deltaHorizontal * Math.Sin(this.angle));
|
||||
Canvas.SetLeft(this.designerItem, Canvas.GetLeft(this.designerItem) + (deltaHorizontal * this.transformOrigin.X * (1 - Math.Cos(this.angle))));
|
||||
this.designerItem.Width -= deltaHorizontal;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void ResizeThumb_DragCompleted(object sender, DragCompletedEventArgs e)
|
||||
{
|
||||
if (this.adorner != null)
|
||||
{
|
||||
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.canvas);
|
||||
if (adornerLayer != null)
|
||||
{
|
||||
adornerLayer.Remove(this.adorner);
|
||||
}
|
||||
|
||||
this.adorner = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
86
BrightSharp/Diagrams/Thumbs/RotateThumb.cs
Normal file
86
BrightSharp/Diagrams/Thumbs/RotateThumb.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace Diagrams
|
||||
{
|
||||
public class RotateThumb : Thumb
|
||||
{
|
||||
private double initialAngle;
|
||||
private RotateTransform rotateTransform;
|
||||
private Vector startVector;
|
||||
private Point centerPoint;
|
||||
private ContentControl designerItem;
|
||||
private Canvas canvas;
|
||||
|
||||
public RotateThumb()
|
||||
{
|
||||
DragDelta += new DragDeltaEventHandler(this.RotateThumb_DragDelta);
|
||||
DragStarted += new DragStartedEventHandler(this.RotateThumb_DragStarted);
|
||||
MouseRightButtonDown += RotateThumb_MouseLeftButtonDown;
|
||||
}
|
||||
|
||||
private void RotateThumb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (e.RightButton == MouseButtonState.Pressed)
|
||||
{
|
||||
this.rotateTransform = this.designerItem.RenderTransform as RotateTransform;
|
||||
if (this.rotateTransform != null)
|
||||
{
|
||||
this.rotateTransform.Angle = 0;
|
||||
this.designerItem.InvalidateMeasure();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e)
|
||||
{
|
||||
this.designerItem = DataContext as ContentControl;
|
||||
|
||||
if (this.designerItem != null)
|
||||
{
|
||||
this.canvas = VisualTreeHelper.GetParent(this.designerItem) as Canvas;
|
||||
|
||||
if (this.canvas != null)
|
||||
{
|
||||
this.centerPoint = this.designerItem.TranslatePoint(
|
||||
new Point(this.designerItem.ActualWidth * this.designerItem.RenderTransformOrigin.X,
|
||||
this.designerItem.ActualHeight * this.designerItem.RenderTransformOrigin.Y),
|
||||
this.canvas);
|
||||
|
||||
Point startPoint = Mouse.GetPosition(this.canvas);
|
||||
this.startVector = Point.Subtract(startPoint, this.centerPoint);
|
||||
|
||||
this.rotateTransform = this.designerItem.RenderTransform as RotateTransform;
|
||||
if (this.rotateTransform == null)
|
||||
{
|
||||
this.designerItem.RenderTransform = new RotateTransform(0);
|
||||
this.initialAngle = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.initialAngle = this.rotateTransform.Angle;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RotateThumb_DragDelta(object sender, DragDeltaEventArgs e)
|
||||
{
|
||||
if (this.designerItem != null && this.canvas != null)
|
||||
{
|
||||
Point currentPoint = Mouse.GetPosition(this.canvas);
|
||||
Vector deltaVector = Point.Subtract(currentPoint, this.centerPoint);
|
||||
|
||||
double angle = Vector.AngleBetween(this.startVector, deltaVector);
|
||||
|
||||
RotateTransform rotateTransform = this.designerItem.RenderTransform as RotateTransform;
|
||||
rotateTransform.Angle = this.initialAngle + Math.Round(angle, 0);
|
||||
this.designerItem.InvalidateMeasure();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
140
BrightSharp/Extensions/MarkupExtensionProperties.cs
Normal file
140
BrightSharp/Extensions/MarkupExtensionProperties.cs
Normal file
@@ -0,0 +1,140 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace BrightSharp.Extensions
|
||||
{
|
||||
public static class MarkupExtensionProperties
|
||||
{
|
||||
public static CornerRadius GetCornerRadius(DependencyObject obj)
|
||||
{
|
||||
return (CornerRadius)obj.GetValue(CornerRadiusProperty);
|
||||
}
|
||||
public static void SetCornerRadius(DependencyObject obj, CornerRadius value)
|
||||
{
|
||||
obj.SetValue(CornerRadiusProperty, value);
|
||||
}
|
||||
public static object GetHeader(DependencyObject obj)
|
||||
{
|
||||
return obj.GetValue(HeaderProperty);
|
||||
}
|
||||
public static void SetHeader(DependencyObject obj, object value)
|
||||
{
|
||||
obj.SetValue(HeaderProperty, value);
|
||||
}
|
||||
public static object GetLeadingElement(DependencyObject obj)
|
||||
{
|
||||
return obj.GetValue(CornerRadiusProperty);
|
||||
}
|
||||
public static void SetLeadingElement(DependencyObject obj, object value)
|
||||
{
|
||||
obj.SetValue(CornerRadiusProperty, value);
|
||||
}
|
||||
public static object GetTrailingElement(DependencyObject obj)
|
||||
{
|
||||
return obj.GetValue(CornerRadiusProperty);
|
||||
}
|
||||
public static void SetTrailingElement(DependencyObject obj, object value)
|
||||
{
|
||||
obj.SetValue(CornerRadiusProperty, value);
|
||||
}
|
||||
public static object GetIcon(DependencyObject obj)
|
||||
{
|
||||
return obj.GetValue(IconProperty);
|
||||
}
|
||||
public static void SetIcon(DependencyObject obj, object value)
|
||||
{
|
||||
obj.SetValue(IconProperty, value);
|
||||
}
|
||||
public static void SetHeaderHeight(DependencyObject obj, double value)
|
||||
{
|
||||
obj.SetValue(HeaderHeightProperty, value);
|
||||
}
|
||||
public static double GetHeaderHeight(DependencyObject obj)
|
||||
{
|
||||
return (double)obj.GetValue(HeaderHeightProperty);
|
||||
}
|
||||
|
||||
public static void SetHeaderVerticalAlignment(DependencyObject obj, VerticalAlignment value)
|
||||
{
|
||||
obj.SetValue(HeaderVerticalAlignmentProperty, value);
|
||||
}
|
||||
public static VerticalAlignment GetHeaderVerticalAlignment(DependencyObject obj)
|
||||
{
|
||||
return (VerticalAlignment)obj.GetValue(HeaderVerticalAlignmentProperty);
|
||||
}
|
||||
public static void SetHeaderHorizontalAlignment(DependencyObject obj, HorizontalAlignment value)
|
||||
{
|
||||
obj.SetValue(HeaderHorizontalAlignmentProperty, value);
|
||||
}
|
||||
public static HorizontalAlignment GetHeaderHorizontalAlignment(DependencyObject obj)
|
||||
{
|
||||
return (HorizontalAlignment)obj.GetValue(HeaderHorizontalAlignmentProperty);
|
||||
}
|
||||
public static void SetSpecialHeight(DependencyObject obj, double value)
|
||||
{
|
||||
obj.SetValue(SpecialHeightProperty, value);
|
||||
}
|
||||
public static double GetSpecialHeight(DependencyObject obj)
|
||||
{
|
||||
return (double)obj.GetValue(SpecialHeightProperty);
|
||||
}
|
||||
public static void SetSpecialWidth(DependencyObject obj, double value)
|
||||
{
|
||||
obj.SetValue(SpecialWidthProperty, value);
|
||||
}
|
||||
public static double GetSpecialWidth(DependencyObject obj)
|
||||
{
|
||||
return (double)obj.GetValue(SpecialWidthProperty);
|
||||
}
|
||||
public static Dock GetDocking(DependencyObject obj)
|
||||
{
|
||||
return (Dock)obj.GetValue(DockingProperty);
|
||||
}
|
||||
public static void SetDocking(DependencyObject obj, Dock value)
|
||||
{
|
||||
obj.SetValue(DockingProperty, value);
|
||||
}
|
||||
public static Thickness GetHeaderPadding(DependencyObject obj)
|
||||
{
|
||||
return (Thickness)obj.GetValue(HeaderPaddingProperty);
|
||||
}
|
||||
public static void SetHeaderPadding(DependencyObject obj, Thickness value)
|
||||
{
|
||||
obj.SetValue(HeaderPaddingProperty, value);
|
||||
}
|
||||
public static bool GetIsDragHelperVisible(DependencyObject obj)
|
||||
{
|
||||
return (bool)obj.GetValue(IsDragHelperVisibleProperty);
|
||||
}
|
||||
public static void SetIsDragHelperVisible(DependencyObject obj, bool value)
|
||||
{
|
||||
obj.SetValue(IsDragHelperVisibleProperty, value);
|
||||
}
|
||||
public static Brush GetSpecialBrush(DependencyObject obj)
|
||||
{
|
||||
return (Brush)obj.GetValue(SpecialBrushProperty);
|
||||
}
|
||||
public static void SetSpecialBrush(DependencyObject obj, Brush value)
|
||||
{
|
||||
obj.SetValue(SpecialBrushProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SpecialBrushProperty = DependencyProperty.RegisterAttached("SpecialBrush", typeof(Brush), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty IsDragHelperVisibleProperty = DependencyProperty.RegisterAttached("IsDragHelperVisible", typeof(bool), typeof(MarkupExtensionProperties), new FrameworkPropertyMetadata(true));
|
||||
public static readonly DependencyProperty HeaderPaddingProperty = DependencyProperty.RegisterAttached("HeaderPadding", typeof(Thickness), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.RegisterAttached("CornerRadius", typeof(CornerRadius), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty LeadingElementProperty = DependencyProperty.RegisterAttached("LeadingElement", typeof(object), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty TrailingElementProperty = DependencyProperty.RegisterAttached("TrailingElement", typeof(object), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty HeaderProperty = DependencyProperty.RegisterAttached("Header", typeof(object), typeof(MarkupExtensionProperties), new FrameworkPropertyMetadata(null));
|
||||
public static readonly DependencyProperty DockingProperty = DependencyProperty.RegisterAttached("Docking", typeof(Dock), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty IconProperty = DependencyProperty.RegisterAttached("Icon", typeof(object), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty HeaderHeightProperty = DependencyProperty.RegisterAttached("HeaderHeight", typeof(double), typeof(MarkupExtensionProperties), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty HeaderVerticalAlignmentProperty = DependencyProperty.RegisterAttached("HeaderVerticalAlignment", typeof(VerticalAlignment), typeof(MarkupExtensionProperties), new PropertyMetadata(VerticalAlignment.Center));
|
||||
public static readonly DependencyProperty HeaderHorizontalAlignmentProperty = DependencyProperty.RegisterAttached("HeaderHorizontalAlignment", typeof(HorizontalAlignment), typeof(MarkupExtensionProperties), new PropertyMetadata(HorizontalAlignment.Left));
|
||||
public static readonly DependencyProperty SpecialHeightProperty = DependencyProperty.RegisterAttached("SpecialHeight", typeof(double), typeof(MarkupExtensionProperties), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.Inherits | FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
|
||||
public static readonly DependencyProperty SpecialWidthProperty = DependencyProperty.RegisterAttached("SpecialWidth", typeof(double), typeof(MarkupExtensionProperties), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.Inherits | FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
72
BrightSharp/Extensions/WpfExtensions.cs
Normal file
72
BrightSharp/Extensions/WpfExtensions.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Media3D;
|
||||
|
||||
namespace BrightSharp.Extensions
|
||||
{
|
||||
public static class WpfExtensions
|
||||
{
|
||||
public static DependencyObject GetParent(this DependencyObject obj, bool useLogicalTree = false)
|
||||
{
|
||||
if (!useLogicalTree && (obj is Visual || obj is Visual3D))
|
||||
return VisualTreeHelper.GetParent(obj) ?? LogicalTreeHelper.GetParent(obj);
|
||||
else
|
||||
return LogicalTreeHelper.GetParent(obj);
|
||||
}
|
||||
public static IEnumerable<T> Ancestors<T>(this DependencyObject obj, bool useLogicalTree = false) where T : DependencyObject
|
||||
{
|
||||
if (obj == null) yield break;
|
||||
|
||||
var x = GetParent(obj, useLogicalTree);
|
||||
|
||||
while (x != null && !(x is T))
|
||||
{
|
||||
x = GetParent(x, useLogicalTree);
|
||||
}
|
||||
if (x != null)
|
||||
yield return x as T;
|
||||
else
|
||||
yield break;
|
||||
foreach (var item in Ancestors<T>(x, useLogicalTree))
|
||||
{
|
||||
yield return item;
|
||||
}
|
||||
}
|
||||
|
||||
public static T FindAncestor<T>(this DependencyObject obj) where T : DependencyObject
|
||||
{
|
||||
return Ancestors<T>(obj).FirstOrDefault();
|
||||
}
|
||||
public static Panel GetItemsPanel(DependencyObject itemsControl)
|
||||
{
|
||||
if (itemsControl is Panel) return (Panel)itemsControl;
|
||||
ItemsPresenter itemsPresenter = GetVisualChild<ItemsPresenter>(itemsControl);
|
||||
var itemsPanel = VisualTreeHelper.GetChild(itemsPresenter, 0) as Panel;
|
||||
return itemsPanel;
|
||||
}
|
||||
public static T GetVisualChild<T>(DependencyObject parent) where T : Visual
|
||||
{
|
||||
T child = default(T);
|
||||
|
||||
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
|
||||
for (int i = 0; i < numVisuals; i++)
|
||||
{
|
||||
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
|
||||
child = v as T;
|
||||
if (child == null)
|
||||
{
|
||||
child = GetVisualChild<T>(v);
|
||||
}
|
||||
if (child != null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return child;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
26
BrightSharp/Generic.cs
Normal file
26
BrightSharp/Generic.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace BrightSharp
|
||||
{
|
||||
internal partial class Generic
|
||||
{
|
||||
private const string StyleDictionaryPattern = @"(?<=.+style\.)(.*?)(?=\.xaml)";
|
||||
public void CalendarPreviewMouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (Mouse.Captured is CalendarItem) { Mouse.Capture(null); }
|
||||
}
|
||||
public void DatePickerUnloaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender == null) return;
|
||||
DependencyObject child = ((Popup)((DatePicker)sender).Template.FindName("PART_Popup", (FrameworkElement)sender))?.Child;
|
||||
while (child != null && !(child is AdornerDecorator))
|
||||
child = VisualTreeHelper.GetParent(child) ?? LogicalTreeHelper.GetParent(child);
|
||||
if (((AdornerDecorator)child)?.Child is Calendar) ((AdornerDecorator)child).Child = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
5648
BrightSharp/Generic.xaml
Normal file
5648
BrightSharp/Generic.xaml
Normal file
File diff suppressed because it is too large
Load Diff
102
BrightSharp/Mvvm/ViewModelBase.cs
Normal file
102
BrightSharp/Mvvm/ViewModelBase.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Windows;
|
||||
|
||||
namespace BrightSharp.Mvvm
|
||||
{
|
||||
public class ObservableObject : INotifyPropertyChanged
|
||||
{
|
||||
static readonly DependencyObject designTimeObject = new DependencyObject();
|
||||
public static bool IsInDesignTime
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
return DesignerProperties.GetIsInDesignMode(designTimeObject);
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected PropertyChangedEventHandler PropertyChangedHandler
|
||||
{
|
||||
get
|
||||
{
|
||||
return PropertyChanged;
|
||||
}
|
||||
}
|
||||
|
||||
public ObservableObject()
|
||||
{
|
||||
}
|
||||
|
||||
protected static string GetPropertyName<T>(Expression<Func<T>> propertyExpression)
|
||||
{
|
||||
if(propertyExpression == null)
|
||||
{
|
||||
throw new ArgumentNullException("propertyExpression");
|
||||
}
|
||||
MemberExpression body = propertyExpression.Body as MemberExpression;
|
||||
if(body == null)
|
||||
{
|
||||
throw new ArgumentException("Invalid argument", "propertyExpression");
|
||||
}
|
||||
PropertyInfo property = body.Member as PropertyInfo;
|
||||
if(property == null)
|
||||
{
|
||||
throw new ArgumentException("Argument is not a property", "propertyExpression");
|
||||
}
|
||||
return property.Name;
|
||||
}
|
||||
|
||||
protected virtual void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
|
||||
{
|
||||
PropertyChangedEventHandler handler = PropertyChanged;
|
||||
if(handler != null)
|
||||
{
|
||||
handler(this, new PropertyChangedEventArgs(GetPropertyName(propertyExpression)));
|
||||
}
|
||||
}
|
||||
|
||||
protected Boolean Set<T>(Expression<Func<T>> propertyExpression, ref T field, T newValue)
|
||||
{
|
||||
if(EqualityComparer<T>.Default.Equals(field, newValue))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
field = newValue;
|
||||
this.RaisePropertyChanged(propertyExpression);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected bool Set<T>(string propertyName, ref T field, T newValue)
|
||||
{
|
||||
if(EqualityComparer<T>.Default.Equals(field, newValue))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
field = newValue;
|
||||
RaisePropertyChanged(propertyName);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void RaisePropertyChanged(string propertyName)
|
||||
{
|
||||
PropertyChangedEventHandler handler = PropertyChanged;
|
||||
if(handler != null)
|
||||
{
|
||||
handler(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
using System.Windows.Markup;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
@@ -53,3 +54,7 @@ using System.Windows;
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: XmlnsPrefix("http://schemas.brightsharp.com/developer", "bs")]
|
||||
[assembly: XmlnsDefinition("http://schemas.brightsharp.com/developer", "BrightSharp")]
|
||||
[assembly: XmlnsDefinition("http://schemas.brightsharp.com/developer", "BrightSharp.Extensions")]
|
||||
[assembly: XmlnsDefinition("http://schemas.brightsharp.com/developer", "BrightSharp.Behaviors")]
|
||||
286
BrightSharp/Style.Blue.xaml
Normal file
286
BrightSharp/Style.Blue.xaml
Normal file
@@ -0,0 +1,286 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<sys:Boolean x:Key="IsInverseTheme">False</sys:Boolean>
|
||||
|
||||
<CornerRadius x:Key="DefaultRadiusSmall">1</CornerRadius>
|
||||
<CornerRadius x:Key="DefaultRadiusNormal">3</CornerRadius>
|
||||
|
||||
<CornerRadius x:Key="TabItemRadius">0,8,0,0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusTop">0,2,2,2</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusLeft">0,5,5,0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusRight">5,0,0,5</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusBottom">5,5,0,0</CornerRadius>
|
||||
|
||||
<Color x:Key="ValidationErrorColor">Red</Color>
|
||||
|
||||
<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,1" EndPoint="0,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="1.0"/>
|
||||
<GradientStop Color="#FFC4C8E6" Offset="0.6"/>
|
||||
<GradientStop Color="#FFC0C4DE" Offset="0.55"/>
|
||||
<GradientStop Color="#FFC6DAFF" Offset="0.0"/>
|
||||
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="VerticalNormalBrush" StartPoint="1,0" EndPoint="0,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="1.0"/>
|
||||
<GradientStop Color="#FFC4C8E6" Offset="0.6"/>
|
||||
<GradientStop Color="#FFC0C4DE" Offset="0.55"/>
|
||||
<GradientStop Color="#FFC6DAFF" Offset="0.0"/>
|
||||
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="NormalProgressBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF3CCF37" Offset="0.0"/>
|
||||
<GradientStop Color="#FF2FA22A" Offset="0.5"/>
|
||||
<GradientStop Color="#FFA6C5A5" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
|
||||
<GradientStop Color="#00ffffff"
|
||||
Offset="0" />
|
||||
<GradientStop Color="#c0ffffff"
|
||||
Offset="0.3" />
|
||||
<GradientStop Color="#d0ffffff"
|
||||
Offset="0.8" />
|
||||
<GradientStop Color="#00ffffff"
|
||||
Offset="1" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateRootBrush" EndPoint="0.5,1" StartPoint="0.5,0">
|
||||
<GradientStop Color="#F6BCD5FF" Offset="0.046" />
|
||||
<GradientStop Color="#96D4E4FF" Offset="0.18" />
|
||||
<GradientStop Color="#4FFFFFFF" Offset="0.512" />
|
||||
<GradientStop Color="#00D6D6D6" Offset="0.521" />
|
||||
<GradientStop Color="#BABCD5FF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateFillBrush" EndPoint="0,1" StartPoint="20,1" MappingMode="Absolute" SpreadMethod="Repeat">
|
||||
<LinearGradientBrush.Transform>
|
||||
<TransformGroup>
|
||||
<SkewTransform AngleX="-10" />
|
||||
</TransformGroup>
|
||||
</LinearGradientBrush.Transform>
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.088" />
|
||||
<GradientStop Color="#006EA4FD" Offset="0.475" />
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.899" />
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF605CBB" Offset="0.0"/>
|
||||
<GradientStop Color="#FF5B4F4F" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalNormalBorderBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFACA3D4" Offset="0.0"/>
|
||||
<GradientStop Color="#FF4F2A2A" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="TopLevelMenuBackgroundHover" Color="#FFFCFFBD" />
|
||||
|
||||
<!-- Light Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="0.0"/>
|
||||
<GradientStop Color="#FFD9E1F9" Offset="0.5"/>
|
||||
<GradientStop Color="#FFDDDDFB" Offset="0.85"/>
|
||||
<GradientStop Color="#FF9B9B9B" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalLightBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="0.0"/>
|
||||
<GradientStop Color="#FFD9E1F9" Offset="0.5"/>
|
||||
<GradientStop Color="#FFDDDDFB" Offset="0.85"/>
|
||||
<GradientStop Color="#FF9B9B9B" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Dark Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="DarkBrush" StartPoint="0,1" EndPoint="0,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="1.0"/>
|
||||
<GradientStop Color="#FFCCD0E8" Offset="0.6"/>
|
||||
<GradientStop Color="#FFC4CAF1" Offset="0.55"/>
|
||||
<GradientStop Color="#FFD1E1FF" Offset="0.0"/>
|
||||
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="VerticalDarkBrush" StartPoint="1,0" EndPoint="0,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFCDD6F5" Offset="1.0"/>
|
||||
<GradientStop Color="#FF99A6E6" Offset="0.6"/>
|
||||
<GradientStop Color="#FFB5B3EC" Offset="0.55"/>
|
||||
<GradientStop Color="#FFD8E8FD" Offset="0.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Pressed Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF6FBC5" Offset="0.0"/>
|
||||
<GradientStop Color="#FFE2D231" Offset="0.2"/>
|
||||
<GradientStop Color="#FFE5FFB9" Offset="0.9"/>
|
||||
<GradientStop Color="#FFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="TogglePressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF6FBC5" Offset="0.0"/>
|
||||
<GradientStop Color="#FFE2D231" Offset="0.2"/>
|
||||
<GradientStop Color="#FFE5FFB9" Offset="0.9"/>
|
||||
<GradientStop Color="#FFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="VerticalPressedBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF6FBC5" Offset="0.0"/>
|
||||
<GradientStop Color="#FFE2D231" Offset="0.2"/>
|
||||
<GradientStop Color="#FFE5FFB9" Offset="0.9"/>
|
||||
<GradientStop Color="#FFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="PressedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF870000" Offset="0.0"/>
|
||||
<GradientStop Color="#FF5D5D5D" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Defaulted Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="DefaultedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#777" Offset="0.0"/>
|
||||
<GradientStop Color="#000" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Disabled Brush -->
|
||||
|
||||
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#FF303030" />
|
||||
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#FFB7B7B7" />
|
||||
<SolidColorBrush x:Key="DisabledBorderBrush" Color="#FF7E7070" />
|
||||
|
||||
<!-- Border Brushes -->
|
||||
|
||||
<SolidColorBrush x:Key="SolidBorderBrush" Color="#FF1D426E" />
|
||||
<SolidColorBrush x:Key="LightBorderBrush" Color="#FF9E9E9E" />
|
||||
|
||||
<!-- Miscellaneous Brushes -->
|
||||
|
||||
<LinearGradientBrush x:Key="ScrollBarPageButtonVertBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#FFD3DBFF" />
|
||||
<GradientStop Offset="0.3" Color="White" />
|
||||
<GradientStop Offset="0.7" Color="White" />
|
||||
<GradientStop Offset="1" Color="#FFD3DBFF" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ScrollBarPageButtonHorizBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#FFD3DBFF" />
|
||||
<GradientStop Offset="0.3" Color="White" />
|
||||
<GradientStop Offset="0.7" Color="White" />
|
||||
<GradientStop Offset="1" Color="#FFD3DBFF" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="TabItemSelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFE0FFC1" Offset="0.0"/>
|
||||
<GradientStop Color="#FFBCE6B2" Offset="0.2"/>
|
||||
<GradientStop Color="#FFE3FFD5" Offset="0.85"/>
|
||||
<GradientStop Color="White" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="MainMenuForegroundBrush" Color="Black"/>
|
||||
|
||||
|
||||
|
||||
<!--Color STYLED Brush-->
|
||||
|
||||
<LinearGradientBrush x:Key="WindowBackgroundBrush">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#EFEBF8FF" />
|
||||
<GradientStop Offset="1" Color="#EFF3F3F3" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<Color x:Key="WindowBackgroundHoverColor">#FFF</Color>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="SelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Color="#CC9ACBFF" Offset="0" />
|
||||
<GradientStop Color="#FF7DBAFF" Offset=".3" />
|
||||
<GradientStop Color="#FF7DBAFF" Offset=".7" />
|
||||
<GradientStop Color="#CC9ACBFF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
<SolidColorBrush x:Key="GlyphBrush" Color="#FF2B1717" />
|
||||
<SolidColorBrush x:Key="LightColorBrush" Color="#E9ECF8" />
|
||||
|
||||
<Color x:Key="OnWindowForegroundColor">#FF1B140F</Color>
|
||||
<Color x:Key="SelectedUnfocusedColor">#FFB6B6B6</Color>
|
||||
|
||||
|
||||
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#F0F0F0" />
|
||||
<SolidColorBrush x:Key="SynWindowBackgroundBrush" Color="#FFD1D1D1" />
|
||||
<Color x:Key="SelectedBackgroundColor">#FFE6D745</Color>
|
||||
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
|
||||
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="#FF500000" />
|
||||
<Color x:Key="UiForegroundColor">Black</Color>
|
||||
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="White" />
|
||||
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
|
||||
|
||||
</ResourceDictionary>
|
||||
277
BrightSharp/Style.DarkBlue.xaml
Normal file
277
BrightSharp/Style.DarkBlue.xaml
Normal file
@@ -0,0 +1,277 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<sys:Boolean x:Key="IsInverseTheme">True</sys:Boolean>
|
||||
|
||||
<CornerRadius x:Key="DefaultRadiusSmall">1</CornerRadius>
|
||||
<CornerRadius x:Key="DefaultRadiusNormal">3</CornerRadius>
|
||||
|
||||
<CornerRadius x:Key="TabItemRadius">0,8,0,0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusTop">0,2,2,2</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusLeft">0,5,5,0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusRight">5,0,0,5</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusBottom">5,5,0,0</CornerRadius>
|
||||
|
||||
|
||||
<Color x:Key="SelectedBackgroundColor" >#99BDFF</Color>
|
||||
<Color x:Key="SelectedUnfocusedColor" >#999999</Color>
|
||||
<Color x:Key="ControlLightColor" >#FF2F596E</Color>
|
||||
<Color x:Key="ControlMediumColor" >#FF10405B</Color>
|
||||
<Color x:Key="ControlDarkColor" >#FF2B404B</Color>
|
||||
|
||||
<Color x:Key="ControlMouseOverColor" >#FFA5A7BA</Color>
|
||||
<Color x:Key="ControlPressedColor" >#FF47909B</Color>
|
||||
|
||||
<Color x:Key="ValidationErrorColor" >#FF3333</Color>
|
||||
|
||||
<Color x:Key="UiForegroundColor">#ffffff</Color>
|
||||
<SolidColorBrush x:Key="UiForegroundBrush" Color="White" />
|
||||
<Color x:Key="WindowBackgroundHoverColor">#555555</Color>
|
||||
|
||||
<SolidColorBrush x:Key="TopLevelMenuBackgroundHover" Color="#FF414566" />
|
||||
<SolidColorBrush x:Key="DisabledBorderBrush" Color="#FF575757" />
|
||||
|
||||
<SolidColorBrush x:Key="SolidBorderBrush" Color="Black" />
|
||||
<SolidColorBrush x:Key="LightBorderBrush" Color="DarkGray" />
|
||||
<SolidColorBrush x:Key="MainMenuForegroundBrush" Color="White"/>
|
||||
|
||||
<LinearGradientBrush x:Key="WindowBackgroundBrush">
|
||||
<GradientStop Color="#444444" />
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<SolidColorBrush x:Key="GlyphBrush" Color="#ffffff" />
|
||||
<SolidColorBrush x:Key="LightColorBrush" Color="#FF57575F" />
|
||||
|
||||
<Color x:Key="OnWindowForegroundColor">White</Color>
|
||||
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
|
||||
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#bbb" />
|
||||
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#FF303030" />
|
||||
|
||||
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#FF404040" />
|
||||
|
||||
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="Black" />
|
||||
|
||||
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="#555555" />
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF08547D" Offset="0.02"/>
|
||||
<GradientStop Color="#FF2A546A" Offset="0.25"/>
|
||||
<GradientStop Color="#FF1F3A49" Offset="0.75"/>
|
||||
<GradientStop Color="#FF3A6F90" Offset="1"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="VerticalNormalBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF2F596E" Offset="0.02"/>
|
||||
<GradientStop Color="#FF10405B" Offset="1"/>
|
||||
<GradientStop Color="#FF2B404B" Offset="0.209"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF7A8DAA" Offset="0.0"/>
|
||||
<GradientStop Color="#FF4B4B4B" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="HorizontalNormalBorderBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF6C6C6C" Offset="0.0"/>
|
||||
<GradientStop Color="#FF8B8B8B" Offset=".5"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Light Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalLightBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF616161" Offset="0.0"/>
|
||||
<GradientStop Color="#FF3F3E49" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF2F4249" Offset="0"/>
|
||||
<GradientStop Color="#FF2D566C" Offset="1"/>
|
||||
<GradientStop Color="#FF004161" Offset="0.507"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="VerticalDarkBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF5C7783" Offset="0.0"/>
|
||||
<GradientStop Color="#FF47545B" Offset="1"/>
|
||||
<GradientStop Color="#FF134B66" Offset="0.557"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<!-- Pressed Brush -->
|
||||
<LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF7599AA" Offset="0.0"/>
|
||||
<GradientStop Color="#FF37738F" Offset="1.0"/>
|
||||
<GradientStop Color="#FF306178" Offset="0.55"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="TogglePressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF7599AA" Offset="0.0"/>
|
||||
<GradientStop Color="#FF37738F" Offset="1.0"/>
|
||||
<GradientStop Color="#FF306178" Offset="0.55"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="VerticalPressedBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF7599AA" Offset="0.0"/>
|
||||
<GradientStop Color="#FF37738F" Offset="1.0"/>
|
||||
<GradientStop Color="#FF306178" Offset="0.55"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="PressedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#444" Offset="0.0"/>
|
||||
<GradientStop Color="#888" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Defaulted Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="DefaultedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#777" Offset="0.3"/>
|
||||
<GradientStop Color="#000" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Disabled Brush -->
|
||||
|
||||
|
||||
<!-- Border Brushes -->
|
||||
|
||||
<!-- Miscellaneous Brushes -->
|
||||
|
||||
<LinearGradientBrush x:Key="ScrollBarPageButtonVertBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#FF707070" />
|
||||
<GradientStop Offset="0.3" Color="#FF494949" />
|
||||
<GradientStop Offset="0.7" Color="#FF494949" />
|
||||
<GradientStop Offset="1" Color="#FF707070" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ScrollBarPageButtonHorizBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#FF707070" />
|
||||
<GradientStop Offset="0.3" Color="#FF494949" />
|
||||
<GradientStop Offset="0.7" Color="#FF494949" />
|
||||
<GradientStop Offset="1" Color="#FF707070" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="TabItemSelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF3DE459" Offset="0"/>
|
||||
<GradientStop Color="#FF0071A8" Offset="0.05"/>
|
||||
<GradientStop Color="#FF0071A8" Offset="0.5"/>
|
||||
<GradientStop Color="#FF0B374F" Offset="1"/>
|
||||
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
|
||||
<!--Color STYLED Brush-->
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="SelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Color="#CC9ACBFF" Offset="0" />
|
||||
<GradientStop Color="#FF7DBAFF" Offset=".3" />
|
||||
<GradientStop Color="#FF7DBAFF" Offset=".7" />
|
||||
<GradientStop Color="#CC9ACBFF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF616161" Offset="0.0"/>
|
||||
<GradientStop Color="#FF3F3E49" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="ListViewFileItemBrush">
|
||||
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateRootBrush" EndPoint="0.5,1" StartPoint="0.5,0">
|
||||
<GradientStop Color="#F6BCD5FF" Offset="0.046" />
|
||||
<GradientStop Color="#96D4E4FF" Offset="0.18" />
|
||||
<GradientStop Color="#4FFFFFFF" Offset="0.512" />
|
||||
<GradientStop Color="#00D6D6D6" Offset="0.521" />
|
||||
<GradientStop Color="#BABCD5FF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateFillBrush" EndPoint="0,1" StartPoint="20,1" MappingMode="Absolute" SpreadMethod="Repeat">
|
||||
<LinearGradientBrush.Transform>
|
||||
<TransformGroup>
|
||||
<SkewTransform AngleX="-10" />
|
||||
</TransformGroup>
|
||||
</LinearGradientBrush.Transform>
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.088" />
|
||||
<GradientStop Color="#006EA4FD" Offset="0.475" />
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.899" />
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="NormalProgressBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF9BA8FD" Offset="0.0"/>
|
||||
<GradientStop Color="#FF0B1C89" Offset="0.4"/>
|
||||
<GradientStop Color="#FF4B678F" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
|
||||
<GradientStop Color="#00eeeeee"
|
||||
Offset="0" />
|
||||
<GradientStop Color="#c0eeeeee"
|
||||
Offset="0.3" />
|
||||
<GradientStop Color="#d0eeeeee"
|
||||
Offset="0.8" />
|
||||
<GradientStop Color="#00eeeeee"
|
||||
Offset="1" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
</ResourceDictionary>
|
||||
236
BrightSharp/Style.DevLab.xaml
Normal file
236
BrightSharp/Style.DevLab.xaml
Normal file
@@ -0,0 +1,236 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:system="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<system:Boolean x:Key="IsInverseTheme">False</system:Boolean>
|
||||
|
||||
<CornerRadius x:Key="DefaultRadiusSmall">0</CornerRadius>
|
||||
<CornerRadius x:Key="DefaultRadiusNormal">1</CornerRadius>
|
||||
|
||||
|
||||
<CornerRadius x:Key="TabRadiusTop">0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusLeft">0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusRight">0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusBottom">0</CornerRadius>
|
||||
<CornerRadius x:Key="TabItemRadius">0,2,0,0</CornerRadius>
|
||||
|
||||
|
||||
<Color x:Key="ValidationErrorColor">Red</Color>
|
||||
|
||||
<SolidColorBrush x:Key="NormalBrush" Color="#FFDFE1EF" />
|
||||
<SolidColorBrush x:Key="VerticalNormalBrush" Color="#FFDFE1EF" />
|
||||
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateRootBrush" EndPoint="0.5,1" StartPoint="0.5,0">
|
||||
<GradientStop Color="#F6BCD5FF" Offset="0.046" />
|
||||
<GradientStop Color="#96D4E4FF" Offset="0.18" />
|
||||
<GradientStop Color="#4FFFFFFF" Offset="0.512" />
|
||||
<GradientStop Color="#00D6D6D6" Offset="0.521" />
|
||||
<GradientStop Color="#BABCD5FF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateFillBrush" EndPoint="0,1" StartPoint="20,1" MappingMode="Absolute" SpreadMethod="Repeat">
|
||||
<LinearGradientBrush.Transform>
|
||||
<TransformGroup>
|
||||
<SkewTransform AngleX="-10" />
|
||||
</TransformGroup>
|
||||
</LinearGradientBrush.Transform>
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.088" />
|
||||
<GradientStop Color="#006EA4FD" Offset="0.475" />
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.899" />
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="NormalProgressBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF678D66" Offset="0.0"/>
|
||||
<GradientStop Color="#FF2FA22A" Offset="0.4"/>
|
||||
<GradientStop Color="#FF576A56" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
|
||||
<GradientStop Color="#00ffffff"
|
||||
Offset="0" />
|
||||
<GradientStop Color="#c0ffffff"
|
||||
Offset="0.3" />
|
||||
<GradientStop Color="#d0ffffff"
|
||||
Offset="0.8" />
|
||||
<GradientStop Color="#00ffffff"
|
||||
Offset="1" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#CCC" Offset="0.0"/>
|
||||
<GradientStop Color="#444" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalNormalBorderBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#CCC" Offset="0.0"/>
|
||||
<GradientStop Color="#444" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="TopLevelMenuBackgroundHover" Color="White" />
|
||||
|
||||
<!-- Light Brush -->
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalLightBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#EEE" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Dark Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#FFD7DDFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="VerticalDarkBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#FFD7DDFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<!-- Pressed Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="0.0"/>
|
||||
<GradientStop Color="#FFFFBC8D" Offset="0.1"/>
|
||||
<GradientStop Color="#FFFFB49E" Offset="0.796"/>
|
||||
<GradientStop Color="#FFFFF4F4" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="TogglePressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="0.0"/>
|
||||
<GradientStop Color="#FFFFBC8D" Offset="0.1"/>
|
||||
<GradientStop Color="#FFFFB49E" Offset="0.796"/>
|
||||
<GradientStop Color="#FFFFF4F4" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="VerticalPressedBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="0.0"/>
|
||||
<GradientStop Color="#FFFFBC8D" Offset="0.1"/>
|
||||
<GradientStop Color="#FFFFB49E" Offset="0.796"/>
|
||||
<GradientStop Color="#FFFFF4F4" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="PressedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#444" Offset="0.0"/>
|
||||
<GradientStop Color="#444" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Defaulted Brush -->
|
||||
|
||||
<SolidColorBrush x:Key="DefaultedBorderBrush" Color="Black"/>
|
||||
|
||||
<!-- Disabled Brush -->
|
||||
|
||||
<SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />
|
||||
|
||||
<!-- Border Brushes -->
|
||||
|
||||
<SolidColorBrush x:Key="SolidBorderBrush" Color="#888" />
|
||||
<SolidColorBrush x:Key="LightBorderBrush" Color="#AAA" />
|
||||
|
||||
<!-- Miscellaneous Brushes -->
|
||||
|
||||
<SolidColorBrush x:Key="ScrollBarPageButtonVertBrush" Color="#FFF3F3F3" />
|
||||
|
||||
<SolidColorBrush x:Key="ScrollBarPageButtonHorizBrush" Color="White" />
|
||||
|
||||
|
||||
<SolidColorBrush x:Key="TabItemSelectedBackgroundBrush" Color="#FFF0E0FF"/>
|
||||
|
||||
<SolidColorBrush x:Key="MainMenuForegroundBrush" Color="Black"/>
|
||||
|
||||
|
||||
<!--Color STYLED Brush-->
|
||||
|
||||
<SolidColorBrush x:Key="WindowBackgroundBrush" Color="White" />
|
||||
|
||||
<Color x:Key="WindowBackgroundHoverColor">White</Color>
|
||||
|
||||
<SolidColorBrush x:Key="SelectedBackgroundBrush" Color="#FFFFE0E0" />
|
||||
<SolidColorBrush x:Key="GlyphBrush" Color="#444" />
|
||||
<SolidColorBrush x:Key="LightColorBrush" Color="#FFF3F3F3" />
|
||||
|
||||
<Color x:Key="OnWindowForegroundColor">Black</Color>
|
||||
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
|
||||
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#FF4D4D4D" />
|
||||
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="White" Offset="0.0"/>
|
||||
<GradientStop Color="#FFF3F3F3" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#F0F0F0" />
|
||||
<SolidColorBrush x:Key="SynWindowBackgroundBrush" Color="#FFE4E4E4" />
|
||||
|
||||
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="#FF500000" />
|
||||
|
||||
<Color x:Key="UiForegroundColor">Black</Color>
|
||||
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
|
||||
|
||||
|
||||
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="White" />
|
||||
|
||||
|
||||
<Color x:Key="SelectedBackgroundColor">#C5C5C5</Color>
|
||||
<Color x:Key="SelectedUnfocusedColor">#FFB6B6B6</Color>
|
||||
<Color x:Key="ControlLightColor">#FFFFFFFF</Color>
|
||||
<Color x:Key="ControlMediumColor">#FFC5C5C5</Color>
|
||||
<Color x:Key="ControlDarkColor">#FF6B6B6B</Color>
|
||||
|
||||
<Color x:Key="ControlMouseOverColor">#FFA5A7BA</Color>
|
||||
<Color x:Key="ControlPressedColor">#FF47909B</Color>
|
||||
|
||||
|
||||
|
||||
</ResourceDictionary>
|
||||
284
BrightSharp/Style.Silver.xaml
Normal file
284
BrightSharp/Style.Silver.xaml
Normal file
@@ -0,0 +1,284 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<sys:Boolean x:Key="IsInverseTheme">False</sys:Boolean>
|
||||
|
||||
<CornerRadius x:Key="DefaultRadiusSmall">1</CornerRadius>
|
||||
<CornerRadius x:Key="DefaultRadiusNormal">3</CornerRadius>
|
||||
|
||||
<CornerRadius x:Key="TabItemRadius">0,8,0,0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusTop">0,2,2,2</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusLeft">0,5,5,0</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusRight">5,0,0,5</CornerRadius>
|
||||
<CornerRadius x:Key="TabRadiusBottom">5,5,0,0</CornerRadius>
|
||||
|
||||
<Color x:Key="ValidationErrorColor">Red</Color>
|
||||
|
||||
<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#CCC" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="VerticalNormalBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#CCC" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateRootBrush" EndPoint="0.5,1" StartPoint="0.5,0">
|
||||
<GradientStop Color="#F6BCD5FF" Offset="0.046" />
|
||||
<GradientStop Color="#96D4E4FF" Offset="0.18" />
|
||||
<GradientStop Color="#4FFFFFFF" Offset="0.512" />
|
||||
<GradientStop Color="#00D6D6D6" Offset="0.521" />
|
||||
<GradientStop Color="#BABCD5FF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndeterminateFillBrush" EndPoint="0,1" StartPoint="20,1" MappingMode="Absolute" SpreadMethod="Repeat">
|
||||
<LinearGradientBrush.Transform>
|
||||
<TransformGroup>
|
||||
<SkewTransform AngleX="-10" />
|
||||
</TransformGroup>
|
||||
</LinearGradientBrush.Transform>
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.088" />
|
||||
<GradientStop Color="#006EA4FD" Offset="0.475" />
|
||||
<GradientStop Color="#FFBCD5FF" Offset="0.899" />
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="NormalProgressBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FF9B9B9B" Offset="0"/>
|
||||
<GradientStop Color="#FFB9B9B9" Offset="0.5"/>
|
||||
<GradientStop Color="#FFE8E8E8" Offset="1"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
|
||||
<GradientStop Color="#00ffffff"
|
||||
Offset="0" />
|
||||
<GradientStop Color="#c0ffffff"
|
||||
Offset="0.3" />
|
||||
<GradientStop Color="#d0ffffff"
|
||||
Offset="0.8" />
|
||||
<GradientStop Color="#00ffffff"
|
||||
Offset="1" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#CCC" Offset="0.0"/>
|
||||
<GradientStop Color="#444" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalNormalBorderBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#CCC" Offset="0.0"/>
|
||||
<GradientStop Color="#444" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="TopLevelMenuBackgroundHover" Color="Pink" />
|
||||
|
||||
<!-- Light Brush -->
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="HorizontalLightBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#EEE" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Dark Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#AAA" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="VerticalDarkBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#AAA" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<!-- Pressed Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#BBB" Offset="0.0"/>
|
||||
<GradientStop Color="#EEE" Offset="0.1"/>
|
||||
<GradientStop Color="#EEE" Offset="0.9"/>
|
||||
<GradientStop Color="#FFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="TogglePressedBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#E8D4D4" Offset="0.0"/>
|
||||
<GradientStop Color="#E3E8A6" Offset="0.1"/>
|
||||
<GradientStop Color="#ECF699" Offset="0.796"/>
|
||||
<GradientStop Color="#F3F3F3" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="VerticalPressedBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#BBB" Offset="0.0"/>
|
||||
<GradientStop Color="#EEE" Offset="0.1"/>
|
||||
<GradientStop Color="#EEE" Offset="0.9"/>
|
||||
<GradientStop Color="#FFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<LinearGradientBrush x:Key="PressedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#444" Offset="0.0"/>
|
||||
<GradientStop Color="#888" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Defaulted Brush -->
|
||||
|
||||
<LinearGradientBrush x:Key="DefaultedBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#777" Offset="0.3"/>
|
||||
<GradientStop Color="#000" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<!-- Disabled Brush -->
|
||||
|
||||
<SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />
|
||||
|
||||
<!-- Border Brushes -->
|
||||
|
||||
<SolidColorBrush x:Key="SolidBorderBrush" Color="#888" />
|
||||
<SolidColorBrush x:Key="LightBorderBrush" Color="#AAA" />
|
||||
|
||||
<!-- Miscellaneous Brushes -->
|
||||
|
||||
<LinearGradientBrush x:Key="ScrollBarPageButtonVertBrush" StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#FFD3DBFF" />
|
||||
<GradientStop Offset="0.3" Color="White" />
|
||||
<GradientStop Offset="0.7" Color="White" />
|
||||
<GradientStop Offset="1" Color="#FFD3DBFF" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ScrollBarPageButtonHorizBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#FFD3DBFF" />
|
||||
<GradientStop Offset="0.3" Color="White" />
|
||||
<GradientStop Offset="0.7" Color="White" />
|
||||
<GradientStop Offset="1" Color="#FFD3DBFF" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush>
|
||||
|
||||
|
||||
<LinearGradientBrush x:Key="TabItemSelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#BBB" Offset="0.0"/>
|
||||
<GradientStop Color="#EEE" Offset="0.1"/>
|
||||
<GradientStop Color="#EEE" Offset="0.85"/>
|
||||
<GradientStop Color="#FFF" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="MainMenuForegroundBrush" Color="Black"/>
|
||||
|
||||
|
||||
<!--Color STYLED Brush-->
|
||||
|
||||
<LinearGradientBrush x:Key="WindowBackgroundBrush">
|
||||
<GradientStop Color="#EEE" />
|
||||
</LinearGradientBrush>
|
||||
<Color x:Key="WindowBackgroundHoverColor">#FFF</Color>
|
||||
|
||||
<LinearGradientBrush x:Key="SelectedBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Color="#CC9ACBFF" Offset="0" />
|
||||
<GradientStop Color="#FF7DBAFF" Offset=".3" />
|
||||
<GradientStop Color="#FF7DBAFF" Offset=".7" />
|
||||
<GradientStop Color="#CC9ACBFF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
<SolidColorBrush x:Key="GlyphBrush" Color="#444" />
|
||||
<SolidColorBrush x:Key="LightColorBrush" Color="#DDD" />
|
||||
|
||||
<Color x:Key="OnWindowForegroundColor">Black</Color>
|
||||
<SolidColorBrush x:Key="OnWindowForegroundBrush" Color="{DynamicResource OnWindowForegroundColor}" />
|
||||
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#FF4D4D4D" />
|
||||
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
|
||||
|
||||
|
||||
<SolidColorBrush x:Key="AlternatingRowBackgroundBrush" Color="White" />
|
||||
|
||||
<LinearGradientBrush x:Key="LightBrush" StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#FFF" Offset="0.0"/>
|
||||
<GradientStop Color="#EEE" Offset="1.0"/>
|
||||
</GradientStopCollection>
|
||||
</GradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
|
||||
<SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="#F0F0F0" />
|
||||
<SolidColorBrush x:Key="SynWindowBackgroundBrush" Color="#FFE4E4E4" />
|
||||
|
||||
<SolidColorBrush x:Key="HighLightForegroundBrush" Color="DarkRed" />
|
||||
|
||||
<Color x:Key="UiForegroundColor">Black</Color>
|
||||
<SolidColorBrush x:Key="UiForegroundBrush" Color="{DynamicResource UiForegroundColor}" />
|
||||
|
||||
|
||||
|
||||
|
||||
<Color x:Key="SelectedBackgroundColor">SkyBlue</Color>
|
||||
<Color x:Key="SelectedUnfocusedColor">#FFB6B6B6</Color>
|
||||
<Color x:Key="ControlLightColor">#FFFFFFFF</Color>
|
||||
<Color x:Key="ControlMediumColor">#FFC5C5C5</Color>
|
||||
<Color x:Key="ControlDarkColor">#FF6B6B6B</Color>
|
||||
|
||||
<Color x:Key="ControlMouseOverColor">#FFA5A7BA</Color>
|
||||
<Color x:Key="ControlPressedColor">#FF47909B</Color>
|
||||
|
||||
|
||||
|
||||
</ResourceDictionary>
|
||||
53
BrightSharp/ThemeManager.cs
Normal file
53
BrightSharp/ThemeManager.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace BrightSharp
|
||||
{
|
||||
public enum ColorThemes
|
||||
{
|
||||
Classic,
|
||||
DevLab,
|
||||
Silver,
|
||||
Blue,
|
||||
DarkBlue
|
||||
}
|
||||
|
||||
public static class ThemeManager
|
||||
{
|
||||
private const string StyleDictionaryPattern = @"(?<=.+style\.)(.*?)(?=\.xaml)";
|
||||
public static ColorThemes Theme
|
||||
{
|
||||
get
|
||||
{
|
||||
var curStyleRes = Resources.Where(r => r.Source != null &&
|
||||
Regex.IsMatch(r.Source.OriginalString, StyleDictionaryPattern, RegexOptions.IgnoreCase)).FirstOrDefault();
|
||||
if (curStyleRes == null) return ColorThemes.Classic;
|
||||
var match = Regex.Match(curStyleRes.Source.OriginalString, StyleDictionaryPattern, RegexOptions.IgnoreCase);
|
||||
return (ColorThemes)Enum.Parse(typeof(ColorThemes), match.Value, true);
|
||||
}
|
||||
set
|
||||
{
|
||||
var curStyleRes = Resources.Where(r => r.Source != null &&
|
||||
Regex.IsMatch(r.Source.OriginalString, StyleDictionaryPattern, RegexOptions.IgnoreCase)).FirstOrDefault();
|
||||
if (curStyleRes != null)
|
||||
Resources.Remove(curStyleRes);
|
||||
if (value == ColorThemes.Classic)
|
||||
return;
|
||||
Resources.Add(new ResourceDictionary()
|
||||
{
|
||||
Source = new Uri($"/brightsharp;component/style.{value}.xaml", UriKind.RelativeOrAbsolute)
|
||||
});
|
||||
}
|
||||
}
|
||||
private static ICollection<ResourceDictionary> Resources
|
||||
{
|
||||
get { return Application.Current.Resources.MergedDictionaries; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<UserControl x:Class="BrightSharp.UserControl1"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:BrightSharp"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="300" d:DesignWidth="300">
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -1,28 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace BrightSharp
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for UserControl1.xaml
|
||||
/// </summary>
|
||||
public partial class UserControl1 : UserControl
|
||||
{
|
||||
public UserControl1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
210
BrightSharp/ZoomControl.cs
Normal file
210
BrightSharp/ZoomControl.cs
Normal file
@@ -0,0 +1,210 @@
|
||||
using BrightSharp.Extensions;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media.Animation;
|
||||
using BrightSharp.Diagrams;
|
||||
|
||||
namespace BrightSharp
|
||||
{
|
||||
|
||||
public partial class ZoomControl : ItemsControl
|
||||
{
|
||||
public ZoomControl()
|
||||
{
|
||||
Loaded += ZoomControl_Loaded;
|
||||
}
|
||||
|
||||
private void ZoomControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
SelectionBehavior.Attach(this);
|
||||
}
|
||||
|
||||
public ContentControl SelectedControl
|
||||
{
|
||||
get { return (ContentControl)GetValue(SelectedControlProperty); }
|
||||
set { SetValue(SelectedControlProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SelectedControlProperty =
|
||||
DependencyProperty.Register("SelectedControl", typeof(ContentControl), typeof(ZoomControl), new PropertyMetadata(null));
|
||||
|
||||
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
|
||||
{
|
||||
base.OnPreviewMouseDown(e);
|
||||
|
||||
if (e.MiddleButton == MouseButtonState.Pressed)
|
||||
{
|
||||
_panPoint = e.GetPosition(this);
|
||||
}
|
||||
}
|
||||
|
||||
private Point? _panPoint;
|
||||
|
||||
#region Props
|
||||
|
||||
public double TranslateX
|
||||
{
|
||||
get { return (double)GetValue(TranslateXProperty); }
|
||||
set { SetValue(TranslateXProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty TranslateXProperty =
|
||||
DependencyProperty.Register("TranslateX", typeof(double), typeof(ZoomControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsArrange, TranslateChangedHandler));
|
||||
|
||||
|
||||
|
||||
public double TranslateY
|
||||
{
|
||||
get { return (double)GetValue(TranslateYProperty); }
|
||||
set { SetValue(TranslateYProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty TranslateYProperty =
|
||||
DependencyProperty.Register("TranslateY", typeof(double), typeof(ZoomControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsArrange, TranslateChangedHandler));
|
||||
|
||||
|
||||
|
||||
public double RenderZoom
|
||||
{
|
||||
get { return (double)GetValue(RenderZoomProperty); }
|
||||
set { SetValue(RenderZoomProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty RenderZoomProperty =
|
||||
DependencyProperty.Register("RenderZoom", typeof(double), typeof(ZoomControl), new FrameworkPropertyMetadata(1.0, FrameworkPropertyMetadataOptions.AffectsArrange, ZoomChangedHandler));
|
||||
|
||||
private static void ZoomChangedHandler(DependencyObject d, DependencyPropertyChangedEventArgs baseValue)
|
||||
{
|
||||
ZoomControl zc = (ZoomControl)d;
|
||||
}
|
||||
private static void TranslateChangedHandler(DependencyObject d, DependencyPropertyChangedEventArgs baseValue)
|
||||
{
|
||||
ZoomControl zc = (ZoomControl)d;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private static readonly RoutedEvent ZoomChangedEvent = EventManager.RegisterRoutedEvent("ZoomChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(ZoomControl));
|
||||
|
||||
public event RoutedEventHandler ZoomChanged
|
||||
{
|
||||
add { AddHandler(ZoomChangedEvent, value); }
|
||||
remove { RemoveHandler(ZoomChangedEvent, value); }
|
||||
}
|
||||
|
||||
private void RaiseZoomChangedEvent()
|
||||
{
|
||||
var newEventArgs = new RoutedEventArgs(ZoomChangedEvent);
|
||||
RaiseEvent(newEventArgs);
|
||||
}
|
||||
|
||||
static ZoomControl()
|
||||
{
|
||||
DefaultStyleKeyProperty.OverrideMetadata(typeof(ZoomControl), new FrameworkPropertyMetadata(typeof(ZoomControl)));
|
||||
}
|
||||
|
||||
protected override void OnPreviewMouseWheel(MouseWheelEventArgs e)
|
||||
{
|
||||
if (CheckMouseOverControlWheelHandle(_panPoint.HasValue))
|
||||
return;
|
||||
|
||||
var point = e.GetPosition(this);
|
||||
|
||||
|
||||
var oldValue = RenderZoom;
|
||||
const double zoomPower = 1.25;
|
||||
var newValue = RenderZoom * (e.Delta > 0 ? zoomPower : 1 / zoomPower);
|
||||
if (UseAnimation)
|
||||
{
|
||||
DoubleAnimation anim = new DoubleAnimation(newValue, TimeSpan.FromSeconds(.3));
|
||||
anim.EasingFunction = new SineEase() { EasingMode = EasingMode.EaseInOut };
|
||||
this.BeginAnimation(ZoomControl.RenderZoomProperty, anim);
|
||||
}
|
||||
else
|
||||
{
|
||||
RenderZoom = newValue;
|
||||
}
|
||||
|
||||
RaiseZoomChangedEvent();
|
||||
|
||||
var translateXTo = CoercePanTranslate(TranslateX, point.X, oldValue, newValue);
|
||||
var translateYTo = CoercePanTranslate(TranslateY, point.Y, oldValue, newValue);
|
||||
if (UseAnimation)
|
||||
{
|
||||
DoubleAnimation anim = new DoubleAnimation(translateXTo, TimeSpan.FromSeconds(.3));
|
||||
anim.EasingFunction = new SineEase() { EasingMode = EasingMode.EaseInOut };
|
||||
this.BeginAnimation(ZoomControl.TranslateXProperty, anim);
|
||||
|
||||
anim = new DoubleAnimation(translateYTo, TimeSpan.FromSeconds(.3));
|
||||
anim.EasingFunction = new SineEase() { EasingMode = EasingMode.EaseInOut };
|
||||
this.BeginAnimation(ZoomControl.TranslateYProperty, anim);
|
||||
}
|
||||
else
|
||||
{
|
||||
TranslateX = translateXTo; TranslateY = translateYTo;
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
|
||||
base.OnPreviewMouseWheel(e);
|
||||
}
|
||||
public bool UseAnimation { get; set; }
|
||||
private static bool CheckMouseOverControlWheelHandle(bool checkFlowDoc = false)
|
||||
{
|
||||
if (Keyboard.IsKeyDown(Key.LeftCtrl)) return false;
|
||||
var element = Mouse.DirectlyOver as DependencyObject;
|
||||
if (element is ScrollViewer) return true;
|
||||
|
||||
var scrollViewer = element.FindAncestor<ScrollViewer>();
|
||||
if (scrollViewer != null)
|
||||
{
|
||||
return scrollViewer.ComputedVerticalScrollBarVisibility == Visibility.Visible
|
||||
|| scrollViewer.ComputedHorizontalScrollBarVisibility == Visibility.Visible;
|
||||
}
|
||||
if (checkFlowDoc)
|
||||
{
|
||||
var flowDocument = element.FindAncestor<FlowDocument>();
|
||||
if (flowDocument != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static double CoercePanTranslate(double oldTranslate, double mousePos, double oldZoom, double newZoom)
|
||||
{
|
||||
return Math.Round(oldTranslate + (oldTranslate - mousePos) * (newZoom - oldZoom) / oldZoom);
|
||||
}
|
||||
|
||||
protected override void OnMouseUp(MouseButtonEventArgs e)
|
||||
{
|
||||
base.OnMouseUp(e);
|
||||
|
||||
if (e.MiddleButton == MouseButtonState.Released)
|
||||
{
|
||||
_panPoint = null;
|
||||
ReleaseMouseCapture();
|
||||
}
|
||||
}
|
||||
protected override void OnPreviewMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnPreviewMouseMove(e);
|
||||
if (e.MiddleButton == MouseButtonState.Pressed && _panPoint.HasValue)
|
||||
{
|
||||
//PAN MODE
|
||||
var vector = e.GetPosition(this) - _panPoint.Value;
|
||||
_panPoint = _panPoint + vector;
|
||||
CaptureMouse();
|
||||
TranslateX += vector.X;
|
||||
TranslateY += vector.Y;
|
||||
BeginAnimation(TranslateXProperty, null);
|
||||
BeginAnimation(TranslateYProperty, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
BrightSharp/icons/app.png
Normal file
BIN
BrightSharp/icons/app.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 367 B |
BIN
BrightSharp/icons/copy.png
Normal file
BIN
BrightSharp/icons/copy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 503 B |
BIN
BrightSharp/icons/cut.png
Normal file
BIN
BrightSharp/icons/cut.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 510 B |
BIN
BrightSharp/icons/paste.png
Normal file
BIN
BrightSharp/icons/paste.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 715 B |
BIN
BrightSharp/icons/undo.png
Normal file
BIN
BrightSharp/icons/undo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
119
JetFrames.AppleJobs.Editor/App.config
Normal file
119
JetFrames.AppleJobs.Editor/App.config
Normal file
@@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="JetFrames.AppleJobs.Editor.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<connectionStrings>
|
||||
<add name="Default" providerName="MySql.Data.MySqlClient" connectionString="server=138.201.230.158;user id=admin_applejobs;pwd=dPARP0etzx;database=admin_applejobs_dev;CharSet=utf8;" />
|
||||
</connectionStrings>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
<entityFramework>
|
||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
|
||||
<parameters>
|
||||
<parameter value="v13.0" />
|
||||
</parameters>
|
||||
</defaultConnectionFactory>
|
||||
<providers>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
|
||||
</entityFramework>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="MySql.Data.MySqlClient" />
|
||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
||||
</DbProviderFactories>
|
||||
</system.data><userSettings>
|
||||
<JetFrames.AppleJobs.Editor.Properties.Settings>
|
||||
<setting name="Grid01LayoutX" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Grid01LayoutY" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Grid01LayoutWidth" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid01LayoutHeight" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid02LayoutX" serializeAs="String">
|
||||
<value>100</value>
|
||||
</setting>
|
||||
<setting name="Grid03LayoutX" serializeAs="String">
|
||||
<value>200</value>
|
||||
</setting>
|
||||
<setting name="Grid04LayoutX" serializeAs="String">
|
||||
<value>300</value>
|
||||
</setting>
|
||||
<setting name="Grid02LayoutY" serializeAs="String">
|
||||
<value>100</value>
|
||||
</setting>
|
||||
<setting name="Grid03LayoutY" serializeAs="String">
|
||||
<value>200</value>
|
||||
</setting>
|
||||
<setting name="Grid04LayoutY" serializeAs="String">
|
||||
<value>300</value>
|
||||
</setting>
|
||||
<setting name="Grid02LayoutWidth" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid03LayoutWidth" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid04LayoutWidth" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid02LayoutHeight" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid03LayoutHeight" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid04LayoutHeight" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid01Expanded" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Grid02Expanded" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Grid03Expanded" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Grid04Expanded" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="ZoomPadX" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="ZoomPadY" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Zoom" serializeAs="String">
|
||||
<value>1</value>
|
||||
</setting>
|
||||
<setting name="Grid05Expanded" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Grid05LayoutX" serializeAs="String">
|
||||
<value>400</value>
|
||||
</setting>
|
||||
<setting name="Grid05LayoutY" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Grid05LayoutWidth" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
<setting name="Grid05LayoutHeight" serializeAs="String">
|
||||
<value>NaN</value>
|
||||
</setting>
|
||||
</JetFrames.AppleJobs.Editor.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
||||
14
JetFrames.AppleJobs.Editor/App.xaml
Normal file
14
JetFrames.AppleJobs.Editor/App.xaml
Normal file
@@ -0,0 +1,14 @@
|
||||
<Application x:Class="JetFrames.AppleJobs.Editor.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/brightsharp;component/generic.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<local:ViewModelLocator x:Key="ViewModelLocator" />
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
24
JetFrames.AppleJobs.Editor/App.xaml.cs
Normal file
24
JetFrames.AppleJobs.Editor/App.xaml.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
protected override void OnStartup(StartupEventArgs e)
|
||||
{
|
||||
|
||||
base.OnStartup(e);
|
||||
}
|
||||
|
||||
public static ViewModelLocator Locator { get { return (ViewModelLocator)Current.TryFindResource("ViewModelLocator"); } }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Converters
|
||||
{
|
||||
public class ModelFilterConverter : IMultiValueConverter
|
||||
{
|
||||
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var initCollection = (IEnumerable<ModelJob>)values[0];
|
||||
var modelJob = (ModelJob)values[1];
|
||||
if (modelJob == null) return initCollection;
|
||||
return initCollection.Where(mj => mj.Models_Id == modelJob.Models_Id);
|
||||
}
|
||||
|
||||
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
334
JetFrames.AppleJobs.Editor/EditorViewModel.cs
Normal file
334
JetFrames.AppleJobs.Editor/EditorViewModel.cs
Normal file
@@ -0,0 +1,334 @@
|
||||
using BrightSharp.Mvvm;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AppleJobs.Data;
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using System.Windows.Input;
|
||||
using BrightSharp.Commands;
|
||||
using System.Data.Entity;
|
||||
using System.Windows;
|
||||
using BrightSharp.Extensions;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System;
|
||||
using AppleJobs.Data.Models;
|
||||
using JetFrames.AppleJobs.Editor.Views;
|
||||
using JetFrames.AppleJobs.Editor.ViewModels;
|
||||
using System.Collections;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor
|
||||
{
|
||||
public class EditorViewModel : ObservableObject
|
||||
{
|
||||
private AppleJobsContext context;
|
||||
|
||||
public EditorViewModel(AppleJobsContext context)
|
||||
{
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public string Name { get; set; }
|
||||
public string Email { get; set; }
|
||||
|
||||
List<Model> _models;
|
||||
public IEnumerable<Model> Models
|
||||
{
|
||||
get
|
||||
{
|
||||
return _models ?? (_models = context.Models.ToList());
|
||||
}
|
||||
}
|
||||
List<ModelCategory> _categories;
|
||||
public IEnumerable<ModelCategory> Categories
|
||||
{
|
||||
get
|
||||
{
|
||||
return _categories ?? (_categories = context.ModelCategories.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
public void OnLoaded()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public bool CanAdd(object item)
|
||||
{
|
||||
if (item is ModelJobPriceTemplate)
|
||||
{
|
||||
var mjpt = (ModelJobPriceTemplate)item;
|
||||
return mjpt.Customers_Id != default(int) &&
|
||||
mjpt.ModelJobs_Id != default(int);
|
||||
}
|
||||
else if (item is ModelJob)
|
||||
{
|
||||
var mj = (ModelJob)item;
|
||||
return !string.IsNullOrWhiteSpace(mj.Name) &&
|
||||
mj.Models_Id != default(int);
|
||||
}
|
||||
else if (item is Model)
|
||||
{
|
||||
var m = (Model)item;
|
||||
return !string.IsNullOrWhiteSpace(m.Name) &&
|
||||
m.ModelCategories_Id != default(int);
|
||||
}
|
||||
else if (item is ModelCategory)
|
||||
{
|
||||
var mc = (ModelCategory)item;
|
||||
return !string.IsNullOrWhiteSpace(mc.Name);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
List<ModelJobPriceTemplate> _modelJobPriceTemplates;
|
||||
public IEnumerable<ModelJobPriceTemplate> ModelJobPriceTemplates
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ModelJobs == null) throw new InvalidOperationException();
|
||||
return _modelJobPriceTemplates ?? (_modelJobPriceTemplates = context.ModelJobPriceTemplates.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
List<ModelJob> _modelJobs;
|
||||
public IEnumerable<ModelJob> ModelJobs
|
||||
{
|
||||
get
|
||||
{
|
||||
return _modelJobs ?? (_modelJobs = context.ModelJobs.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
List<Order> _orders;
|
||||
public IEnumerable<Order> Orders
|
||||
{
|
||||
get
|
||||
{
|
||||
return _orders ?? (_orders = context.Orders.Take(1000).ToList());
|
||||
}
|
||||
}
|
||||
List<OrderStatus> _orderStatuses;
|
||||
public IEnumerable<OrderStatus> OrderStatuses
|
||||
{
|
||||
get
|
||||
{
|
||||
return _orderStatuses ?? (_orderStatuses = context.OrderStatuses.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
List<Accessories> _accessories;
|
||||
public IEnumerable<Accessories> Accessories
|
||||
{
|
||||
get
|
||||
{
|
||||
return _accessories ?? (_accessories = context.Accessories.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
List<Employee> _employees;
|
||||
public IEnumerable<Employee> Employees
|
||||
{
|
||||
get
|
||||
{
|
||||
return _employees ?? (_employees = context.Employees.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand SaveCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AsyncCommand(p =>
|
||||
{
|
||||
var dg = (Keyboard.FocusedElement as UIElement).FindAncestor<DataGrid>();
|
||||
if (dg != null)
|
||||
{
|
||||
dg.CommitEdit(DataGridEditingUnit.Row, true);
|
||||
}
|
||||
|
||||
return context.SaveChangesAsync();
|
||||
})
|
||||
.OnComplete(() => ShowMessage("Сохранено"))
|
||||
.OnFail(ex => ShowMessage("Ошибка при сохранении.", "Red"));
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand RefreshCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand(p =>
|
||||
{
|
||||
_categories = null;
|
||||
_modelJobPriceTemplates = null;
|
||||
_models = null;
|
||||
_modelJobs = null;
|
||||
_accessories = null;
|
||||
_employees = null;
|
||||
_orders = null;
|
||||
_orderStatuses = null;
|
||||
|
||||
foreach (var entity in context.ChangeTracker.Entries())
|
||||
{
|
||||
entity.State = EntityState.Detached;
|
||||
}
|
||||
RaisePropertyChanged(nameof(Categories));
|
||||
RaisePropertyChanged(nameof(ModelJobPriceTemplates));
|
||||
RaisePropertyChanged(nameof(Models));
|
||||
RaisePropertyChanged(nameof(ModelJobs));
|
||||
RaisePropertyChanged(nameof(Accessories));
|
||||
RaisePropertyChanged(nameof(Employees));
|
||||
RaisePropertyChanged(nameof(Orders));
|
||||
RaisePropertyChanged(nameof(OrderStatuses));
|
||||
ShowMessage("Обновлено из базы данных");
|
||||
OnLoaded();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand AddNewPriceTemplateCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand(p =>
|
||||
{
|
||||
var vm = new NewPriceTemplateVm(Models, ModelJobs, ModelJobPriceTemplates, CreateNewModelJobPriceTemplate);
|
||||
var dialog = new NewPriceTemplateDialog
|
||||
{
|
||||
DataContext = vm,
|
||||
Owner = Application.Current.MainWindow
|
||||
};
|
||||
if (dialog.ShowDialog() == true)
|
||||
{
|
||||
CreateNewModelJobPriceTemplate(vm);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateNewModelJobPriceTemplate(NewPriceTemplateVm vm)
|
||||
{
|
||||
var item = new ModelJobPriceTemplate
|
||||
{
|
||||
Price = vm.NewPrice,
|
||||
Customers_Id = 1,
|
||||
ModelJobs_Id = vm.SelectedModelJob.Id,
|
||||
IsPriceFrom = true
|
||||
};
|
||||
_modelJobPriceTemplates.Add(item);
|
||||
context.Entry(item).State = EntityState.Added;
|
||||
CollectionViewSource.GetDefaultView(ModelJobPriceTemplates).Refresh();
|
||||
}
|
||||
|
||||
private object _currentRow;
|
||||
|
||||
public object CurrentRow
|
||||
{
|
||||
get { return _currentRow; }
|
||||
set { _currentRow = value; RaisePropertyChanged(nameof(CurrentRow)); }
|
||||
}
|
||||
|
||||
|
||||
public ICommand ModelJobDropDownLoadedCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<int>(mId =>
|
||||
{
|
||||
var view = (CollectionViewSource)Application.Current.MainWindow.FindResource("modelJobsViewSource");
|
||||
view.View.Filter = o =>
|
||||
{
|
||||
var mj = (ModelJob)o;
|
||||
|
||||
return mj.Models_Id == mId;
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand ModelJobDropDownUnLoadedCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand(p =>
|
||||
{
|
||||
var cb = (ComboBox)p;
|
||||
cb.ItemsSource = null;
|
||||
var view = (CollectionViewSource)Application.Current.MainWindow.FindResource("modelJobsViewSource");
|
||||
view.View.Filter = null;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public bool DeleteEntity(object entity, bool promt)
|
||||
{
|
||||
if (entity != null && (entity.GetType().IsPublic || entity is IEnumerable))
|
||||
{
|
||||
if (promt)
|
||||
if (MessageBox.Show("Удалить?", "Подтверждение", MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK)
|
||||
return true;
|
||||
|
||||
if (entity is IEnumerable)
|
||||
foreach (var item in (IEnumerable)entity)
|
||||
DeleteEntityInt(item);
|
||||
else
|
||||
DeleteEntityInt(entity);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void DeleteEntityInt(object entity)
|
||||
{
|
||||
var currentState = context.Entry(entity).State;
|
||||
if (currentState == EntityState.Added)
|
||||
{
|
||||
context.Entry(entity).State = EntityState.Detached;
|
||||
}
|
||||
else if (currentState != EntityState.Detached)
|
||||
{
|
||||
context.Entry(entity).State = EntityState.Deleted;
|
||||
}
|
||||
}
|
||||
|
||||
public void AddEntity(object entity)
|
||||
{
|
||||
if (entity != null)
|
||||
{
|
||||
context.Entry(entity).State = EntityState.Added;
|
||||
}
|
||||
}
|
||||
|
||||
#region Message
|
||||
|
||||
private string _message;
|
||||
public string Message
|
||||
{
|
||||
get { return _message; }
|
||||
set { _message = value; RaisePropertyChanged(nameof(Message)); }
|
||||
}
|
||||
|
||||
private string _messageForeground;
|
||||
|
||||
public string MessageForeground
|
||||
{
|
||||
get { return _messageForeground; }
|
||||
set { _messageForeground = value; RaisePropertyChanged(nameof(MessageForeground)); }
|
||||
}
|
||||
|
||||
private string _messageAnimationState;
|
||||
public string MessageAnimationState
|
||||
{
|
||||
get { return _messageAnimationState; }
|
||||
set { _messageAnimationState = value; RaisePropertyChanged(nameof(MessageAnimationState)); }
|
||||
}
|
||||
private void ShowMessage(string message, string foreground = "DarkGreen")
|
||||
{
|
||||
Message = message;
|
||||
MessageForeground = foreground;
|
||||
MessageAnimationState = ""; MessageAnimationState = "New";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
192
JetFrames.AppleJobs.Editor/JetFrames.AppleJobs.Editor.csproj
Normal file
192
JetFrames.AppleJobs.Editor/JetFrames.AppleJobs.Editor.csproj
Normal file
@@ -0,0 +1,192 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{FD3E36B5-444A-4115-B288-6C924BEA0BD3}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>JetFrames.AppleJobs.Editor</RootNamespace>
|
||||
<AssemblyName>JetFrames.AppleJobs.Editor</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.Identity.EntityFramework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Expression.Interactions, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MySql.Data.Entity.6.9.9\lib\net45\MySql.Data.Entity.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Converters\ModelFilterConverter.cs" />
|
||||
<Compile Include="EditorViewModel.cs" />
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="ViewModelLocator.cs" />
|
||||
<Compile Include="ViewModels\NewPriceTemplateVm.cs" />
|
||||
<Compile Include="Views\ModelCategories.xaml.cs">
|
||||
<DependentUpon>ModelCategories.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ModelJobPriceTemplates.xaml.cs">
|
||||
<DependentUpon>ModelJobPriceTemplates.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ModelJobs.xaml.cs">
|
||||
<DependentUpon>ModelJobs.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\Models.xaml.cs">
|
||||
<DependentUpon>Models.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\NewPriceTemplateDialog.xaml.cs">
|
||||
<DependentUpon>NewPriceTemplateDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\Orders.xaml.cs">
|
||||
<DependentUpon>Orders.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Page Include="Views\ModelCategories.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\ModelJobPriceTemplates.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\ModelJobs.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\Models.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\NewPriceTemplateDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\Orders.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>PublicSettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AppleJobs.Data\AppleJobs.Data.csproj">
|
||||
<Project>{b4695c76-31ff-4bf1-9dc6-1bc62d374091}</Project>
|
||||
<Name>AppleJobs.Data</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\BrightSharp\BrightSharp.csproj">
|
||||
<Project>{acc3c556-f8e4-4f2a-a23d-8e8749679a1b}</Project>
|
||||
<Name>BrightSharp</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
117
JetFrames.AppleJobs.Editor/MainWindow.xaml
Normal file
117
JetFrames.AppleJobs.Editor/MainWindow.xaml
Normal file
@@ -0,0 +1,117 @@
|
||||
<Window x:Class="JetFrames.AppleJobs.Editor.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:int="http://schemas.microsoft.com/expression/2010/interactions"
|
||||
xmlns:conv="clr-namespace:JetFrames.AppleJobs.Editor.Converters"
|
||||
xmlns:view="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:bs="http://schemas.brightsharp.com/developer"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="700" Width="1000">
|
||||
<Window.Resources>
|
||||
<conv:ModelFilterConverter x:Key="ModelFilterConverter" />
|
||||
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<Menu VerticalAlignment="Top">
|
||||
<MenuItem Header="Данные">
|
||||
<MenuItem Header="Обновить" Command="{Binding Editor.RefreshCommand}" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="Сайт"></MenuItem>
|
||||
<MenuItem Header="Сохранить" Command="{Binding Editor.SaveCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}}"></MenuItem>
|
||||
<TextBlock IsHitTestVisible="False" Text="{Binding Editor.Message}" Foreground="{Binding Editor.MessageForeground}" Opacity="0">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Editor.MessageAnimationState}" Value="New">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard Name="NewAnimation">
|
||||
<Storyboard>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
|
||||
<LinearDoubleKeyFrame KeyTime="0:0:0" Value="0" />
|
||||
<LinearDoubleKeyFrame KeyTime="0:0:.3" Value="1" />
|
||||
<LinearDoubleKeyFrame KeyTime="0:0:4" Value="1" />
|
||||
<LinearDoubleKeyFrame KeyTime="0:0:5" Value="0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
|
||||
</DataTrigger.ExitActions>
|
||||
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Menu>
|
||||
<TabControl Grid.Row="1" SelectionChanged="TabControl_SelectionChanged" DataContext="{x:Null}">
|
||||
<TabItem Header="Категории моделей">
|
||||
<Grid>
|
||||
<TextBox VerticalAlignment="Top" HorizontalAlignment="Right" Width="200">
|
||||
<bs:MarkupExtensionProperties.Header>Фильтрация</bs:MarkupExtensionProperties.Header>
|
||||
<i:Interaction.Behaviors>
|
||||
<bs:FilterDefaultViewTextBoxBehavior ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Categories}" />
|
||||
</i:Interaction.Behaviors>
|
||||
</TextBox>
|
||||
<view:ModelCategories Margin="0,50,0,0" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Модели">
|
||||
<Grid>
|
||||
<TextBox VerticalAlignment="Top" HorizontalAlignment="Right" Width="200">
|
||||
<bs:MarkupExtensionProperties.Header>Фильтрация</bs:MarkupExtensionProperties.Header>
|
||||
<i:Interaction.Behaviors>
|
||||
<bs:FilterDefaultViewTextBoxBehavior ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Models}" />
|
||||
</i:Interaction.Behaviors>
|
||||
</TextBox>
|
||||
<view:Models Margin="0,50,0,0" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Виды работ">
|
||||
<Grid>
|
||||
<TextBox VerticalAlignment="Top" HorizontalAlignment="Right" Width="200">
|
||||
<bs:MarkupExtensionProperties.Header>Фильтрация</bs:MarkupExtensionProperties.Header>
|
||||
<i:Interaction.Behaviors>
|
||||
<bs:FilterDefaultViewTextBoxBehavior ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.ModelJobs}" />
|
||||
</i:Interaction.Behaviors>
|
||||
</TextBox>
|
||||
<view:ModelJobs Margin="0,50,0,0" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Расценки">
|
||||
<Grid>
|
||||
<TextBox VerticalAlignment="Top" HorizontalAlignment="Right" Width="200">
|
||||
<bs:MarkupExtensionProperties.Header>Фильтрация</bs:MarkupExtensionProperties.Header>
|
||||
<i:Interaction.Behaviors>
|
||||
<bs:FilterDefaultViewTextBoxBehavior ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.ModelJobPriceTemplates}" />
|
||||
</i:Interaction.Behaviors>
|
||||
</TextBox>
|
||||
<Button VerticalAlignment="Top" HorizontalAlignment="Left" Command="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.AddNewPriceTemplateCommand}">+Добавить</Button>
|
||||
<view:ModelJobPriceTemplates Margin="0,50,0,0" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Заказы">
|
||||
<Grid>
|
||||
<TextBox VerticalAlignment="Top" HorizontalAlignment="Right" Width="200">
|
||||
<bs:MarkupExtensionProperties.Header>Фильтрация</bs:MarkupExtensionProperties.Header>
|
||||
<i:Interaction.Behaviors>
|
||||
<bs:FilterDefaultViewTextBoxBehavior ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Orders}" />
|
||||
</i:Interaction.Behaviors>
|
||||
</TextBox>
|
||||
<view:Orders Margin="0,50,0,0" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
50
JetFrames.AppleJobs.Editor/MainWindow.xaml.cs
Normal file
50
JetFrames.AppleJobs.Editor/MainWindow.xaml.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
DataContext = App.Locator;
|
||||
InitializeComponent();
|
||||
Loaded += (s, e) => App.Locator.Editor.OnLoaded();
|
||||
}
|
||||
|
||||
private void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
var dg = (DataGrid)sender;
|
||||
|
||||
if (e.Command == DataGrid.DeleteCommand)
|
||||
e.Handled = App.Locator.Editor.DeleteEntity(dg.SelectedValue, true);
|
||||
}
|
||||
|
||||
private void DataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
|
||||
{
|
||||
if (e.NewItem is ModelJobPriceTemplate)
|
||||
{
|
||||
var mjpt = (ModelJobPriceTemplate)e.NewItem;
|
||||
mjpt.Customers_Id = 1;
|
||||
}
|
||||
App.Locator.Editor.AddEntity(e.NewItem);
|
||||
}
|
||||
|
||||
protected override void OnClosing(CancelEventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.Save();
|
||||
base.OnClosing(e);
|
||||
}
|
||||
|
||||
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
((TabItem)((TabControl)sender).SelectedItem).DataContext = App.Locator;
|
||||
}
|
||||
}
|
||||
}
|
||||
55
JetFrames.AppleJobs.Editor/Properties/AssemblyInfo.cs
Normal file
55
JetFrames.AppleJobs.Editor/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("JetFrames.AppleJobs.Editor")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("JetFrames.AppleJobs.Editor")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2017")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
71
JetFrames.AppleJobs.Editor/Properties/Resources.Designer.cs
generated
Normal file
71
JetFrames.AppleJobs.Editor/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JetFrames.AppleJobs.Editor.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
JetFrames.AppleJobs.Editor/Properties/Resources.resx
Normal file
117
JetFrames.AppleJobs.Editor/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
362
JetFrames.AppleJobs.Editor/Properties/Settings.Designer.cs
generated
Normal file
362
JetFrames.AppleJobs.Editor/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,362 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public double Grid01LayoutX {
|
||||
get {
|
||||
return ((double)(this["Grid01LayoutX"]));
|
||||
}
|
||||
set {
|
||||
this["Grid01LayoutX"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public double Grid01LayoutY {
|
||||
get {
|
||||
return ((double)(this["Grid01LayoutY"]));
|
||||
}
|
||||
set {
|
||||
this["Grid01LayoutY"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid01LayoutWidth {
|
||||
get {
|
||||
return ((double)(this["Grid01LayoutWidth"]));
|
||||
}
|
||||
set {
|
||||
this["Grid01LayoutWidth"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid01LayoutHeight {
|
||||
get {
|
||||
return ((double)(this["Grid01LayoutHeight"]));
|
||||
}
|
||||
set {
|
||||
this["Grid01LayoutHeight"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("100")]
|
||||
public double Grid02LayoutX {
|
||||
get {
|
||||
return ((double)(this["Grid02LayoutX"]));
|
||||
}
|
||||
set {
|
||||
this["Grid02LayoutX"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("200")]
|
||||
public double Grid03LayoutX {
|
||||
get {
|
||||
return ((double)(this["Grid03LayoutX"]));
|
||||
}
|
||||
set {
|
||||
this["Grid03LayoutX"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("300")]
|
||||
public double Grid04LayoutX {
|
||||
get {
|
||||
return ((double)(this["Grid04LayoutX"]));
|
||||
}
|
||||
set {
|
||||
this["Grid04LayoutX"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("100")]
|
||||
public double Grid02LayoutY {
|
||||
get {
|
||||
return ((double)(this["Grid02LayoutY"]));
|
||||
}
|
||||
set {
|
||||
this["Grid02LayoutY"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("200")]
|
||||
public double Grid03LayoutY {
|
||||
get {
|
||||
return ((double)(this["Grid03LayoutY"]));
|
||||
}
|
||||
set {
|
||||
this["Grid03LayoutY"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("300")]
|
||||
public double Grid04LayoutY {
|
||||
get {
|
||||
return ((double)(this["Grid04LayoutY"]));
|
||||
}
|
||||
set {
|
||||
this["Grid04LayoutY"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid02LayoutWidth {
|
||||
get {
|
||||
return ((double)(this["Grid02LayoutWidth"]));
|
||||
}
|
||||
set {
|
||||
this["Grid02LayoutWidth"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid03LayoutWidth {
|
||||
get {
|
||||
return ((double)(this["Grid03LayoutWidth"]));
|
||||
}
|
||||
set {
|
||||
this["Grid03LayoutWidth"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid04LayoutWidth {
|
||||
get {
|
||||
return ((double)(this["Grid04LayoutWidth"]));
|
||||
}
|
||||
set {
|
||||
this["Grid04LayoutWidth"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid02LayoutHeight {
|
||||
get {
|
||||
return ((double)(this["Grid02LayoutHeight"]));
|
||||
}
|
||||
set {
|
||||
this["Grid02LayoutHeight"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid03LayoutHeight {
|
||||
get {
|
||||
return ((double)(this["Grid03LayoutHeight"]));
|
||||
}
|
||||
set {
|
||||
this["Grid03LayoutHeight"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid04LayoutHeight {
|
||||
get {
|
||||
return ((double)(this["Grid04LayoutHeight"]));
|
||||
}
|
||||
set {
|
||||
this["Grid04LayoutHeight"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool Grid01Expanded {
|
||||
get {
|
||||
return ((bool)(this["Grid01Expanded"]));
|
||||
}
|
||||
set {
|
||||
this["Grid01Expanded"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool Grid02Expanded {
|
||||
get {
|
||||
return ((bool)(this["Grid02Expanded"]));
|
||||
}
|
||||
set {
|
||||
this["Grid02Expanded"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool Grid03Expanded {
|
||||
get {
|
||||
return ((bool)(this["Grid03Expanded"]));
|
||||
}
|
||||
set {
|
||||
this["Grid03Expanded"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool Grid04Expanded {
|
||||
get {
|
||||
return ((bool)(this["Grid04Expanded"]));
|
||||
}
|
||||
set {
|
||||
this["Grid04Expanded"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public double ZoomPadX {
|
||||
get {
|
||||
return ((double)(this["ZoomPadX"]));
|
||||
}
|
||||
set {
|
||||
this["ZoomPadX"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public double ZoomPadY {
|
||||
get {
|
||||
return ((double)(this["ZoomPadY"]));
|
||||
}
|
||||
set {
|
||||
this["ZoomPadY"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1")]
|
||||
public double Zoom {
|
||||
get {
|
||||
return ((double)(this["Zoom"]));
|
||||
}
|
||||
set {
|
||||
this["Zoom"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool Grid05Expanded {
|
||||
get {
|
||||
return ((bool)(this["Grid05Expanded"]));
|
||||
}
|
||||
set {
|
||||
this["Grid05Expanded"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("400")]
|
||||
public double Grid05LayoutX {
|
||||
get {
|
||||
return ((double)(this["Grid05LayoutX"]));
|
||||
}
|
||||
set {
|
||||
this["Grid05LayoutX"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public double Grid05LayoutY {
|
||||
get {
|
||||
return ((double)(this["Grid05LayoutY"]));
|
||||
}
|
||||
set {
|
||||
this["Grid05LayoutY"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid05LayoutWidth {
|
||||
get {
|
||||
return ((double)(this["Grid05LayoutWidth"]));
|
||||
}
|
||||
set {
|
||||
this["Grid05LayoutWidth"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("NaN")]
|
||||
public double Grid05LayoutHeight {
|
||||
get {
|
||||
return ((double)(this["Grid05LayoutHeight"]));
|
||||
}
|
||||
set {
|
||||
this["Grid05LayoutHeight"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
90
JetFrames.AppleJobs.Editor/Properties/Settings.settings
Normal file
90
JetFrames.AppleJobs.Editor/Properties/Settings.settings
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="JetFrames.AppleJobs.Editor.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="Grid01LayoutX" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid01LayoutY" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid01LayoutWidth" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid01LayoutHeight" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid02LayoutX" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">100</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid03LayoutX" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">200</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid04LayoutX" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">300</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid02LayoutY" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">100</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid03LayoutY" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">200</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid04LayoutY" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">300</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid02LayoutWidth" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid03LayoutWidth" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid04LayoutWidth" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid02LayoutHeight" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid03LayoutHeight" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid04LayoutHeight" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid01Expanded" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid02Expanded" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid03Expanded" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid04Expanded" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ZoomPadX" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="ZoomPadY" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zoom" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">1</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid05Expanded" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid05LayoutX" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">400</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid05LayoutY" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid05LayoutWidth" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Grid05LayoutHeight" Type="System.Double" Scope="User">
|
||||
<Value Profile="(Default)">NaN</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
28
JetFrames.AppleJobs.Editor/Settings.cs
Normal file
28
JetFrames.AppleJobs.Editor/Settings.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace JetFrames.AppleJobs.Editor.Properties {
|
||||
|
||||
|
||||
// This class allows you to handle specific events on the settings class:
|
||||
// The SettingChanging event is raised before a setting's value is changed.
|
||||
// The PropertyChanged event is raised after a setting's value is changed.
|
||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
||||
// The SettingsSaving event is raised before the setting values are saved.
|
||||
public sealed partial class Settings {
|
||||
|
||||
public Settings() {
|
||||
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
||||
//
|
||||
// this.SettingChanging += this.SettingChangingEventHandler;
|
||||
//
|
||||
// this.SettingsSaving += this.SettingsSavingEventHandler;
|
||||
//
|
||||
}
|
||||
|
||||
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
||||
// Add code to handle the SettingChangingEvent event here.
|
||||
}
|
||||
|
||||
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
||||
// Add code to handle the SettingsSaving event here.
|
||||
}
|
||||
}
|
||||
}
|
||||
33
JetFrames.AppleJobs.Editor/ViewModelLocator.cs
Normal file
33
JetFrames.AppleJobs.Editor/ViewModelLocator.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using AppleJobs.Data;
|
||||
using BrightSharp.Mvvm;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity.Core.EntityClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor
|
||||
{
|
||||
public class ViewModelLocator
|
||||
{
|
||||
AppleJobsContext context;
|
||||
public ViewModelLocator()
|
||||
{
|
||||
if (ObservableObject.IsInDesignTime)
|
||||
{
|
||||
context = new AppleJobsContext("server=138.201.230.158;user id=admin_applejobs;pwd=dPARP0etzx;database=admin_applejobs_dev;CharSet=utf8;");
|
||||
}
|
||||
else
|
||||
{
|
||||
context = new AppleJobsContext();
|
||||
}
|
||||
Editor = new EditorViewModel(context);
|
||||
}
|
||||
|
||||
public EditorViewModel Editor { get; private set; }
|
||||
|
||||
public Properties.Settings Settings { get { return Properties.Settings.Default; } }
|
||||
}
|
||||
}
|
||||
64
JetFrames.AppleJobs.Editor/ViewModels/NewPriceTemplateVm.cs
Normal file
64
JetFrames.AppleJobs.Editor/ViewModels/NewPriceTemplateVm.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using BrightSharp.Commands;
|
||||
using BrightSharp.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.ViewModels
|
||||
{
|
||||
public class NewPriceTemplateVm : ObservableObject
|
||||
{
|
||||
private readonly IEnumerable<ModelJobPriceTemplate> modelJobPriceTemplates;
|
||||
private readonly IEnumerable<ModelJob> modelJobs;
|
||||
|
||||
public NewPriceTemplateVm(IEnumerable<Model> models, IEnumerable<ModelJob> modelJobs, IEnumerable<ModelJobPriceTemplate> modelJobPriceTemplates,
|
||||
Action<NewPriceTemplateVm> createFunc)
|
||||
{
|
||||
this.modelJobs = modelJobs;
|
||||
this.modelJobPriceTemplates = modelJobPriceTemplates;
|
||||
Models = models;
|
||||
CreateCommand = new RelayCommand(p => { createFunc?.Invoke(this); RaisePropertyChanged(nameof(FreeModelJobs)); }, p => SelectedModelJob != null);
|
||||
}
|
||||
|
||||
private Model _selectedModel;
|
||||
public Model SelectedModel
|
||||
{
|
||||
get { return _selectedModel; }
|
||||
set { _selectedModel = value; RaisePropertyChanged(nameof(SelectedModel)); RaisePropertyChanged(nameof(FreeModelJobs)); }
|
||||
}
|
||||
|
||||
public IEnumerable<Model> Models { get; private set; }
|
||||
|
||||
public IEnumerable<ModelJob> FreeModelJobs
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedModel == null) return null;
|
||||
var res = modelJobs.Where(mj => mj.Model.Id == SelectedModel.Id && modelJobPriceTemplates.All(p => p.ModelJobs_Id != mj.Id));
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
private ModelJob _selectedModelJob;
|
||||
public ModelJob SelectedModelJob
|
||||
{
|
||||
get { return _selectedModelJob; }
|
||||
set { _selectedModelJob = value; RaisePropertyChanged(nameof(SelectedModelJob)); }
|
||||
}
|
||||
|
||||
|
||||
private int? _newPrice;
|
||||
public int? NewPrice
|
||||
{
|
||||
get { return _newPrice; }
|
||||
set { _newPrice = value; RaisePropertyChanged(nameof(NewPrice)); }
|
||||
}
|
||||
|
||||
public ICommand CreateCommand
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
JetFrames.AppleJobs.Editor/Views/ModelCategories.xaml
Normal file
18
JetFrames.AppleJobs.Editor/Views/ModelCategories.xaml
Normal file
@@ -0,0 +1,18 @@
|
||||
<UserControl x:Class="JetFrames.AppleJobs.Editor.Views.ModelCategories"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
mc:Ignorable="d" d:DataContext="{StaticResource ViewModelLocator}"
|
||||
d:DesignHeight="300" d:DesignWidth="300">
|
||||
<Grid>
|
||||
<DataGrid CommandManager.PreviewCanExecute="DataGrid_PreviewCanExecute" ItemsSource="{Binding Editor.Categories}"
|
||||
InitializingNewItem="DataGrid_InitializingNewItem"
|
||||
AlternatingRowBackground="{DynamicResource AlternatingRowBackgroundBrush}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Binding="{Binding Name, ValidatesOnNotifyDataErrors=True}" Header="Название" Width="100" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
27
JetFrames.AppleJobs.Editor/Views/ModelCategories.xaml.cs
Normal file
27
JetFrames.AppleJobs.Editor/Views/ModelCategories.xaml.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ModelCategories.xaml
|
||||
/// </summary>
|
||||
public partial class ModelCategories : UserControl
|
||||
{
|
||||
public ModelCategories()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
if (e.Command == DataGrid.DeleteCommand)
|
||||
e.Handled = App.Locator.Editor.DeleteEntity(((DataGrid)sender).SelectedItems, true);
|
||||
}
|
||||
|
||||
private void DataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
|
||||
{
|
||||
App.Locator.Editor.AddEntity(e.NewItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
29
JetFrames.AppleJobs.Editor/Views/ModelJobPriceTemplates.xaml
Normal file
29
JetFrames.AppleJobs.Editor/Views/ModelJobPriceTemplates.xaml
Normal file
@@ -0,0 +1,29 @@
|
||||
<UserControl x:Class="JetFrames.AppleJobs.Editor.Views.ModelJobPriceTemplates"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
mc:Ignorable="d" d:DataContext="{StaticResource ViewModelLocator}"
|
||||
d:DesignHeight="300" d:DesignWidth="774">
|
||||
<Grid>
|
||||
<DataGrid CommandManager.PreviewCanExecute="DataGrid_PreviewCanExecute" ItemsSource="{Binding Editor.ModelJobPriceTemplates}"
|
||||
CanUserAddRows="False" AlternatingRowBackground="{DynamicResource AlternatingRowBackgroundBrush}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Binding="{Binding ModelJob.Name}" Header="Работа" Width="120" SortMemberPath="ModelJob.Name"
|
||||
ClipboardContentBinding="{Binding ModelJob.Name}"
|
||||
IsReadOnly="True" />
|
||||
<DataGridTextColumn Binding="{Binding ModelJob.Model.Name}" Header="Модель" Width="120" SortMemberPath="ModelJob.Model.Name"
|
||||
ClipboardContentBinding="{Binding ModelJob.Model.Name}"
|
||||
IsReadOnly="True" />
|
||||
<DataGridTextColumn Binding="{Binding ModelJob.Model.ModelCategory.Name}"
|
||||
IsReadOnly="True" Header="Категория" Width="120" SortMemberPath="ModelJob.Model.ModelCategory.Name"
|
||||
ClipboardContentBinding="{Binding ModelJob.Model.ModelCategory.Name}" />
|
||||
<DataGridTextColumn Binding="{Binding Price, TargetNullValue=''}" Header="Цена" Width="100" ClipboardContentBinding="{Binding Price}" />
|
||||
<DataGridCheckBoxColumn Binding="{Binding IsPriceFrom}" Header="Цена от" Width="80"
|
||||
EditingElementStyle="{StaticResource {x:Type CheckBox}}" ClipboardContentBinding="{Binding IsPriceFrom}" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,32 @@
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ModelJobPriceTemplates.xaml
|
||||
/// </summary>
|
||||
public partial class ModelJobPriceTemplates : UserControl
|
||||
{
|
||||
public ModelJobPriceTemplates()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
if (e.Command == DataGrid.DeleteCommand)
|
||||
e.Handled = App.Locator.Editor.DeleteEntity(((DataGrid)sender).SelectedItems, true);
|
||||
}
|
||||
|
||||
private void DataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
|
||||
{
|
||||
if (e.NewItem is ModelJobPriceTemplate)
|
||||
{
|
||||
var mjpt = (ModelJobPriceTemplate)e.NewItem;
|
||||
mjpt.Customers_Id = 1;
|
||||
}
|
||||
App.Locator.Editor.AddEntity(e.NewItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
26
JetFrames.AppleJobs.Editor/Views/ModelJobs.xaml
Normal file
26
JetFrames.AppleJobs.Editor/Views/ModelJobs.xaml
Normal file
@@ -0,0 +1,26 @@
|
||||
<UserControl x:Class="JetFrames.AppleJobs.Editor.Views.ModelJobs"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
mc:Ignorable="d" d:DataContext="{StaticResource ViewModelLocator}"
|
||||
d:DesignHeight="300" d:DesignWidth="527">
|
||||
<Grid>
|
||||
<DataGrid CommandManager.PreviewCanExecute="DataGrid_PreviewCanExecute" ItemsSource="{Binding Editor.ModelJobs}"
|
||||
InitializingNewItem="DataGrid_InitializingNewItem"
|
||||
AlternatingRowBackground="{DynamicResource AlternatingRowBackgroundBrush}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Binding="{Binding Name}" Header="Название" Width="150" />
|
||||
|
||||
<DataGridComboBoxColumn SelectedValueBinding="{Binding Model}"
|
||||
ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Models}"
|
||||
DisplayMemberPath="Name" Header="Модель" Width="120" SortMemberPath="Model.Name"
|
||||
EditingElementStyle="{StaticResource {x:Type ComboBox}}"/>
|
||||
<DataGridTextColumn Binding="{Binding Description}" Header="Описание" Width="200" />
|
||||
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
38
JetFrames.AppleJobs.Editor/Views/ModelJobs.xaml.cs
Normal file
38
JetFrames.AppleJobs.Editor/Views/ModelJobs.xaml.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ModelJobs.xaml
|
||||
/// </summary>
|
||||
public partial class ModelJobs : UserControl
|
||||
{
|
||||
public ModelJobs()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
if (e.Command == DataGrid.DeleteCommand)
|
||||
e.Handled = App.Locator.Editor.DeleteEntity(((DataGrid)sender).SelectedItems, true);
|
||||
}
|
||||
|
||||
private void DataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
|
||||
{
|
||||
App.Locator.Editor.AddEntity(e.NewItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
22
JetFrames.AppleJobs.Editor/Views/Models.xaml
Normal file
22
JetFrames.AppleJobs.Editor/Views/Models.xaml
Normal file
@@ -0,0 +1,22 @@
|
||||
<UserControl x:Class="JetFrames.AppleJobs.Editor.Views.Models"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
mc:Ignorable="d" d:DataContext="{StaticResource ViewModelLocator}"
|
||||
d:DesignHeight="300" d:DesignWidth="300">
|
||||
<Grid>
|
||||
<DataGrid CommandManager.PreviewCanExecute="DataGrid_PreviewCanExecute"
|
||||
ItemsSource="{Binding Editor.Models}"
|
||||
AlternatingRowBackground="{DynamicResource AlternatingRowBackgroundBrush}" InitializingNewItem="DataGrid_InitializingNewItem">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Binding="{Binding Name}" Header="Модель" Width="120" />
|
||||
<DataGridComboBoxColumn SelectedValueBinding="{Binding ModelCategory, ValidatesOnExceptions=True}"
|
||||
ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Categories}"
|
||||
DisplayMemberPath="Name" Header="Категория" Width="120" SortMemberPath="ModelCategory.Name"
|
||||
EditingElementStyle="{StaticResource {x:Type ComboBox}}" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
38
JetFrames.AppleJobs.Editor/Views/Models.xaml.cs
Normal file
38
JetFrames.AppleJobs.Editor/Views/Models.xaml.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Models.xaml
|
||||
/// </summary>
|
||||
public partial class Models : UserControl
|
||||
{
|
||||
public Models()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
if (e.Command == DataGrid.DeleteCommand)
|
||||
e.Handled = App.Locator.Editor.DeleteEntity(((DataGrid)sender).SelectedItems, true);
|
||||
}
|
||||
|
||||
private void DataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
|
||||
{
|
||||
App.Locator.Editor.AddEntity(e.NewItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
29
JetFrames.AppleJobs.Editor/Views/NewPriceTemplateDialog.xaml
Normal file
29
JetFrames.AppleJobs.Editor/Views/NewPriceTemplateDialog.xaml
Normal file
@@ -0,0 +1,29 @@
|
||||
<Window x:Class="JetFrames.AppleJobs.Editor.Views.NewPriceTemplateDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
mc:Ignorable="d" WindowStyle="ToolWindow" ShowInTaskbar="False" Title="Новая расценка"
|
||||
Height="239" Width="324">
|
||||
<Grid>
|
||||
<DockPanel Margin="10" LastChildFill="False">
|
||||
<Label DockPanel.Dock="Top">Модель*</Label>
|
||||
<ComboBox DockPanel.Dock="Top" Name="modCb" VerticalAlignment="Top" ItemsSource="{Binding Models}" SelectedItem="{Binding SelectedModel, Mode=OneWayToSource}"
|
||||
DisplayMemberPath="Name" />
|
||||
|
||||
<Label DockPanel.Dock="Top">Работа*</Label>
|
||||
<ComboBox DockPanel.Dock="Top" DisplayMemberPath="Name" VerticalAlignment="Top" ItemsSource="{Binding FreeModelJobs}" SelectedItem="{Binding SelectedModelJob}" />
|
||||
|
||||
<Label DockPanel.Dock="Top">Цена (руб)</Label>
|
||||
<TextBox DockPanel.Dock="Top" Text="{Binding NewPrice, TargetNullValue=''}"></TextBox>
|
||||
|
||||
|
||||
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Content="Создать" Margin="5,5,0,5" IsDefault="True" Padding="20,7" Command="{Binding CreateCommand}" />
|
||||
<Button Content="Закрыть" Margin="5,5,0,5" IsCancel="True" Padding="7" />
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Views
|
||||
{
|
||||
public partial class NewPriceTemplateDialog : Window
|
||||
{
|
||||
public NewPriceTemplateDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
55
JetFrames.AppleJobs.Editor/Views/Orders.xaml
Normal file
55
JetFrames.AppleJobs.Editor/Views/Orders.xaml
Normal file
@@ -0,0 +1,55 @@
|
||||
<UserControl x:Class="JetFrames.AppleJobs.Editor.Views.Orders"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:JetFrames.AppleJobs.Editor.Views"
|
||||
mc:Ignorable="d" d:DataContext="{StaticResource ViewModelLocator}"
|
||||
d:DesignHeight="300" d:DesignWidth="1084">
|
||||
<Grid>
|
||||
<DataGrid CommandManager.PreviewCanExecute="DataGrid_PreviewCanExecute" ItemsSource="{Binding Editor.Orders}"
|
||||
InitializingNewItem="DataGrid_InitializingNewItem"
|
||||
AlternatingRowBackground="{DynamicResource AlternatingRowBackgroundBrush}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Binding="{Binding Contact}" Header="Контакт" Width="200" />
|
||||
<DataGridComboBoxColumn ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.OrderStatuses}"
|
||||
SelectedValueBinding="{Binding OrderStatus}"
|
||||
DisplayMemberPath="Name" SortMemberPath="OrderStatus.Name" ClipboardContentBinding="{Binding Name}"
|
||||
EditingElementStyle="{StaticResource {x:Type ComboBox}}" Header="Статус" Width="80" />
|
||||
<DataGridComboBoxColumn SelectedValueBinding="{Binding Model, UpdateSourceTrigger=PropertyChanged}"
|
||||
ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Models}"
|
||||
DisplayMemberPath="Name" Header="Модель" Width="120" SortMemberPath="Model.Name"
|
||||
EditingElementStyle="{StaticResource {x:Type ComboBox}}"/>
|
||||
<DataGridTextColumn Binding="{Binding Comment}" Header="Коментарий" Width="100" />
|
||||
<DataGridCheckBoxColumn Binding="{Binding IsFast}" Header="Быстро" Width="60" />
|
||||
<DataGridCheckBoxColumn Binding="{Binding IsDrive}" Header="Доставка" Width="60" />
|
||||
<DataGridTextColumn Binding="{Binding Price}" Header="Цена" Width="80" />
|
||||
<DataGridTemplateColumn Header="Работа" Width="80" ClipboardContentBinding="{Binding JobModel.Name}" SortMemberPath="JobModel.Name">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding JobModel.Name}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<ComboBox ItemsSource="{Binding Model.ModelJobs}" DisplayMemberPath="Name"
|
||||
SelectedItem="{Binding JobModel, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridComboBoxColumn SelectedValueBinding="{Binding Accessories}"
|
||||
ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Accessories}"
|
||||
DisplayMemberPath="Name" SortMemberPath="Accessories.Name"
|
||||
EditingElementStyle="{StaticResource {x:Type ComboBox}}" Header="Инвентарь" Width="80" />
|
||||
<DataGridComboBoxColumn SelectedValueBinding="{Binding Employee}"
|
||||
ItemsSource="{Binding Source={StaticResource ViewModelLocator}, Path=Editor.Employees}"
|
||||
DisplayMemberPath="Name" SortMemberPath="Employee.Name"
|
||||
EditingElementStyle="{StaticResource {x:Type ComboBox}}"
|
||||
Header="Мастер" Width="80" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
33
JetFrames.AppleJobs.Editor/Views/Orders.xaml.cs
Normal file
33
JetFrames.AppleJobs.Editor/Views/Orders.xaml.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using AppleJobs.Data.Models;
|
||||
using AppleJobs.Data.Models.ModelsJobs;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace JetFrames.AppleJobs.Editor.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Orders.xaml
|
||||
/// </summary>
|
||||
public partial class Orders : UserControl
|
||||
{
|
||||
public Orders()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void DataGrid_PreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
if (e.Command == DataGrid.DeleteCommand)
|
||||
e.Handled = App.Locator.Editor.DeleteEntity(((DataGrid)sender).SelectedItems, true);
|
||||
}
|
||||
|
||||
private void DataGrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
|
||||
{
|
||||
if (e.NewItem is Order)
|
||||
{
|
||||
var mjpt = (Order)e.NewItem;
|
||||
mjpt.Customers_Id = 1;
|
||||
}
|
||||
App.Locator.Editor.AddEntity(e.NewItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
8
JetFrames.AppleJobs.Editor/packages.config
Normal file
8
JetFrames.AppleJobs.Editor/packages.config
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="EntityFramework" version="6.1.0" targetFramework="net452" />
|
||||
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net452" />
|
||||
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net452" />
|
||||
<package id="MySql.Data" version="6.9.9" targetFramework="net452" />
|
||||
<package id="MySql.Data.Entity" version="6.9.9" targetFramework="net452" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user